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

4 Lösungen Lösungen öffentlich
#319

Ausgeglichenes Fahren

Fortgeschrittener - Python von JKooP - 12.02.2021 um 10:43 Uhr
Ein Fahrtenschreiber notiert, wie oft ein Pkw links bzw. rechts abgebogen ist.
In der anschließenden Auswertung soll ermittelt werden,
wie oft der Pkw in Folge ausgeglichen nach rechts (R) und links (L) gefahren ist.
Dabei können beliebig viele Rechts- bzw. Linksfahrten kombiniert werden (RRRLLL oder LLRR).

Beispiele:

RLRRLLRLRL
Lösung: 4 => RL RRLL RL RL

RLLR
Lösung: 2 => RL LR

LLLLRRRR
Lösung: 1 => LLLLRRRR

RLRRRLLRLL
Lösung: 2 => RL RRRLLRLL
RLRRRLLRLL RLLR ist keine Lösung, da vorher nicht ausgeglichen gefahren wurde (RR)

LLRLLL
Lösung: keine Lösung
LLRLLL LR ist keine Lösung, da vorher nicht ausgeglichen gefahren wurde (L)

LLRRLL
Lösung: 1 => LLRRLL
LLRRLL LR und RL sind keine Lösungen, da vorher nicht ausgeglichen gefahren wurde (L)

1. Aufgabe (mittel):
Erstelle eine Methode/Funktion, mit der man die Anzahl der ausgeglichenen Fahrten ermittelt.

2. Aufgabe (schwieriger):
Gib zusätzlich auch alle Lösungen aus.

Viel Spaß
#2
vote_ok
von vMaex (540 Punkte) - 17.02.2021 um 14:22 Uhr
Quellcode ausblenden Python-Code
#319 ausgeglichenes Fahren

beispiele = ['RLRRLLRLRL', 'RLLR', 'LLLLRRRR', 'RLRRRLLRLL', 'LLRLLL', 'LLRRLL']
test = []
loesungen = []

def initiieren():
    test.append(liste[0])
    liste.remove(liste[0])

def pruefen():
    global aktiv
    x = 0
    count = 1
    initiieren()
    for i in liste:
        test.append(i)
        r = test.count('R')
        l = test.count('L')
        if test[x] == i and r != l:
            x += 1
            continue
        elif test[x] != i and r != l and count != 2:
            x += 1
            count += 1
            continue
        else:
            if r == l:
                eintrag = ''.join(test)
                loesungen.append(eintrag)
                test.pop(0)
                for i in range(0, len(test)):
                    liste.pop(0)
                x = 0
                test.clear()
                break
            else:
                test.clear()
                aktiv = False
                break

for i in beispiele:
    aktiv = True
    liste = list(i)
    print('Fahrt:', i)
    while aktiv:
        if len(liste) > 0:
            pruefen()
        else:
            aktiv = False
    if len(loesungen) == 0:
        print('Keine Lösung')
    else:
        print('Lösungen:', len(loesungen), '=>', loesungen)
    loesungen.clear()
    print()

Kommentare:

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

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

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.