(inspirado nesta pergunta do SO )
Você recebe como entrada um único número inteiro positivo n .
No menor número de caracteres possível, produza um foguete na arte ASCII com uma cabeça, uma cauda e um corpo composto por n segmentos. Não deve haver espaços à direita ou novas linhas.
A cabeça e a cauda do foguete são sempre as mesmas para qualquer valor de n . O corpo consiste em dois tipos diferentes de segmentos que se alternam. Os exemplos devem deixar clara a estrutura do foguete.
Saída para n = 1:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Saída para n = 2:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Saída para n = 3:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
code-golf
ascii-art
kolmogorov-complexity
absinto
fonte
fonte
Respostas:
CJam,
6763 caracteresIsso deve funcionar no intérprete online .
Como funciona
Depois de enviar a string Unicode, o snippet
converte a sequência da base 60000 para a base 127, lança na sequência e avalia o resultado.
O código que é executado é o seguinte:
fonte
CJam, 121 bytes
Experimente online
Toma a entrada n via STDIN.
Vou adicionar uma explicação em algum momento mais tarde. Basicamente, é tudo apenas um monte de loops de uma maneira muito ingênua. Para alternar entre as duas partes diferentes do corpo, tenho um loop aninhado sobre a parte e um loop sobre
0
e1
. Depois, basta adicionar o iterador externo e o interno e usar sua paridade para decidir entre o triângulo apontando para cima ou para baixo.fonte
java.util.NoSuchElementException
cópia + colar o código (apontando paraLri
)Ruby, 203
Ungolfed
Penso que, neste caso, é benéfico ter uma versão sem golfe.
Explicação
Duvido que isso seja eficiente, mas foi divertido.
ARGV
.h
contém a "cabeça" e a "cauda" do foguete,r
os "sulcos" que separam as diferentes partes do foguetem
ep
são as partes superior e inferior do "corpo" do foguete.Array
["ridge", "top of body", "bottom of body", "ridge", "bottom of body", "top of body"]
e levando os primeiros3*n
elementos.puts
garante que tudo tenha sua própria linha.fonte
Python, 120 + 77 + 1 = 198 caracteres
Essa acabou sendo a abordagem errada, mas eu já tinha terminado quando Martin postou sua resposta.
Requer um arquivo
R
(+1 para o nome do arquivo) de 77 bytes, que você pode gerar da seguinte maneira:fonte
Caracteres JS, WIP, 252b ou 173
Não é uma função, portanto, você deve definir o valor de n no início (3 aqui) e executá-lo no console ou no nodeJS.
Aqui está a versão 252b:
E aqui está a versão de 173 caracteres (usando http://xem.github.io/obfuscatweet/ )
fonte
JavaScript (E6)
252257Uso excessivo de string.repeat
fonte
Javascript (ES3): 243
219bytesfonte
SyntaxError: function statement requires a name
, 2: saída incorrecta, os segmentos corporais ahould não ser todos iguais (pares e ímpares são diferentes)