Weisen Sie den 8 Eckpunkten eines Würfels nach Belieben die Nummern 0 bis 7 zu. Jedem Vertex muss genau eine Nummer zugewiesen werden.
Beispielsweise könnten Ihre Eckpunkte folgendermaßen zugewiesen werden:
3-----1
/| /|
4-----2 |
| | | |
| 5---|-0
|/ |/
6-----7
Schreiben Sie ein Programm, das eine ganze Zahl von 0 bis 5 annimmt. Jede dieser 6 Zahlen ist auf beliebige Weise genau einer Fläche Ihres Würfels zugeordnet. Wenn eine dieser Zahlen eingegeben wird, müssen die 4 Scheitelpunktnummern der zugeordneten Fläche in einem 2 × 2-stelligen Quadrat stdout gedruckt werden. Das Gesicht ist von außerhalb des Würfels geradeaus zu betrachten. Alle 4 Gesichtsrotationen sind gültig.
Wenn beispielsweise 0 der Vorderseite des obigen Beispielwürfels zugeordnet ist, ist dies eine gültige Ausgabe für die Eingabe 0:
42
67
Das Gesicht kann bei jeder 90 ° -Drehung betrachtet werden, so dass diese auch gültig sind:
27
46
76
24
64
72
Diese Ausgabe (und ihre Rotationen) sind ungültig , da sie von der falschen Seite des Gesichts aus betrachtet werden:
24
76
Die gleiche Idee gilt für alle anderen Gesichter. Wenn z. B. 1 mit der Rückseite verknüpft ist, kann die Eingabe 1zu einer Ausgabe führen 13[newline]05(und 31[newline]50ist ungültig).
Die eigentliche Herausforderung besteht also darin, die Scheitelpunktnummern und -rotationen so auszuwählen, dass die Übersetzung der Eingabe in die 4 Scheitelpunktnummern einfach und kurz ist.
Der kürzeste Code in Bytes gewinnt. Tiebreaker ist früherer Beitrag. ( Handy-Byte-Zähler. )
Anmerkungen
- Sie können eine Funktion anstelle eines Programms schreiben. Es sollte eine Ganzzahl von 0 bis 5 sein und die 2 × 2-stellige Rasterzeichenfolge ausgeben oder zurückgeben.
- Nehmen Sie Eingaben von stdin, der Befehlszeile oder der Funktion arg entgegen. Sie können davon ausgehen, dass die Eingabe gültig ist.
- Die Ausgabe kann optional eine nachgestellte Newline enthalten.
- Teilen Sie uns unbedingt den von Ihnen gewählten Scheitelpunkt und die gewählte Fläche mit.