Inspirado e saqueado deste desafio de dados por Arnauld
Entrada
Você recebe uma matriz de dados 5x1 ou 1x5 (sua escolha), que consiste em sub-matrizes binárias 3x3.
Objetivo
Dada uma matriz de dados válida, você deve pontuá-la usando as regras de 6,5,4, que são as seguintes:
- Se o rolo contiver 6,5,4, adicione os outros dois dados e essa é sua pontuação. Por exemplo, 4, X, 5,6, Y = X + Y
- Caso contrário, a pontuação é 0. Por exemplo, 5,5,5,4,1 = 0
Padrões de dados
Regras
- A matriz é garantida para conter apenas faces válidas, mas incluirá as permutações 2,3 e 6. Você também pode levá-lo em qualquer orientação da maneira que for conveniente. Por favor, indique a orientação escolhida na sua resposta.
- Saída da pontuação calculada
- As brechas padrão são proibidas
- Isso é código-golfe .
Exemplos
// 2,5,2,4,6: Output should be: 4
[ [ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ],
[ 1,0,1 ],
[ 0,1,0 ],
[ 1,0,1 ],
[ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ],
[ 1,0,1 ],
[ 0,0,0 ],
[ 1,0,1 ],
[ 1,1,1 ],
[ 0,0,0 ],
[ 1,1,1 ] ]
// 1,6,2,4,6: Output should be: 0
[ [ 0,0,0, 1,0,1, 1,0,0, 1,0,1, 1,1,1 ],
[ 0,1,0, 1,0,1, 0,0,0, 0,0,0, 0,0,0 ],
[ 0,0,0, 1,0,1, 0,0,1, 1,0,1, 1,1,1 ] ]
// 5,6,6,4,6: Output should be: 12
[ [ 1,0,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1 ],
[ 0,1,0, 1,0,1, 0,0,0, 0,0,0, 0,0,0 ],
[ 1,0,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1 ] ]
// 3,3,4,5,6: Output should be: 6
[ [ 0,0,1, 1,0,0, 1,0,1, 1,0,1, 1,1,1 ],
[ 0,1,0, 0,1,0, 0,0,0, 0,1,0, 0,0,0 ],
[ 1,0,0, 0,0,1, 1,0,1, 1,0,1, 1,1,1 ] ]
// 2,5,2,5,6: Output should be: 0
[ [ 0,0,1, 1,0,1, 1,0,0, 1,0,1, 1,1,1 ],
[ 0,0,0, 0,1,0, 0,0,0, 0,1,0, 0,0,0 ],
[ 1,0,0, 1,0,1, 0,0,1, 1,0,1, 1,1,1 ] ]
[2,5,2,5,6]
. Minha solução atual funciona para todos os quatro casos de teste (usando um método muito ruim de classificar os valores e remover a sub-lista[4,5,6]
), que obviamente falha quando5
está presente duas vezes.Respostas:
05AB1E , 15 bytes
Experimente online! ou Confira uma suíte de testes!
Usa o mesmo truque usado por Chas Brown e Lynn: decrementando cada número inteiro em cada sub-matriz 3x3 em vez de subtrair 15 no final. Espera entrada no formato de coluna.
Como funciona
fonte
Gelatina , 14 bytes
Experimente online!
Aceita uma coluna de dados.
Assim como a resposta em Python de Chas Brown, isso compensa cada valor de dados em -3, para que não precisemos subtrair 15 (4 + 5 + 6) da última soma.
fonte
Python 2 , 81 bytes
Experimente online!
Espera-se que toda a entrada esteja no formato de coluna.
fonte
Perl 6 ,
4846 bytesAgradecimentos a Ramillies por -2 bytes
Experimente online!
Um bloco de código anônimo que pega a matriz verticalmente e retorna um número inteiro.
Explicação:
fonte
.flat
em vez de.[*;*]
, como estaMATL , 12 bytes
Experimente online!
Recebe a entrada na orientação horizontal como uma matriz 3x15. O truque de @Chas Brown em subtrair 3 antecipadamente (em vez de 15 depois) salvou vários bytes de maneiras diferentes.
fonte
Braquilog ,
2322 bytes24 bytes (sundar)Um dos meus primeiros programas de branchylog. Provavelmente pode ser jogado mais.
Imprime false se não houver 4,5,6. idk como fazê-lo sair 0.Experimente online!
fonte
0
instantaneamentefalse
, o acréscimo|∧0
no final deve fazer o trabalho.ḍ₅
: Experimente online!I
: Experimente online! (note que eu também adicionei o|∧0
aqui).R , 56 bytes
Experimente online!
fonte
c(m)
para achatarm
em vez dem[1:45]
Pitão , 20 bytes
Espera entrada como uma coluna de dados (como no caso de teste 1). Experimente online aqui ou verifique todos os casos de teste de uma vez aqui .
fonte
05AB1E ,
302922 bytesPega as matrizes de dados uma abaixo da outra.
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
JavaScript (ES6), 78 bytes
Recebe entrada como uma coluna de dados.
Experimente online!
Quão?
Ao fazê-lo
a + 0
, aplainamos e coagimos implicitamente a matriz de entrada a uma string e adicionamos um final"0"
, que fornece exatamente 5x18 = 90 caracteres.Por exemplo, o primeiro caso de teste leva a:
Para cada substring de dados s de 18 caracteres, calculamos o número n de pips + 1 e atualizamos o número total de pips t com:
Reutilizamos a matriz de entrada a como uma máscara de bits para acompanhar cada dado encontrado pelo menos uma vez:
Se o rolo contém, pelo menos, um 4 , um 5 e um 6 , a máscara de bits um terão os seguintes bits definidos:
Testamos isso fazendo
a > 223
. Se for bem sucedido, retornamos t . Como contamos um pip extra para cada dado e porque não queremos contar 4 + 5 + 6 no resultado, t é inicializado com - (5 + (4 + 5 + 6)) = -20 .fonte
Dyalog APL ,
2827 bytesExperimente online!
Toma uma matriz 1x5 de matrizes de dados 3x3 como entrada.
+/¨,¨
soma os valores de pip de cada dado. Subtraia 3, use∨/⍉⍵∘.=⍳3
para verificar se há pelo menos uma instância de cada (1, 2, 3) E os resultados juntamente com∧/
e multiplique o resultado (0 ou 1) pela soma dos valores de dados ajustados (+/⍵
).fonte
Retina 0.8.2 , 45 bytes
Experimente online! Toma dados verticais. Explicação:
Remodelar os dados em 5 linhas individuais.
Obtenha os valores de cada linha.
Classifique-os em ordem.
Junte-os a uma única string.
Verifique se os três dados necessários estão presentes.
Converta cada dado em unário.
Subtraia os 4, 5 e 6 correspondentes.
Soma e converta para decimal.
fonte
Gelatina , 18 bytes
Um link monádico
Experimente online!
fonte
Oitava , 54 bytes
Experimente online!
Porta da minha resposta MATL.
fonte
Ruby , 78 bytes
Experimente online!
fonte