É sexta-feira e eu estou cansado, então vamos fazer um rápido! Não aceite nenhuma entrada, no entanto, você deve enviar todas as treze cartas numeradas diferentes em um baralho de cartas padrão. Você deve imprimir 2 através de Ace (agnóstico de naipe).
Cada cartão tem uma parte superior que é indicada com um espaço
e dez _
e outro espaço
.
A segunda linha do topo é indicada com um /
e dez espaços
e um\
A terceira linha é igual a todas as linhas do meio que excedem o (s) caractere (s) indicando que o valor do cartão aparece dois espaços à direita (se estiver no topo) ou dois espaços à esquerda (se estiver no fundo) da borda.
Cada linha do meio é um espaço simples |
e dez
e mais um|
Finalmente, a última linha é um \
e dez _
e, finalmente, um/
Se o valor for de vários dígitos, a largura total pela altura do cartão não deve mudar. (ou seja, os 10 não ampliarão os lados do cartão)
Rei Exemplo:
__________
/ \
| K |
| |
| |
| |
| |
| |
| K |
\__________/
9 Exemplo
__________
/ \
| 9 |
| |
| |
| |
| |
| |
| 9 |
\__________/
10 Exemplo
__________
/ \
| 10 |
| |
| |
| |
| |
| |
| 10 |
\__________/
Produza-os na ordem do menor para o maior (ases são altos!).
Isso é código-golfe, então o código mais curto vence.
Divirta-se e tenha um fim de semana divertido!
fonte
Respostas:
PowerShell v2 +,
120116114108 bytesConstrói um intervalo
2..10
e concatenação de matriz comchar
-arrayJQKA
. Alimenta isso em um loop|%{...}
. A cada iteração, definimos$z
igual a um número apropriado de espaços (com base no fato de estarmos no card10
ou não), definimos$x
como10
sublinhados e definimos$y
como10
espaços.Então, começamos nossos canais. Vamos alavancar o padrão
Write-Output
para inserir uma nova linha entre os elementos do pipeline, portanto, precisamos colocar o material no pipeline. Observe que na maioria dos lugares, estamos usando uma nova linha literal em vez de fechar e reabrir nossas strings para economizar alguns bytes.O primeiro é apenas
$x
com dois espaços, depois$y
com duas barras, depois| $_$z|"
o tubo, um espaço, o número apropriado de espaços e outro tubo. Isso forma a parte superior dos cartões até e incluindo a linha de valor.Temos que ponto e vírgula aqui, já que o próximo usa uma matriz. Ele
,"|$y|"*5
constrói uma matriz de cadeias, com o operador de vírgula, do tubo com espaços - na saída, cada elemento dessa matriz recebe uma nova linha gratuitamente.Em seguida, a
"|$z$_ |
marcação para o valor inferior e, finalmente,$x
com barras para a parte inferior do cartão.Snippet de saída
fonte
Python,
161160156 156149 bytesUm byte salvo por Shebang
Isso poderia usar algum trabalho, mas aqui está:
Explicação
Fazemos uma lista de todas as classificações em ordem usando
map(str,range(2,11)
. Depois, percorremos cada uma das fileiras e fazemos um cartão.Nós fazemos o topo do cartão:
Então a classificação vai à esquerda:
Usamos
.ljust
porque10
tem dois longos e todos os outros são um de largura.Em seguida, imprimimos as 5 linhas no meio:
e a classificação inferior:
Finalmente, imprimimos a parte inferior do cartão:
fonte
v="_"*10
e substituir essas instâncias, economizará outro byte!JavaScript (ES6), 151 bytes
fonte
Perl,
128117111 bytesAs 6 novas linhas literais economizam 1 byte cada. Isso não pode ser executado diretamente a partir da linha de comando devido às aspas simples nas linhas 2 e 4 para salvar 1 byte, sem a necessidade de escapar uma barra invertida.
Edit: Eu coloquei Ace no começo, mas deveria estar no final. Não altera a contagem de bytes.
Editar 2: -11 bytes: Livre-se de algumas declarações desnecessárias e adicione outra nova linha literal. Agora tudo é produzido através de um único printf.
Edite 3: -5 bytes graças a @Ton Hospel. Mas, por alguma razão, estou obtendo 111 bytes em vez de 112 em casa quando comparado ao trabalho, portanto, vou com a contagem de bytes que meu computador doméstico está me fornecendo.
fonte
_ x10
vez de"_"x10
. Tambémqw
quase nunca é útil. no golfe. Use não cotadasJ,Q,K,A
em vez (mesmo deixando de fora o()
)Can't locate object method "_" via package "x10" (perhaps you forgot to load "x10"?) at shuffle.pl line 1.
Não sei por que, mas eu não vou lutar o intérprete :(\n
pela nova linha real):printf' %2$s\n/%3$10s\\n| %-9s|\n'.'|%3$10s|\n'x5 .'|%1$9s |\n\%s/\n',$_,"_"x10for 2..10,J,Q,K,A
PHP, 233 bytes
fonte
if
pode ser substituído por$k>9&&$c[29]=$c[113]=0&$c[112]=1;
, para salvar alguns bytes. Além disso, o Notepad ++ está dizendo que seu código tem, na verdade, 241 bytes. Eu sei que 1 desses bytes é da nova linha. Mas o outro é um mistério para mim.///,
182180 bytesExperimente online!
-2 bytes graças a m-chrzan
fonte
+
substituindo apenas 5_
dois+
se tiver apenas+
um agora.Python 3.5, 110 bytes
Impressões
' %s\n/%%11s\n'%u%'\\'
ondeu
está'_'*10
'| %-2s %2s |\n'
, cada uma com dois slots de formatação de string. O primeiro e o último são preenchidos com o valor do cartão e o restante com espaços sem efeitoOs novos recursos de descompactação do Python 3.5 são usados em dois lugares. A lista de etiquetas
[*range(2,11),*'JQKA']
descompacta os números e as letras em uma lista. E a tupla(c,*' '*12,c)
descompacta doze entradas de espaços no centro.fonte
Scala, 161 bytes
fonte
Lote, 236 bytes
Tentei jogar isso de três maneiras diferentes, mas acabei com a mesma contagem de bytes cada vez ...
fonte
05AB1E ,
717068666564 bytesUsa a codificação CP-1252 .
Link ligeiramente modificado como
…
não funciona comÿ
no ATM de TIO.Experimente online!
Explicação
TL¦"JQKA"S«
empurra a lista[2,3,4,5,6,7,8,9,10,J,Q,K,A]
Em seguida, passamos o loop sobre cada valor de cartão com
v
ð'_Tשð
constrói" __________ "
ðT×…/ÿ\
constrói"/ \"
9yg-ð×y"| ÿÿ|"Â
as 2 linhas com valores de cartão (a segunda linha é a primeira invertida)ðT×…|ÿ|5×
constrói 5 linhas do formulário"| |"
Então nós
®…\ÿ/
constrói a linha inferiorfonte
V , 87 bytes
Experimente online!
Como isso contém alguns imprimíveis, aqui está um hexdump:
fonte
PHP,
135131158134 bytesFelizmente, posso encontrar uma maneira de encurtar isso um pouco mais.
Isso aproveita
printf
a repetição de vários caracteres e formata tudo muito bem.Versão antiga:
Não é exatamente um pedaço de beleza, mas funciona!
Agradeço a Jörg Hülsermann por detectar um bug e por me deixar usar parte de seu código, que o reduziu em 4 bytes! E por encontrar um bug fatal.
fonte
10
está com erros. Está tudo bem se eu usar sua matriz? Usar em[2,3,4,5,6,7,8,9,10,J,Q,K,A]
vez dessa divisão economiza 4 bytes. Se você não autorizar, eu entenderei.$C$S
$C".($P=substr($S,$C>9))."
lidar com os espaços com valor 10 e, em vez de$S$C
você precisa, então$P$C
Ruby, 115 bytes
Uso bastante direto de
printf
.fonte
Raquete 327 bytes
Ungolfed:
Teste:
Resultado:
fonte
Java 7, 287 bytes
Ok, isso é feio e não muito eficiente, mas funciona .. Isso
10
como um caso especial, com um espaço antes na parte superior e depois na posição inferior realmente estraga tudo.Ungolfed & código de teste:
Experimente aqui.
Resultado:
fonte
R, 175 bytes
Uma resposta bastante competitiva em R desta vez para um desafio de arte ascii e definitivamente deve ser jogável.
Experimente no R-fiddle
Ungolfed e explicou
O aspecto mais interessante em que alguns bytes são salvos é a atribuição da terceira linha:
Como existem
8
espaços no total entre o personagem que indica o valor da carta e o final|
(exceto10
), podemos repetir9
espaços e subtrair o número de caracteres no cartão atualmente impresso.Armazenando cada caractere na
3rd
linha como seu próprio elemento no vetor stringr
, podemos reverter o vetor e reutilizá-lo na9th
linha.fonte
C #, 385 bytes
Meu primeiro desafio de arte ASCII - foi divertido!
Golfe:
Ungolfed:
fonte
Na verdade , 91 bytes
Experimente online!
Explicação
Parte 1: configurando a lista de valores de face:
Parte 2: criando os cartões (nova linha substituída por
\n
para facilitar a leitura):fonte