Спираючись на позначення "двійкові, але з двома", згадані у цьому відеофільмі про число , напишіть функцію, яка приймає єдине число як вхід і виводить усі варіанти цього числа у "двійковій" системі, де дозволено дві.
Правила
- Код повинен бути лише функцією / методом, а не повною програмою
- Введення - це ціле число, передане як єдиний параметр функції
- Вихідні дані - це всі дійсні зміни вхідного числа, перетворені на позначення "двійкові, але з двома"
- Вихід - це повернене значення функції, але воно може бути в будь-якому зручному форматі, поки це очевидно (наприклад, 3 входи, 3 рядки, рядок з обмеженими комами / пробілами, масив вкладок тощо), порядок неважливий
- У тому випадку, коли мова може містити вбудовану функцію для досягнення результату, це заборонено
- Найкоротший код у байтах - переможець
Пояснення результату
Наприклад, якщо вам передано число 9
, ви можете його перетворити у двійковий як 1001
, але якщо ви дозволено 2
s у кожній позиції, ви також можете записати його як 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, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221