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