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

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.
#1
vote_ok
von Veigar (1120 Punkte) - 11.12.2015 um 16:27 Uhr
Quellcode ausblenden Python-Code
#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

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