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

3 Lösungen Lösungen öffentlich
#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.
#3
vote_ok
von hak (980 Punkte) - 13.09.2016 um 19:37 Uhr
Quellcode ausblenden Python-Code
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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben