Um cassino usa o seguinte baralho de cartas. ( *
É um dos ternos do cartão D
, S
, C
ou H
.)
_________ _________ _________ _________ _________
| | | | | | | | | |
| | | | | * | | * * | | * * |
| | | * | | | | | | |
| * | | | | * | | | | * |
| | | * | | | | | | |
| | | | | * | | * * | | * * |
|_________| |_________| |_________| |_________| |_________|
_________ _________ _________ _________ _________
| | | | | | | | | |
| * * | | * * | | * * | | * * | | * * |
| | | | | * * | | * * | | * * |
| * * | | * * * | | | | * | | * * |
| | | | | * * | | * * | | * * |
| * * | | * * | | * * | | * * | | * * |
|_________| |_________| |_________| |_________| |_________|
_________ _________ _________
| | | | | |
| * * | | * * | | * * * |
| * * | | * * * | | * * |
| * * * | | * * | | * * * |
| * * | | * * * | | * * |
| * * | | * * | | * * * |
|_________| |_________| |_________|
Após cada noite, os decks antigos são descartados e cortados ao meio para evitar a reutilização. Como resultado, o cassino possui uma grande sala cheia de metades de cartões cortados.
Infelizmente, a economia está ruim e o cassino está com problemas financeiros. A coisa mais razoável para economizar dinheiro parece ser a reciclagem, então os proprietários do cassino decidem colar os cartões antigos novamente. Então eles contratam uma equipe para construir uma máquina que fará isso.
Você faz parte da equipe e seu trabalho é ajudar a identificar o cartão.
Escreva um programa ou função que terá uma imagem artística ASCII de um cartão na forma de uma sequência e retornará uma sequência de qual cartão é.
A entrada é uma string 11x5, além de caracteres de quebra de linha (CR, LF ou CRLF, você só precisa suportar um). Você pode assumir espaços em branco à direita no final de cada linha de entrada, se necessário. A entrada não conterá caracteres inválidos (além de _|-HSCD
espaço e quebra de linha).
Uma metade do cartão ficará assim:
_________
| |
| H H |
| H H H |
---H---H---
que deve ser identificado como a rainha de copas:
H12
O cassino tem um orçamento limitado, então esse é o código de golfe: o programa mais curto vence.
fonte
H 12
?Respostas:
CJam,
16151312 bytesTeste aqui.
Explicação
A idéia básica é manipular a string para que possamos fazer com que a codificação interna de comprimento de execução do CJam funcione para nós.
Vamos passar por um exemplo (o da pergunta). A sequência de entrada é
Repetimos isso duas vezes:
E remova a última linha:
Então nós classificamos essa string. Agora ele terá várias linhas novas no início, e então isso (reduzido por alguns espaços para evitar uma barra de rolagem horizontal):
Embora o caractere do terno varie, sempre será uma letra maiúscula, encontrada na quarta execução da sequência classificada (representando a nova linha). Quando codificamos o comprimento da execução, obtemos
Então, tudo o que precisamos fazer é escolher o quarto elemento e revertê-lo.
Aqui está um detalhamento do código real:
fonte
Pyth (versão recente), 16 bytes
Experimente on-line: Compilador / Executor Pyth
Explicação:
Pitão 4.0, 13 bytes
Pyth teve uma construção na codificação de comprimento de execução. Mas apenas por pouco tempo. Se alguém quiser tentar isso: Clone o repositório Pyth e faça o checkout do commit 6a6dccd.
Este programa funciona da mesma maneira que a solução CJam de Martin.
fonte
CJam, 22 bytes
Olhando para mais opções de golfe aqui. Aqui está como funciona:
Experimente online aqui
fonte
Python 2,
806866 bytesExperimente aqui
Duplique a entrada, encontre todas as letras em todas, exceto a última linha (os primeiros caracteres da última linha não podem ser letras) e, em seguida, imprima a primeira letra e quantas.
Entrada :
' _________\n| |\n| H H |\n| H H H |\n---H---H---'
Saída :
H12
Versão anterior que usa o regex (68):
Obrigado ao Sp3000 pela ajuda no golfe.
fonte
i=input()*2;s="CDSH";r=[i[:-9].count(x)for x in s];n=sum(r);print s[r.index(n)]+`n`
APL, 39 bytes
Tenho certeza de que isso pode ser muito mais curto, mas é um começo.
Isso cria uma função monádica nomeada que aceita uma sequência de entrada e retorna uma sequência contendo o naipe e o valor do cartão. Você pode experimentá-lo online !
Explicação:
Sugestões são bem-vindas como sempre!
fonte
(⊃,≢)'HDCS'∩⍨¯11↓,⍨
?5⌷{⍺,≢⍵}⌸¯11↓,⍨⍞
J, 26 bytes
Uso:
Lendo o código da esquerda para a direita:
4{~.
).+/
) o número total de caracteres que ocorre na entrada ([
) e a entrada sem os últimos 9 caracteres (_9}.[
).]
) à representação de string da soma resultante (":
).fonte
Perl, 75 bytes
Versão ungolfed
fonte
Julia, 58 bytes
Isso cria uma função sem nome que recebe uma string como entrada e retorna o naipe e o valor do cartão. Para chamá-lo, dê um nome, por exemplo
f=s->(...)
.Ungolfed + explicação:
Sugestões são bem-vindas como sempre!
fonte
Bash + coreutils, 73
fonte