Écrire un code reproduisant la figure suivante.
Cette figure est constituée de 32 disques.
Vous respecterez les contraintes suivantes :
- Un seul cercle doit être défini dans le code.
- Vous utiliserez au plus 5 balises
use
qui présenteront des attributstransform="translate(..., ...)"
.
Il faudra donc faire des regroupements à l'aide de la balise g
de façon à minimiser le nombre de balises use
utilisées.
- Une aide
- id et g
- un code possible
L'idée utilisée est la même que pour réduire le nombre de multiplications pour calculer \(x^{16}\).
Pour calculer \(x^{16} = x\times x\times x\times x\times x\times x\times x\times x\times x\times x\times x\times x\times x\times x\times x\times x \), il faut a priori 15 multiplications.
Mais si nous commençons par calculer \( y = x^2 = x\times x \) (une multiplication), nous pouvons ensuite écrire \( x^{16} = y \times y \times y \times y \times y \times y \times y \times y \) (7 multiplications). Soit un total de 8 multiplications au lieu de 15.
Et, bien sûr, nous pouvons poursuivre l'idée. On calcule \( y = x\times x \) (une multiplication) puis \( z = x^4 = y \times y \) (une multiplication) puis \( x^{16} = z \times z \times z \times z \) (trois multiplications), soit un total de 5 multiplications.
Ou encore \( y = x\times x \) puis \( z = x^4 = y \times y \) puis \( w = x^8 = z \times z \) et enfin \( x^{16} = w \times w \), soit un total de 4 multiplications.
Un groupe d'objets svg peut être identifié comme un seul objet. En d'autres termes,
on peut ajouter un attribut id
à une balise g
.
On définit le premier cercle et on utilise une première balise use
pour le second cercle
de la même ligne. On a ainsi constitué un premier groupe de deux cercles.
En dupliquant ce premier groupe de deux cercles (à l'aide d'une balise use
), on passe
donc à 4 cercles. Ce qui permet de constituer un groupe de 4 cercles, que l'on duplique afin de passer à 8 cercles.
Ces huit cercles constituent un groupe que l'on duplique...