Основываясь на нотации «двоичный, но с двойками», упомянутой в этом видеофильме с числовыми файлами , напишите функцию, которая принимает в качестве входного значения одно число и выводит все варианты этого числа в «двоичной» системе, где разрешены двойки.
правила
- Код должен быть только функцией / методом, а не полной программой
- Ввод - это целое число, переданное в качестве единственного параметра функции
- Выходные данные - все допустимые изменения входного числа, преобразованного в двоичную запись, но с двойным
- Выходные данные - это возвращаемое значение функции, но они могут быть в любом удобном для вас формате, если они очевидны (например, 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