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 0bitów, na jeden ujemny, nieskończony ciąg 1bitów, każdy <dołącza się 0nieco do końca, kiedy skończymy, robimy, ~co zamienia każdy z nich na ciąg 0s, po którym następuje 1s 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ę nbez ż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