Introducción
En geometría, la curva de Peano es el primer ejemplo de una curva de relleno de espacio que descubrió Giuseppe Peano en 1890. La curva de Peano es una función surjective, continua desde el intervalo de la unidad en el cuadrado de la unidad, sin embargo, no es inyectiva. Peano fue motivado por un resultado anterior de Georg Cantor de que estos dos conjuntos tienen la misma cardinalidad. Debido a este ejemplo, algunos autores usan la frase "curva de Peano" para referirse más generalmente a cualquier curva de relleno de espacio.
Desafío
El programa toma una entrada que es un número entero n
y genera un dibujo que representa la n
iteración de la curva de Peano, comenzando desde el lado 2 que se muestra en la parte más a la izquierda de esta imagen:
Entrada
Un entero n
da el número de iteración de la curva de Peano. Opcional, la entrada adicional se describe en la sección de bonos.
Salida
Un dibujo de la n
iteración de la curva de Peano. El dibujo puede ser tanto un arte ASCII como un dibujo "real", lo que sea más fácil o más corto.
Reglas
- La entrada y la salida se pueden dar en cualquier formato conveniente (elija el formato más apropiado para su idioma / solución).
- No es necesario manejar valores negativos o entradas inválidas
- Un programa completo o una función son aceptables.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- Lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Bonos
Como esto no debería ser un paseo por el parque (al menos en la mayoría de los idiomas que se me ocurren), se otorgan puntos de bonificación por lo siguiente:
- -100 bytes si su código genera un gif de la construcción de las curvas de Peano hasta
n
. - -100 bytes si su código dibuja una curva de relleno de espacio para cualquier forma rectangular (la curva de Peano solo funciona para cuadrados, obviamente). Puede suponer que la entrada toma la forma
n l w
donden
tiene el mismo significado que antes (el número de la iteración), pero dondel
y sew
convierte en la longitud y el ancho del rectángulo en el que se dibuja la curva. Sil == w
, esto se convierte en la curva de Peano regular.
Se permiten puntajes negativos (pero son posibles ...).
Editar
Incluya la salida de su programa en la solución para n == 3 (l == w == 1)
.
n
usaría sil
y tambiénw
son entradas ??????????? Y que la curva de Peano ser un caso especial - no es la única curva espacial compacto, por lo que algunos algoritmos pueden tener que specialcase queRespuestas:
Mathematica, puntaje 60-100-100 = -140
Pura función. Toma
n
y{l, w}
(ancho y alto) como entrada, y da un gráfico animado como salida. En primer lugar, crea un n º orden curva de Peano conPeanoCurve
. Como el caso l = w todavía necesita crear una curva de Peano, volteamos la expresión en el nivel 3, similar a la respuesta de DavidC ; para l ≠ w , simplementeScale
la curva al rectángulo. Esta curva seguirá llenando espacios, satisfaciendo la segunda bonificación. Para el primer bono, lo hacemosAnimate
en todos los tamaños. Tenga en cuenta que OP sugirió que esto era lo suficientemente diferente de DavidC para garantizar su propia respuesta. El resultado para n = 3, l = w = 1 es el siguiente:fuente
GFA Básico 3,51 (Atari ST),
156134124 bytesUna lista editada manualmente en formato .LST. Todas las líneas terminan con
CR
, incluida la última.Ampliado y comentado
Salida de ejemplo
fuente
Perl 6 , 117 bytes
Pruébalo en línea!
0 indexado. Devuelve una matriz 2D de caracteres Unicode. La idea básica es que para las filas inferiores, la expresión
produce el patrón
Para las filas superiores, la expresión es
Explicación
fuente
K (ngn / k) ,
372726 bytesPruébalo en línea!
devuelve una matriz booleana
|'y
es una sintaxis específica de ngn / k. otros dialectos requieren a:
para hacer un verbo monádico cada uno|:'y
fuente
1
(si es compatible con su navegador)Wolfram Language
8336 bytes (posiblemente -48 bytes con bonificación)A partir de la versión 11.1,
PeanoCurve
está incorporada.Mi presentación original y torpe desperdició muchos bytes
GeometricTransformation
yReflectionTransform.
Alephalpha sugirió esta versión muy reducida .
Reverse
fue necesario para orientar la salida correctamente.Ejemplo 36 bytes
Prima
Si esto califica para la bonificación de 100 pt, pesa 52-100 = -48. El código
[5]
no se contó, solo la función pura.fuente
Graphics[Reverse/@#&/@PeanoCurve@#]&
BBC BASIC, 142 caracteres ASCII (130 bytes tokenizados)
Descargue el intérprete en http://www.bbcbasic.co.uk/bbcwin/download.html
fuente
HTML + SVG + JS,
224213 bytesLa salida se refleja horizontalmente.
Pruébalo en línea! (imprime el HTML)
Mostrar fragmento de código
fuente
Logo, 89 bytes
Puerto de la respuesta BÁSICA de Atari de @ Arnauld. Para usar, haga algo como esto :
fuente
Stax , 19 bytes
Ejecutar y depurarlo
Salida para 3:
fuente