Rev 7692 | Rev 8560 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7692 | Rev 8321 | ||
---|---|---|---|
Line 26... | Line 26... | ||
26 | slib_G=!declosing $slib_s |
26 | slib_G=!declosing $slib_s |
27 | !else |
27 | !else |
28 | 28 | ||
29 | slib_liste= |
29 | slib_liste= |
30 | !for slib_i = 1 to $slib_n |
30 | !for slib_i = 1 to $slib_n |
31 |
|
31 | slib_liste1 =!values 1 for x=1 to $slib_s |
32 |
|
32 | slib_liste0=!values 0 for x=1 to $[$slib_n-$slib_i-$slib_s] |
33 |
|
33 | slib_liste2 =!shuffle $slib_liste1,$slib_liste0 |
34 |
|
34 | slib_liste2=1,$slib_liste2 |
35 |
|
35 | slib_liste2=!item 1 to $[$slib_n-$slib_i+1] of $slib_liste2 |
36 |
|
36 | slib_liste=!append item $slib_liste2 to $slib_liste |
37 | !next slib_i |
37 | !next slib_i |
38 | slib_liste=!nonempty items $slib_liste |
38 | slib_liste=!nonempty items $slib_liste |
39 | slib_G= !exec pari slib_n =$slib_n;slib_liste =[$slib_liste];slib_M=matrix(slib_n,slib_n,slib_i,slib_j, if(slib_i < slib_j,slib_liste[slib_n*(slib_n-1)/2-(slib_n-slib_i+1)*(slib_n-slib_i)/2 +slib_j-slib_i]));for(slib_i = 2,slib_n-1,if(slib_M[,slib_i]==0,slib_M[1,slib_i]=1);if(slib_M[slib_i,]==0,slib_M[slib_i,slib_n]=1));slib_M[1,slib_n]=0; slib_M |
39 | slib_G= !exec pari slib_n =$slib_n;slib_liste =[$slib_liste];slib_M=matrix(slib_n,slib_n,slib_i,slib_j, if(slib_i < slib_j,slib_liste[slib_n*(slib_n-1)/2-(slib_n-slib_i+1)*(slib_n-slib_i)/2 +slib_j-slib_i]));for(slib_i = 2,slib_n-1,if(slib_M[,slib_i]==0,slib_M[1,slib_i]=1);if(slib_M[slib_i,]==0,slib_M[slib_i,slib_n]=1));slib_M[1,slib_n]=0; slib_M |
40 | 40 | ||
41 | !endif |
41 | !endif |
42 | slib_GG=!translate internal ; to $\ |
42 | slib_GG=!translate internal ; to $\ |
43 | $ in $slib_G |
43 | $ in $slib_G |
44 | 44 | ||
45 | 45 | ||
46 | ########################## |
46 | ########################## |
47 | slib_niveau=!exec pari slib_n=$slib_n;slib_M=Mat([$slib_G]);slib_niveau=matrix(slib_n,slib_n);slib_niveau[1,1]=1;slib_degp=vector(slib_n,i,sum(x=1,slib_n,slib_M[x,i]));for(slib_k=1,slib_n-1,for(slib_i=1,slib_n,if(slib_niveau[slib_k,slib_i]!=0,for(slib_j=1,slib_n,if(slib_M[slib_i,slib_j]!=0,slib_degp[slib_j]-=1; |
47 | slib_niveau=!exec pari slib_n=$slib_n;slib_M=Mat([$slib_G]);slib_niveau=matrix(slib_n,slib_n);slib_niveau[1,1]=1;slib_degp=vector(slib_n,i,sum(x=1,slib_n,slib_M[x,i]));for(slib_k=1,slib_n-1,for(slib_i=1,slib_n,if(slib_niveau[slib_k,slib_i]!=0,for(slib_j=1,slib_n,if(slib_M[slib_i,slib_j]!=0,slib_degp[slib_j]-=1;if(slib_degp[slib_j]==0,slib_niveau[slib_k+1,slib_j]=1));););););slib_niveau |
48 | slib_height=!exec pari slib_n=$slib_n;slib_niveau=Mat([$slib_niveau]);slib_k=slib_n;for(slib_i=1,slib_n,if(slib_niveau[slib_i,]==0,slib_k=slib_i-1;break));print(slib_k); |
48 | slib_height=!exec pari slib_n=$slib_n;slib_niveau=Mat([$slib_niveau]);slib_k=slib_n;for(slib_i=1,slib_n,if(slib_niveau[slib_i,]==0,slib_k=slib_i-1;break));print(slib_k); |
49 | 49 | ||
50 | slib_width =!exec pari slib_niveau=Mat([$slib_niveau]); vecmax(vector($slib_height,i, sum(j=1,$slib_n, slib_niveau[i,j]))) |
50 | slib_width =!exec pari slib_niveau=Mat([$slib_niveau]); vecmax(vector($slib_height,i, sum(j=1,$slib_n, slib_niveau[i,j]))) |
51 | 51 | ||
52 | #hauteur des paraboles sur lesquelles sont mis les points |
52 | #hauteur des paraboles sur lesquelles sont mis les points |
Line 58... | Line 58... | ||
58 | $ in $slib_position |
58 | $ in $slib_position |
59 | slib_niveau1=!translate internal ; to $\ |
59 | slib_niveau1=!translate internal ; to $\ |
60 | $ in $slib_niveau |
60 | $ in $slib_niveau |
61 | slib_sign=1 |
61 | slib_sign=1 |
62 | !for slib_i=1 to $slib_height |
62 | !for slib_i=1 to $slib_height |
63 |
|
63 | slib_eps1=!item $slib_i of $slib_eps |
64 |
|
64 | slib_ligne= !line $slib_i of $slib_niveau1 |
65 |
|
65 | slib_test=0 |
66 |
|
66 | slib_total =!replace internal , by + in $slib_ligne |
67 |
|
67 | slib_total=$[$slib_total] |
68 |
|
68 | !if $slib_total=1 |
69 |
|
69 | slib_sign=$[-$slib_sign] |
70 |
|
70 | !endif |
71 | 71 | ||
72 |
|
72 | slib_dist= $[round($slib_width/$slib_total)] |
73 |
|
73 | !for slib_j = 1 to $slib_n |
74 |
|
74 | slib_pt=!item $slib_j of $slib_ligne |
75 |
|
75 | !if $slib_pt <>0 |
76 |
|
76 | !advance slib_test |
77 |
|
77 | slib_bb=!item $[($slib_test)*$slib_dist] of $slib_listeb |
78 |
|
78 | slib_position=!replace internal line number $slib_j by $[$slib_i-1], $[$slib_sign*$slib_bb*$slib_i*($slib_height -$slib_i)] in $slib_position |
79 |
|
79 | !endif |
80 |
|
80 | !next slib_j |
81 | !next slib_i |
81 | !next slib_i |
82 | #dessin |
82 | #dessin |
83 | #################### |
83 | #################### |
84 | slib_yrange1= $[-$slib_height^2/8-0.5] |
84 | slib_yrange1= $[-$slib_height^2/8-0.5] |
85 | slib_yrange2=$[$slib_height^2/8+0.5] |
85 | slib_yrange2=$[$slib_height^2/8+0.5] |
Line 87... | Line 87... | ||
87 | yrange $slib_yrange1, $slib_yrange2\ |
87 | yrange $slib_yrange1, $slib_yrange2\ |
88 | parallel -0.5,$slib_yrange1,-0.5,$slib_yrange2,1,0, $[$slib_height+2],yellow |
88 | parallel -0.5,$slib_yrange1,-0.5,$slib_yrange2,1,0, $[$slib_height+2],yellow |
89 | #################### |
89 | #################### |
90 | 90 | ||
91 | !for slib_i = 0 to $[floor($slib_height/2+2)] |
91 | !for slib_i = 0 to $[floor($slib_height/2+2)] |
92 |
|
92 | slib_dessin=!append line pointfill 2*$slib_i,0,3,3,yellow to $slib_dessin |
93 | !next slib_i |
93 | !next slib_i |
94 | # laisser en premier les lignes correspondant aux sommets |
94 | # laisser en premier les lignes correspondant aux sommets |
95 | !for slib_i = 1 to $slib_n |
95 | !for slib_i = 1 to $slib_n |
96 |
|
96 | slib_point=!line $slib_i of $slib_position |
97 |
|
97 | slib_dessin =!append line disk $slib_point, 6, $slib_color2 to $slib_dessin |
98 |
|
98 | !for slib_j = $slib_i to $slib_n |
99 |
|
99 | slib_ligne=!line $slib_i of $slib_GG |
100 |
|
100 | slib_test=!item $slib_j of $slib_ligne |
101 |
|
101 | !if $slib_test <> 0 |
102 |
|
102 | slib_point1=!line $slib_j of $slib_position |
103 |
|
103 | slib_interm= !exec pari ([$slib_point]+2*[$slib_point1])/3 |
104 |
|
104 | slib_dessin = !append line line $slib_point, $slib_point1, $slib_color1 to $slib_dessin |
105 |
|
105 | slib_dessin = !append line arrow $slib_point, $slib_interm, 10, $slib_color1 to $slib_dessin |
106 |
|
106 | !endif |
107 |
|
107 | !next slib_j |
108 |
|
108 | !if $slib_text<>$empty |
109 |
|
109 | slib_texti=!item $slib_i of $slib_text |
110 |
|
110 | slib_dessin=!append line text black,$slib_point, medium, $slib_texti to $slib_dessin |
111 |
|
111 | !endif |
112 | !next slib_i |
112 | !next slib_i |
113 | - | ||
114 | - | ||
115 | 113 | ||
116 | slib_out = $slib_dessin |
114 | slib_out = $slib_dessin |
117 | !if url iswordof $slib_option or html iswordof $slib_option |
115 | !if url iswordof $slib_option or html iswordof $slib_option |
118 | insdraw_size=450,250 |
116 | insdraw_size=450,250 |
119 | !insdraw $slib_out |
117 | !insdraw $slib_out |