Python :: Aufgabe #76 :: Lösung #2

2 Lösungen Lösungen öffentlich
#76

Das Damenproblem (Teil I)

Fortgeschrittener - Python von ElPapito - 07.05.2015 um 11:42 Uhr
Das klassische Damenproblem besteht aus einem 8x8 Schachfeld und 8 Damen.
Die Aufgabe besteht darin die 8 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 ausgibt wie viele Lösungen existieren.
#2
vote_ok
von hak (980 Punkte) - 13.09.2016 um 19:29 Uhr
Quellcode ausblenden Python-Code
def eq(solutions, queens, fields):
    if len(queens) == 8:
        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(solutions, new_queens, new_fields)

def eight_queens():
    solutions = []
    eq(solutions, [], [[x,y] for x in range(8) for y in range(8)])
    return 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