Page 1 of 1

Résultat du premier tour du concours d'optimisation.

Unread postPosted: 06 Aug 2012, 00:31
by nikitouzz
Voici les resultat du petit concours d'optimisation que j'ai lancé il y a une semaine :)

En Axe le premier est Runer112 sur les 5 participant :) Il reporte haut la main avec un code optimiser a 436 octets, en reprenant fidèlement mon code de départ dans ses moindre détaille :) je tiens a le felicitee pour son code qui est pour moi parfait :)

il va donc en finale :)

Code de depart :
Code: Select all
:ClrHome
:[FF818181818181FF]→pic0
:[FFC3A59999A5C3FF]→pic1
:[0000000000000000]→pic9
:0→S
:1→A
:2→B
:ClrDraw
:Repeat getKey(15)
:Pt-Change(A*8,B*8,Pic0)
:DispGraph
:Pt-Change(A*8,B*8,Pic0)
:Pause 100
:If getKey(1) and (B≠7) and (pxl-Test(A*8,B+1*8)=0)
:B+1→B
:S++
:pause 250
:End
:If getKey(2) and (A≠1) and (pxl-Test(A-1*8,B*8)=0)
:A-1→A
:S++
:pause 250
:End
:If getKey(3) and (A≠11) and (pxl-Test(A+1*8,B*8)=0)
:A+1→A
:S+1→S
:pause 250
:End
:If getKey(4) and (B≠1) and (pxl-Test(A*8,B-1*8)=0)
:B-1→B
:S+1→S
:pause 250
:End
:If getKey(3) and (pxl-Test(A+1*8,B*8)=1) and (pxl-Test(A+2*8,B*8)=0) and (A≠10) and (pxl-Test(A+1*8+1,B*8+2)=0)
:Pt-Off(A+1*8,B*8,Pic9)
:Pt-Off(A+2*8,B*8,Pic1)
:A+1→A
:S+1→S
:pause 250
:End
:If getKey(2) and (pxl-Test(A-1*8,B*8)=1) and (pxl-Test(A-2*8,B*8)=0) and (A≠2) and (pxl-Test(A-1*8+1,B*8+2)=0)
:Pt-Off(A-1*8,B*8,Pic9)
:Pt-Off(A-2*8,B*8,Pic1)
:A-1→A
:S+1→S
:pause 250
:End
:If getKey(1) and (pxl-Test(A*8,B+1*8)=1) and (pxl-Test(A*8,B+2*8)=0) and (B≠6) and (pxl-Test(A*8+1,B+1*8+2)=0)
:Pt-Off(A*8,B+1*8,Pic9)
:Pt-Off(A*8,B+2*8,Pic1)
:B+1→B
:S+1→S
:pause 250
:End
:If getKey(4) and (pxl-Test(A*8,B-1*8)=1) and (pxl-Test(A*8,B-2*8)=0) and (B≠2) and (pxl-Test(A*8+1,B-1*8+2)=0)
:Pt-Off(A*8,B-1*8,Pic9)
:Pt-Off(A*8,B-2*8,Pic1)
:B-1→B
:S+1→S
:pause 250
:End
:End


Code d'arrivée :
Code: Select all
:0->^^oDEBUG
:[FF818181818181]->Pic0
:[FFC3A59999A5C3FF]->Pic1
:L1+706->Pic9
:ClrDraw(L1)
:ClrDraw
:2*96+1+L6->P->r2
:(Pic0)Draw()
:...If ^^oDEBUG
:4*96+4+L6->r2
:(Pic1)Draw()
:...
:While 1
:DispGraph
:Pause 100
:4
:While 1
:End!If Select(,TryMv())-1
:3
:While 1
:End!If Select(,TryPs())-1
:4TryPs()
:EndIf getKey(15)
:Lbl KOfs
:[60FF01A0]->GDB0
:Return sign{r1-1+GDB0}
:Lbl CanMv
:ReturnIf +P->r2 and |EDF-|E9381*3plotdot|E0820
:Return {r2}
:Lbl TryMv
:Return!If getKey(->r1)
:Lbl Mv
:ReturnIf KOfs()CanMv()
:r2->P
:S++
:Pause 250
:Pic0
:Lbl DrwMv
:Draw()
:-96->r2
:Pic9
:Lbl Draw
:For(8)
:Select(,{}->{r2}+12->r2)+1
:End
:Lbl SKOfs
:r2-KOfs()
:Return
:Lbl TryPs
:Return!If getKey(->r1)
:ReturnIf KOfs()*2CanMv()
:ReturnIf {SKOfs()+12} xor |EC3
:(Pic1)DrwMv()
:Goto Mv


Code le plus optimisé :
Code: Select all
:0->^^oDEBUG
:[FF818181818181]->Pic0
:[FFC3A59999A5C3FF]->Pic1
:L1+706->Pic9
:ClrDraw(L1)
:ClrDraw
:2*96+1+L6->P->r2
:(Pic0)Draw()
:...If ^^oDEBUG
:4*96+4+L6->r2
:(Pic1)Draw()
:...
:While 1
:DispGraph
:Pause 100
:4
:While 1
:End!If Select(,TryMv())-1
:3
:While 1
:End!If Select(,TryPs())-1
:4TryPs()
:EndIf getKey(15)
:Lbl KOfs
:[60FF01A0]->GDB0
:Return sign{r1-1+GDB0}
:Lbl CanMv
:ReturnIf +P->r2 and |EDF-|E9381*3plotdot|E0820
:Return {r2}
:Lbl TryMv
:Return!If getKey(->r1)
:Lbl Mv
:ReturnIf KOfs()CanMv()
:r2->P
:S++
:Pause 250
:Pic0
:Lbl DrwMv
:Draw()
:-96->r2
:Pic9
:Lbl Draw
:For(8)
:Select(,{}->{r2}+12->r2)+1
:End
:Lbl SKOfs
:r2-KOfs()
:Return
:Lbl TryPs
:Return!If getKey(->r1)
:ReturnIf KOfs()*2CanMv()
:ReturnIf {SKOfs()+12} xor |EC3
:(Pic1)DrwMv()
:Goto Mv



En Basic le gagnant est Linkaro qui remporte le concours avec un score moyen car aucun des 6 participants n'a su me faire un code fonctionnel a 100%.

Il va donc en finale :)

Code de depart :
Code: Select all
:Lbl 0:0→∟AD(1)
:Menu("JEUX","jouer",8,"quitter",9)
:Lbl 8
:ClrHome
:200→D
:Output(4,6,"00000")
:Output(5,6,"0  0")
:Output(6,6,"0  0")
:Output(7,6,"0  0")
:Output(8,6,"00000")
:Lbl 1
:∟AD+1→∟AD
:randInt(1,9)→A
:Repeat D=0
:D-1→D
:Output(1,1,"    ")
:Output(1,1,D)
:Output(2,1,∟AD(1))
:Output(6,8,A)
:0→B
:getKey→B
:B+A→C
:If C=93 or C=95 or C=97 or C=86 or C=88 or C=90 or C=79 or C=81 or C=83
:Goto 1
:End
:ClrHome
:Output(3,5,"SCORE:)
:Output(4,6,∟AD(1))
:If ∟AD(1)>∟AC(1)
:∟AD(1)→∟AC(1)
:Pause
:Goto 0
:Lbl 9


Code d'arrivée :
Code: Select all
DelVar SClrHome
randInt(1,9→A
For(D,200,1,¯1
Output(2,2,"  "
Output(2,1,D
Output(3,1,S
Output(1,1,A
getKey→B
{92,93,94,82,83,84,72,73,74
If B=Ans(A
Then
S+1→S
randInt(1,9→A
End
End
ClrHome
max(S,∟AC(1→∟AC(1
Disp "SCORE:
S


Code le plus optimisé : ( ici c'est le mien )
Code: Select all
:0->S
:900->C
"Menu("","",1,"",2
:Lbl 1
:randint(1,9->F
:while C
:output(2,3,F
:output(5,1,C
:output(4,1,S
:C-1->C
:{92,93,94,82,83,84,72,73,74
:If getkey=Ans(F
:then
:S+1->S
:randint(1,9->F
:end
:end
:Lbl 2
:output(1,1,""
:output(4,6,"SACHA"



Pour la finale :

Le but est de me programmer un snake, en basic pour linkaro et en Axe pour runer112 le plus simple et le plus optimisé possible.
Le code qui techniquement sera supérieur à l'autre sera vainqueur (ne vous inquiétez pas je vais compter l’écart de puissance entre le basic et l'axe).

La finale commence dés aujourd'hui et finis le 16/08/2012 a 12 heures pile. :)

Bonne chance a vous runer112 et linkaro :)


edit by Laurae : majuscules manquantes et erreurs d'orthographe corrigés