Começando com /\
você pode criar um triângulo de Sierpinski como padrão, adicionando uma linha abaixo de tal forma que ...
- Qualquer ramo solta
/
ou\
se divide novamente em dois ramos:/\
. - Qualquer colisão de galhos
\/
morre sem nada (além de espaços).
Repetir essas regras gera
/\
/\/\
/\ /\
/\/\/\/\
/\ /\
/\/\ /\/\
etc...
Escreva um programa ou função que receba um número inteiro positivo N e imprima as primeiras N linhas desse padrão em stdout, sem mais espaços iniciais ou finais do que o necessário.
Por exemplo, se a entrada for 1
a saída deve ser
/\
Se a entrada for 2
a saída deve ser
/\
/\/\
Se a entrada for 8
a saída deve ser
/\
/\/\
/\ /\
/\/\/\/\
/\ /\
/\/\ /\/\
/\ /\ /\ /\
/\/\/\/\/\/\/\/\
E assim por diante.
O código com o menor número de bytes vence.
code-golf
fractal
code-golf
math
polynomials
abstract-algebra
code-golf
geometry
3d
popularity-contest
string
code-golf
math
3d
code-golf
javascript
browser
code-golf
random
array-manipulation
code-golf
restricted-source
javascript
set-theory
code-golf
graph-theory
path-finding
decision-problem
code-golf
code-golf
primes
c
code-golf
graphical-output
fractal
fastest-code
simulation
code-golf
sequence
code-golf
graphical-output
code-golf
code-golf
math
binary
rational-numbers
code-golf
number
fibonacci
popularity-contest
code-golf
number
code-golf
game
Passatempos de Calvin
fonte
fonte
Respostas:
GolfScript (42 bytes)
Demonstração online
Isso explora uma relação bem conhecida entre o triângulo de Pascal e o triângulo de Sierpinski.
fonte
CJam,
4846 bytesAbordagem recursiva simples baseada nas observações 1 e 2 da pergunta.
Experimente online.
Como funciona
CJam, 51 bytes
Gosto mais dessa abordagem, mas ela não pode competir com a recursiva. Mesmo depois de eliminar
2mL
(o que resulta em pelo menos O (2 n ) tempo de execução), ainda estou com 48 bytes ...Essa abordagem codifica
/\
como 1 e espaços duplos entre eles como 0. Considerando os números binários das matrizes resultantes, vemos que a configuração da enésima linha corresponde ao enésimo enésimo número maior que 1 que pode ser expresso como um produto de diferentes números Fermat (números inteiros no formato 2 2 k +1 ).Como funciona
fonte
Python 2 -
140 139 127 122 121 118116Com base em substituições temporárias de cadeias ( /programming//a/8687380/3419103 ):
/
>V
\
>V
\/
>__
(2 espaços)V
>/\
fonte
b*(N-1)+m+n
possívelb*~-N+m+n
Javascript - 117 bytes
Minificado:
Expandido:
Saída de amostra (para
n = 20
):Agora, se apenas os nomes das funções
repeat
ereplace
não fossem tão longos. : Pfonte
Pitão, 45 bytes
Exemplo de execução
Como funciona
fonte
Ruby, 90
Explicação
Integer
.String#center
para criar aString
"/\"
comn - 2
espaços de cada lado e coloque-o emArray
(a
).a
último elemento dea
todas as ocorrências de"\/"
substituídas por" "
e todas as ocorrências de" /"
ou" \"
substituídas por"/\"
.puts
para imprimir cada elemento ema
sua própria linha.fonte
Haskell,
128112fonte
import Data.List
(desde que usouunlines
), o que o eleva a 145unlines
está no prelúdio.JavaScript (E6)
107106Editar: contagem de bytes fixa, tornada recursiva.
Não é muito diferente da outra resposta JS ... pelo menos essa 'imprime' o padrão conforme solicitado. O núcleo está substituindo '/' '\' por '/ \' e todo o resto por '' em cada nova linha.
Teste no console do FireFox / FireBug
Resultado
fonte
Perl 5 - 56 bytes
\ 0's podem ser substituídos por caracteres reais de bytes nulos
Está usando o fato de que, se você ignorar espaços à esquerda e representar '/ \' como 1 e '' como 0, o padrão em uma determinada linha f (n) = f (n-1) ^ (f (n-1) < <1) No entanto, os cálculos no código acima são executados em cadeias próximas à saída esperada (sem espaços à esquerda, outros espaços substituídos por bytes nulos), graças à manipulação de cadeia de bits em bits do perl.
fonte
Python 2, 84 bytes
fonte
Javascript com lambdas,
141128141
128
Pode ser testado no Firefox (n = 16):
fonte
Python 2, 97 bytes
fonte
Mathematica, 86 bytes
fonte