Kubisch ist eine ziemlich neue esoterische Sprache, die in der Lage ist, kurze, golfähnliche Antworten auf eine ganz bestimmte Untergruppe von Problemen zu erstellen. Es ist insofern einzigartig, als es Speicher in Form eines 3x3-Zauberwürfels speichert, wodurch Berechnungen weitaus weniger trivial sind als in den meisten Sprachen. In Cubically muss der Programmierer den internen Cube drehen, um die auf den Flächen gespeicherten Werte zu bearbeiten, und diese Werte dann für seine Berechnungen verwenden. Berechnungen werden mit einer einzelnen 32-Bit-Ganzzahl durchgeführt, die auf einer imaginären Fläche gespeichert ist, die als "Notizblock" bekannt ist. Darüber hinaus kann Cubically Benutzereingaben anfordern und in einem Eingabepuffer speichern, der nur aus einem einzigen ganzzahligen Wert besteht.
Der Würfel
Die Flächen des Würfels sind U p, D own, L eft, R ight, F ront und B ack:
UUU
UUU
UUU
LLLFFFRRRBBB
LLLFFFRRRBBB
LLLFFFRRRBBB
DDD
DDD
DDD
Wenn das Programm gestartet wird, wird der Würfel so initialisiert, dass jedes Quadrat auf dieser Fläche dem 0-basierten Index dieser Fläche entspricht:
000
000
000
111222333444
111222333444
111222333444
555
555
555
Wenn ein Gesicht gedreht wird, wird es immer im Uhrzeigersinn gedreht:
Cubically> F1
000
000
111
115222033444
115222033444
115222033444
333
555
555
Der Wert eines Gesichts ist definiert als die Summe aller Quadrate auf diesem Gesicht. Im obigen Würfel beträgt der Wert der Fläche 0
beispielsweise 3.
Syntax
Befehle werden ausgeführt, indem zuerst ein Befehl in den Speicher geladen und dann Argumente übergeben werden, um den Befehl auszuführen. Beispielsweise F1
lädt der Befehl den Befehl F
in den Speicher und ruft ihn dann mit dem Argument auf 1
. Lädt F13
den Befehl außerdem F
in den Speicher, ruft ihn dann mit dem Argument auf 1
und ruft ihn dann mit dem Argument auf 3
. Jedes nichtstellige Zeichen wird als Befehl behandelt, und jede Ziffer wird als Argument behandelt.
Deine Aufgabe
Ihre Aufgabe ist es, den internen Speicherwürfel von Cubically in einer Sprache Ihrer Wahl zu implementieren. Ihr Code sollte in der Lage sein, eine sehr kleine Teilmenge der Sprache auszuführen.
Befehle
R
- Drehen Sie die rechte Seite des Würfels so oft im Uhrzeigersinn.L
- Drehen Sie die linke Seite des Würfels so oft im Uhrzeigersinn.U
- Drehen Sie die Oberseite des Würfels so oft im Uhrzeigersinn.D
- Drehen Sie die Unterseite des Würfels so oft im Uhrzeigersinn.F
- Drehen Sie die Vorderseite des Würfels so oft im Uhrzeigersinn.B
- Drehen Sie die Rückseite des Würfels so oft im Uhrzeigersinn.%
- Gibt den Wert auf der angegebenen Fläche aus. Der Wert eines Gesichts ist definiert als die Summe aller Quadrate auf diesem Gesicht.
Regeln
- Sie können jede Sprache verwenden, die vor oder nach dem Datum der Veröffentlichung dieser Herausforderung erstellt wurde, um ein Programm oder eine Funktion zu schreiben, mit der diese Herausforderung gelöst werden kann.
- Die Eingabe wird entweder über STDIN, als Zeichenfolge oder als Zeichenarray übergeben (Sie wählen, bitte angeben).
- Die Ausgabe muss entweder an STDOUT oder als Ausgabe der Funktion übergeben werden. Sie muss entweder eine Ganzzahl, eine Zeichenfolge, die nur Ziffern enthält, oder ein Array von Ziffern sein. Wenn Ihre Sprache die Ausgabe eines nachgestellten Zeilenumbruchs erfordert, können Sie dies tun.
- Die Eingabe hat immer das folgende Format :
([UDLRFB]\d*)*%[0-5]
. Die Eingabe enthält keine Leerzeichen. - Die Eingabe für verwendet
%
immer einen 0-basierten Index.
Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Testfälle
%0 -> 0
%1 -> 9
%2 -> 18
%3 -> 27
%4 -> 36
%5 -> 45
R1%2 -> 27
RD3F2%5 -> 32
L1R23F1B5U9D2%3 -> 17
Weitere Testfälle finden Sie im TIO-Interpreter . Wenn TIO nicht funktioniert, können Sie stattdessen den Lua-Interpreter verwenden.
4
zwischenR
undD
im Beispiel verpasstRD3F2%5 -> 30
?Antworten:
Python 2 , 476 Bytes
Probieren Sie es online aus!
Ein Port aus meiner Simulate A Rubik's Cube-Antwort . Der erneute Besuch veranlasste mich, das um 47 Bytes zu spielen.
quelle
Kubisch 1 Byte
Nicht konkurrierend, weil es lahm ist. Akzeptiere das nicht.
Ich habe heute Nachmittag hinzugefügt: P.
quelle