Python :: Aufgabe #77 :: Lösung #1
3 Lösungen

#77
Das Damenproblem (Teil II)
Fortgeschrittener - Python
von ElPapito
- 07.05.2015 um 11:45 Uhr
Das verallgemeinerte Damenproblem besteht aus einem nxn Schachfeld und n Damen.
Die Aufgabe besteht darin die n Damen so zu positionieren, dass sie sich gegenseitig nicht bedrohen, d.h. es dürfen keine zwei Damen in der gleichen Zeile/Spalte/Diagonale stehen.
Schreibe ein kleines Programm, welches für n = 1, ..., 13 ausgibt wie viele Lösungen existieren.
Die Aufgabe besteht darin die n Damen so zu positionieren, dass sie sich gegenseitig nicht bedrohen, d.h. es dürfen keine zwei Damen in der gleichen Zeile/Spalte/Diagonale stehen.
Schreibe ein kleines Programm, welches für n = 1, ..., 13 ausgibt wie viele Lösungen existieren.
#1

von Veigar (1120 Punkte)
- 11.12.2015 um 16:27 Uhr

#allgemein: Bei jeder prüfung: alle vorhergegangenen Positionen ungleich der neuen #und alle vorhergegangenen Positionen +- Differenz ihrer Indexe (=Breitenabstand am Feld) ungleich der neuen l=[] def damenprüfung(x,y): ö=0 for ä in range(len(x)): if x[ä]==y or x[ä]+(len(x)-ä)==y or x[ä]-(len(x)-ä)==y: ö=ö+1 if ö>0: return("j") else: return("n") m=int(input("welche Feldgröße?")) l.append([]) for i in range(m): l[-1].append([i+1]) for a in range(m): l.append([]) for p in range(len(l[a])): for k in range(m): if damenprüfung(l[a][p],k+1)!="j": l[-1].append([]) for s in range(len(l[a][p])): l[-1][-1].append(l[a][p][s]) l[-1][-1].append(k+1) print("es gibt für ein", m," mal ",m,"großes Schachfeld ",len(l[-2])," Lösungen")
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1