introduction
En géométrie, la courbe de Peano est le premier exemple de courbe de remplissage d'espace à être découvert par Giuseppe Peano en 1890. La courbe de Peano est une fonction surjective et continue de l'intervalle unitaire sur le carré unitaire, mais elle n'est pas injective. Peano était motivé par un résultat antérieur de Georg Cantor selon lequel ces deux sets avaient la même cardinalité. En raison de cet exemple, certains auteurs utilisent l'expression "courbe de Peano" pour se référer plus généralement à toute courbe de remplissage d'espace.
Défi
Le programme prend une entrée qui est un entier n
, et sort un dessin représentant la n
ième itération de la courbe de Peano, en partant du côté 2 montré dans la partie la plus à gauche de cette image:
Contribution
Un entier n
donnant le numéro d'itération de la courbe de Peano. Des informations supplémentaires facultatives sont décrites dans la section bonus.
Production
Un dessin de la n
ième itération de la courbe de Peano. Le dessin peut être à la fois de l'art ASCII ou un "vrai" dessin, selon le plus simple ou le plus court.
Règles
- L'entrée et la sortie peuvent être données dans n'importe quel format pratique (choisissez le format le plus approprié pour votre langue / solution).
- Pas besoin de gérer des valeurs négatives ou des entrées invalides
- Un programme complet ou une fonction sont acceptables.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Bonus
Comme cela ne devrait pas être une promenade dans le parc (du moins dans la plupart des langues auxquelles je pense), des points bonus sont accordés pour les éléments suivants:
- -100 octets si votre code génère un gif de la construction des courbes Peano jusqu'à
n
. - -100 octets si votre code trace une courbe de remplissage d'espace pour n'importe quelle forme rectangulaire (la courbe de Peano ne fonctionne que pour les carrés, évidemment). Vous pouvez supposer que l'entrée prend alors la forme
n l w
oùn
a la même signification qu'auparavant (le numéro de l'itération), mais oùl
etw
devient la longueur et la largeur du rectangle dans lequel dessiner la courbe. Sil == w
, cela devient la courbe de Peano régulière.
Les scores négatifs sont autorisés (mais sont-ils possibles ...).
Éditer
Veuillez inclure la sortie de votre programme dans la solution pour n == 3 (l == w == 1)
.
n
serait utilisé sil
etw
sont aussi des entrées ??????????? Et la courbe de Peano serait-elle un cas spécial - ce n'est pas la seule courbe de remplissage d'espace, donc certains algorithmes pourraient devoir la spécialiserRéponses:
Mathematica, score 60-100-100 = -140
Fonction pure. Prend
n
et{l, w}
(largeur et hauteur) en entrée et donne un graphique animé en sortie. Il crée d'abord une courbe de Peano d'ordre n avecPeanoCurve
. Étant donné que le cas l = w doit encore créer une courbe de Peano, nous inversons l'expression au niveau 3, similaire à la réponse de DavidC ; pour l ≠ w , nous avons justeScale
la courbe du rectangle. Cette courbe sera toujours remplie d'espace, satisfaisant le deuxième bonus. Pour le premier bonus, nous l'avons justeAnimate
sur toutes les tailles. Notez que OP a suggéré que cela était suffisamment différent de celui de DavidC pour justifier sa propre réponse. Le résultat pour n = 3, l = w = 1 est comme suit:la source
GFA Basic 3,51 (Atari ST),
156134124 octetsUne liste éditée manuellement au format .LST. Toutes les lignes se terminent par
CR
, y compris la dernière.Développé et commenté
Exemple de sortie
la source
Perl 6 , 117 octets
Essayez-le en ligne!
0 indexé. Renvoie un tableau 2D de caractères Unicode. L'idée de base est que pour les lignes inférieures, l'expression
donne le motif
Pour les lignes supérieures, l'expression est
Explication
la source
K (ngn / k) ,
372726 octetsEssayez-le en ligne!
renvoie une matrice booléenne
|'y
est une syntaxe spécifique à ngn / k. d'autres dialectes nécessitent un:
pour rendre un verbe à deux caractères monadique:|:'y
la source
1
(si votre navigateur le prend en charge)Wolfram Language
8336 octets, (éventuellement -48 octets avec bonus)À partir de la version 11.1,
PeanoCurve
est intégré.Ma soumission originale et maladroite a gaspillé de nombreux octets sur
GeometricTransformation
etReflectionTransform.
Cette version très réduite a été suggérée par les alephalpha .
Reverse
était nécessaire pour orienter correctement la sortie.Exemple 36 octets
Prime
Si cela donne droit au bonus de 100 pt, il pèse 52 - 100 = -48 Le code
[5]
n'a pas été compté, seule la fonction pure.la source
Graphics[Reverse/@#&/@PeanoCurve@#]&
BBC BASIC, 142 caractères ASCII (130 octets tokenisés)
Téléchargez l'interprète sur http://www.bbcbasic.co.uk/bbcwin/download.html
la source
HTML + SVG + JS,
224213 octetsLa sortie est mise en miroir horizontalement.
Essayez-le en ligne! (imprime le HTML)
Afficher l'extrait de code
la source
Logo, 89 octets
Port de @ Arnauld's Atari BASIC answer. Pour utiliser, faites quelque chose comme ceci :
la source
Stax , 19 octets
Exécuter et déboguer
Sortie pour 3:
la source