GM a écrit :Si la ligne suivante donne 65 :Code : Tout sélectionner
write(ascii("A"));
c'est celle-ci qui donne A :Code : Tout sélectionner
write(format("%c", 65));
une application qui m'est venu hier.
j'avais un pavage :
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- import math;
- unitsize(0.5cm);
- add(grid(18,15,gray));
- pen p=linewidth(1pt)+magenta;
- pair p1=(1,1), p2=(5,1), p3=(4,5), p4=(2,4);
- path motif=p1--p2--p3--p4--cycle;
- picture pic;
- for(int i=0; i<5; ++i) {
- path motif=p1--p2--p3--p4--cycle;
- draw(pic, motif, p);
- pair centre=(p2+p3)/2;
- transform s=rotate(180, centre);
- pair p0=p2;
- p3=s*p1;
- p2=s*p4;
- p4=s*p0;
- p1=s*p4;
- }
- add(pic);
- add(shift(0,7)*pic);
- add(rotate(180,(9,5.5))*pic);
il me restait à écrire tous les noms de points (de A à X !). Je me voyais déjà écrire 23 fois la même ligne.
Du coup je me suis amusé à utiliser format("%c", 65));
Pas sur que j'ai gagné en temps mais ça a fait un bon exercice.
Ca reste laborieux si on veut changer la place du label par rapport à la position du point mais bon !
Ici, tous les labels sont positionnés au NW sauf ceux à droite et en bas.
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
- import math;
- unitsize(0.5cm);
- add(grid(18,15,gray));
- pen p=linewidth(1pt)+magenta;
- pair p1=(1,1), p2=(5,1), p3=(4,5), p4=(2,4);
- path motif=p1--p2--p3--p4--cycle;
- picture pic;
- for(int i=0; i<5; ++i) {
- path motif=p1--p2--p3--p4--cycle;
- draw(pic, motif, p);
- pair centre=(p2+p3)/2;
- transform s=rotate(180, centre);
- pair p0=p2;
- p3=s*p1;
- p2=s*p4;
- p4=s*p0;
- p1=s*p4;
- }
- add(pic);
- add(shift(0,7)*pic);
- add(rotate(180,(9,5.5))*pic);
- string[] pts;
- for(int i=65; i<89; ++i) {
- string s=format("%c", i);
- pts.push(s);
- }
- transform t4=shift(2,1), t5=shift(4,0);
- pair pA=(2,11);
- for(int i=0; i<pts.length; ++i) {
- if(i%6==5) label(pts[i], pA, E);
- else {
- if(quotient(i,6)==3) label(pts[i], pA, S);
- else label(pts[i], pA, NW);
- }
- int p=quotient(i,2)+1;
- int q=quotient(i,2);
- transform t=((t4)^p)*((t5)^q);
- transform t;
- if(i%6!=5) {
- if(quotient(i,6)==0 || quotient(i,6)==2) {
- t=((t4)^(1-i%2))*((t5)^(i%2));
- }
- else t=((t4)^(i%2))*((t5)^(1-i%2));
- }
- else {
- t=shift(-15,-6);
- }
- pA=t*pA;
- }
A+
Bruno
edit : les commentaires n'apparaissent pas dans les codes, je n'avais jamais remarqué.