Wise to prosty język bitowy, który zaprojektowałem jakiś czas temu. Opiera się na bitowych operacjach Pythona . Ma kilka operacji, większość z nich jest taka sama lub bardzo podobna do równoważnego symbolu w Pythonie.
:
Zduplikuj górę stosu?
Obróć górę stosu na dół!
Obróć spód stosu do góry[
]
zapętlić, gdy górna część stosu nie jest równa zero~
nie szczyt stosu (-(n+1)
)-
zaneguj górę stosu (-n
)>
przesuń bit raz na górę stosu raz w prawo (n//2
)<
przesuń bit raz na górę stosu raz w lewo (n*2
)^
x lub dwa górne elementy stosu ( tak samo jak Python )|
lub dwa górne elementy stosu ( tak samo jak Python )&
i dwa górne elementy stosu ( tak samo jak Python )
Wykonywanie liczb całkowitych w Wise jest dość proste, możesz zrobić zero ::^
i zwiększać je, dzięki ~-
czemu możesz zrobić zero i zwiększać go kilka razy. Jeśli jednak usuniemy, -
rzeczy staną się nieco bardziej interesujące.
Nadal możemy wykonać każdą liczbę przy użyciu pozostałych operacji. Na przykład tutaj jest 3
~<<~
Działa to, ponieważ ~
zamienia zero, nieskończony ciąg 0
bitów, na jeden ujemny, nieskończony ciąg 1
bitów, każdy <
dołącza się 0
nieco do końca, kiedy skończymy, robimy, ~
co zamienia każdy z nich na ciąg 0
s, po którym następuje 1
s lub, jak większość ludzi to nazywa 3.
Zadanie
Napisz program, który po otrzymaniu dodatniej liczby całkowitej wyświetli Mądry program, który utworzy liczbę n
bez żadnego -
źródła w swoim źródle (źródło wyjścia, którego możesz użyć -
we własnym źródle). Możesz założyć, że na górze stosu znajduje się już zero.
Jest to kod-golf nie meta-golf więc należy dążyć do zminimalizowania generowania kodu źródłowego nie koniecznie wyjście.
Przykładowe dane wyjściowe
Ta lista nie jest wyczerpująca, są to po prostu możliwe wyniki
1 -> ~<~
2 -> ~<~<
3 -> ~<<~
4 -> ~<~<<
5 -> ~<~:<<|
6 -> ~<<~<
7 -> ~<<<~
8 -> ~<~<<<
9 -> ~<~:<<<|
10 -> ~<~:<<|<
11 -> ~<<~:><<<|
12 -> ~<<~<<
13 -> ~<<~:<<<|>
14 -> ~<<<~<
15 -> ~<<<<~
16 -> ~<~<<<<
:
zastosowany na pustym stosie wypycha a 0
. Myślę, że należy to sprecyzować, ponieważ nie jest oczywiste, że powielanie z pustego stosu powinno dać0
positive integers