Code : Tout sélectionner
27 111 9232 0.014"
77031 350 21933016 0.019"
8388607 473 188286357652 0.022"
837799 524 2974984576 0.023"
33554431 444 9161049517720 0.020"
75128138247 1228 319497287463520 0.034"
Code : Tout sélectionner
27 111 9232 0.014"
77031 350 21933016 0.019"
8388607 473 188286357652 0.022"
837799 524 2974984576 0.023"
33554431 444 9161049517720 0.020"
75128138247 1228 319497287463520 0.034"
Code : Tout sélectionner
EXPORT digitsPi(m)
BEGIN
LOCAL n := ip(m / 2 * 7);
LOCAL r, c, a, k, d, u, b, v;
LOCAL x := 0, y := 0;
r := MAKELIST(2000, k, 1, n);
r(n) := 0;
RECT();
c := 0;
a := 10000;
FOR k FROM n DOWNTO 1 STEP 14 DO
d := 0;
FOR u FROM k DOWNTO 1 STEP 1 DO
d := d + r(u) * a;
b := 2 * u - 1;
r(u) := d MOD b;
d := ip(d / b);
v := d;
d := d * (u - 1);
END;
q := "000" + STRING(c + ip(v / a));
TEXTOUT_P(q(length(q)-3,4),x,y);
x := x + 35;
IF x > 300 THEN
x := 0;
y := y +15;
END;
IF y > 230 THEN
WHILE NOT(ISKEYDOWN(12)) DO END;
x := 0;
y := 0;
RECT();
END;
c := v MOD a;
END;
WHILE NOT(ISKEYDOWN(12)) DO END;
RETURN;
END;
Code : Tout sélectionner
« 3.5 * IP DUP DUP { } +
2000 CON SWAP 0 PUT
10000. → n r a
« 0 n 1
FOR k 0 k 1
FOR u r u GET
a * + u 2 * 1 - IDIV2 r u
ROT PUT 'r' STO
u 1 > « u 1 - * » IFT
-1 STEP
DUP a / IP ROT + R→I →STR
WHILE DUP SIZE 4 <
REPEAT "0" SWAP +
END MSGBOX
a MOD
-14 STEP
»
» 'DP STO
100 DP affiche 3141 au bout d'environ 1 min 30 s puis attendre encore 1 min 25 s etc.
Code : Tout sélectionner
N N⁴ ⌊N⁴⌋ ⌊N⁴⌋/⌊N⌋ CUMUL PENTE = 1/(1+⌊N⌋) ORDONNEE ORIGINE
1,5 5,0625 5 5 5 0,50000 2,5
2,5 39,0625 39 17 22 0,33333 9
3,5 150,0625 150 37 59 0,25000 21,5
4,5 410,0625 410 65 124 0,20000 42
5,5 915,0625 915 101 225 0,16667 72,5
6,5 1785,0625 1785 145 370 0,14286 115
7,5 3164,0625 3164 197 567 0,12500 171,5
8,5 5220,0625 5220 257 824 0,11111 244
9,5 8145,0625 8145 325 1149 0,10000 334,5
10,5 12155,0625 12155 401 1550 0,09091 445
11,5 17490,0625 17490 485 2035 0,08333 577,5
12,5 24414,0625 24414 577 2612 0,07692 734
13,5 33215,0625 33215 677 3289 0,07143 916,5
14,5 44205,0625 44205 785 4074 0,06667 1127
15,5 57720,0625 57720 901 4975 0,06250 1367,5
16,5 74120,0625 74120 1025 6000 0,05882 1640
17,5 93789,0625 93789 1157 7157 0,05556 1946,5
18,5 117135,0625 117135 1297 8454 0,05263 2289
19,5 144590,0625 144590 1445 9899 0,05000 2669,5
20,5 176610,0625 176610 1601 11500 0,04762 3090
Code : Tout sélectionner
Pas Code Touche
1 42 34 CLEAR REG
2 44 0 STO 0
3 1 1
4 48 .
5 5 5
6 44 1 STO 1
7 5 5
8 42 21 11 LBL A
9 45 0 RCL 0
10 43 10 x ≤ y
11 22 12 GTO B
12 34 x ⇋ y
13 36 ENTER
14 42 4 3 x ⇋ 3
15 32 13 GSB C
16 1 1
17 44 40 1 STO + 1
18 45 1 RCL 1
19 4 4
20 14 y^x
21 43 44 INT
22 22 11 GTO A
23 42 21 12 LBL B
24 45 0 RCL 0
25 45 3 RCL 3
26 42 21 13 LBL C
27 30 -
28 45 1 RCL 1
29 43 44 INT
30 10 ÷
31 44 40 4 STO + 4
32 45 4 RCL 4
33 43 32 RTN
Code : Tout sélectionner
def mpo126(n):
s, i, pr, p = 0, 1.5, 0, 5
while n > p:
s += (p - pr) / int(i)
i += 1
pr = p
p = round(i ** 4)
return s + (n - pr) / int(i)
for n in 422825625, 1e9, 1e10: print(mpo126(n))
Code : Tout sélectionner
AIManager();
GetValue();
winning();
NegaMax();
PlayPosition();
Affichage();
inp, PlayOut, EVA;
black:=RGB(0,0,0);
red:=RGB(255,0,0);
yellow:=RGB(255,255,0);
EXPORT connect4(dep)
BEGIN
LOCAL winningtp, go, k, choix, tour;
inp:=dep;
PlayOut:=0;
EVA:=0;
tour:=0;
DIMGROB_P(G2,30,30,black);
ARC_P(G2,15,15,12,red);
DIMGROB_P(G3,30,30,black);
ARC_P(G3,15,15,12,yellow);
FOR k FROM 1 TO 80 - DIM(inp) DO inp:= inp + " "; END;
go:= 1;
WHILE go==1 DO
IF tour==0 THEN
tour:=1;
choix:=AIManager();
ELSE
choix:=AIManager();
END;
inp(choix):="O";
//MSGBOX("HP : " + (1 + mod(choix-1,7)));
Affichage(choix);
winningtp:=winning();
CASE
IF winningtp==1 THEN MSGBOX("Tu gagnes !"); go:=0; END;
IF winningtp==2 THEN MSGBOX("Je gagne !"); go:=0; END;
IF winningtp==3 THEN MSGBOX("Egalite ! "); go:=0; END;
PlayPosition("X");
END;
END;
Affichage(-1);
END;
Affichage(choix)
BEGIN
LOCAL l,c,v;
RECT_P(0,0,319,219,black);
IF choix > 0 THEN
TEXTOUT_P("HP: "+(1 + mod(choix-1,7)),15,105,2,yellow); END;
IF choix == 0 THEN
TEXTOUT_P("I THINK...",15,105,2,yellow); END;
IF choix == -1 THEN
TEXTOUT_P("GAME\nOVER",15,105,2,yellow); END;
FOR l FROM 0 TO 5 DO
FOR c FROM 1 TO 7 DO
v:=inp(7*l+c);
IF v==88 OR v==79 THEN
BLIT_P(40+30*c,180-30*l,IFTE(v==88, G2, G3));
END;
IF l==0 THEN TEXTOUT_P(c,55+30*c,10,2,yellow); END;
END;
END;
END;
winning()
BEGIN
LOCAL tp, k;
tp:=0;
FOR k FROM 1 TO 42 DO
IF (inp(k) <> 32) THEN
tp:=tp+1;
IF k - floor((k-1)/7) * 7 <= 4 THEN
IF inp(k)==inp(k+1) AND inp(k)==inp(k+2) AND inp(k)==inp(k+3) THEN
IF inp(k)==88 THEN RETURN 1 ;
ELSE RETURN 2;
END;
END;
END;
IF k <= 21 THEN
IF inp(k)==inp(k+7) AND inp(k)==inp(k+14) AND inp(k)==inp(k+21) THEN
IF inp(k)==88 THEN RETURN 1 ;
ELSE RETURN 2;
END;
END;
END;
IF k - floor((k-1)/7) * 7 <= 4 AND k<=18 THEN
IF inp(k)==inp(k+8) AND inp(k)==inp(k+16) AND inp(k)==inp(k+24) THEN
IF inp(k)==88 THEN RETURN 1 ;
ELSE RETURN 2;
END;
END;
END;
IF k - floor((k-1)/7) * 7 >= 4 AND k <= 21 THEN
IF inp(k)==inp(k+6) AND inp(k)==inp(k+12) AND inp(k)==inp(k+18) THEN
IF inp(k)==88 THEN RETURN 1 ;
ELSE RETURN 2;
END;
END;
END;
END;
END;
IF tp==42 THEN
RETURN 3;
END;
RETURN 0;
END;
NegaMax(Depth)
BEGIN
LOCAL XO, tp, PlayNb, chance, col;
PlayNb:={0,0,0,0,0,0,0,0};
chance:=0;
IF mod(Depth,2) <> 0 THEN XO:="X";
ELSE XO:="O";
END;
FOR col FROM 1 TO 7 DO
PlayNb(col):=GetValue(col);
END;
FOR col FROM 1 TO 7 DO
IF PlayNb(col) <> 0 THEN
inp(PlayNb(col)):=XO;
IF winning() <> 0 THEN
PlayOut:=PlayOut + 1;
IF XO=="O" THEN EVA:=EVA + 1;
ELSE EVA:=EVA - 1;
END;
inp(PlayNb(col)):=" ";
RETURN -1;
END;
inp(PlayNb(col)):=" ";
END;
END;
IF Depth <= 4 THEN
FOR col FROM 1 TO 7 DO
tp:=0;
IF PlayNb(col) <> 0 THEN
inp(PlayNb(col)):=XO;
IF winning() <> 0 THEN
PlayOut:=PlayOut + 1;
IF XO=="O" THEN EVA:=EVA + 1;
ELSE EVA:=EVA - 1;
END;
inp(PlayNb(col)):=" ";
RETURN -1;
END;
tp:=NegaMax(Depth+1);
IF col==1 THEN chance:=tp; END;
IF chance < tp THEN chance:=tp; END;
inp(PlayNb(col)):=" ";
END;
END;
END;
RETURN -chance;
END;
GetValue(col)
BEGIN
LOCAL n,k;
n:=0;
IF col > 7 THEN RETURN 0; END;
FOR k FROM 0 TO 6 DO
IF inp(col+7*k)==32 THEN
n:=col+7*k;
BREAK;
END;
END;
IF n > 42 THEN RETURN 0; END;
RETURN n;
END;
AIManager()
BEGIN
LOCAL chance, col, PlayNb, tp;
chance:={9999999 , 1 };
FOR col FROM 1 TO 7 DO
PlayOut:=0;
EVA:=0;
PlayNb:=GetValue(col);
IF PlayNb <> 0 THEN
inp(PlayNb):="O";
IF winning()==2 THEN
inp(PlayNb):=" ";
RETURN PlayNb ;
END;
tp:=-(100*NegaMax(1));
IF PlayOut <> 0 THEN tp:=tp -(100*EVA)/PlayOut; END;
IF chance(1) > tp THEN
chance(1):=tp;
chance(2):=PlayNb;
END;
inp(PlayNb):=32;
END;
END;
RETURN chance(2);
END;
PlayPosition(XO)
BEGIN
LOCAL col, down;
DIMGROB_P(G4,10,10,black);
ARC_P(G4,5,5,4,red);
DIMGROB_P(G5,10,10,black);
col:=1;
down:=0;
BLIT_P(52+30*col,20,G4);
WHILE down==0 DO
IF ISKEYDOWN(7) THEN
BLIT_P(52+30*col,20,G5);
col:=max(1, col-1);
BLIT_P(52+30*col,20,G4);
WAIT(.2);
END;
IF ISKEYDOWN(8) THEN
BLIT_P(52+30*col,20,G5);
col:=min(7, col+1);
BLIT_P(52+30*col,20,G4);
WAIT(.2);
END;
IF ISKEYDOWN(12) THEN
down:=1;
END;
END;
col:=GetValue(col);
inp(col):=XO;
Affichage(0);
RETURN;
END;
Code : Tout sélectionner
« 2 IDIV2 SWAP DUP « B° » IFT + »
'B°' STO
Code : Tout sélectionner
22
« 2 IDIV2 SWAP » 0 11
« 2 IDIV2 SWAP » 0 1 5
« 2 IDIV2 SWAP » 0 1 1 2
« 2 IDIV2 SWAP » 0 1 1 0 1
« 2 IDIV2 SWAP » 0 1 1 0 1 0
+ 0 1 1 0 1
+ 0 1 1 1
+ 0 1 2
+ 0 3
+ 3
Je te laisse deviner avant la très prochaine mise en ligne de ma vidéo de présentation !Mais, que fait-on des touches parenthèses ??
Code : Tout sélectionner
1 VAC:INPUT A
2 A=INT A/2:B=B+FRAC A:GOTO 3-SGN A
3 PRINT 2*B
Code : Tout sélectionner
AC 6 M+ Initialisation avec 6 comme valeur approchée de √6, on voit large !
Répéter les 2 lignes suivantes :
6 / MR = M+ Le = n'est peut-être pas nécessaire, sur certaines machine le fait t'appuyer sur M+ lance le calcul
MR / 2 = M- Idem, le = pourra peut-être s'enlever
Code : Tout sélectionner
/ 2 = MC M+
6 / MR + MR = (Le = n'est pas obligatoire si la machine ne connait pas les priorités)
Code : Tout sélectionner
5 2 + 3
2.5 / 2
4.9 6 / 2.5 + 2.5
2.45 / 2
4.89897959 6 / 2.45 + 2.45
2.4494897 / 2