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

3 Lösungen Lösungen öffentlich
#177

Auslosung der Figurenaufstellung beim Chess960

Anfänger - Python von hollst - 12.02.2018 um 18:33 Uhr
Beim Chess960, auch Fischer-Random-Chess genannt, wird die
Ausgangsposition der acht weißen Offiziere ausgelost, wobei
zwei Regeln zu beachten sind:

1.) der König muss zwischen den zwei Türmen stehen (damit Rochaden möglich bleiben) und
2.) die zwei Läufer müssen ungleichfarbig sein.

Die schwarzen Offiziere werden spiegelsymmetrisch angeordnet (Bild 1, Beispielaufstellung),
alle anderen Schachspielregeln bleiben erhalten.

Man schreibe ein (vorzugsweise GUI-) Programm, das diesen Auslosungsregeln entspricht und eine
der möglichen 960 zufälligen Startpositionen rückgibt.
#1
vote_ok
von Taitsu (60 Punkte) - 19.02.2018 um 03:18 Uhr
Quellcode ausblenden Python-Code
import random
Felder = [1,2,3,4,5,6,7,8]
TurmA = random.randrange(1,8)
Felder.remove(TurmA)
TurmB = random.choice(Felder)
while abs(TurmA - TurmB) == 1:
    TurmB = random.choice(Felder)

if TurmB < TurmA:
    TurmA,TurmB = TurmB,TurmA
    Felder.remove(TurmA)
else:
    Felder.remove(TurmB) 

König = random.randrange(TurmA+1,TurmB)
Felder.remove(König)
LäuferA = random.choice(Felder)
Felder.remove(LäuferA)
Feldneu=[]
if LäuferA % 2 == 0:
    for n in Felder:
        if n % 2 == 1:
            Feldneu.append(n)
    LäuferB = random.choice(Feldneu)
    Felder.remove(LäuferB)

else:
    for n in Felder:
        if n % 2 == 0:
            Feldneu.append(n)
    LäuferB = random.choice(Feldneu)
    Felder.remove(LäuferB)

Dame = random.choice(Felder)
Felder.remove(Dame)
SpringerA = random.choice(Felder)
Felder.remove(SpringerA)
SpringerB = Felder[0]
print('TurmA:',TurmA,'TurmB:',TurmB,'SpringerA:',SpringerA,'SpringerB:',SpringerB,'LäuferA:', LäuferA,'LäuferB:', LäuferB,'Dame:',Dame, 'König:',König)

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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