Weise ist eine einfache bitweise Sprache, die ich vor einiger Zeit entworfen habe. Es basiert auf den bitweisen Operationen von Python . Es gibt mehrere Operationen, von denen die meisten mit dem entsprechenden Symbol in Python identisch oder sehr ähnlich sind.
:
Duplizieren Sie die Oberseite des Stapels?
Drehen Sie die Oberseite des Stapels nach unten!
Drehen Sie die Unterseite des Stapels nach oben[
]
Schleife, während die Oberseite des Stapels nicht Null ist~
nicht die Oberseite des Stapels (-(n+1)
)-
negiere die Spitze des Stapels (-n
)>
Verschieben Sie den oberen Rand des Stapels einmal nach rechts (n//2
)<
Verschieben Sie den oberen Rand des Stapels einmal nach links (n*2
)^
xoder die beiden obersten Elemente des Stapels ( wie Python )|
oder die beiden obersten Elemente des Stapels ( wie Python )&
und die beiden obersten Elemente des Stapels ( wie Python )
Eine Ganzzahl in Wise zu erstellen ist ziemlich einfach. Sie können sie mit Null setzen ::^
und inkrementieren, ~-
sodass Sie sie ein paarmal zu Null setzen und inkrementieren können. Wenn wir jedoch die -
Dinge entfernen, werden sie etwas interessanter.
Wir können immer noch jede Nummer mit den restlichen Operationen machen. Zum Beispiel ist hier 3
~<<~
Dies funktioniert, weil ~
Null, eine unendliche Folge von 0
Bits, in negative Eins, eine unendliche Folge von 1
Bits, <
verwandelt wird , wobei jedes 0
Bit an das Ende angehängt wird. Wenn wir fertig sind ~
, verwandeln wir jedes Bit in eine Folge von 0
s, gefolgt von zwei 1
s , oder wie die meisten Leute es nennen 3.
Aufgabe
Schreiben Sie ein Programm, das bei einer positiven Ganzzahl ein Wise-Programm ausgibt, das die Zahl n
ohne -
Quelle erstellt (die Quelle der Ausgabe, die Sie verwenden können)-
in Ihrer eigenen Quelle verwenden). Sie können davon ausgehen, dass sich oben auf dem Stapel bereits eine Null befindet.
Dies ist Code-Golf, nicht Meta-Golf. Sie sollten also versuchen, den generierenden Quellcode zu minimieren, nicht unbedingt die Ausgabe.
Beispielausgaben
Diese Liste erhebt keinen Anspruch auf Vollständigkeit. Es handelt sich lediglich um mögliche Ausgaben
1 -> ~<~
2 -> ~<~<
3 -> ~<<~
4 -> ~<~<<
5 -> ~<~:<<|
6 -> ~<<~<
7 -> ~<<<~
8 -> ~<~<<<
9 -> ~<~:<<<|
10 -> ~<~:<<|<
11 -> ~<<~:><<<|
12 -> ~<<~<<
13 -> ~<<~:<<<|>
14 -> ~<<<~<
15 -> ~<<<<~
16 -> ~<~<<<<
:
auf einen leeren Stapel aufgetragen, drückt ein 0
. Ich denke, dies sollte spezifiziert werden, da es nicht offensichtlich ist, dass das Duplizieren von einem leeren Stapel geben sollte0
positive integers