Aqui está um biscoito salgado ASCII :
_________________
| . . . |
| . . |
| . . . |
| . . |
| . . . |
|_________________|
Aqui estão dois biscoitos empilhados:
_________________
| . . . |
| . __________|______
| . | . . . |
| .| . . |
| . | . . . |
|______| . . |
| . . . |
|_________________|
Escreva o programa mais curto possível, que use um número inteiro positivo e desenhe uma pilha desses muitos crackers de solução salina ASCII.
A entrada pode vir de stdin, linha de comando ou você pode simplesmente escrever uma função. A entrada sempre será válida. A saída deve ir para stdout ou alternativa mais próxima.
Cada cracker empilhado é sempre deslocado 2 caracteres para baixo e 7 caracteres à direita do cracker abaixo dele. Não deve haver espaços à direita ou novas linhas estranhas.
O programa mais curto em bytes vence.
Exemplos
Se a entrada é 1
a saída é
_________________
| . . . |
| . . |
| . . . |
| . . |
| . . . |
|_________________|
Se a entrada é 2
a saída é
_________________
| . . . |
| . __________|______
| . | . . . |
| .| . . |
| . | . . . |
|______| . . |
| . . . |
|_________________|
Se a entrada é 3
a saída é
_________________
| . . . |
| . __________|______
| . | . . . |
| .| . __________|______
| . | . | . . . |
|______| .| . . |
| . | . . . |
|______| . . |
| . . . |
|_________________|
E assim por diante.
code-golf
ascii-art
kolmogorov-complexity
Passatempos de Calvin
fonte
fonte
___|___
vez de_______
. Eu estou supondo que ficaria estranho se fosse o últimoRespostas:
CJam,
140125119116 bytesExperimente online.
Uma única solução salina
O trecho de código
deixa o seguinte na pilha:
Salgadinhos empilhados
Suponha que a solução salina de cima seja salva em Z.
fonte
JavaScript (E6)
24925928930345Não é tão confiante sobre a compressão das cordas.Encontrou uma boa compressão para as cordas.O caso simples de 1 cracker parece difícil de gerenciar. Pode haver uma maneira melhor ...Ungolfed mais ou menos
Esse é o código básico, antes de começar a jogar golfe. Não é exatamente o mesmo e funciona apenas para n> 2
Teste no console do FireFox / FireBug
Saída
fonte
Python,
252241 caracteresAgradecemos a FryAmTheEggman e Vincent por cortar 11 caracteres.
Uma preponderância de crackers:
Esse código parece realmente ineficiente, mas outras respostas dirão. Ele apenas copia e cola o cracker de água salgada em uma matriz no ponto certo, explica o cracker mais baixo com 1 caractere e imprime tudo.
Eu posso reduzi-lo a 230 caracteres se eu usar um arquivo externo (código 202 + tamanho do arquivo 38 + 1 nome do arquivo).
fonte
n=1 upto 2^10
que possamos ter certeza de que seu programa realmente faz a coisa certa.list(' '*(7*N+12))
poderia ser[' ']*(7*N+12)
.G=[list(' '*(7*N+12))for _ in R(2*N+5)]
comG=map(list,[' '*(7*N+12)]*(2*N+5))
Perl 189
Roubando algumas idéias de compressão de cordas da choroba, eu consegui:
Para uma visualização mais fácil no seu navegador:
Por contexto, o meu melhor antes disso:
Perl 207
Adicionando novas linhas e recuo para facilitar a leitura no seu navegador:
Você pode substituir "pop" por "<>" para obter a contagem de STDIN em vez de como um parâmetro da linha de comando e obter 206 bytes. Ir para STDERR reduziria para 204 bytes.
Se eu pudesse ativar o recurso 'dizer' sem uma penalidade de bytes, chegaria a 202.
invocado como:
fonte
say
sem penalidade, porque é o mesmo que executar na linha de comando com, em-E
vez de-e
.perl -E''
não conta para o total de personagens._|_
.Perl 201
(remova as novas linhas, exceto a primeira a obter o #)
say
+<>
= 198.fonte
Haskell, 215 bytes
Este cria a pilha de crackers indutivamente, puxando as partes do cracker e espaçando algumas listas cíclicas:
O fluxo de controle é bem direto; a maior parte das artimanhas consiste em reutilizar o máximo possível de peças do cracker.
Ungolfed:
fonte
Python, 299
Eu pensei que estava sendo inteligente, mas a solução acabou sendo muito complicada e mais longa do que qualquer abordagem direta, mas não pude resistir a publicá-la. O programa calcula explicitamente qual caractere deve ser plotado nas diferentes posições da string de saída, sem repetir os crackers individuais.
E a última linha foi expandida para ver o que estava acontecendo:
fonte
C, 284
Para a função
f
ea#define
s, excluindo espaços em branco desnecessários emain
. De acordo com o comentário do edc65, incluí um número inteiro de 128 bits (o que eu faria de qualquer maneira), mas calculei novamente mal e só consigo fazer 29 crackers antes que os tops comecem a desaparecer.Função completa e programa de teste abaixo. Irá comentar mais tarde.
Existem apenas quatro caracteres diferentes na saída. Estes são decodificados a partir de números binários 0-3 por
" _.|"
. A matrizs[]
contém um número inteiro para cada coluna da saída, 2 bits por símbolo, que é inicializado para conter o cracker mais à direita.O primeiro
for
loop copia o cracker anterior, pressiona-o para movê-lo para cima, exclui o canto inferior direito usando&
e ORs com o cracker anterior, 7 passos para a esquerda.O segundo
for
loop decodifica a representação de 2 bits de cada caractere no caractere real e imprime o caractere. Há muito código aqui apenas para suprimir espaços em branco desnecessários na saída. Estou desapontado por minha pontuação ter subido, em vez de ter sido inferior à minha revisão anterior.Saída
São 29 bolachas. Substituí o espaço por um
-
para uma aparência diferente e para mostrar que não há espaços à direita ou novas linhas estranhas na saída.fonte
JavaScript (ES6) HTML5 - 233
236bytesProvavelmente não é uma resposta válida, mas não resisti a postar, desculpe :-P
Teste no Firefox com
F(1)
,F(2)
,F(3)
, etc.Exemplo: http://jsfiddle.net/Lvmg9fe8/7/
fonte
F(1)
ou qualquer outro número, depois de ter inserido esse código no console JS no Firefox ...