In dieser Code-Golf- Herausforderung müssen Sie eine Ascii-Kunst eines zufälligen Würfelwurfs ausgeben.
so was:
________
/\ \
/ \ 6 \
{ 4 }-------}
\ / 5 /
\/_______/
Bitte beachte, dass:
________
/\ \
/ \ 3 \
{ 4 }-------}
\ / 5 /
\/_______/
ist eine ungültige Ausgabe, da dies kein mögliches Ergebnis für einen Würfel ist
Es gibt 6(faces that could be up)*4(faces that could be the left face after the top is determined)*1(faces that could be the right face after the other two are determined)
= 24 Möglichkeiten der Würfelwürfe.
Ihr Programm muss einen dieser Würfelwürfe in Form einer ASCII-Grafik (modelliert wie im Folgenden, wobei xy und zs durch Zahlen ersetzt werden) wie oben ausgeben, wobei jede Ausgabe mit einer Wahrscheinlichkeit von> 0 auftritt, die Wahrscheinlichkeiten jedoch nicht müssen gerade sein (sie dürfen, anders als im wirklichen Leben, Stichwürfel sein). Ihr Programm kann keinen ungültigen Würfelwurf oder keinen Nicht-Würfelwurf ausgeben. Ihr Programm muss mit einer Wahrscheinlichkeit von 1 eine gültige Rolle ausgeben
Bitte beachten Sie, dass Ihr Würfel nicht unbedingt ein rechtshändiger Würfel sein muss, wie im ersten Bild gezeigt. (Rechts- und Linkshänder beschreiben das Würfelnetz)
right-handed die
________
/\ \ net
/ \ z \ _|4|_ _
{ x }-------} |6|2|1|5|
\ / y / |3|
\/_______/
left handed die
________
/\ \ net
/ \ y \ _|3|_ _
{ x }-------} |6|2|1|5|
\ / z / |4|
\/_______/
Wenn Ihr Würfel linkshändig ist, ist das Folgende eine gültige Ausgabe, aber nicht, wenn Ihr Würfel rechtshändig ist:
________
/\ \
/ \ 2 \
{ 1 }-------}
\ / 3 /
\/_______/
Während Sie zwischen Linkshändern und Rechtshändern wählen können, muss Ihr Würfel konsistent sein: Er kann nicht von links nach rechts oder umgekehrt wechseln
Das Folgende ist eine Liste der gültigen Ausgaben für den Chip. Beziehen Sie sich auf die Bilder oben für Positionen von XYZ:
X-Y-Z
-----
5-4-1
1-5-4
4-1-5
5-6-4
4-5-6
6-4-5
5-3-6
6-5-3
3-6-5
5-1-3
3-5-1
1-3-5
2-6-3
3-2-6
6-3-2
2-4-6
6-2-4
4-6-2
2-1-4
4-2-1
1-4-2
2-3-1
1-2-3
3-1-2
Auch dies ist Code-Golf , also ist weniger Byte besser
Antworten:
Python 3,
197 196192 BytesTeste es auf ideone
Rechtshändiger (Schalter auf einen Linkshänder durch Vertauschen
u*u
mitl*l
in der letzten Zeile)Bound to be beat - aber lassen Sie uns die Würfel rollen Seufzer - vor allem, da alle meine Versuche, das ASCII zu spielen, außer roh zu werden und Old-School-Formatierung zu verwenden, fehlgeschlagen sind, um Bytes zu sparen;
- weitere Golftipps für ein n00b werden gerne entgegengenommen.
quelle
from random import*
und können Sie 1 Byte speichernc=choice
.*
; ta!%d
Verwenden Sie%4d
statt 3 Leerzeichen stattdessen und es wird es ordnungsgemäß für Sie auffüllen. Möglicherweise können Sie es auch für andere Teile des Würfels einsetzen.C 177
Im Testprogramm
Erläuterung
quelle
Javascript
238232207201 Byteswas, wenn ungolfed ist:
Algorithmus
Berücksichtigen Sie, dass an jedem der 8 Eckkreuzungspunkte eines Stempels die Schnittflächenwerte des Stempels fest sind, aber in einer von 3 Umdrehungen auftreten können. Wenn Sie beispielsweise auf die "1" -, "2" -, "3" -Ecke blicken, können Sie die Matrize um eine Achse durch die Ecke und aus der gegenüberliegenden Ecke heraus drehen, um "1", "2" oder "3" anzuzeigen. über der ASCII-Kunst.
v
Hartcodierung der Formflächen, die sich an jeder Ecke schneiden,b
ist ein Versatz zum Beginn einer zufälligen Ecke undo
ist der Beginn der Drehung innerhalb der Eckendaten. Die ASCII-Grafik wird mithilfe einerconsole.log
Formatzeichenfolge in die Konsole geschrieben .quelle
`
Anführungszeichen verwenden, die die Verwendung von wörtlichen Zeilenumbrüchen ermöglichen, anstatt ständig schreiben zu müssen\n
.';'
TSQL 308 Bytes
280 Byte (in Server Management Studio: Abfrage - Ergebnis in Text)
Hinweis: Entfernen Sie den Ausdruck und den Deklarationsteil und geben Sie das Ergebnis direkt aus SELECT aus. Allerdings würde das bei der Geige nicht funktionieren
Geige
quelle
ABS(a^3*b-a*b^3)
, um 4 Bytes zu sparen? (Ich bin nicht sicher - scheint in der Geige zu arbeiten, aber es gibt mir immer nur eine einzige Rolle von a, b, c = 5,1,3, damit ich mich irre.)Javascript, 251 Bytes
Anrufen mit
u();
Es ist lang, aber es ist eine Antwort, und ich habe lange nicht geantwortet.
quelle
a=()=>(0|Math.random()*6)+1;
sollte 8 sparenRuby, 150 Bytes
Missbrauch der String-Formatierung !!!
Kredit für Formel , um die letzte Zahl zu erhalten geht an @xnor hier .
quelle