Je voudrais, a l'aide d'une boucle, decaler chaque element
^^^^^^^^^^^^^^^^^^^^^
Je voudrais, a l'aide d'une boucle, decaler chaque element
^^^^^^^^^^^^^^^^^^^^^
Je voudrais, a l'aide d'une boucle, decaler chaque element
^^^^^^^^^^^^^^^^^^^^^
J'ai en fait une sorte de rubiks cube:
DEF
123
234
345
A 123 456 789
B 234 567 891
C 345 678 912
789
891
912
ABC se bougent de la gauche vers la droite uniquement et DEF de haut en bas
Un mouvement de la ligne A de 5 est represente par A5
Je veux trouver tous les mouvements possibles qui menent a:
DEF
212
423
534
A 649 125 277
B 917 546 888
C 123 863 999
983
134
751
On ne peut bouger chaque ligne et colonnes que seulement 2 fois (avec autant
de decalages que l'on veut pour chaque mouvement) On ne peut bouger la meme
ligne une seconde fois que si les autres lignes on deja ete deplacees.
Je cherche donc toutes les combinaisons possibles qui menent au deuxieme
diagramme.
(2 fois 6 lignes a bouger)
Chaque solution peut etre de la forme:
A5B3C6D1E9F2F5E4D7C2B4A1
Si quelqu'un pouvait me donner un exemple de code pour resoudre cette enigme
ou me mettre sur le bon chemin par rapport a la maniere de coder...
J'ai en fait une sorte de rubiks cube:
DEF
123
234
345
A 123 456 789
B 234 567 891
C 345 678 912
789
891
912
ABC se bougent de la gauche vers la droite uniquement et DEF de haut en bas
Un mouvement de la ligne A de 5 est represente par A5
Je veux trouver tous les mouvements possibles qui menent a:
DEF
212
423
534
A 649 125 277
B 917 546 888
C 123 863 999
983
134
751
On ne peut bouger chaque ligne et colonnes que seulement 2 fois (avec autant
de decalages que l'on veut pour chaque mouvement) On ne peut bouger la meme
ligne une seconde fois que si les autres lignes on deja ete deplacees.
Je cherche donc toutes les combinaisons possibles qui menent au deuxieme
diagramme.
(2 fois 6 lignes a bouger)
Chaque solution peut etre de la forme:
A5B3C6D1E9F2F5E4D7C2B4A1
Si quelqu'un pouvait me donner un exemple de code pour resoudre cette enigme
ou me mettre sur le bon chemin par rapport a la maniere de coder...
J'ai en fait une sorte de rubiks cube:
DEF
123
234
345
A 123 456 789
B 234 567 891
C 345 678 912
789
891
912
ABC se bougent de la gauche vers la droite uniquement et DEF de haut en bas
Un mouvement de la ligne A de 5 est represente par A5
Je veux trouver tous les mouvements possibles qui menent a:
DEF
212
423
534
A 649 125 277
B 917 546 888
C 123 863 999
983
134
751
On ne peut bouger chaque ligne et colonnes que seulement 2 fois (avec autant
de decalages que l'on veut pour chaque mouvement) On ne peut bouger la meme
ligne une seconde fois que si les autres lignes on deja ete deplacees.
Je cherche donc toutes les combinaisons possibles qui menent au deuxieme
diagramme.
(2 fois 6 lignes a bouger)
Chaque solution peut etre de la forme:
A5B3C6D1E9F2F5E4D7C2B4A1
Si quelqu'un pouvait me donner un exemple de code pour resoudre cette enigme
ou me mettre sur le bon chemin par rapport a la maniere de coder...
Je veux trouver tous les mouvements possibles qui menent a:
DEF
212
423
534
A 649 125 277
B 917 546 888
C 123 863 999
983
134
751
On ne peut bouger chaque ligne et colonnes que seulement 2 fois (avec autant
de decalages que l'on veut pour chaque mouvement) On ne peut bouger la meme
ligne une seconde fois que si les autres lignes on deja ete deplacees.
"les autres lignes" signifie-t-ils "toutes les autres lignes" ou "au moins
une autre ligne".
Je suppose que tu as assimilé les colonnes aux lignes dans cette description
et que les conditions sur ces colonnes sont les mêmes.
Je cherche donc toutes les combinaisons possibles qui menent au deuxieme
diagramme.
(2 fois 6 lignes a bouger)
Chaque solution peut etre de la forme:
A5B3C6D1E9F2F5E4D7C2B4A1
Est-ce que l'ordre des déplacements est fixé ? A-B-C-D-E-F-F-E-D-C-B-A-
Bien que Perl permette de tout faire (merci Turing), j'ai une autre
proposition (exotique): décrire le problème en 'Prolog' et laisser faire le
moteur de résolution. Je dis cela à tout hasard mais le 'Prolog' est
vraiment peu connu - et j'en ai tout oublié de mes quelques mois
d'expérience en école d'ingénieurs... dommage d'ailleurs.
Bonne chance
Je veux trouver tous les mouvements possibles qui menent a:
DEF
212
423
534
A 649 125 277
B 917 546 888
C 123 863 999
983
134
751
On ne peut bouger chaque ligne et colonnes que seulement 2 fois (avec autant
de decalages que l'on veut pour chaque mouvement) On ne peut bouger la meme
ligne une seconde fois que si les autres lignes on deja ete deplacees.
"les autres lignes" signifie-t-ils "toutes les autres lignes" ou "au moins
une autre ligne".
Je suppose que tu as assimilé les colonnes aux lignes dans cette description
et que les conditions sur ces colonnes sont les mêmes.
Je cherche donc toutes les combinaisons possibles qui menent au deuxieme
diagramme.
(2 fois 6 lignes a bouger)
Chaque solution peut etre de la forme:
A5B3C6D1E9F2F5E4D7C2B4A1
Est-ce que l'ordre des déplacements est fixé ? A-B-C-D-E-F-F-E-D-C-B-A-
Bien que Perl permette de tout faire (merci Turing), j'ai une autre
proposition (exotique): décrire le problème en 'Prolog' et laisser faire le
moteur de résolution. Je dis cela à tout hasard mais le 'Prolog' est
vraiment peu connu - et j'en ai tout oublié de mes quelques mois
d'expérience en école d'ingénieurs... dommage d'ailleurs.
Bonne chance
Je veux trouver tous les mouvements possibles qui menent a:
DEF
212
423
534
A 649 125 277
B 917 546 888
C 123 863 999
983
134
751
On ne peut bouger chaque ligne et colonnes que seulement 2 fois (avec autant
de decalages que l'on veut pour chaque mouvement) On ne peut bouger la meme
ligne une seconde fois que si les autres lignes on deja ete deplacees.
"les autres lignes" signifie-t-ils "toutes les autres lignes" ou "au moins
une autre ligne".
Je suppose que tu as assimilé les colonnes aux lignes dans cette description
et que les conditions sur ces colonnes sont les mêmes.
Je cherche donc toutes les combinaisons possibles qui menent au deuxieme
diagramme.
(2 fois 6 lignes a bouger)
Chaque solution peut etre de la forme:
A5B3C6D1E9F2F5E4D7C2B4A1
Est-ce que l'ordre des déplacements est fixé ? A-B-C-D-E-F-F-E-D-C-B-A-
Bien que Perl permette de tout faire (merci Turing), j'ai une autre
proposition (exotique): décrire le problème en 'Prolog' et laisser faire le
moteur de résolution. Je dis cela à tout hasard mais le 'Prolog' est
vraiment peu connu - et j'en ai tout oublié de mes quelques mois
d'expérience en école d'ingénieurs... dommage d'ailleurs.
Bonne chance
Je veux trouver tous les mouvements possibles qui menent a:
DEF
212
423
534
A 649 125 277
B 917 546 888
C 123 863 999
983
134
751
On ne peut bouger chaque ligne et colonnes que seulement 2 fois (avec
autant
de decalages que l'on veut pour chaque mouvement) On ne peut bouger
la meme
ligne une seconde fois que si les autres lignes on deja ete deplacees.
"les autres lignes" signifie-t-ils "toutes les autres lignes" ou "au
moins une autre ligne".
Je suppose que tu as assimilé les colonnes aux lignes dans cette
description
et que les conditions sur ces colonnes sont les mêmes.
Oui, toutes les autres lignes doivent etre deplacees. Si je commence par
bouger A,
BCDEF doivent etre bouges avant de pouvoir decaler A a nouveau.Je cherche donc toutes les combinaisons possibles qui menent au deuxieme
diagramme.
(2 fois 6 lignes a bouger)
Chaque solution peut etre de la forme:
A5B3C6D1E9F2F5E4D7C2B4A1
Est-ce que l'ordre des déplacements est fixé ? A-B-C-D-E-F-F-E-D-C-B-A-
L'ordre n'est a priori pas fixe et on peut bouger n'importe quelle
ligne/colonne tant que l'on respecte les regles:
-Chaque ligne/colonne est deplacee 2 fois en tout
-On ne peut bouger la meme ligne/colonne une seconde fois que si toutes
les autres lignes on deja ete deplacees
Mon idee est d'imbriquer 6 boucles for sur le schema suivant:
for i=0 to 8
shift @A
for i=0 to 8
shift @B
for i=0 to 8
shift @C
......etc jusqu'a @F
ici, faire la comparaison avec les tableaux @a,b,c,d,e,f
et continuer...
Ce qui, je pense brute forcerait toutes solutions possibles :o?
Mon probleme est tout d'abord au niveau de la maniere de "shifter" les
"cases" des tableaux une par une.
Ensuite, mon second probleme c'est les relations qu'il y a entre par
exemple @A et @D qui ont une case en commun.
J'ai commencer a faire ceci:
#tables a deplacer
my @A = (1,2,3,4,5,6,7,8,9);
my @B = (2,3,4,5,6,7,8,9,1);
my @C = (3,4,5,6,7,8,9,1,2);
my @D = (1,2,3,4,5,6,7,8,9);
my @E = (2,3,4,5,6,7,8,9,1);
my @F = (3,4,5,6,7,8,9,1,2);
#tables a obtenir
my @a = (6,4,9,1,2,5,2,7,7);
my @b = (9,1,7,5,4,6,8,8,8);
my @c = (1,2,3,8,6,3,9,9,9);
my @d = (2,4,5,1,5,8,9,1,7);
my @e = (1,2,3,2,4,6,8,3,5);
my @f = (2,3,4,5,6,3,3,4,1);
for (my $i=0;$i<8;$i++) {
#deplacement horizontal
unshift @A,pop @A;
unshift @B,pop @B;
unshift @c,pop @C;
#chaque ligne/colonne ont des cases en commun
$D[3]=$A[3];
$D[4]=$B[3];
$D[5]=$C[3];
$E[3]=$A[4];
$E[4]=$B[4];
$E[5]=$C[4];
$F[3]=$A[5];
$F[4]=$B[5];
$F[5]=$C[5];
deplacement vertical
unshift @D,pop @D;
unshift @E,pop @E;
unshift @F,pop @F;
$A[3]=$D[3];
$A[4]=$E[3];
$A[5]=$F[3];
$B[3]=$D[4];
$B[4]=$E[4];
$B[5]=$F[4];
$C[3]=$D[5];
et je n'ai pas continue puisque mon systeme de "shift" ne marche pas...Bien que Perl permette de tout faire (merci Turing), j'ai une autre
proposition (exotique): décrire le problème en 'Prolog' et laisser
faire le
moteur de résolution. Je dis cela à tout hasard mais le 'Prolog' est
vraiment peu connu - et j'en ai tout oublié de mes quelques mois
d'expérience en école d'ingénieurs... dommage d'ailleurs.
Bonne chance
merci, je vais regarder ce dont est capable prolog
Yep prolog est ton ami pour ce genre de problème. Je me souviens avoir
Je veux trouver tous les mouvements possibles qui menent a:
DEF
212
423
534
A 649 125 277
B 917 546 888
C 123 863 999
983
134
751
On ne peut bouger chaque ligne et colonnes que seulement 2 fois (avec
autant
de decalages que l'on veut pour chaque mouvement) On ne peut bouger
la meme
ligne une seconde fois que si les autres lignes on deja ete deplacees.
"les autres lignes" signifie-t-ils "toutes les autres lignes" ou "au
moins une autre ligne".
Je suppose que tu as assimilé les colonnes aux lignes dans cette
description
et que les conditions sur ces colonnes sont les mêmes.
Oui, toutes les autres lignes doivent etre deplacees. Si je commence par
bouger A,
BCDEF doivent etre bouges avant de pouvoir decaler A a nouveau.
Je cherche donc toutes les combinaisons possibles qui menent au deuxieme
diagramme.
(2 fois 6 lignes a bouger)
Chaque solution peut etre de la forme:
A5B3C6D1E9F2F5E4D7C2B4A1
Est-ce que l'ordre des déplacements est fixé ? A-B-C-D-E-F-F-E-D-C-B-A-
L'ordre n'est a priori pas fixe et on peut bouger n'importe quelle
ligne/colonne tant que l'on respecte les regles:
-Chaque ligne/colonne est deplacee 2 fois en tout
-On ne peut bouger la meme ligne/colonne une seconde fois que si toutes
les autres lignes on deja ete deplacees
Mon idee est d'imbriquer 6 boucles for sur le schema suivant:
for i=0 to 8
shift @A
for i=0 to 8
shift @B
for i=0 to 8
shift @C
......etc jusqu'a @F
ici, faire la comparaison avec les tableaux @a,b,c,d,e,f
et continuer...
Ce qui, je pense brute forcerait toutes solutions possibles :o?
Mon probleme est tout d'abord au niveau de la maniere de "shifter" les
"cases" des tableaux une par une.
Ensuite, mon second probleme c'est les relations qu'il y a entre par
exemple @A et @D qui ont une case en commun.
J'ai commencer a faire ceci:
#tables a deplacer
my @A = (1,2,3,4,5,6,7,8,9);
my @B = (2,3,4,5,6,7,8,9,1);
my @C = (3,4,5,6,7,8,9,1,2);
my @D = (1,2,3,4,5,6,7,8,9);
my @E = (2,3,4,5,6,7,8,9,1);
my @F = (3,4,5,6,7,8,9,1,2);
#tables a obtenir
my @a = (6,4,9,1,2,5,2,7,7);
my @b = (9,1,7,5,4,6,8,8,8);
my @c = (1,2,3,8,6,3,9,9,9);
my @d = (2,4,5,1,5,8,9,1,7);
my @e = (1,2,3,2,4,6,8,3,5);
my @f = (2,3,4,5,6,3,3,4,1);
for (my $i=0;$i<8;$i++) {
#deplacement horizontal
unshift @A,pop @A;
unshift @B,pop @B;
unshift @c,pop @C;
#chaque ligne/colonne ont des cases en commun
$D[3]=$A[3];
$D[4]=$B[3];
$D[5]=$C[3];
$E[3]=$A[4];
$E[4]=$B[4];
$E[5]=$C[4];
$F[3]=$A[5];
$F[4]=$B[5];
$F[5]=$C[5];
deplacement vertical
unshift @D,pop @D;
unshift @E,pop @E;
unshift @F,pop @F;
$A[3]=$D[3];
$A[4]=$E[3];
$A[5]=$F[3];
$B[3]=$D[4];
$B[4]=$E[4];
$B[5]=$F[4];
$C[3]=$D[5];
et je n'ai pas continue puisque mon systeme de "shift" ne marche pas...
Bien que Perl permette de tout faire (merci Turing), j'ai une autre
proposition (exotique): décrire le problème en 'Prolog' et laisser
faire le
moteur de résolution. Je dis cela à tout hasard mais le 'Prolog' est
vraiment peu connu - et j'en ai tout oublié de mes quelques mois
d'expérience en école d'ingénieurs... dommage d'ailleurs.
Bonne chance
merci, je vais regarder ce dont est capable prolog
Yep prolog est ton ami pour ce genre de problème. Je me souviens avoir
Je veux trouver tous les mouvements possibles qui menent a:
DEF
212
423
534
A 649 125 277
B 917 546 888
C 123 863 999
983
134
751
On ne peut bouger chaque ligne et colonnes que seulement 2 fois (avec
autant
de decalages que l'on veut pour chaque mouvement) On ne peut bouger
la meme
ligne une seconde fois que si les autres lignes on deja ete deplacees.
"les autres lignes" signifie-t-ils "toutes les autres lignes" ou "au
moins une autre ligne".
Je suppose que tu as assimilé les colonnes aux lignes dans cette
description
et que les conditions sur ces colonnes sont les mêmes.
Oui, toutes les autres lignes doivent etre deplacees. Si je commence par
bouger A,
BCDEF doivent etre bouges avant de pouvoir decaler A a nouveau.Je cherche donc toutes les combinaisons possibles qui menent au deuxieme
diagramme.
(2 fois 6 lignes a bouger)
Chaque solution peut etre de la forme:
A5B3C6D1E9F2F5E4D7C2B4A1
Est-ce que l'ordre des déplacements est fixé ? A-B-C-D-E-F-F-E-D-C-B-A-
L'ordre n'est a priori pas fixe et on peut bouger n'importe quelle
ligne/colonne tant que l'on respecte les regles:
-Chaque ligne/colonne est deplacee 2 fois en tout
-On ne peut bouger la meme ligne/colonne une seconde fois que si toutes
les autres lignes on deja ete deplacees
Mon idee est d'imbriquer 6 boucles for sur le schema suivant:
for i=0 to 8
shift @A
for i=0 to 8
shift @B
for i=0 to 8
shift @C
......etc jusqu'a @F
ici, faire la comparaison avec les tableaux @a,b,c,d,e,f
et continuer...
Ce qui, je pense brute forcerait toutes solutions possibles :o?
Mon probleme est tout d'abord au niveau de la maniere de "shifter" les
"cases" des tableaux une par une.
Ensuite, mon second probleme c'est les relations qu'il y a entre par
exemple @A et @D qui ont une case en commun.
J'ai commencer a faire ceci:
#tables a deplacer
my @A = (1,2,3,4,5,6,7,8,9);
my @B = (2,3,4,5,6,7,8,9,1);
my @C = (3,4,5,6,7,8,9,1,2);
my @D = (1,2,3,4,5,6,7,8,9);
my @E = (2,3,4,5,6,7,8,9,1);
my @F = (3,4,5,6,7,8,9,1,2);
#tables a obtenir
my @a = (6,4,9,1,2,5,2,7,7);
my @b = (9,1,7,5,4,6,8,8,8);
my @c = (1,2,3,8,6,3,9,9,9);
my @d = (2,4,5,1,5,8,9,1,7);
my @e = (1,2,3,2,4,6,8,3,5);
my @f = (2,3,4,5,6,3,3,4,1);
for (my $i=0;$i<8;$i++) {
#deplacement horizontal
unshift @A,pop @A;
unshift @B,pop @B;
unshift @c,pop @C;
#chaque ligne/colonne ont des cases en commun
$D[3]=$A[3];
$D[4]=$B[3];
$D[5]=$C[3];
$E[3]=$A[4];
$E[4]=$B[4];
$E[5]=$C[4];
$F[3]=$A[5];
$F[4]=$B[5];
$F[5]=$C[5];
deplacement vertical
unshift @D,pop @D;
unshift @E,pop @E;
unshift @F,pop @F;
$A[3]=$D[3];
$A[4]=$E[3];
$A[5]=$F[3];
$B[3]=$D[4];
$B[4]=$E[4];
$B[5]=$F[4];
$C[3]=$D[5];
et je n'ai pas continue puisque mon systeme de "shift" ne marche pas...Bien que Perl permette de tout faire (merci Turing), j'ai une autre
proposition (exotique): décrire le problème en 'Prolog' et laisser
faire le
moteur de résolution. Je dis cela à tout hasard mais le 'Prolog' est
vraiment peu connu - et j'en ai tout oublié de mes quelques mois
d'expérience en école d'ingénieurs... dommage d'ailleurs.
Bonne chance
merci, je vais regarder ce dont est capable prolog
Yep prolog est ton ami pour ce genre de problème. Je me souviens avoir
merci, je vais regarder ce dont est capable prolog
Yep prolog est ton ami pour ce genre de problème. Je me souviens avoir fait
un truc similaire (ça ressemble au rubik's cube ton truc au niveau
modélisation). Mais c'était il y a oulàààà... longtemps.
Tu peux te renseigner sur la "programmation par contrainte" qui m'avait
permis de coder assez facilement un algo de résolution de rubik's en un
minimum de coup.
merci, je vais regarder ce dont est capable prolog
Yep prolog est ton ami pour ce genre de problème. Je me souviens avoir fait
un truc similaire (ça ressemble au rubik's cube ton truc au niveau
modélisation). Mais c'était il y a oulàààà... longtemps.
Tu peux te renseigner sur la "programmation par contrainte" qui m'avait
permis de coder assez facilement un algo de résolution de rubik's en un
minimum de coup.
merci, je vais regarder ce dont est capable prolog
Yep prolog est ton ami pour ce genre de problème. Je me souviens avoir fait
un truc similaire (ça ressemble au rubik's cube ton truc au niveau
modélisation). Mais c'était il y a oulàààà... longtemps.
Tu peux te renseigner sur la "programmation par contrainte" qui m'avait
permis de coder assez facilement un algo de résolution de rubik's en un
minimum de coup.
Bon, je viens de lire quelques cours sur prolog et pour etre franc, je
n'apprendrai ce langage que si ma vie est en jeu...
:-)
Bon, je viens de lire quelques cours sur prolog et pour etre franc, je
n'apprendrai ce langage que si ma vie est en jeu...
:-)
Bon, je viens de lire quelques cours sur prolog et pour etre franc, je
n'apprendrai ce langage que si ma vie est en jeu...
:-)