Générez une grille 4x12 de lettres / espaces:
Chaque dé doit apparaître précisément une fois, l'emplacement choisi au hasard. Les emplacements doivent correspondre approximativement à une permutation aléatoire uniforme des dés. Affichez une face aléatoire (à nouveau, approximativement uniforme) de chaque dé. Justifiez à gauche le visage dans la fenêtre à 3 caractères. Par exemple,
A E A A
E C D E
D A Qu E
E A H D
Est une carte non randomisée dans le format que je veux. L'espace de fuite est autorisé.
Les dés:
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
Fait amusant: il n'y a que 1 K dans l'ensemble. Quelle autre lettre partage exclusivement qui meurent?
Il s'agit de code-golf, donc le programme avec le plus petit nombre de victoires gagne!
Réponses:
GolfScript, 116 octets
Étant donné que le score est en octets, je pense que cela signifie que nous pouvons utiliser tous les octets de la solution. Sortir de l'ensemble ASCII imprimable permet une solution un peu plus courte que celle de Peter Taylor , au prix de rendre le code plus difficile à afficher ici. Sans les données non imprimables, mon code ressemble à ceci:
Il est assez similaire à la solution de Peter Taylor, et je dois admettre aux bits d' emprunt sans vergogne de celui - ci (comme le
.81=' u '2/=
truc), même si je pense que je réussi à réduire son remaniement légèrement, même après avoir passé un supplémentomblesoctet pour une meilleure aléatoire.La chaîne binaire au début du script contient des caractères non imprimables et ne peut donc pas être collée directement ici. Au lieu de cela, je fournirai le script sous forme de vidage hexadécimal:
Sous Linux, ou tout système avec l'
xxd
utilitaire installé, ce vidage hexadécimal peut être reconverti en un programme GolfScript de 116 octets en le passantxxd -r
.Edit: Remplacé
999rand
par9.?rand
pour un bien meilleur caractère aléatoire. Le shuffle devrait maintenant être aussi proche de la perfection que le permet le RNG sous-jacent.la source
Python 2.7,
253 229215 caractèresLa plupart des personnages ne sont que les dés eux-mêmes. Je ne voulais pas passer trop de temps à essayer de le réduire trop
modification mineure: suppression de 2 octets inutiles (espaces supplémentaires)
edit2: jusqu'à 229
edit3: jusqu'à 215
la source
print a+' u'[a=='Q']
etprint'\n'[j%4:]
from random import*
et supprimez toutr.
. 2) Remplacez les séparateurs de la chaîne par `` (espace) et profitez destr.split
l'argument par défaut de. 3) Débarrassez-vous de tout ce qui a à voirj
et à utiliser'\n'[len(d)%4:]
. 4) Utilisezlist.pop
l'argument par défaut de. 5) ... 6) Profit!j=0...+'\n'[j%4:]
pour que ça marcheGolfScript (
141 139137 octets decaractères)Dont 94 s'étendent jusqu'à la chaîne contenant les dés. La figure n'inclut pas le saut de ligne inutile inséré pour le boucler afin que le code puisse être vu sans défilement:
la source
Ruby,
201197 caractères(et c'est une ligne)
Édition 1: utilisé% W () pour éviter le .split et une paire de guillemets.
Edit 2: Made to spec (deux espaces entre chaque colonne de sortie)
la source
x.join(" ").gsub(/Q ?/,"Qu")
. Fixerait que , au prix de trois caractères supplémentaires)join
chaîne et un espace supplémentaire et un point d'interrogation dans l'expression régulière, au cas où le logiciel SE gâcherait les espaces ...)Powershell, 234 caractères
Voici le même code avec des espaces supplémentaires, dans une tentative d'améliorer la lisibilité :-)
Je ne suis pas au courant d'une
shuffle
fonctionnalité intégrée dans PowerShell, j'ai donc transformé chaque résultat en une paire clé-valeur - la clé égalant un résultat de dés et la valeur égalant un nombre aléatoire. Ensuite, il s'agissait simplement de trier ces paires par valeur, puis de sortir les clés.la source
Perl, 179 caractères
Voici une version détaillée du programme:
la source