421 é um jogo de dados bastante popular na França e em alguns outros países europeus. É tocado principalmente em bares e pubs para determinar quem vai comprar a próxima rodada de bebidas. O jogo completo geralmente é jogado em duas rodadas, com fichas das quais cada jogador tenta se livrar, mas isso é irrelevante aqui. ( Página da Wikipedia em francês.)
O jogo é jogado com 3 dados de cubo padrão.
Tarefa
Sua tarefa é classificar uma lista não vazia de jogadas distintas de 3 dados [X, Y, Z] do maior para o menor, aplicando as regras de pontuação deste jogo.
Pontuação básica
- 4,2,1 é a combinação mais alta possível. Dependendo das regras, pode marcar 8, 10 ou 11 pontos. Como estamos classificando as jogadas em vez de contar os pontos, o valor exato não importa.
- Three Ases: 1,1,1 é a segunda combinação mais alta e marca 7 pontos.
- Dois Ases: X, 1,1 (onde X é 2 a 6) marca X pontos.
- Três do tipo: X, X, X (onde X é 2 a 6) obtém X pontos.
- Retas: X, X + 1, X + 2 marcam 2 pontos.
- Todos os outros testes marcam 1 ponto.
Estabelecendo laços
Sempre que duas jogadas dão o mesmo número de pontos, as seguintes regras se aplicam:
- Um dois ases é melhor que um três. Exemplo: 5,1,1 bate 5,5,5 .
- O Three-of-a-Kind 2,2,2 é melhor que um straight. Exemplo: 2,2,2 bate 4,5,6 .
- As retas são ordenadas do menor para o maior. Exemplo: 4,5,6 bate 2,3,4 .
- Todos os outros lançamentos são resolvidos ordenando os dados do maior para o menor. Exemplo: 6,5,2 bate 6,4,3 . (Portanto, a menor combinação possível no jogo é 2,2,1 .)
Abaixo estão os 56 possíveis rolos distintos, ordenados do maior para o menor:
421 111 611 666 511 555 411 444 311 333 211 222 654 543 432 321
665 664 663 662 661 655 653 652 651 644 643 642 641 633 632 631
622 621 554 553 552 551 544 542 541 533 532 531 522 521 443 442
441 433 431 422 332 331 322 221
Regras do desafio
- Você pode fazer os testes em qualquer formato razoável, como uma lista de listas
[[3,2,1],[4,2,1]]
, uma lista de strings["321","421"]
, uma lista de números inteiros[321,421]
, etc. No entanto, cada dado deve ser claramente identificável com um valor de 1 a 6 . - Para cada rolagem, você pode assumir que os dados são classificados do menor para o maior ou do maior para o menor, desde que sejam consistentes. Informe na sua resposta qual ordem você espera, se houver.
- A resposta mais curta em bytes vence!
Casos de teste
Usando listas de strings com os dados classificados do mais alto para o mais baixo:
Entradas
[ "321", "654" ]
[ "222", "321", "211" ]
[ "333", "311", "331", "111" ]
[ "111", "222", "333", "444" ]
[ "321", "421", "521", "621" ]
[ "422", "221", "442", "421", "222" ]
[ "222", "111", "421", "211", "651", "652", "543" ]
Resultados esperados
[ "654", "321" ]
[ "211", "222", "321" ]
[ "111", "311", "333", "331" ]
[ "111", "444", "333", "222" ]
[ "421", "321", "621", "521" ]
[ "421", "222", "442", "422", "221" ]
[ "421", "111", "211", "222", "543", "652", "651" ]
012
vez de 123
)?