non non, toujours sur C128.gege a écrit : Je suppose que tu es sur Palm 5mx ? Je testerai sur Sharp.
G.E.
@C-Ret : très très bien ton algo.
Modérateur : Politburo
non non, toujours sur C128.gege a écrit : Je suppose que tu es sur Palm 5mx ? Je testerai sur Sharp.
G.E.
Code : Tout sélectionner
10 I=0:K=0:INPUT N:TIMER=0
20 I=I+1:M=I
30 IF M MOD 5=0 THEN M=M/5:GOTO30
40 IF M MOD 3=0 THEN M=M/3:GOTO40
50 IF M MOD 2=0 THEN M=M/2:GOTO50
60 IF M=1 THEN K=K+1 ELSE 20
70 IF K<N THEN 20
80 PRINT I,TIMER
Code : Tout sélectionner
10 INPUT I:TIMER=0:L2=LN2:L=1:FOR K=2 TO I:T=1:V=L
20 U=1
30 S=U*T:W=2^INT(LN(L/S)/L2+1):IF W<1 THEN W=1
40 R=W*S:IF (R<V AND R>L) OR V=L THEN V=R
50 IF W>1 THEN U=U*3:GOTO30
60 IF T<V THEN T=T*5:GOTO20
70 L=V:NEXT K:PRINT i,TIMER
Code : Tout sélectionner
Rang Hamming Tps FB Tps V2
10 12 0,8 4,2
20 36 2,4 12,3
30 80 5,1 23,4
40 144 9,1 36,9
50 243 15,2 52,9
60 384 23,9 70,9
70 576 35,8 90,4
80 800 49,6 112,5
90 1152 71,4 136,1
100 1536 95,1 161,6
110 2048 126,8 187,8
120 2700 167,2 216,1
130 3600 223,2 245,7
140 4500 279,3 278,0
150 5832 362,3 310,6
Code : Tout sélectionner
Rang Hamming Tps FB Tps V2
50 243 0,5 1
100 1536 2,5 2,5
150 5832 9 5
200 16200 25,5 8
250 38880 61,3 11,5
300 82944 131 15,5
350 164025 264 20
400 311040 503,5 25
Code : Tout sélectionner
10 CLEAR:DIM H(500):N=1:A=2:B=3:C=5:INPUT R:TIMER=0
20 H(O MOD 500)=N:O=O+1:IF A=N THEN A1=(A1+1)MOD500:A=2*H(A1)
30 IF B=N THEN B1=(B1+1)MOD500:B=3*H(B1)
40 IF C=N THEN C1=(C1+1)MOD500:C=5*H(C1)
50 IF A<B AND A<C THEN N=A ELSE IF B<C THEN N=B ELSE N=C
60 IF O<R THEN 20
70 PRINT H((O-1)MOD500);TIMER
Code : Tout sélectionner
10 CLEAR:DIM H(500):N=1:A=2:B=3:C=5:INPUT R:TIMER=0
20 H(O MOD 500)=N:O=O+1:IF A=N THEN A1=A1+1:A=2*H(A1 MOD500)
30 IF B=N THEN B1=B1+1:B=3*H(B1 MOD500)
40 IF C=N THEN C1=C1+1:C=5*H(C1 MOD500)
50 IF A<B AND A<C THEN N=A ELSE IF B<C THEN N=B ELSE N=C
60 IF O<R THEN 20
70 PRINT H((O-1)MOD500);TIMER;O-C1+1
Code : Tout sélectionner
Rang Hamming Buffer Temps
50 243 28 2"7
100 1536 46 5"9
200 16200 74 12"0
300 82944 100 18"4
400 311040 121 24"9
500 937500 141 31"5
600 2460375 161 38"1
700 5989240 179 44"7
800 12754584 197 51"4
900 26244000 213 58"1
1000 51200000 230 1'04"8
1500 859963392 304 1'38"8
2000 8062156800 369 2'13"
2500 5,36870912e10 431 2'47"5
Code : Tout sélectionner
(Rang^0,7)*1,8
Code : Tout sélectionner
Rang Hamming Buffer Z1GR TI74 PC1403
50 243 28 2"7 8"0 27"0
100 1536 46 5"9 16"5 57"5
200 16200 74 12"0 34"5 1'59"5
300 82944 100 18"4 52"5 3'03"5
400 311040 121 24"9 1'11"0 4'08"5
500 937500 141 31"5 1'29"5 5'14"0
1000 51200000 230 1'04"8 3'03"5 10'46"0
1500 859963392 304 1'38"8
2000 8062156800 369 2'13"
2500 53687091200 431 2'47"5 7'53"5
3000 278942752080 489 3'22"2 9'31"5
3500 1228800000000 543 3'57"3 11'10"0
4000 4701849845760 595 faux 12"49"0
4500 16124313600000 645 14'28"0
5000 50837316566580 693 16'07"5
Code : Tout sélectionner
10 CLEAR:DIM H(255):N=1:A=2:B=3:C=5:INPUT R
20 H(O-INT(O/255)*255)=N:O=O+1:IF A=N LET A1=A1+1:A=2*H(A1-INT(A1/255)*255)
30 IF B=N LET B1=B1+1:B=3*H(B1-INT(B1/255)*255)
40 IF C=N LET C1=C1+1:C=5*H(C1-INT(C1/255)*255)
50 IF A<B AND A<C LET N=A:GOTO 60
52 IF B<C LET N=B:GOTO 60
55 N=C
60 IF O<R THEN 20
70 PRINT "H";H(O-1-INT((O-1)/255)*255);"B";O-C1+1
bernouilli92 a écrit :Rendons à César ce qui est à Cézar, ce n'est pas tout à fait mon algo, je me suis bien inspiré des travaux donnés justement en référence par caloubugsgege a écrit :@C-Ret : très très bien ton algo.
caloubugs a écrit :Un petit lien : Mal de crâne assuré...
Code : Tout sélectionner
Rang Hamming Buffer Temps Comptage double précision
50 243 28 2"7 3"
100 1536 46 5"9 5"
200 16200 74 12"0 9"
300 82944 100 18"4 15"
400 311040 121 24"9 22"
500 937500 141 31"5
600 2460375 161 38"1
700 5989240 179 44"7
800 12754584 197 51"4
900 26244000 213 58"1
1000 51200000 230 1'04"8
1500 859963392 304 1'38"8 1'26"
2000 8062156800 369 2'13" 1'59"
2500 5,36870912e10 431 2'47"5 2'37" 53687091200
5000 6'08" 50837316566580
6374 9'12" 839808000000000
Code : Tout sélectionner
100 REM --------------------------
110 REM Suite de Hamming par comptage
120 REM --------------------------
130 DIM NH(20),LH#(1000),P(1000),S(1000)
140 REM --------------------------
150 REM NH = 2,4,7,12,19,27,38,45,68...
160 REM N indice de Hamming cherche
170 REM K indice de la tranche
180 REM --------------------------
190 L3#=log(3#)/log(2#):L5#=log(5#)/log(2#)
200 INPUT "Indice ";N:K=1:NH(1)=2
210 IF N<NH(K) THEN 330
220 K=K+1:T=INT(K/L5#):U=T+1
230 FOR I=0 TO T:U=U+INT((K-I*L5#)/L3#):NEXT I
240 NH(K)=NH(K-1)+U:GOTO 210
250 REM--------------------------
260 REM liste chainee :
270 REM LH() logarithme
280 REM P() precedent - 0=debut
290 REM S() suivant - 0=fin
300 REM T pointeur actuel
310 REM U nombre d'elements
320 REM--------------------------
330 T=1:U=1
340 LH#(1)=K:P(1)=0:S(1)=0
350 REM --------------------------
360 A=K:goto 540
370 B=INT((K-A)/L3#)
380 F#=A+B*L3#:C=INT((K-F#)/L5#):F#=F#+C*L5#
390 IF F#<=K-1 THEN 530
400 REM <<< Insertion >>>
410 U=U+1:LH#(U)=F#:IF F#>LH#(T) THEN 470
420 REM descend
430 R=P(T):IF R=0 THEN P(T)=U:P(U)=0:S(U)=T:GOTO 500
440 T=R:IF F#<LH#(T) THEN 430
450 S(U)=S(T):P(U)=T:P(S(T))=U:S(T)=U:GOTO 500
460 REM monte
470 R=S(T):IF R=0 THEN S(T)=U:P(U)=T:S(U)=0:GOTO 500
480 T=R:IF F#>LH#(T) THEN 470
490 P(U)=P(T):S(U)=T:S(P(T))=U:P(T)=U
500 T=U
510 REM << Fin insertion >>
520 C=C-1:IF C>-1 THEN F#=F#-L5#:GOTO 390
530 B=B-1:IF B>-1 THEN 380
540 A=A-1:IF A>-1 THEN 370
550 REM --------------------------
560 R=1:FOR I=1 TO NH(K)-N:R=P(R):NEXT I
570 PRINT "Hamming(";N;")=";INT(2^LH#(R)+0.5)
Code : Tout sélectionner
580 PRINT "Buffers :";K;U
Code : Tout sélectionner
Rang Buffers Pockemul Sharp
100 11/ 23 5" 7"
400 19/ 60 27"
700 23/ 85 22" 47"
1500 30/138 1'26" 1'42"
2000 33/166 1'59" 2'20"
Code : Tout sélectionner
130 DIM NH(40),LH#(200),P(200),S(200)
Code : Tout sélectionner
10 CLEAR:DIM H(500):N=1:A=2:B=3:C=5:INPUT R:TIMER=0
20 H(O MOD 500)=N:O=O+1:IF A=N THEN A1=A1+1:A=2*H(A1 MOD500)
30 IF B=N THEN B1=B1+1:B=3*H(B1 MOD500)
40 IF C=N THEN C1=C1+1:C=5*H(C1 MOD500)
50 N=A:IF N>B THEN N=B
55 IF N>C THEN N=C
60 IF O<R THEN 20
70 PRINT H((O-1)MOD500);TIMER;O-C1+1
Code : Tout sélectionner
H001 LBL H CLVARS 1 STO N 2 STO A 3 STO B 5 STO C
H011 INPUT R RCL O 500 RMDR STO I RCL N STO(I) 1 STO+ O RCL A
H021 RCL N x!=y? GTO H034 1 STO+ E RCL E 500 RMDR STO I RCL(I)
H031 2 * STO A RCL B RCL N x!=y? GTO H048 1 STO+ F RCL F
H041 500 RMDR STO I RCL(I) 3 * STO B RCL C RCL N x!=y?
H051 GTO H062 1 STO+ G RCL G 500 RMDR STO I RCL(I) 5 *
H061 STO C RCL A STO N RCL B x<y? STO N RCL N RCL C x<y? STO N
H071 RCL O RCL R x>y? GTO H012 1 STO- O RCL O 500 RMDR STO I
H081 RCL(I) RCL O RCL- G 2 + RTN
Code : Tout sélectionner
Rang Hamming Buffer Z1GR TI74 PC1403 HP35S
50 243 28 2"6 7"5 26"0 23"5
100 1536 46 5"5 15"5 55"0 50"0
200 16200 74 11"6 33"0 1'54"5 1'45"5
500 937500 141 30"2 1'25"5 5'00"5 4'39"0
1000 51200000 230 1'01"8 2'55"5 10'19"5 9'36"0
2000 8062156800 369 2'07"2 5'59"5
3000 278942752080 489 3'13"4 9'07"5
4000 4701849845760 595 faux 12"17"0
5000 50837316566580 693 15'27"0
Code : Tout sélectionner
Rang Hamming Buffer Z1GR gain PC1403 gain
50 243 8/ 14 2"7 + 4,0 % 20"5 - 21,2 %
100 1536 11/ 23 5"1 - 7,2 % 39"0 - 29,1 %
200 16200 14/ 34 7"9 - 31,9 % 1'02"5 - 45,4 %
500 937500 20/ 65 21"3 - 29,5 % 2'52"0 - 38,4 %
1000 51200000 26/107 48"6 - 21,4 % 6'39"0 - 35,6 %
2000 8062156800 33/166 1'40"7 - 20,8 % 13'58"0 incorrect sur
3000 278942752080 39/228 2'56"3 - 8,8 % les 2 derniers
4000 4701849845760 43/275 4'04"6 exact !!! chiffres (21)
5000 50837316566580 46/313 5'09"9 exact !!!
10000 2.883251953e17 59/504 12'24"1 à vérifier
Code : Tout sélectionner
200 INPUT "Indice ";N:K=0
210 K=K+1:READ M:IF N<M THEN 330 ELSE 210
220 DATA 2,4,7,12,19,27,38,52,68,87,110,137,167,201
225 DATA 240,284,332,386,446,511,582,660,745,836,934
230 DATA 1041,1155,1277,1407,1545,1692,1849,2015,2190
235 DATA 2376,2571,2777,2994,3222,3461,3711,3974,4249
240 DATA 4535,4834,5147,5473,5811,6164,6531,6911
245 DATA 7306,7716,8142,8582,9039,9511,9999,10503
560 R=1:FOR I=1 TO M-N:R=P(R):NEXT I