begin process at 2012 05 24 01:29:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Math & Algorithmes

 > PROBLEME DES HUIT DAMES

PROBLEME DES HUIT DAMES


 Information sur la source

Note :
Aucune note
Catégorie :Math & Algorithmes Classé sous :huit dames, probleme, programmation contraintes, backtracking, algorithmique Niveau :Débutant Date de création :25/12/2009 Date de mise à jour :07/01/2010 14:18:58 Vu / téléchargé :3 317 / 99

Auteur : mehdicherti

Ecrire un message privé
Site perso
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

consiste à placer 8 dames dans un échiquier de 8x8 cases de telle façon que jamais deux dames ne doivent avoir la même ligne , la même colonne ou appartient à la même diagonale
Pour plus d'informations sur l'algorithme utilisé : http://mehdi.cherti.name/algofacile/2010/01/06/pro bleme-des-huits-dames/

Source

  • import sys
  • # renvoie true si mettre une dame dans une case peut etre fait
  • def possible (N,choix,col , lig):
  • if col <= 1 : return True
  • coll = 1
  • for lastlig in choix:
  • if lastlig == lig : return False
  • if col + lig == lastlig + coll : return False
  • if col >= lig and coll >= lastlig and col - lig == coll - lastlig : return False
  • if col <= lig and coll <= lastlig and lig - col== lastlig- coll : return False
  • coll = coll + 1
  • return True
  • # affiche une chaine
  • def W(string):
  • sys.stdout.write (string)
  • # affiche l'echiquier
  • def show (choix):
  • N = len(choix)
  • for C in range(1,N+1):
  • for L in range(1,N+1):
  • if L == choix[C-1]:
  • W ('X')
  • else : W('#')
  • W(' ')
  • print
  • print
  • # retourne un tableau contenant tous les combinaisons possibles pour resoudre ce probleme pour N dames dans un echiquier de N*N
  • def dames(N,choix=[],col=1,num=0):
  • if col == N+1:
  • show(choix)
  • return 1
  • for lig in range(1,N+1):
  • if possible (N,choix,col , lig):
  • choix.append (lig)
  • num = num + dames (N , choix , col + 1)
  • choix.pop ()
  • return num
  • num=dames(8)
  • print num
import sys
# renvoie true si mettre une dame dans une case peut etre fait
def possible (N,choix,col , lig):
	if col <= 1 : return True
	coll = 1
	for lastlig in choix:
		if lastlig == lig  : return False
		if col + lig == lastlig + coll : return False
		if col >= lig and coll >= lastlig and col - lig == coll  - lastlig : return False
		if col <= lig and coll <= lastlig and lig  - col==  lastlig- coll : return False

		coll = coll + 1
	return True
	
# affiche une chaine
def W(string):
	sys.stdout.write (string)

# affiche l'echiquier
def show (choix):
	N = len(choix)
	for C in range(1,N+1):
		for L in range(1,N+1):
			if L == choix[C-1]:
				W ('X')
			else : W('#')
			W(' ')
		print
	print
# retourne un tableau contenant tous les combinaisons possibles pour resoudre ce probleme pour N dames dans un echiquier de N*N
def dames(N,choix=[],col=1,num=0):
	if col == N+1:
		show(choix)
		return 1
	for lig in range(1,N+1):
		if possible (N,choix,col , lig):
			choix.append (lig)
			num = num + dames (N ,  choix , col + 1)
			choix.pop ()
	return num

num=dames(8)
print num


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   probleme_de_dames

Télécharger le zip


 Historique

07 janvier 2010 14:19:18 :
Ajout d'une explication détaillée de l'algorithme

 Sources du même auteur

Source avec Zip GÉNÉRATION D'UN LABYRINTHE AVEC RECHERCHE DU CHEMIN LE PLUS ...
Source avec Zip ALGORITHMIME GENETIQUE : PROBLEME DU VOYAGEUR DE COMMERCE

 Sources de la même categorie

Source avec une capture MISE EN EVIDENCE DE L'ALGORITHME A STAR GRAPHIQUEMENT par Mints
Source avec Zip BASE64 ENCRYPT/DECRYPT PYTHON BY MAXOU56800 par Maxou56800
Source avec Zip Source avec une capture TRIANGULATION par mecrosoft
Source avec Zip Source avec une capture COURBE DE BEZIER par mecrosoft
Source avec Zip Source avec une capture CALCUL D'AIRE D'UN TRIANGLE [INTERFACE GRAPHIQUE] par SeventhSon

 Sources en rapport avec celle ci

GRAPHES NON-ORIENTÉS par KimbleMandel

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

probleme avec os.path.getctime() [ par Bl0tCh ] Voilà, Donc cette fonction est censée me donner la date de creation du fichier (en secondes) mais le probleme c ke elle me donne la premiere date de c Probleme avec TKinter [ par titasse ] Bonjour, je debute en python. J'ai un probleme lorsque je veux importer TKinter avec la commande from TKinter import * j'ai le message suivant : Imp Wx ou GTK ? [ par kedare ] Salut !j'ai un probleme , je voudrais me lancer dans les interfaces graphiques pour mes applications (marres des consoles :/)j'esite beaucoup entre GT [python] py2exe et plotting (gnuplot) [ par xeben ] Salut a tous, J'ai cr&#233;&#233; une petite application en python/pyQt dans laquelle je visualise des donnees avec gnuplot. J'inclus donc dans le se python + objet COM [ par anis50 ] Bonjour a tous, j'ai un petit probleme, c'est que j'ai un objet COM gener&#233; par VC++ donc son interface (.h), j'ai besoin d'appeler les methodes i probleme de changemen de version [ par mulatre ] Bonjour à tous,dernièrement je suis passé de python2.4 à python 2.5 parce que je voulais installer wxpython, mais celui n'est compatible qu'avec pytho probleme de compilation avec py2exe [ par gwenc_hlan ] bonjour, pour des raisons professionnelles, je me vois obligé de prévoire de compiler mes programmes en fichier executables. pour cela, j'utilise py2e Probleme recv bloquant [ par mike1310 ] Bonjour à tous,je débute un peu dans le python et je suis sur un projet de socket. Je dois pouvoir communiquer avec un postfix pour, par la suite lui probleme d'execution script [ par panzer9595 ] bonjour, je viens de commencer python tres recemment, pour mon apprentissage j'ai décidé de reprendre un jeu basique (trouver le nombre mystere) mais probleme [ par rezuz ] voila. je voulait aujourd'hui déposser une source d'un logiciel de ma conception qui est je pense utile puisque, je les fait pour une secraitaire et e


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales