Introdução
Briscola é um dos jogos de cartas mais populares da Itália. É um jogo de cartas complicado, como o Bridge. Briscola é bem conhecida por seu sistema de pontos bizarro. Neste desafio, com duas cartas, você produzirá se a primeira marca mais, menos ou o mesmo número de pontos que a segunda no sistema de pontos de Briscola.
Desafio
Briscola é jogado com um baralho de cartas italianas. Há quarenta cartas em um baralho, de 1 a 10 em cada um dos quatro naipes: copos, espadas, tacos e moedas. Nós estaremos ignorando os processos para este desafio. Os cartões 2 - 7 são os cartões numéricos e os cartões 8, 9 e 10 são os cartões de face. A classificação das cartas, da maior para a menor, é:
+------------------------+-------------+
| Cards, by Rank | Point Value |
+------------------------+-------------+
| Ace (1) | 11 |
| Three (3) | 10 |
| King (10) | 4 |
| Knight (9) | 3 |
| Jack (8) | 2 |
| Numeric Cards (2, 4-7) | 0 |
+------------------------+-------------+
Obrigado a Orphevs pela boa mesa! :)
Sua tarefa é criar um programa ou função completa que aceite dois números de 1 a 10, representando as fileiras da placa, e produza (ou retorne) se o valor em pontos da primeira placa é maior que, menor que ou igual ao valor em pontos da placa. segundo cartão. Notas Adicionais:
- Seu programa pode gerar três valores para indicar menor que, maior que e igual a, no entanto, deve gerar o mesmo valor para cada condição a cada vez.
- Seu programa pode usar quaisquer padrões de IO .
- As brechas padrão não são permitidas.
- É permitida uma função completa ou um programa.
Esta questão é código-golfe , portanto, a menor contagem de bytes vence.
Aqui estão algumas entradas e saídas de amostra:
1, 4 => mais que (ás marca 11 pontos, 4 marca 0 pontos, o primeiro é mais que o segundo. 8, 3 => menor que (8 pontos 2, 3 pontos 10, o primeiro é menor que o segundo. 5, 2 => igual (5 e 2 pontuam 0)
Se você tiver alguma dúvida, não hesite em perguntar. Boa sorte!
fonte
Respostas:
Geléia ,
1211 bytesExperimente online!
Saídas
0
para igual,-1
para maior que e1
para menos que. Usa o índice da página de código“®µ½¤¢‘
que é avaliado[8, 9, 10, 3, 1]
.Recebe entrada como um par de cartões. Use
1,2
como exemplo.fonte
MATL , 12 bytes
Entrada é uma matriz de dois números. A saída é e
-1
, respectivamente, para mais que , igual ou menor que .0
1
Experimente online!
Explicação
Considere a entrada
[1 4]
como um exemplo.fonte
JavaScript (ES6), 42 bytes
Assume as duas fileiras em currying sintaxe
(a)(b)
. Retorna 1 para mais que , -1 para menos que ou 0 para igual .Experimente online!
Usando uma fórmula, 48 bytes
Definitivamente, é mais longo do que usar uma tabela de pesquisa, mas também um pouco mais interessante.
Mesmo formato de E / S.
Experimente online!
Quão?
Como muitos cartões têm o valor , primeiro queremos mascará-los. Dado um número de cartão , calculamos:n0 n
p = 2 N e 1802
Agora, queremos transformar os demais valores diferentes de zero, de forma que possam ser classificados na ordem correta. Nós usamos:
fonte
Japonês ,
252116 bytesExperimente online!
fonte
-g
sinalizador para salvar 2 bytes.-g
sinalizador, se você quiser tentar).[8,9,10,3,1]
conversão matriz e base)Japonês
-g
, 13 bytesSaídas
-1
para>
,1
para<
e0
para===
.Experimente ou execute vários testes (a segunda linha replica a funcionalidade do
-g
sinalizador para permitir que os sinalizadores sejam usados para processar várias entradas)Explicação
fonte
R , 35 bytes
Experimente online!
O programa retorna
2
para'greater than'
,1
por'less than'
,1.5
para'equal'
Explicação:
fonte
rank(c(6,0,5,1:4*0,1:3)[scan()])[1]
(programa completo) você vai economizar 6 bytesJava 8,
6966 bytesLambda usando parâmetros na sintaxe de curry, porta da resposta JavaScript de Arnauld .
Devoluções
0.0
igual ,1.0
para maior do que , e-1.0
para menos de . Experimente online aqui .Agradecimentos a Kevin Cruijssen por jogar 3 bytes.
fonte
"05040000123".charAt(...)
em vez do inteiro-array:a->b->Math.signum("05040000123".charAt(a)-"05040000123".charAt(b))
MarioLANG ,
578 548530 bytesExperimente online!
Explicação:
0
(sem entrada). Isso supõe que haverá apenas dois valores estritamente positivos como entrada.[1-5]
para ajudar a calcular qual cartão tem mais valores de pontos.1
se o valor do primeiro ponto for maior que o segundo,-1
se o valor do segundo ponto for maior que o primeiro e0
se os valores do ponto forem iguais.fonte
Python 2 , 41 bytes
Saídas 1 para mais que, -1 para menos que, 0 para igual.
Experimente online!
fonte
C (gcc) , 57 bytes
Retorna o usual [-1..1] para <, = e>, respectivamente.
Experimente online!
fonte
*s=L"...
vez dechar*s="...
e ema=(s[a]>s[b])-(s[a]<s[b])
vez dea=s[a];b=s[b];b=(a>b)-(a<b)
05AB1E , 14 bytes
Retorna
1
,-1
ou0
por mais de; Menor que; ou igual, respectivamente.Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
PHP ,
5145 bytesExperimente online!
Para executá-lo:
Exemplo:
Nota: Este código usa o operador de espaçonave do PHP 7 . Portanto, não funcionará em nenhuma versão do PHP antes do 7.
Resultado:
card1 > card2
)card1 == card2
)card1 < card2
)Quão?
Igual à abordagem usada em muitas outras respostas, mas em PHP. Cria um mapa de valores para cartões e compara os valores dos cartões. A posição do valor no mapa é igual ao número do cartão.
fonte
Javascript ES2016 +, 73 caracteres
Não é o mais curto, mas espero interessante devido à matemática e estouro :)
E a outra versão com 74 caracteres, infelizmente:
Teste
Abra o console do navegador antes de executar
fonte