Спираючись на позначення "двійкові, але з двома", згадані у цьому відеофільмі про число , напишіть функцію, яка приймає єдине число як вхід і виводить усі варіанти цього числа у "двійковій" системі, де дозволено дві.
Правила
- Код повинен бути лише функцією / методом, а не повною програмою
- Введення - це ціле число, передане як єдиний параметр функції
- Вихідні дані - це всі дійсні зміни вхідного числа, перетворені на позначення "двійкові, але з двома"
- Вихід - це повернене значення функції, але воно може бути в будь-якому зручному форматі, поки це очевидно (наприклад, 3 входи, 3 рядки, рядок з обмеженими комами / пробілами, масив вкладок тощо), порядок неважливий
- У тому випадку, коли мова може містити вбудовану функцію для досягнення результату, це заборонено
- Найкоротший код у байтах - переможець
Пояснення результату
Наприклад, якщо вам передано число 9, ви можете його перетворити у двійковий як 1001, але якщо ви дозволено 2s у кожній позиції, ви також можете записати його як 201(тобто 2*4 + 0*2 + 1*1) або 121(тобто 1*4 + 2*2 + 1*1), як показано в цій таблиці:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
Отже, якщо вона буде передана 9, вашій функції потрібно буде повернути три числа 1001, 201і 121.
Формат і порядок НЕ мають значення, так довго , як це очевидно (тобто [121,201,1001], "0201 0121 1001", ("1001","121","201")є дійсними результати , коли дається введення 9).
Приклади
2=>10, 29=>1001, 201, 12110=>1010, 210, 202, 1002, 12223=>2111, 1011137=>100101, 20101, 100021, 20021, 12101, 12021, 11221