Le triangle de Penrose , également connu sous le nom de tribar de Penrose, ou tribar impossible, est un objet impossible.
Le but de ce défi est d'afficher un triangle de Penrose dans le moins d'octets possible.
Source: Wikipedia
Règles:
- Vous devez afficher le triangle de Penrose numériquement après l'avoir généré.
- Ils doivent ressembler à l'image ci-dessus de la page wiki (source ci-dessus) sans afficher directement l'image.
- La même image avec le même schéma de couleurs doit être affichée dans une taille d'au moins 400x400.
- Doit être aussi précis que possible.
Bonne chance et amusez-vous bien!
code-golf
kolmogorov-complexity
graphical-output
arodebaugh
la source
la source
Réponses:
logo,
129120 octetsDessine uniquement les 4 premiers côtés de chaque forme en L, puis soulève le stylo, se déplace à l'endroit correspondant sur la forme en L suivante, abaisse le stylo et dessine 4 côtés de celle-ci. Chaque forme en L emprunte 2 côtés à la précédente.
Dernières modifications: passer de la zone de remplissage noire à la zone de remplissage grise en utilisant
fd
au lieu desetx
et modifier tous les mouvements defd
àbk
pour enregistrer un octet sur une rotation de 180 degrés:rt 210
->rt 30
, raccourcirsetpencolor
ensetpc
(non documenté dans l'interpréteur que j'utilise, mais cela fonctionne .)logo, 140 octets
Dessine les 6 côtés de chaque forme de L, dépasse le dernier bord, puis tourne à 180 degrés pour commencer le suivant.
exécuter à http://www.calormen.com/jslogo/#
Il est recommandé de le faire
cs pd setpencolor 0
avant de courir pour s'assurer que l'écran est clair, la tortue est centrée et pointée vers le haut, le stylo est baissé et réglé sur noir (paramètres par défaut, non requis pour une toute nouvelle session) et aussiht
pour cacher la tortue (st
sera montrer à nouveau.)la source
SVG (HTML5), 191 octets
la source
Python 2,
211201195188175173 octetsMalheureusement,
exec
n'est pas implémenté dans Trinket, donc cela ne peut pas être testé en ligne tel quel. Du moins, pas dans la version gratuite. J'ai imprimé la chaîne et collé comme code pour la tester. Si vous êtes intelligent avec les scripts, vous pouvez redimensionner le html / css si nécessaire pour obtenir un canevas plus grand. Faites-moi savoir si vous le faites.Essayez-le en ligne - utilise une taille plus petite car la toile du site est trop petite pour 400 px, mais vous pouvez voir la sortie entière.
Non golfé:
la source
255*n/2
peut être réduite à128*n
je pense que les valeurs RVB flottantes seront arrondies de toute façon, y aurait-il un changement dans les couleurs des pixels?PHP, 153 octets
Cela ne fonctionnera que si le
short_open_tag
paramètre est activé. Le code source contient des caractères non imprimables, alors utilisez plutôt un vidage hexadécimal:Les données décompressées ressemblent à ceci (avec des sauts de ligne ajoutés pour plus de lisibilité):
Bien que les données SVG ne soient pas entièrement valides, PHP les sert
text/html
par défaut. Sans déclaration doctype, le document est traité en mode excentrique, ce qui est très indulgent.Pour améliorer la compression, j'ai divisé l'image en trois parties en forme de "7" qui peuvent être dessinées à l'aide d'
<path>
éléments presque identiques . L'image résultante se développera pour remplir la fenêtre. Voici une capture d'écran d'une fenêtre de 500 × 500 pixels:la source
HTML + JS (ES6), 34 + 306 = 340 octets
Utilise un biais horizontal de 30 degrés - dans le 3ème argument de la transformation matricielle, la tangente de 30 ° est représentée par
pow(3,-.5)
.Il y a pas mal de chiffres magiques moches, et cela ne correspond pas tout à fait aux proportions de l'image Wikipedia. Je suis certain qu'il existe une façon plus «mathématique» de procéder à ce sujet; Toute aide serait appréciée.
Voir la version non golfée sur CodePen.
la source
HTML + CSS, 9 +
315309308 = 317 octetsFrontières et biais à gogo! Testé sur Chrome. Voir la version non golfée sur CodePen .
la source
>
, non?Mathematica 171 octets
Dessine 3 polygones à l'aide d'AnglePath, des multiples de virages à 60 degrés, et en profitant du fait que le point de départ de chaque polygone est le 5e point du polygone précédent.
la source
AnglePath
.Tcl / Tk, 205
la source