Wise - простой побитовый язык, который я разработал некоторое время назад. Он основан на побитовых операциях Python . Он имеет несколько операций, большинство из которых совпадают или очень похожи на эквивалентные символы в Python.
:
Дублируйте вершину стека?
Поверните верх стопки к низу!
Поверните дно стека к вершине[
]
цикл в то время как вершина стека не равна нулю~
не вершина стека (-(n+1)
)-
отрицать вершину стека (-n
)>
сдвиг вершины стека один раз вправо (n//2
)<
сдвиг вершины стека один раз влево (n*2
)^
xor два верхних элемента стека (такие же как Python )|
или два верхних элемента стека (такие же как Python )&
и два верхних элемента стека (такие же как Python )
Сделать целое число в Wise довольно просто, вы можете сделать ноль с помощью ::^
и увеличить его, ~-
чтобы сделать ноль и увеличить его несколько раз. Однако если мы уберем -
вещи, станет немного интереснее.
Мы все еще можем сделать каждое число, используя оставшиеся операции. Например вот 3
~<<~
Это работает, потому что ~
превращает ноль, бесконечную строку 0
битов, в отрицательную, бесконечную строку 1
битов, каждый <
добавляет 0
бит до конца, когда мы закончим, мы делаем, ~
который превращает каждый его в строку 0
s, за которой следуют два 1
s или, как большинство людей называют это 3.
задача
Напишите программу, которая при получении положительного целого числа выведет программу Wise, которая создаст число n
без какого-либо -
источника (источник вывода вы можете использовать -
в своем собственном источнике). Вы можете предположить, что на вершине стека уже есть ноль.
Это код-гольф, а не мета-гольф, поэтому вы должны стремиться минимизировать генерацию исходного кода, а не обязательно вывод.
Пример выходов
Этот список не является исчерпывающим, они просто возможные выводы
1 -> ~<~
2 -> ~<~<
3 -> ~<<~
4 -> ~<~<<
5 -> ~<~:<<|
6 -> ~<<~<
7 -> ~<<<~
8 -> ~<~<<<
9 -> ~<~:<<<|
10 -> ~<~:<<|<
11 -> ~<<~:><<<|
12 -> ~<<~<<
13 -> ~<<~:<<<|>
14 -> ~<<<~<
15 -> ~<<<<~
16 -> ~<~<<<<
:
применяется на пустой стек толкает 0
. Я думаю, что это должно быть указано, так как не очевидно, что дублирование из пустого стека должно дать0
positive integers