Erzeugen Sie ein 4x12-Gitter aus Buchstaben / Leerzeichen:
Jeder Würfel sollte genau einmal erscheinen, wobei die Position zufällig gewählt wird. Die Positionen sollten ungefähr einer gleichmäßigen zufälligen Permutation der Würfel entsprechen. Zeigen Sie eine zufällige (wieder annähernd gleichmäßige) Fläche jedes Würfels an. Richten Sie das Gesicht im 3-Zeichen-Fenster linksbündig aus. Beispielsweise,
A E A A
E C D E
D A Qu E
E A H D
Ist ein nicht randomisiertes Board in dem von mir gewünschten Format. Leerzeichen sind erlaubt.
Der Würfel:
A A E E G N
E L R T T Y
A O O T T W
A B B J O O
E H R T V W
C I M O T U
D I S T T Y
E I O S S T
D E L R V Y
A C H O P S
H I M N Qu U
E E I N S U
E E G H N W
A F F K P S
H L N N R Z
D E I L R X
Amüsante Tatsache: Es gibt nur 1 K im Set. Welcher andere Brief teilt ausschließlich die, die sterben?
Das ist Code-Golf, also gewinnt das Programm mit dem kürzesten bytecount!
Antworten:
GolfScript, 116 Bytes
Da die Bewertung in Bytes erfolgt, bedeutet dies, dass wir alle Bytes in der Lösung verwenden können. Das Verlassen des druckbaren ASCII-Satzes ermöglicht eine etwas kürzere Lösung als die von Peter Taylor , was die Anzeige des Codes hier erschwert. Ohne die nicht druckbaren Daten sieht mein Code folgendermaßen aus:
Es ist Peter Taylors Lösung ziemlich ähnlich, und ich gebe zu, dass ich schamlos Teile davon ausgeliehen habe (wie den
.81=' u '2/=
Trick), obwohl ich glaube, dass ich es geschafft habe, sein Shuffle ein wenig zu verkürzen, selbst nachdem ich ein zusätzlichesZeichenbytefür eine bessere Zufälligkeit ausgegeben habe.Die Binärzeichenfolge am Anfang des Skripts enthält nicht druckbare Zeichen und kann daher hier nicht direkt eingefügt werden. Stattdessen stelle ich das Skript als Hex-Dump bereit:
Unter Linux oder auf jedem System, auf dem das
xxd
Dienstprogramm installiert ist, kann dieser Hex-Speicherauszug durch Weitergabe in ein funktionsfähiges 116-Byte-GolfScript-Programm umgewandelt werdenxxd -r
.Edit: Ersetzt
999rand
durch9.?rand
für eine viel bessere Zufälligkeit. Das Shuffle sollte nun so gut wie perfekt sein, wie es der zugrunde liegende RNG zulässt.quelle
Python 2.7,
253 229215 ZeichenDie meisten Charaktere sind nur die Würfel selbst. Ich wollte nicht zu viel Zeit damit verbringen, es zu reduzieren
Nebenbearbeitung: 2 unnötige Bytes entfernt (zusätzliche Leerzeichen)
edit2: runter auf 229
edit3: runter auf 215
quelle
print a+' u'[a=='Q']
undprint'\n'[j%4:]
from random import*
und entfernen Sie aller.
. 2) Ändern Sie die Trennzeichen in der Zeichenfolge in `` (Leerzeichen) und nutzen Siestr.split
das Standardargument von '. 3) Alles loswerden, was damit zu tunj
und zu benutzen ist'\n'[len(d)%4:]
. 4) Verwenden Sielist.pop
das Standardargument von. 5) ... 6) Gewinn!j=0...+'\n'[j%4:]
damit es funktioniertGolfScript (
141 139137ZeichenBytes)Davon entfallen 94 auf die Zeichenfolge mit den Würfeln. In der Abbildung ist der unnötige Zeilenumbruch nicht enthalten, damit der Code ohne Bildlauf angezeigt werden kann:
quelle
Ruby,
201197 Zeichen(und es ist ein Einzeiler)
Bearbeiten 1:% W () verwendet, um die Teilung und ein Paar Anführungszeichen zu vermeiden.
Edit 2: Angepasst (zwei Leerzeichen zwischen jeder Ausgabespalte)
quelle
x.join(" ").gsub(/Q ?/,"Qu")
würde das auf Kosten von drei zusätzlichen Zeichen beheben.)join
Zeichenfolge und ein zusätzliches Leerzeichen und Fragezeichen in der Regex, falls die SE-Software die Leerzeichen verstümmelt ...)Powershell, 234 Zeichen
Hier ist derselbe Code mit zusätzlichen Leerzeichen, um die Lesbarkeit zu verbessern :-)
Ich kenne keine eingebaute
shuffle
Funktion in Powershell und habe jedes Ergebnis in ein Schlüssel-Wert-Paar umgewandelt - den Schlüssel, der einem Würfelergebnis entspricht, und den Wert, der einer Zufallszahl entspricht. Dann war es nur ein Fall, diese Paare nach dem Wert zu sortieren und dann die Schlüssel auszugeben.quelle
Perl, 179 Zeichen
Hier ist eine ausführliche Version des Programms:
quelle