Python :: Aufgabe #77 :: Lösung #3
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.
#3

von hak (980 Punkte)
- 13.09.2016 um 19:37 Uhr

def eq(n, solutions, queens, fields): if len(queens) == n: solutions.append(queens) else : next_queen = [ f for f in fields if f[1] == len(queens)] # one queen per row for q in next_queen: new_queens = list(queens) new_queens.append(q) new_fields = [f for f in fields if not ( f[0]==q[0] or f[1]==q[1] or f[0]-f[1]==q[0]-q[1] or f[0]+f[1]==q[0]+q[1] )] eq(n, solutions, new_queens, new_fields) def eight_queens(): for i in range (1, 14): solutions = [] eq(i, solutions, [], [[x,y] for x in range(i) for y in range(i)]) print(str(i), ' : ' , len(solutions))
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1