Amanhã é o festival do meio do outono e, no espírito desse feriado, apresentarei um jogo de apostas que nós (pessoas de Xiamen ) jogamos durante o feriado!
Regras
O jogo é jogado com seis dados de 6 lados. Diferentes combinações de números têm diferentes classificações, com ênfase especial nos quatros e nos outros. Seu trabalho é escrever um programa / função que classifique a mão, com um lançamento de 6 dados. Aqui estão as classificações (eu modifiquei / simplifiquei um pouco as regras):
Eu acho que apenas o povo chinês pode fazer esse desafio! Ok, tudo bem, aqui estão algumas explicações em inglês.
- 0: 4 quatro e 2 uns.
- 1: 6 quatros.
- 2: 6.
- 3: 6 de qualquer tipo, exceto quatro e uns.
- 4: 5 quatros.
- 5: 5 de qualquer tipo, exceto quatro.
- 6: 4 quatros.
- 7: Em linha reta. (1-6)
- 8: 3 quatros.
- 9: 4 de qualquer tipo, exceto 4.
- 10: 2 quatros.
- 11: 1 quatro.
- 12: Nada.
Entrada
6 números, uma matriz de 6 números ou uma sequência de 6 números que representam os valores dos 6 dados lançados de 1 a 6
Resultado
Seu programa / função pode retornar / produzir qualquer coisa para indicar a classificação, desde que cada classificação seja indicada por uma saída e vice-versa. Ex. Usando os números 0-12, 1-13, etc.
Exemplos (usando 0-12 como saídas)
[1,1,1,1,1,1]->2
[1,4,4,4,1,4]->0
[3,6,5,1,4,2]->7
[1,2,3,5,6,6]->12
[3,6,3,3,3,3]->5
[4,5,5,5,5,5]->5
Isso é código-golfe, e a menor contagem de bytes vence!
[1,2,3,5,6,6]->13
??10
não é ignorado.Respostas:
Carvão , 55 bytes
Experimente online! Link é a versão detalhada do código. Não pula 10. Explicação:
Calcule a frequência mais alta de qualquer dígito.
Se houver um tipo 6, subtraia a posição do dígito na sequência
14
de 2. Isso resulta em 1 para 6 4s, 2 para 6 1s e 3 para 6 de qualquer outra coisa.Se houver um tipo 5, o resultado será 5, a menos que existam 5 4s, caso em que 1 é subtraído.
Se houver 4 do mesmo tipo, se houver 4 4s, o resultado será 6, a menos que existam 2 1s; nesse caso, o resultado será 0; caso contrário, o resultado será 9.
Se todos os dígitos forem diferentes, o resultado será 7.
Caso contrário, o resultado será 12 - (4 >> (3 - # de 4s)).
fonte
JavaScript (ES6), 88 bytes
Experimente online! ou Teste todos os rolos possíveis!
Produz um número inteiro de acordo com o seguinte mapeamento:
Quão?
Método
A saída é calculada executando um OR bit a bit entre:
Exceções:
Mesa
Exemplo
Comentado
fonte
R , 100 bytes
Codifique a pontuação como um monte de condicionais indexados. Mais simples do que minha primeira abordagem com expressões regulares.
Edit - bug corrigido e agora classifica todos os testes
Experimente online!
fonte
JavaScript (Node.js) , 169 bytes
Experimente online!
Devoluções
1..13
fonte
Python 2 ,
148119 bytes-27 bytes graças aos ovs (1. uso de
.count
permitir amap
a; 2. remoção de redundante0
em fatia; 3. uso de umin
ao invés de ummax
; 4. reduzido(F==4)*O==2
paraF==4>O==2
[desde que jogouF>3>O>1
]]Experimente online!
fonte
d
é necessária apenas uma, esta é mais curta como um programa completo .Pitão, 60 bytes
Mapas para classificação invertida, 0-12. Experimente online aqui ou verifique todos os casos de teste de uma vez aqui .
O mapeamento completo usado é o seguinte:
Isso funciona mapeando os valores dos dados para frequências, calculando o valor de várias regras e utilizando o máximo do conjunto.
fonte
Retina ,
137126 bytes-11 bytes graças a @Neil .
A saída é indexada em 0 (
0..12
).Experimente online ou verifique todos os casos de teste .
Explicação:
Substitua a cada 4 por um 'A':
Classifique todos os dígitos de entrada (os A's estarão na parte de trás):
Todas as outras duas linhas substituem a entrada pela saída esperada:
fonte
4
por algo fora do intervalo1-6
para classificá-lo automaticamente até um fim (não tenho certeza se faz alguma diferença para qual final você deseja).05AB1E ,
5755 bytesPorto de @Neil resposta carvão 's , porque a minha abordagem inicial já estava em 60 bytes e eu não foi feito ainda. Minha resposta atual provavelmente pode ser mais um pouco de golfe.
Insira como uma lista de dígitos.
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
Ruby , 100 bytes
Experimente online!
Como funciona:
Contar ocorrências de cada número na matriz, acrescentar o número de 1s e acrescentar o número de 4s.
Depois disso, tente combinar com diferentes padrões de regex.
fonte