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 0Bits, in negative Eins, eine unendliche Folge von 1Bits, <verwandelt wird , wobei jedes 0Bit an das Ende angehängt wird. Wenn wir fertig sind ~, verwandeln wir jedes Bit in eine Folge von 0s, gefolgt von zwei 1s , 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 nohne -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