spirale powaaaaaa. :mrgreen:
Version imprimable
Marche toujours ?
Quelle que soit la position du départ ?
Ne peut-on pas finir la spirale dans un coin ?
Yupuka convaincre Otspot
BTW, voici une version plus 'clean' de la fonction récursive:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #affiche les solutions commençant par le chemin L (liste de cases) def printsolutions (L): global nbsol Dernier=L[-1] VD=voisins(Dernier) if len(L)==n*m: print L nbsol=nbsol+1 else: for v in VD: if not (v in L): Q=copy.deepcopy(L) Q.append(v) printsolutions(Q)
Taille impaire / Taille paire:
Pièce jointe 21934
Ca me parait fort convaincant.
Je vois que tu as des talents de pédagogue.
Moins sympa, tu aurais pu donner un exemple avec 1 case, un autre avec 2 cases, et renvoyer à Google pour "raisonnement par récurrence".
Merci à tous pour votre aide, effectivement une spirale suffisait dans mon cas(carré). Je l'ai deja programmé et ca marche sans problème.
Merci encore, pour votre aide et votre rapidité
Dans le cas des rectangles, il y a une solution qui est optimale (maxi 1 retour arrière) mais je ne sais pas comment insérer une image dans un post. Quelqu'un peut-il m'aider ?
Dans la barre d'outils tu as une icône avec la bulle 'insérer une image'
Voilà les deux dessins qui représente la solution,
- pour un rectangle avec les deux dimensions impaires :
Pièce jointe 21983
- pour un rectangle avec une dimension paire au moins :
Pièce jointe 21984
Que fais-tu pour un rectangle 5*3 en partant de (2,1) ?
Je numérote à partir de 0, donc c'est la même chose.
Peux tu envoyer le dessin du cas 5*3 ?
Tu fais :
3,2->3,3->2,3->1,3->1,2->1,1->1,2->2,2->1,2(le pas en arrière)->3,1 puis la spirale.
C'est le cas limite où tu arrêtes la 1ère séirie d'aller-retour horizontaux dès le premier coup.
Il est interdit de repasser par une case.