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