Seu desafio é gerar exatamente a seguinte caixa:
..................................................
..................................................
.. ..
.. ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ..
.. ..
..................................................
..................................................
A caixa tem altura e largura 50, os espaços são dois largos.
Você deve escrever uma função ou programa que emita ou retorne uma string e não aceite nenhuma entrada.
Menos bytes ganha!
+
caixa mais interna ter apenas 1 camada na parte superior e inferior? Isso tornará as respostas baseadas em algoritmos um pouco mais longas, pois significa que as duas camadas mais internas não são exatamente quadradas.Respostas:
Pyke,
2017 bytesExperimente aqui!
A função surround foi criada para questões de complexidade kolmogorov como esta!
fonte
J , 25 bytes
Experimente online!
Explicação
fonte
echo
, não será nem uma função, apenas um valor. Embora J não tenha funções de argumento zero de qualquer maneira.C, 115 bytes
Define uma função
f
(chamada comof();
) que imprime a sequência em STDOUT.fonte
C,
535478477 bytesAgora isso é muito golfe: - /
Aqui está a saída;
fonte
for(;i++<51;
e agora eu estou fora por um todos os lugares: - /++i
Haskell, 72 bytes
@ A solução da Zgarb em Haskell. Eu também tentei construir a caixa adicionando camadas ao redor do núcleo
["..",".."]
, mas ele é 9 bytes mais longo (81 bytes).fonte
Empilhados, não concorrentes, 35 bytes
Experimente aqui!
Ungolfed:
Bem simples.
surround
é uma função que envolve uma entidade com uma entidade de preenchimento. Por exemplo,(0) 1 surround
é((1 1 1) (1 0 1) (1 1 1))
.$surround
ésurround
uma função, não avaliada.fold
pega um valor inicial, depois algo para dobrar e depois uma função. Nesse caso,surround
éfold
ed, envolvendo a cadeia inicialmente vazia''
(equiv.ε
) Com cada caractere da cadeia.Isso é criar uma cadeia de caracteres
$' + .'
que, quando multiplicada por um número, repete cada caractere. Isso nos deixa com:++ ..
. Isso é então convertido em uma string. Em seguida, repetimos essa sequência três vezes e, finalmente, acrescentamos a.
, fornecendo a sequência desejada.Uma abordagem diferente para 39 bytes:
#\
é insert e pega o caractere inicial da string como o valor inicial. Também funciona apenas em matrizes.fonte
JavaScript (ES6), 117 bytes
A solução não-recursiva levou-me 128 bytes:
Onde
\n
representa o caractere literal de nova linha.fonte
C, 97 bytes
fonte
Geléia , 18 bytes
Experimente online!
A mesma abordagem da resposta J de Zgarb:
12ŒRA
éabs([-12 … 12])
,x2
repete cada elemento duas vezes,»þ`
cria uma tabela de máximos,ị“ + .”
indexa ciclicamente em uma string eY
junta - se por novas linhas.fonte
05AB1E ,
393533 bytesExperimente online!
Versão de 33 bytes que é mais legal agora porque Emigna comentou, poupando-me 2 bytes:
Experimente online!
fonte
". + "DøJ3×'.«.pvy¤25yg-׫«})«»
para 33 bytes.… .+•â3fM~•3BSè.pvy¤25yg-׫«})«»
por 34 bytes na "versão mais fria".MATL , 21 bytes
Experimente online!
fonte
Ruby, 77 bytes
fonte
[i%26-13,i/52].map(&:abs).max%4
(salva um byte)Carvão , 25 bytes
Experimente online! O link contém o modo detalhado para explicação
fonte
Python 3 , 89 bytes
Experimente online!
fonte
Haskell, 385 bytes
Primeira rodada de código de golfe aqui ... ansioso para ver como os outros lidam com este.
Resultado:
fonte
where
em uma única linha e use;
para separação. 3)f:f:[]
éf:[f] and
d: '': '': [] `éd:" "
. 4)m
pega um parâmetro, mas não o usa. Inlinem
et
. 5) defina uma nova função#
para substituirreplicate
:c#x=c<$[1..8*n+x]
e chame-a comod#2
e' '#(-6)
. 6)mod 2 == 0
pode ser substituído comeven
, ou inverter o teste e usoodd
e o jogador de golfe deotherwise
:1<2
. ...b n=f:f:s:s:map(\x->l++x++r)(b$n-1)++s:s:f:[f]where f=d#2;s=l++' '#(-6)++r;l=d:d:" ";r=reverse l;d|odd n='+'|1<2='.';c#x=c<$[1..8*n+x]
.Oitava, 53 bytes
Gere um padrão de repetição de 1 a 8 do centro para fora e use-o como índice para extração de elementos de
. ++ .
Experimente Online!
fonte
Bash, 191 bytes
Provavelmente pode ficar menor, mas foi menor do que minhas tentativas algorítmicas.
fonte
C #, 203 bytes
Programa completo e legível:
Função Golfed :
fonte
05AB1E , 33 bytes
Experimente online!
Explicação
fonte
PowerShell ,
171151 bytesExperimente online!
Resposta Ho-hum. Tenho certeza de que há uma maneira mais curta (dado o tamanho das outras respostas, estou confiante), mas isso mostra alguns truques legais.
Explicação:
1..12|%{' . +'[$_%4]}
gera uma matriz de strings (de um caractere de comprimento), no padrão correto que precisamos. Experimente online!Em seguida, adicionamos
|%{($a+=$_+$_)})+"$a."
qual pega a matriz e a expande lateralmente com base na linha anterior. Experimente online!Essas strings são então enviadas para um loop
|%{$c=if(++$i%2){('+','.')[($b=!$b)]}else{' '};$_.PadRight(25,$c)}
,. A cada iteração, escolhemos o caractere correto (um sinal de mais, um ponto ou um espaço) e, em seguida, usamos a.PadRight
função para preencher o número apropriado de caracteres. Experimente online!Agora, temos a base do canto superior direito. Precisamos reverter cada string
|%{,($_+-join$_[($z=25..0)])*2}
e anexá-las para que possamos chegar ao topo do bloco. Isso é feito com o-join
comando e a indexação para trás25..0
. Além disso, encapsulamos as seqüências de caracteres em uma matriz,(...)
e as fazemos dobrar*2
para obter o topo inteiro.Experimente online!Tudo isso é armazenado
$x
e encapsulado em parênteses, para colocar as seqüências no pipeline. Por fim, revertemos$x
(certificando-se de cortar a linha do meio duplicada-duplicada, caso contrário, teríamos quatro..
no meio) e as deixamos no pipeline. Um implícitoWrite-Output
coloca uma nova linha entre as strings, então obtemos isso de graça.fonte