- Code: Tout sélectionner
[[1,2,3,4][5,6,7,8][9,10,11,12][13,14,15,0→[A]
J'aurais fais:
- Code: Tout sélectionner
{1,5,9,13
Liste>Matr(Ans,Ans+1,Ans+2,Ans+3,[A]
0->[A](4,4
(on gagne ~10 octets il me semble).
Voici mon programme (optimisé niveau octets exclusivement, donc pas forcément très fluide... Notamment un affreux clignotement) :
Show/Hide spoilerAfficher/Masquer le spoiler
- Code: Tout sélectionner
//On génère un liste parfaite (16 = vide)
seq(A,A,1,16->L1
Ans->L3
//On effectue un nombre pair de permutations, entre la 1ère case et une autre aléatoire (mais pas celle de la case vide)
For(A,1,40
randint(2,15->B
L1(A->E
L1(1->L1(A
E->L1(1
End
//Position de départ
3->B
4->A
//On joue tant qu'on est pas revenu à la liste sauvegardée
Repeat min(L1=L3
//Affichage (dans la boucle permet de gagner en octets, mais perds en fluidité, avec un clignotement à chaque déplacement)
EffEcr
For(W,4,19
L1(W-3
If Ans-16
Output(ent(W/4),12fPart(W/4)+1,Ans
End
//On attend une touche
Repeat Ans
getKey->K
End
//Déplacement (de la case vide pour moi)
max(1,min(4,A+(K=26)-(K=24->C
max(0,min(3,B+(K=24)-(K=25->D
L1(4D+C->L1(4B+A
16->L1(4D+C
D->B
C->A
End
//On a gagné
ClrHome
"GAGNE
En fait j'ai gagné encore un octet en recopiant, donc 233!
Je suis d'accord pour dire qu les programmes obtenus sont médiocres à cause de la contrainte gagner le plus d'octets possibles...
Un défis pour faire un programme le plus rapide et le moins lourd possible semble plus sympathique à coder déjà.