Page 2 sur 2

Re: quelques routines..

Posté : jeu. 6 déc. 2012, 14:00
par maurice
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 :

Figure asymptote 14b5137250db671e3fe94769bc99cd20
*** 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
  1. import math;
  2. unitsize(0.5cm);
  3. add(grid(18,15,gray));
  4.  
  5.  
  6.  
  7.  
  8. pen p=linewidth(1pt)+magenta;
  9.  
  10. pair p1=(1,1), p2=(5,1), p3=(4,5), p4=(2,4);
  11. path motif=p1--p2--p3--p4--cycle;
  12. picture pic;
  13.  
  14. for(int i=0; i<5; ++i) {
  15. path motif=p1--p2--p3--p4--cycle;
  16. draw(pic, motif, p);
  17. pair centre=(p2+p3)/2;
  18. transform s=rotate(180, centre);
  19. pair p0=p2;
  20. p3=s*p1;
  21. p2=s*p4;
  22. p4=s*p0;
  23. p1=s*p4;
  24. }
  25.  
  26. add(pic);
  27. add(shift(0,7)*pic);
  28. 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.

Figure asymptote e851e580c9d5de12e4a7fe4a63fda043
*** 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
  1. import math;
  2. unitsize(0.5cm);
  3. add(grid(18,15,gray));
  4.  
  5.  
  6.  
  7.  
  8. pen p=linewidth(1pt)+magenta;
  9.  
  10. pair p1=(1,1), p2=(5,1), p3=(4,5), p4=(2,4);
  11. path motif=p1--p2--p3--p4--cycle;
  12. picture pic;
  13.  
  14. for(int i=0; i<5; ++i) {
  15. path motif=p1--p2--p3--p4--cycle;
  16. draw(pic, motif, p);
  17. pair centre=(p2+p3)/2;
  18. transform s=rotate(180, centre);
  19. pair p0=p2;
  20. p3=s*p1;
  21. p2=s*p4;
  22. p4=s*p0;
  23. p1=s*p4;
  24. }
  25.  
  26. add(pic);
  27. add(shift(0,7)*pic);
  28. add(rotate(180,(9,5.5))*pic);
  29.  
  30.  
  31.  
  32.  
  33. string[] pts;
  34.  
  35. for(int i=65; i<89; ++i) {
  36. string s=format("%c", i);
  37. pts.push(s);
  38. }
  39.  
  40. transform t4=shift(2,1), t5=shift(4,0);
  41. pair pA=(2,11);
  42. for(int i=0; i<pts.length; ++i) {
  43. if(i%6==5) label(pts[i], pA, E);
  44. else {
  45. if(quotient(i,6)==3) label(pts[i], pA, S);
  46. else label(pts[i], pA, NW);
  47. }
  48. int p=quotient(i,2)+1;
  49. int q=quotient(i,2);
  50. transform t=((t4)^p)*((t5)^q);
  51. transform t;
  52. if(i%6!=5) {
  53. if(quotient(i,6)==0 || quotient(i,6)==2) {
  54. t=((t4)^(1-i%2))*((t5)^(i%2));
  55. }
  56. else t=((t4)^(i%2))*((t5)^(1-i%2));
  57. }
  58. else {
  59. t=shift(-15,-6);
  60. }
  61. pA=t*pA;
  62. }


A+

Bruno

edit : les commentaires n'apparaissent pas dans les codes, je n'avais jamais remarqué.