Wise - це проста розрядна мова, яку я розробляв за часом. Він заснований на бітових операціях Python . У ній є кілька операцій, більшість із них однакові або дуже схожі на еквівалентний символ у Python.
:
Дублюйте верхню частину стека?
Поверніть верхню частину стека донизу!
Поверніть нижню частину стека вгору[
]
цикл, поки верхня частина стека не дорівнює нулю~
не верхня частина стека (-(n+1)
)-
заперечувати верхню частину стека (-n
)>
двічі змініть верхню частину стека праворуч (n//2
)<
двічі змініть верхню частину стека один раз вліво (n*2
)^
xor два найкращі елементи стека (те саме, що і Python )|
або два найкращі елементи стека ( Те саме, що і Python )&
і два найкращі елементи стека ( Те саме, що і Python )
Зробити ціле число в Мудрому досить просто, ви можете зробити нуль ::^
і збільшити його, ~-
щоб ви зробили нуль і збільшували його купу разів. Однак якщо ми видалимо -
речі, станемо трохи цікавішими.
Ми можемо зробити кожне число за допомогою операцій, що залишилися. Наприклад ось 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 -> ~<~<<<<
:
нанесений на порожній стек штовхає a 0
. Я думаю, що це слід уточнити, оскільки не очевидно, що дублювання з порожнього стека має дати0
positive integers