Une grammaire formelle de quelques caractères engendre des structures botaniques d'une complexité fractalaire. Aristid Lindenmayer (1968) — la nature comme programme récursif.
// L-System — réécriture + interprétation turtle const presets = [ { axiom: 'F', rules: { F: 'F[-F]F[+F]F' }, angle: 25 }, { axiom: 'X', rules: { X: 'F+[[X]-X]-F[-FX]+X', F: 'FF' }, angle: 25 }, ... ]; function generate(axiom, rules, iterations) { let str = axiom; for (let i = 0; i < iterations; i++) { str = str.split('').map(c => rules[c] || c).join(''); } return str; } function turtle(str, len, angle) { const stack = []; str.split('').forEach(c => { if (c === 'F') { ctx.lineTo(x += Math.cos(a)*len, y += Math.sin(a)*len); } else if (c === '+') a -= angle; else if (c === '-') a += angle; else if (c === '[') stack.push({x,y,a}); else if (c === ']') ({x,y,a} = stack.pop()); }); }
Modifiez l'angle de la Fougère : 15° produit un sapin, 35° un palmier. À 7 itérations, combien de segments l'arbre binaire contient-il ? (indice : croissance exponentielle).
La grammaire du vivant, traduite en code
Réserver un créneau