Puis que c est le jour de programmer, je vais vous demander votre avis sur un "deplacement du cavalier " : le but est simple : faire deplacer un cheval sur un plateau 8*8 , le faire passer une unique fois, sur toutes les cases consecutivement.
J arrive a avoir 63 cases en 3minutes45, mais pour 64 cases, ... meme en >4h il trouve pas ...
NB : dans le damier, un 0 signifie case libre, sinon les numeros induquent les ordres du deplacement. ...
code source a http://www.ece.fr/~demaine/main.c
Merci de vos conseils.
# Re: Deplacement du cheval
Posté par tanguy_k (site web personnel) . Évalué à 2.
cf http://kti.mff.cuni.cz/~bartak/CP.PDF(...) et l'exemple classique des 8 reines (regarde bien backtracking/forward checking sur l'exemple des 8 reines).
Le probleme c'est que la programmation par contraintes c'est souvent des trucs proprios en Prolog comme SciTUS. Mais rien n'empeche de le programmer toi meme dans le langage que tu veux surtout pour un exemple simple.
[^] # Re: Deplacement du cheval
Posté par Kriek . Évalué à 1.
Sicstus plutôt non?
Sinon GNU Prolog (le "meilleur" à mon avis de la liste que je donne), SWi et YAP Prolog sont tous les trois libres et suffiront pour le problème ci-dessus
[^] # Programmation par contraintes
Posté par Polaris . Évalué à 1.
http://www.choco-constraints.net/downloads.html(...)
[^] # Arc Consistency
Posté par Polaris . Évalué à 1.
L'intérêt de supprimer des valeurs, c'est qu'ensuite on évite de les explorer de manière répétitive.
[^] # Re: Arc Consistency
Posté par JereMe . Évalué à 1.
Je sais, chip n'est pas libre, mais ca donne un exemple de résolution en programation par contrainte ... à adapter !
Y a pas de licence sur le fichier à ma connaissance, sinon je peux toujours fournir un fichier à moi qui traine quelque part si ca interresse quelqu'un.
# Re: Deplacement du cheval
Posté par ced . Évalué à 0.
[^] # Re: Deplacement du cheval
Posté par Foxy (site web personnel) . Évalué à 2.
[^] # Re: Deplacement du cheval
Posté par doublehp (site web personnel) . Évalué à 1.
# Re: Deplacement du cheval
Posté par Barbapapa . Évalué à 2.
Mais il faut bien choisir son point de départ. En partant du point 0,0 je ne trouve rien par contre en partant du point 5,5 je trouve une solution en 2s !
[^] # Re: Deplacement du cheval
Posté par doublehp (site web personnel) . Évalué à 1.
et dire que j ai pense a inverser le chemin ( cf les commentaires ) mais pas l origine ... ARG ...
[^] # Re: Deplacement du cheval
Posté par doublehp (site web personnel) . Évalué à 1.
#define ENDD 64
[...]
if(!recur(plip,x-2,y+1)) /* try y-1 and then y+1, or y+1 and then y-1 */
return(0); /* and see the change in time and steps */
if(!recur(plip,x-2,y-1))
return(0);
if(!recur(plip,x+2,y-1))
return(0);
if(!recur(plip,x+2,y+1))
[...]
if(recur(&plip,5, 5))
avec bogomips : 897.84 il ne trouve pas dans les 5 minutes ...
[^] # Re: Deplacement du cheval
Posté par Barbapapa . Évalué à 1.
bogomips: 399
time: 0m1.608s
[^] # Re: Deplacement du cheval
Posté par doublehp (site web personnel) . Évalué à 1.
[^] # Re: Deplacement du cheval
Posté par Barbapapa . Évalué à 1.
[^] # Re: Deplacement du cheval
Posté par doublehp (site web personnel) . Évalué à 1.
user 0m1.360s
depuis (5,5) ...
[^] # Re: Deplacement du cheval
Posté par doublehp (site web personnel) . Évalué à 1.
[^] # Symétrie
Posté par Polaris . Évalué à 1.
[^] # Re: Deplacement du cheval
Posté par ced . Évalué à 1.
Found a solution.
Step 64
01 04 07 12 27 30 25 64
08 11 02 05 24 13 28 31
03 06 09 14 29 26 63 60
10 15 18 23 62 59 32 35
19 22 47 16 33 36 61 58
48 17 20 43 46 53 34 37
21 44 51 54 41 38 57 56
50 49 42 45 52 55 40 39
cf en bas a doite : 40 39
c'est pas très régulier comme déplacement de cavalier..
[^] # Re: Deplacement du cheval
Posté par Barbapapa . Évalué à 1.
ligne 64: remplacer
while (i < 8) {
par
while (i < 7) {
par ailleurs le temps mis pour trouver une solution dépend beaucoup de l'ordre d'analyse (l'ordre des tableaux dx et dy). Y'a sûrement un truc à optimiser de ce côté...
[^] # Re: Deplacement du cheval
Posté par ced . Évalué à 1.
bash-2.05a$ time caval2 7 0
Found a solution.
Step 64
22 19 08 03 24 27 30 01
07 04 23 20 09 02 25 28
18 21 10 05 26 29 60 31
11 06 17 38 33 58 53 62
48 37 12 57 52 61 32 59
13 16 47 34 39 42 63 54
36 49 14 45 56 51 40 43
15 46 35 50 41 44 55 64
real 0m1.204s
C'est quand meme étrange qu'il ne trouve rien en 0,0 : une simple "rotation" du tableau nous la donne..
[^] # Re: Deplacement du cheval
Posté par doublehp (site web personnel) . Évalué à 1.
[^] # Re: Deplacement du cheval
Posté par doublehp (site web personnel) . Évalué à 1.
time cheval
et un
cat /proc/cpuinfo | grep bogomips
?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.