Gere uma grade 4x12 de letras / espaços:
Cada dado deve aparecer precisamente uma vez, local escolhido aleatoriamente. Os locais devem ser aproximados a uma permutação aleatória uniforme dos dados. Mostre uma face aleatória (novamente, aproximadamente uniforme) de cada dado. Justifique à esquerda o rosto na janela de 3 caracteres. Por exemplo,
A E A A
E C D E
D A Qu E
E A H D
É uma placa não aleatória no formato que eu quero. Espaço à direita é permitido.
O dado:
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
Fato divertido: há apenas 1 K no conjunto. Que outra carta compartilha exclusivamente os que morrem?
Isso é código-golfe, e o programa com o menor número de vitórias ganha!
Respostas:
GolfScript, 116 bytes
Como a pontuação é em bytes, acho que significa que podemos usar todos os bytes na solução. Sair do conjunto ASCII imprimível permite uma solução um pouco mais curta que a de Peter Taylor , com o custo de dificultar a exibição do código aqui. Sem os dados não imprimíveis, meu código fica assim:
É bem parecido com a solução de Peter Taylor, e admito ter emprestado vergonhosamente partes dela (como o
.81=' u '2/=
truque), embora eu ache que tenha conseguido encurtar um pouco o shuffle dele, mesmo depois de gastar um byte decharextra para obter uma melhor aleatoriedade.A cadeia binária no início do script contém caracteres não imprimíveis e, portanto, não pode ser colada diretamente aqui. Em vez disso, fornecerei o script como um dump hexadecimal:
No Linux ou em qualquer sistema com o
xxd
utilitário instalado, esse dump hexadecimal pode ser transformado novamente em um programa GolfScript de 116 bytes em funcionamento, passando-oxxd -r
.Edit: Substituído
999rand
por9.?rand
para uma aleatoriedade muito melhor. O shuffle agora deve estar o mais próximo possível da perfeição que o RNG subjacente permitir.fonte
Python 2.7,
253 229215 caracteresA maioria dos personagens são apenas os dados. Eu não queria gastar muito tempo tentando reduzi-lo muito
edição menor: removido 2 bytes desnecessários (espaços extras)
edit2: até 229
edit3: até 215
fonte
print a+' u'[a=='Q']
eprint'\n'[j%4:]
from random import*
e remova tudor.
. 2) Altere os separadores na string para `` (espaço) e tire vantagem dostr.split
argumento padrão. 3) Livre-se de qualquer coisa relacionada comj
e use'\n'[len(d)%4:]
. 4) Uselist.pop
o argumento padrão. 5) ... 6) Lucro!j=0...+'\n'[j%4:]
para que ele funcioneGolfScript (
141 139137 bytes decaracteres)Dos quais, 94 expandem para a sequência que contém os dados. A figura não inclui a nova linha desnecessária inserida para torná-la quebrada, para que o código possa ser visto sem rolar:
fonte
Ruby,
201197 caracteres(e é uma linha)
Editar 1: Utilizou% W () para evitar o .split e um par de aspas.
Editar 2: Feito para especificar (dois espaços entre cada coluna de saída)
fonte
x.join(" ").gsub(/Q ?/,"Qu")
consertaria isso ao custo de três caracteres extras.)join
corda e uma marca de espaço e pergunta extra no regex, no caso dos mangles software SE os espaços ...)Powershell, 234 caracteres
Aqui está o mesmo código com espaço em branco extra, na tentativa de melhorar a legibilidade :-)
Como não conheço um
shuffle
recurso interno do PowerShell, transformei cada resultado em um par de valores-chave - a chave igual a um resultado de dados e o valor igual a um número aleatório. Depois, foi apenas um caso de classificar esses pares pelo valor e depois emitir as chaves.fonte
Perl, 179 caracteres
Aqui está uma versão detalhada do programa:
fonte