Considere estes 15 padrões de cartas de baralho ASCII (ás ao Joker e verso), onde X
é um espaço reservado para o símbolo do naipe : (eles ficam melhores com menos espaçamento entre linhas)
------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- -------------
|AX | |2X | |3X | |4X | |5X | |6X | |7X | |8X | |9X | |10X | |JX | |QX | |KX | |J | |* * * * * * *|
| ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | |O ------- | | * * * * * * |
| | | | | | | | | | | | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X | | | |X | | | |X | | |K | | | |* * * * * * *|
| | | | | | X | | | | X | | | | | | | | | | | | | | | | X | | | | X | | | | | | | | X | | | | | | | | | | | | | | |E | J | | | * * * * * * |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |X X| | | |X X| | | | | | | | | | | | | | |R | O | | |* * * * * * *|
| | X | | | | | | | | X | | | | | | | | X | | | |X X| | | |X X| | | |X X| | | | X | | | | | | | | J | | | | Q | | | | K | | | | K | | | * * * * * * |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |X X| | | |X X| | | | | | | | | | | | | | | | E | J| |* * * * * * *|
| | | | | | X | | | | X | | | | | | | | | | | | | | | | | | | | X | | | | | | | | X | | | | | | | | | | | | | | | | R | O| | * * * * * * |
| | | | | | | | | | | | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | |X X| | | | X| | | | X| | | | X| | | | | K| |* * * * * * *|
| ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- | | ------- E| | * * * * * * |
| XA| | X2| | X3| | X4| | X5| | X6| | X7| | X8| | X9| | X10| | XJ| | XQ| | XK| | R| |* * * * * * *|
------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- -------------
Escreva um programa que utilize uma sequência que denote uma sequência de cartões separada por espaço usando ...
A 2 3 4 5 6 7 8 9 10 J Q K
seguido de um dosC D H S
(para tacos, diamantes, copas e espadas) dos 52 cartões padrão.- Um single
R
para um Coringa. - Um single
B
para o verso (um cartão com a face para baixo).
Portanto, a corda B AS KH 10C R JD
denota uma carta virada para baixo, seguida por um ás de espadas, seguida por um rei de copas, seguido por um dez de paus, seguido por um Coringa, seguido por um valete de diamantes.
Seu programa precisa imprimir as cartas de baralho ASCII correspondentes em stdout, substituindo X
pelo símbolo do naipe apropriado.
Por exemplo, a saída para B AS KH 10C R JD
seria
------------- ------------- ------------- ------------- ------------- -------------
|* * * * * * *| |AS | |KH | |10C | |J | |JD |
| * * * * * * | | ------- | | ------- | | ------- | |O ------- | | ------- |
|* * * * * * *| | | | | | |H | | | |C C| | |K | | | | |D | |
| * * * * * * | | | | | | | | | | | C | | |E | J | | | | | |
|* * * * * * *| | | | | | | | | | |C C| | |R | O | | | | | |
| * * * * * * | | | S | | | | K | | | | | | | | K | | | | J | |
|* * * * * * *| | | | | | | | | | |C C| | | | E | J| | | | |
| * * * * * * | | | | | | | | | | | C | | | | R | O| | | | |
|* * * * * * *| | | | | | | H| | | |C C| | | | | K| | | D| |
| * * * * * * | | ------- | | ------- | | ------- | | ------- E| | ------- |
|* * * * * * *| | SA| | HK| | C10| | R| | DJ|
------------- ------------- ------------- ------------- ------------- -------------
Você pode pegar a entrada do stdin ou escrever uma função que aceita uma string.
A submissão com o menor número de caracteres vence.
Bônus: subtraia 30 da sua contagem de caracteres se você usar os símbolos pretos de naipe Unicode em♣ ♦ ♥ ♠
vez de C D H S
em sua saída. (A entrada sempre usa C D H S
.)
Notas
- Pode haver mais de 54 cartões na sequência de entrada e pode haver duplicatas de qualquer cartão.
- Não deve haver saída se a entrada for a sequência vazia.
- Não deve haver espaços à direita além dos (opcionalmente) os dois que compõem os cantos direitos da última carta.
- Você pode assumir que a entrada é válida.
- Atualização: a etiqueta inferior direita nos cartões padrão foi revertida para que o valor esteja no canto. O rótulo Joker no canto inferior direito não mudou.
fonte
Respostas:
JavaScript (E6) 542 (572 - bônus 30)
553 564 5763 tipos de formas:
A
z
sequência (compactada) contém os blocos de construção básicos paraNota do bônus O código para ganhar o bônus de 30 pontos é de 29 caracteres.
Teste no console do FireFox / FireBug
Resultado
Código não jogado
fonte
C # - 906
Programa C # bastante grande e simples que leva as entradas e saídas da linha de comando para a saída padrão. Provavelmente ainda há muito que pode ser jogado no golfe, eu descobri alguns bytes chatos enquanto escrevia isso, mas isso terá que esperar. Eu não acho que vou optar pelo bônus de personagem do terno Unicode.
Código de golfe:
Exemplo de saída para
cardGolf.exe 7H QH 3S B R
A maior parte da renderização é feita pelo
P
método anônimo, que assume uma posição, comprimento, sequência e largura e renderiza um retângulo da sequência. Por exemplo, a parte de trás do cartão é apenas"* "
repetida. OT
método anônimo é uma versão modificada de uma que usei para uma tarefa anterior, que renderiza muitos retângulos. É, no entanto, bastante volumoso e só me permite renderizar as bordas e o fundo em menos bytes, o que provavelmente não vale a pena. Uma versão listradaT
é aW
que renderiza células em vez de retângulos, e também não é usada, mas uma versão embutida é usada para renderizar cartões de valor de 2 a 10. Observe que o código não utilizado foi removido para a contagem de bytes, deixo-o porque posso acabar usando-o e os uso para teste.O programa simplesmente percorre cada linha de saída (13 delas) e, em seguida, renderiza cada cartão por vez e extrai 1 fatia dele, para que cada cartão seja renderizado na sua totalidade 13 vezes. Com o objetivo de espaçá-los, cada cartão é tratado como um bloco de 16 por 13, e eu apodo cada linha de saída para remover os espaços finais (os espaços dos cantos são removidos).
Código formatado, com comentários e código de conceito / teste:
fonte
PowerShell , pontuação 442 = (
509495472 bytes = (156 script + arquivo 316) - 30 bônus)Experimente online!
Desenrolado:
Script do Powershell para criar o arquivo tar
t
(consulte TIO):fonte