Introdução
Recentemente, eu e alguns amigos decidimos jogar algumas cartas, e um deles sugeriu o jogo 'Irish Snap', que foi a inspiração para esse desafio. No entanto, aprendi mais tarde que o jogo tem muitas regras diferentes com as quais você pode jogar, algumas das quais estão listadas aqui . As regras deste desafio não estão atualmente listadas nessa página; portanto, o nome 'Regras de variantes'
O desafio
Dado um conjunto de 3 cartas, produza um valor de verdade ou falsey, dependendo se eles fazem um snap válido em um jogo de snap irlandês.
Entrada
A entrada será uma matriz de 3 números, variando de 1 a 13, inclusive, com 1 representando um ás, 11 representando um valete, 12 representando uma rainha e 13 representando um rei. A entrada pode estar em qualquer ordem de cima, meio, baixo.
Regras
Os 4 critérios diferentes para se os cartões fazem um snap irlandês são:
- As cartas superior e média são as mesmas
- As cartas superior e média têm uma diferença de um
- Os cartões superior e inferior são os mesmos
- As cartas superior e inferior têm uma diferença de um
Se qualquer um desses critérios for atendido, você deverá gerar um valor verdadeiro. Além disso, para os dois critérios que exigem que as cartas tenham uma diferença de um, ele se "envolve", o que significa que um ás e um rei são considerados como tendo uma diferença de um e vice-versa.
Casos de teste
Input (Bottom, Middle, Top) -> Output
1 13 7 -> False
1 4 13 -> True
9 3 6 -> False
8 9 7 -> True
2 6 5 -> True
12 5 11 -> True
10 4 8 -> False
12 13 7 -> False
9 7 10 -> True
7 3 1 -> False
4 2 3 -> True
fonte
top, [middle, bottom]
?0
parafalse
e qualquer outro número inteiro paratrue
, ou mesmo qualquer número inteiro negativo parafalse
ou qualquer número inteiro positivo paratrue
?Respostas:
Python 3 , 38 bytes
Experimente online!
Retorna um conjunto não vazio (verdade) se válido, conjunto vazio (falsey) se não. Recebe a entrada na ordem superior-média-inferior, mas pode ser reorganizada para o mesmo tamanho de código.
fonte
Perl 6 , 16 bytes
Experimente online!
Anônimo, seja qual for o lambda que recebe entrada como
top, middle, bottom
e retorna uma junção avaliada como True ou Falsefonte
<
, esta foi a chance perfeita para ter um sorriso no coração.05AB1E ,
76 bytesExperimente online!
Toma entradas como
[middle, bottom], top
.Apenas 1 é verdade em 05AB1E. 0! e 1! são ambos 1, enquanto nenhum outro número tem um fatorial de 1.
fonte
J , 12 bytes
Experimente online!
Tomando a parte inferior central como arg esquerdo, e em cima como arg direito.
resposta original, tendo como entrada uma lista
J , 24 bytes
Experimente online!
#:@3 5
Os números 3 e 5 em binário são0 1 1
e1 0 1
quais são as máscaras para os cartões médio / superior e inferior / superior, respectivamente(12||@-/)@#
Nós filtramos a entrada com essas máscaras, pegamos o valor abs das diferenças resultantes e o restante quando dividido por 12 (para o caso do ás-rei)1 e.2>
algum dos números resultantes é menor que 2, ou seja, 0 ou 1?fonte
JavaScript (ES6), 29 bytes
Toma entrada como
([bottom, middle])(top)
.A saída é invertida.
Experimente online!
JavaScript (ES6),
3730 bytesGuardado 1 byte graças a @Grimy
Toma entrada como
([bottom, middle])(top)
.Experimente online!
fonte
%144
possível%72
%13
também funcionaria.Carvão , 12 bytes
Experimente online! Porto da resposta do @ Grimy. Recebe a entrada como três valores separados, inferior, médio, superior e saídas usando o formato booleano padrão do Charcoal
-
para true, nada para false. Explicação:fonte
Perl 5
-ap
, 31 bytesExperimente online!
Entrada:
Na verdade, a ordem do meio e do fundo não importa.
Resultado:
0
para falso;1
de verdadefonte
Pitão ,
1211 bytesRecebe entrada como
[bottom, top, middle]
ou[middle, top, bottom]
(ambos funcionam). Saídas[]
(Falsy in Pyth) se não houver snap válido, caso contrário, uma matriz não vazia.Experimente online!
Se um valor consistente de verdade / falsidade for necessário, adicione
.A
na frente por +2 bytes. Então a saída seráTrue
ouFalse
.Explicação
Edit: -1 com uma abordagem diferente
fonte
Gelatina , 6 bytes
Experimente online!
fonte
C (gcc) ,
4743 bytesExperimente online!
fonte
Japonês , 7 bytes
Tente
fonte
Gelatina , 6 bytes
Experimente online!
Um link monádico usando a lista
[middle, top, bottom]
como argumento e retornando1
para snap e0
para não snap.fonte
T-SQL 2008, 40 bytes
Experimente online
fonte
[R], 23 bytes
recebe entrada como a = c (inferior, superior, intermediário):
any(abs(diff(a))%%12<2)
fonte