Escreva um programa ou função que receba um número inteiro positivo e imprima ou retorne uma pilha dessas muitas tartarugas de arte ASCII , em que cada tartaruga é maior que a acima.
Especificamente, se a entrada for 1
, a saída deve ser:
__
/,,\o
Se a entrada for 2
:
__
o/,,\
____
/,__,\o
Se a entrada for 3
:
__
/,,\o
____
o/,__,\
______
/,____,\o
Se a entrada for 4
:
__
o/,,\
____
/,__,\o
______
o/,____,\
________
/,______,\o
Se a entrada for 5
:
__
/,,\o
____
o/,__,\
______
/,____,\o
________
o/,______,\
__________
/,________,\o
E assim por diante no mesmo padrão para entradas maiores.
Observe que:
- A cabeça (a
o
) da tartaruga de fundo está sempre à direita. As cabeças das tartarugas acima se alternam. - Nenhuma linha pode ter espaços à direita.
- Espaços à esquerda supérfluos não são permitidos. (ou seja, a parte de trás da tartaruga de fundo deve estar no início da linha.)
- Uma única nova linha opcional à direita é permitida.
O código mais curto em bytes vence.
code-golf
string
ascii-art
kolmogorov-complexity
Passatempos de Calvin
fonte
fonte
,________,
Quando alguém diz algo que não faz sentido.Respostas:
Lote, 256 bytes
Observe que a linha 1 tem um espaço à direita e a linha 4 tem dois espaços à direita.
i
portanto, contém umecho
comando com a quantidade apropriada de indentação para cada tartaruga. Enquanto isso,u
contém o número de sublinhados em tartarugas alternativas. Uma tartaruga ímpar líder é de invólucro especial e, em seguida, o restante das tartarugas é produzido em pares.fonte
C, 131 bytes
Experimente online.
Define uma função que imprime as tartarugas.
Abusa fortemente os especificadores de largura e precisão da printf para obter o espaçamento e repetir os sublinhados. Cada tartaruga é impressa usando uma única
printf
chamada:Eu também tenho uma versão diferente com 144 bytes sem o espaço em branco removido:
fonte
,_,
em seu código.Ruby, 100 bytes
Solução recursiva. Experimente online!
fonte
05AB1E, 45 bytes
Experimente online
fonte
G
-loop já estava na versão de agosto de 2016, mas se estava,Lv
pode serG
e ambosy
podem terN
-1 byte.V ,
57, 5349 bytesComo ele contém caracteres não imprimíveis, aqui está um hexdump:
Experimente online!
Explicação:
fonte
0
e abaixo.input > 10
. Em uma nota lateral, acidentalmente quebrei completamente com a entrada0 41c14
. Não tenho certeza se eu quebrei o código, ou o corredor.-1
como uma sequência que não pode fingir que é um número. Felizmente, eu não tenho que lidar com isso.Perl, 92 bytes
Código de 91 bytes +1 para
-n
.Requer
-E
sem custo extra.Uso
Graças a @Dada por -9 bytes com seu re-trabalho!
fonte
perl -nE 'for$i(1..$_){say$"x$_._.($v=_ x(($i-1)*2))._.$/.$"x(--$_-1).($_%2?o:$_?$":"")."/,$v,\\".($_%2?"":o)}'
. Eu tentei ficar abaixo dos 100 também, mas não ...Queijo Cheddar , 105 bytes
fonte
Retina ,
979188 bytesA contagem de bytes assume a codificação ISO 8859-1.
Experimente online!
fonte
Python 2, 116 bytes
fonte
lambda m:for i in r...
em vez deinput()
R , 150 bytes
de forma mais limpa (adiciona um byte)
A estrutura básica se chama recursivamente - dizendo a si mesmo o número final a ser chamado e o nível atual. Começa com um padrão para y = 1, portanto, ele precisa apenas de uma variável para a chamada inicial. Define rapidamente dois valores usados com freqüência. Depois, repete tudo o número de vezes necessário.
Cada um deles testa implicitamente se deve adicionar a cabeça à direita ou à esquerda e colocá-la adequadamente.
fonte
#
antes do título no editor de remarcação para formatá-lo como as outras respostas.TSQL, 189 bytes
Agora com aceitação de entrada - graças a @PatrickRoberts
Violino
fonte
i
ao custo de 4 bytesC,
328238234215 bytes:Uma implementação recursiva usando muita formatação de string e a
memset
função interna . Vou tentar jogar isso mais ao longo do tempo, tanto quanto eu puder.C It Online! (Ideona)
fonte
17
e além, a lógica quebra por alguma razão e, portanto, o mesmo acontece com as tartarugas. Atualmente, estou tentando descobrir o que está errado.'c'
) pelo código ASCII para poupar um carácter cada :)Java 1.7, 238 bytes
Um conjunto de duas funções: primeiro itera sobre a entrada (número de tartarugas), a segunda facilita a construção de uma sequência de caracteres repetidos de forma recursiva (ou seja, os espaços principais, as costas e a barriga das tartarugas).
Ungolfed:
Executá-lo! (Ideona)
Supus que não há problema em excluir a definição de classe da contagem de bytes.
Eu posso ser capaz de jogar um pouco mais adiante, revertendo a ordem de iteração do loop (construindo da tartaruga inferior para cima) e / ou indo totalmente recursivo como algumas das outras respostas.
Nota para si mesmo: Java realmente não possui uma abreviação incorporada para repetir n caracteres ...
fonte
Pitão,
137120113110 bytesUngolfed:
As cabeças estavam duras.
fonte
('o','')[b]
, você pode fazer'o'*(1-b)
(e'o'*b
para('o','')[1-b]
).'0'*-~-1
é menor que'0'*(1-b)
F #,
218207202196187 bytes.Raspou a maioria desses bytes inserindo variáveis
A lógica é descaradamente roubada desta resposta Python
Experimente online.
fonte
CJam , 88 bytes
Cria a maior tartaruga primeiro (porque, caso contrário, o que todas as outras tartarugas suportariam?), Depois reduz gradualmente o tamanho até que a menor seja feita. Funciona para qualquer número inteiro maior que 0.
Experimente online!
fonte
Python 2.7,
255238236 bytesMesmo que isso perca para as outras soluções Python 2, gostei da minha abordagem recursiva:
edit1: eliminou alguns bytes eliminando algumas substituições
edit2: raspou 2 bytes salvando os sublinhados como uma variável
fonte
Python 2, 147 bytes
Experimente online
fonte
Python 2.7,
139114113130 bytesEu também gostei da abordagem recursiva do Iguanodon, então aqui está uma tentativa um pouco mais curta.
EDITAR
Um poderoso
25269 bytes jogou devido a algumas dicas fantásticas da Destructible Watermelon. Muito Obrigado!Acho que pode ser a resposta mais curta do Python agora :-)fonte
i=input();t(i)
parte, porque você pode ter apenas uma função.PowerShell ,
10510097878584 bytes-21 bytes graças a mazzy, o homem louco
Experimente online!
Inteligentemente muda variáveis usando
$_--
para evitar o uso de($_+1)
blocos repetidos para economizar vários bytes. Ele também converte o argumento único em uma sequência que é convertida em int quando usada em um intervalo para iterar através do número de tartarugas. O maior truque agora é ter o 2º nível de espaçamento de uma tartaruga apenas aumentar todas as outras linhas subtraindo$_%2
(ou seja, 0 se for par, 1 se for ímpar) da contagem atual de linhas.Caso contrário, é bastante matemático de índice se adequar
_
econtar, incluindo um contador de lag na forma de
$i++
, e agora apenas um único índice de lista para colocar a cabeça no lado correto.fonte
ES6 (JavaScript), 140 bytes
Código
Teste
fonte
Tela , 26 bytes
Experimente aqui!
fonte