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
2098730

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.