Neste desafio do código-golfe , você deve produzir uma arte ascii de um dado aleatório.
como isso:
________
/\ \
/ \ 6 \
{ 4 }-------}
\ / 5 /
\/_______/
Observe que:
________
/\ \
/ \ 3 \
{ 4 }-------}
\ / 5 /
\/_______/
é saída inválida, porque esse não é um resultado possível em um dado
Existem 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 possibilidades de rolagens.
Seu programa deve gerar um desses rolos de matriz na forma de uma arte ascii (modelada como a abaixo, com os xy e zs substituídos por números) como acima, com cada saída com probabilidade> 0 de ocorrer, mas as probabilidades não tem que ser par (eles podem ser dados de truque, diferente da vida real). Seu programa não pode gerar um rolo de matriz inválido ou um rolo de matriz não. Seu programa deve ter uma probabilidade de 1 de gerar um rolo válido
Observe que seu dado não precisa necessariamente ser um dado destro, como mostrado na primeira imagem. (destro e canhoto descrevem a rede do dado)
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|
\/_______/
Se o seu dado for canhoto, o resultado é válido, mas não se o seu dado for destro:
________
/\ \
/ \ 2 \
{ 1 }-------}
\ / 3 /
\/_______/
Embora você possa escolher canhoto ou destro, seu dado deve ser consistente: ele não pode mudar da esquerda para a direita ou vice-versa
A seguir, é apresentada uma lista de saídas válidas para o dado. Consulte as figuras acima para posições de 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
novamente, isso é código-golfe , então menos bytes é melhor
Respostas:
Python 3,
197196192bytesTeste em ideone
Destro (alterne para um canhoto trocando
u*u
coml*l
na última linha)É imbatível - mas vamos dar um suspiro aos dados - especialmente porque todas as minhas tentativas de jogar golfe no ASCII, exceto ficarem cruas e usar a formatação da velha escola, falharam em salvar bytes;
- quaisquer outras dicas de golfe para um n00b apreciadas com prazer.
fonte
from random import*
ec=choice
.*
; ta!%d
, em seguida , use-o%4d
e ele será preenchido adequadamente para você. Você também pode aproveitá-lo para outras partes do dado.C, 177
No programa de teste
Explicação
fonte
Javascript
238232207201 bytesque quando não-golpeado é:
Algoritmo
Considere que em cada uma das 8 interseções de canto de uma matriz, os valores de face da matriz são fixos, mas podem aparecer em qualquer uma das três rotações. Por exemplo, enquanto olha para o canto "1", "2", "3", a matriz pode ser girada em torno de um eixo através do canto e sair pelo canto oposto, para mostrar "1", "2" ou "3" sobre o art. ASCII.
v
codifica as faces da matriz que se cruzam em cada canto,b
é um deslocamento para o início de um canto aleatório eo
é o início da rotação nos dados do canto. A arte ASCII é gravada no console usando umaconsole.log
string de formato.fonte
`
aspas que permitem o uso de caracteres literais de nova linha, em vez de precisar escrever\n
o tempo todo.';'
TSQL 308 bytes
280 bytes (no Server Management Studio: Consulta - resultado em texto)
Nota: removendo a impressão e a parte declarada - e envie o resultado diretamente do SELECT. No entanto, isso não funcionaria no violino
Violino
fonte
ABS(a^3*b-a*b^3)
para salvar 4 bytes? (Não tenho certeza - parece trabalho no violino, mas é sempre apenas me dando um único rolo de a, b, c = 5,1,3 para que eu possa estar enganado)Javascript, 251 bytes
Ligue usando
u();
É longo, mas é uma resposta, e eu não respondo há muito tempo.
fonte
a=()=>(0|Math.random()*6)+1;
deve salvar 8Ruby, 150 bytes
Todo o abuso de formatação de string !!!
O crédito pela fórmula que obtém o último número vai para @xnor aqui .
fonte