C’est possible, à condition d’y être sensible ! Ruby, le langage qui monte qui monte en donne un exemple. Une simple ligne de code permet de tracer un triangle de Sierpinski :
32.times{|y|print" "*(32-y),(0..y).map{|x|~y&x>0?" .":" A"}}
Le résultat :
Il suffit de remplacer 32 par le nombre de lignes souhaitées.
Bravo à Brian Mitchell (via DZone Snippets)
Explications
Ce programme exploite la compacité du langage Ruby pour tracer un semblant de triangle de Sierpinski. En fait il n’implémente pas un algorithme récursif mais utilise une petite formule magique (cf. commentaires) qui permet de tracer le triangle dans un espace discret.
On peut récrire le programme d’une façon plus claire et traditionnelle :
n = 32 for y in (0..n-1) do # pour y allant de 0 à n-1 (c-a-d pour chaque l ligne = " "*(n-y) # créer n espaces (puis n-1, puis n-2...) # représente la pente gauche du triangle for x in (0..y) do # pour x allant de 0 à y (c-a-d pour chaque if (~y & x > 0) then # ~y est le complément binaire de y, & le ET binaire # c'est la formule magique du programme ligne = ligne + " " # si (~y & x) > 0 la colonne contient un espace ligne = ligne + " A" # sinon c'est un 'A' end end print ligne # afficher la ligne et passer à la suivante end
D’autres lieux d’amusement : 99 bottles of beer dans 1200 langages de programmation…
