Introdução
Em geometria, a curva de Peano é o primeiro exemplo de uma curva de preenchimento de espaço a ser descoberta por Giuseppe Peano em 1890. A curva de Peano é uma função contínua e subjetiva do intervalo da unidade ao quadrado da unidade, mas não é injetiva. Peano foi motivado por um resultado anterior de Georg Cantor de que esses dois sets têm a mesma cardinalidade. Devido a este exemplo, alguns autores usam a frase "curva Peano" para se referir de maneira mais geral a qualquer curva de preenchimento de espaço.
Desafio
O programa pega uma entrada que é um número inteiro n
e gera um desenho representando a n
iteração da curva Peano, começando pelas laterais 2 mostradas na parte mais à esquerda desta imagem:
Entrada
Um número inteiro que n
fornece o número de iteração da curva Peano. Entrada adicional opcional é descrita na seção de bônus.
Resultado
Um desenho da n
iteração da curva Peano. O desenho pode ser arte ASCII ou desenho "real", o que for mais fácil ou mais curto.
Regras
- A entrada e a saída podem ser fornecidas em qualquer formato conveniente (escolha o formato mais apropriado para o seu idioma / solução).
- Não há necessidade de lidar com valores negativos ou entrada inválida
- Um programa completo ou uma função são aceitáveis.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Bónus
Como não deve ser um passeio no parque (pelo menos na maioria dos idiomas que consigo imaginar), pontos de bônus são concedidos pelo seguinte:
- -100 bytes se o seu código gerar um gif da construção das curvas Peano até
n
. - -100 bytes se o seu código desenhar uma curva de preenchimento de espaço para qualquer forma retangular (a curva Peano funciona apenas para quadrados, obviamente). Você pode assumir que a entrada assume o formato
n l w
onden
tem o mesmo significado de antes (o número da iteração), mas ondel
ew
se torna o comprimento e a largura do retângulo no qual desenhar a curva. Sel == w
, isso se torna a curva Peano normal.
Pontuações negativas são permitidas (mas são possíveis ...).
Editar
Inclua a saída do seu programa na solução para n == 3 (l == w == 1)
.
n
usado sel
e tambémw
são entradas ??????????? E seria a curva de Peano ser um caso especial - não é a curva única espacial compacto, por isso alguns algoritmos pode ter que specialcase-loRespostas:
Mathematica, pontuação 60 - 100 - 100 = -140
Função pura. Toma
n
e{l, w}
(largura e altura) como entrada e fornece um gráfico animado como saída. Ele primeiro cria uma curva Peano de ordem n comPeanoCurve
. Como o caso l = w ainda precisa criar uma curva Peano, alteramos a expressão no nível 3, semelhante à resposta de DavidC ; para l ≠ w , nós apenasScale
a curva para o retângulo. Essa curva ainda será preenchida, satisfazendo o segundo bônus. Para o primeiro bônus, nós cobrimosAnimate
todos os tamanhos. Observe que o OP sugeriu que isso era suficientemente diferente do DavidC para garantir sua própria resposta. O resultado para n = 3, l = w = 1 é o seguinte:fonte
GFA Basic 3.51 (Atari ST),
156134124 bytesUma listagem editada manualmente no formato .LST. Todas as linhas terminam com
CR
, incluindo a última.Expandido e comentado
Saída de exemplo
fonte
Perl 6 , 117 bytes
Experimente online!
Indexado a 0. Retorna uma matriz 2D de caracteres Unicode. A ideia básica é que, para linhas mais baixas, a expressão
produz o padrão
Para linhas superiores, a expressão é
Explicação
fonte
K (ngn / k) ,
372726 bytesExperimente online!
retorna uma matriz booleana
|'y
é uma sintaxe específica para ngn / k. outros dialetos requerem a:
para tornar um verbo monádico de cada edição:|:'y
fonte
1
(se suportado pelo seu navegador)Wolfram Language
8336 bytes, (possivelmente -48 bytes com bônus)A partir da versão 11.1,
PeanoCurve
é um built-in.Minha submissão original e desajeitada desperdiçou muitos bytes
GeometricTransformation
eReflectionTransform.
Esta versão muito reduzida foi sugerida pelos alefalpha .
Reverse
foi necessário para orientar a saída corretamente.Exemplo 36 bytes
Bônus
Se isso se qualifica para o bônus de 100 pt, pesa 52 - 100 = -48 O código
[5]
não foi contado, apenas a função pura.fonte
Graphics[Reverse/@#&/@PeanoCurve@#]&
BBC BASIC, 142 caracteres ASCII (130 bytes tokenised)
Faça o download do intérprete em http://www.bbcbasic.co.uk/bbcwin/download.html
fonte
HTML + SVG + JS,
224213 bytesA saída é espelhada horizontalmente.
Experimente online! (imprime o HTML)
Mostrar snippet de código
fonte
Logotipo, 89 bytes
Porto da resposta do Atari BASIC em @ Arnauld. Para usar, fazer algo parecido com isso :
fonte
Stax , 19 bytes
Execute e depure
Saída para 3:
fonte