Favicon NSCLa solution proposée par Jean-François Lucas

 

Petit rappel de la règle choisie et son interprétation binaire :

1 règle sur 256 (bis)

111 - 110 - 101 - 100 - 011 - 010 - 001 - 000
-0-----0-----0-----1-----1-----1-----1-----0-

Les commentaires sont d'OSC-PL - En cas de liens internes, merci d'utiliser Précédente afin de revenir ici.

Les visiteurs des pages Papy Logo ne connaissant pas encore Jean-François Lucas (JFL) sont invités à visiter son Site et à découvrir ces autres pages : ici, , ailleurs et/ou de consulter le Contenu...

Explications d'une démarche :

- Je procède par balayage de la pyramide, comme en lisant : d'abord de gauche à droite, puis, de haut en bas.
- Chaque ligne de la pyramide, est codée sous forme de liste et me sert à construire la ligne suivante, sous forme de liste aussi.
- Comme la figure à balader (matcher) sur la ligne balayée est sur 3 carrés, quand je commence avec le premier carré de la ligne, je dois rajouter devant lui 2 carrés blancs , c'est à dire deux 0. C'est pourquoi je rajoute des 0 avec des 'mp'.
- De même, quand je finis avec le dernier carré de la ligne, je dois rajouter après lui 2 carrés blancs , c'est à dire deux 0. C'est pourquoi, je rajoute des 0 à la fin de la liste, avec des 'mp' dans l'inversion de la liste, que je dois encore inverser ensuite.

Beaucoup de inverse (vus ici à Palindromes) d'où une question : le dernier 'mp' (metspremier) ne pouvait-il être un 'md' metsdernier {et non pas un 'md', mayday ; help ;-)} ?

- Donc je fais défiler la liste ' :entrée' et je regarde les trois premiers éléments pour savoir construire la liste 'sortie'.
On a les règles suivantes :
111->0
110->0
101->0
100->1
011->1
010->1
001->1
000->0
D'où l'idée de les interpréter en binaire et de dire :
De 1 à 4 je réécris des 1 et pour les autres, je réécris des 0. C'est ce qui explique le test suivant :
teste (et (:config > 0) (:config < 5))

- La ligne :
donne "config ((prem :entree)*4)+((nieme 1 :entree)*2)+(nieme 2 :entree)
sert à convertir de binaire vers décimal. Il s'agit de multiplier
chacun des chiffres du nombre à convertir par son poids en binaire :
Les unités pèsent 1, les dizaines pèsent 2 et les centaines 4.

Les procédures correspondant à la démarche (JFL utilise son propre Logo) :

pour fractale :entree :sortie
teste (nieme 2 :entree)
sivrai
[
donne "config ((prem :entree)*4)+((nieme 1 :entree)*2)+(nieme 2 :entree)
teste (et (:config > 0) (:config < 5))
sivrai rends fractale (sp :entree) (mp 1 :sortie)
sifaux rends fractale (sp :entree) (mp 0 :sortie)
]
sifaux
[
rends renverse mp 0 mp 0 :sortie
]
fin

donne "resu [0 0 1 0 0]
repete 25
[
donne "resu fractale :resu [0 0]
ec sp sp renverse sp sp renverse :resu
]

Le résultat :

1 1 1
1 1 0 0 1
1 1 0 1 1 1 1
1 1 0 0 1 0 0 0 1
1 1 0 1 1 1 1 0 1 1 1
1 1 0 0 1 0 0 0 0 1 0 0 1
1 1 0 1 1 1 1 0 0 1 1 1 1 1 1
1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1
1 1 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 1 1
1 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 1 1 0 0 1
1 1 0 1 1 1 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1
1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 1
1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1
1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 0 1
1 1 0 1 1 1 1 0 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1
1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1
1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 1 1
1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1
1 1 0 1 1 1 1 0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1
1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1
1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1
1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1
1 1 0 1 1 1 1 0 0 1 1 0 1 0 0 1 1 1 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1
1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 1
1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1

S'il y en a, parmi les visiteurs, qui désirent ajouter les NIL (liste vide en Lisp) afin de retrouver l'aspect pyramidal ; qu'ils ne se gênent pas et me fassent leurs propositions, elles seront affichées dans le Site, tout comme la "digression d'O.S.C."
En attendant, JFL ne s'en tient pas à cette première version ; il rebondit sur celle-ci afin de proposer une superbe version graphique !

Les procédures de la version graphique :

donne "cote 8
donne "Rang_y 0

pour DrawCase :x :y :couleur
fcc 240 ; rouge
rectangle :x*:cote :y*:cote :x+1*:cote :y+1*:cote
si (:couleur = 1)
[
fcc 255 ; noir
bloc :x*:cote+1 :y*:cote+1 (:x+1*:cote)- 1 (:y+1*:cote)- 1
]
fin

pour DrawRang :rang :x :y
si (:rang)
[
DrawCase :x :y prem:rang
DrawRang sp:rang :x+1 :y
]
fin

pour fractale :entree :sortie
teste (nieme 2 :entree)
sivrai
[
donne "config ((prem :entree)*4)+((nieme 1 :entree)*2)+(nieme 2
:entree)
teste (et (:config > 0) (:config < 5))
sivrai rends fractale (sp :entree) (mp 1 :sortie)
sifaux rends fractale (sp :entree) (mp 0 :sortie)
]
sifaux
[
donne "Rang_y :Rang_y - 1
DrawRang sp sp renverse:sortie :Rang_y :Rang_y
rends renverse mp 0 mp 0 :sortie
]
fin

ct
donne "resu [0 1 0]
repete 62
[
donne "resu fractale :resu [0 0]
]


Et la "pyramide du pavage fractal" de JFL :

Pavage fractal JFL

 

Back is back (yu know the song ?)