<filename>loesungen_in_python/06-arrays/aufgabe_W_6_06_sitzplatzreservierung/aufgabe_W_6_06_sitzplatzreservierung.pyde
# Globale Symbolkonstanten
FREE = '_'     # Freier Sitz
TAKEN = '#'    # Belegter Sitz

# Globale Arena
arena = []
minSeats = 3   # Anzahl der Sitze in der letzten Reihe

# Funktion zum Generieren einer neuen Arena. Als
# Eingabewert dient die Anzahl an Zeilen. Die Arena
# wird in einem Array von Chars zurückgegeben
def createArena(numRows):
    # zu befüllendes Gesamt-Array
    arena = []

    # Gehe numerisch jede zu erzeugende Reihe durch
    for i in range(0, numRows):
        # Anzahl der Sitze in aktueller Reihe
        numSeats = numRows - i + (minSeats - 1)

        # Einzelne Reihe
        row = []
        # Gehe numerisch jeden zu erzeugenden Sitz durch
        for x in range(0, numSeats):
            # Füge Array-Element hinzu
            row.append(FREE)
        # Füge Reihe in Arena hinzu
        arena.append(row)

    return arena

# Funktion, die die Arena grafisch darstellt
# Erhält ein zweidimensionales Char-Array
def visualizeArena(arena):
    # Gehe jede Reihe durch
    for y in arena:
        # leeres Stringobjekt erzeugen, dient zur Ausgabe
        # in der Konsole
        row = ""

        # Gehe jeden Sitz durch
        for x in y:
            # Füge Character in Reihe dem Reihenstring hinzu
            row = row + x

        # gebe String mit Sitzreihe aus und mache Zeilenumbruch
        # (für die nächste Reihe)
        print row

# Funktion zum Buchen eines einzelnen Sitzplatzes
# Als Eingabe wird die Reihe und der Platz angegeben
def bookSeat(row, seat):
    # Das globale Arena-Array holen
    global arena

    # Zur Änderung der Reihe wird temporäre Reihe angelegt
    rowTemp = arena[row]

    # Setze Sitzplaz auf Belegt
    rowTemp[seat] = TAKEN

    # Ersetze Reihe mit geänderter Reihe
    arena[row] = rowTemp

# Funktion zum zufälligen Buchen von Sitzplätzen
# in der gesamten Arena
def fillSeats():
    # Das globale Arena-Array holen
    global arena

    # Anzahl der Reihen
    numRows = len(arena)

    # Gehe jede Reihe durch (von Reihe 0 bis Gesamtzahl)
    for y in range(0, numRows):
        # Stuhlanzahl in einer Reihe
        numSeats = numRows - y + (minSeats - 1)
        # Gehe jeden Sitz durch
        for x in range(0, numSeats):
            # Zufallszahl zwischen 0 und 1 (Random ist Zahl
            # von 0 bis 1,9999999...)
            randomNumber = int(random(0, 2))
            # Wenn Zufallszahl eine 1 ist, soll Sitz gebucht
            # werden
            if randomNumber == 1:
                bookSeat(y, x)


# Startpunkt des Hauptprogramms
# Hier wird die implementierte Funktion zu Demonstrations- und
# Testzwecken aufgerufen.

arena = createArena(10)
fillSeats()
visualizeArena(arena)


<filename>loesungen_in_python/06-arrays/aufgabe_W_6_06_sitzplatzreservierung/aufgabe_W_6_06_sitzplatzreservierung.pyde
# Globale Symbolkonstanten
FREE = '_'     # Freier Sitz
TAKEN = '#'    # Belegter Sitz

# Globale Arena
arena = []
minSeats = 3   # Anzahl der Sitze in der letzten Reihe

# Funktion zum Generieren einer neuen Arena. Als
# Eingabewert dient die Anzahl an Zeilen. Die Arena
# wird in einem Array von Chars zurückgegeben
def createArena(numRows):
    # zu befüllendes Gesamt-Array
    arena = []

    # Gehe numerisch jede zu erzeugende Reihe durch
    for i in range(0, numRows):
        # Anzahl der Sitze in aktueller Reihe
        numSeats = numRows - i + (minSeats - 1)

        # Einzelne Reihe
        row = []
        # Gehe numerisch jeden zu erzeugenden Sitz durch
        for x in range(0, numSeats):
            # Füge Array-Element hinzu
            row.append(FREE)
        # Füge Reihe in Arena hinzu
        arena.append(row)

    return arena

# Funktion, die die Arena grafisch darstellt
# Erhält ein zweidimensionales Char-Array
def visualizeArena(arena):
    # Gehe jede Reihe durch
    for y in arena:
        # leeres Stringobjekt erzeugen, dient zur Ausgabe
        # in der Konsole
        row = ""

        # Gehe jeden Sitz durch
        for x in y:
            # Füge Character in Reihe dem Reihenstring hinzu
            row = row + x

        # gebe String mit Sitzreihe aus und mache Zeilenumbruch
        # (für die nächste Reihe)
        print row

# Funktion zum Buchen eines einzelnen Sitzplatzes
# Als Eingabe wird die Reihe und der Platz angegeben
def bookSeat(row, seat):
    # Das globale Arena-Array holen
    global arena

    # Zur Änderung der Reihe wird temporäre Reihe angelegt
    rowTemp = arena[row]

    # Setze Sitzplaz auf Belegt
    rowTemp[seat] = TAKEN

    # Ersetze Reihe mit geänderter Reihe
    arena[row] = rowTemp

# Funktion zum zufälligen Buchen von Sitzplätzen
# in der gesamten Arena
def fillSeats():
    # Das globale Arena-Array holen
    global arena

    # Anzahl der Reihen
    numRows = len(arena)

    # Gehe jede Reihe durch (von Reihe 0 bis Gesamtzahl)
    for y in range(0, numRows):
        # Stuhlanzahl in einer Reihe
        numSeats = numRows - y + (minSeats - 1)
        # Gehe jeden Sitz durch
        for x in range(0, numSeats):
            # Zufallszahl zwischen 0 und 1 (Random ist Zahl
            # von 0 bis 1,9999999...)
            randomNumber = int(random(0, 2))
            # Wenn Zufallszahl eine 1 ist, soll Sitz gebucht
            # werden
            if randomNumber == 1:
                bookSeat(y, x)


# Startpunkt des Hauptprogramms
# Hier wird die implementierte Funktion zu Demonstrations- und
# Testzwecken aufgerufen.

arena = createArena(10)
fillSeats()
visualizeArena(arena)


# Globale Symbolkonstanten # Freier Sitz # Belegter Sitz # Globale Arena # Anzahl der Sitze in der letzten Reihe # Funktion zum Generieren einer neuen Arena. Als # Eingabewert dient die Anzahl an Zeilen. Die Arena # wird in einem Array von Chars zurückgegeben # zu befüllendes Gesamt-Array # Gehe numerisch jede zu erzeugende Reihe durch # Anzahl der Sitze in aktueller Reihe # Einzelne Reihe # Gehe numerisch jeden zu erzeugenden Sitz durch # Füge Array-Element hinzu # Füge Reihe in Arena hinzu # Funktion, die die Arena grafisch darstellt # Erhält ein zweidimensionales Char-Array # Gehe jede Reihe durch # leeres Stringobjekt erzeugen, dient zur Ausgabe # in der Konsole # Gehe jeden Sitz durch # Füge Character in Reihe dem Reihenstring hinzu # gebe String mit Sitzreihe aus und mache Zeilenumbruch # (für die nächste Reihe) # Funktion zum Buchen eines einzelnen Sitzplatzes # Als Eingabe wird die Reihe und der Platz angegeben # Das globale Arena-Array holen # Zur Änderung der Reihe wird temporäre Reihe angelegt # Setze Sitzplaz auf Belegt # Ersetze Reihe mit geänderter Reihe # Funktion zum zufälligen Buchen von Sitzplätzen # in der gesamten Arena # Das globale Arena-Array holen # Anzahl der Reihen # Gehe jede Reihe durch (von Reihe 0 bis Gesamtzahl) # Stuhlanzahl in einer Reihe # Gehe jeden Sitz durch # Zufallszahl zwischen 0 und 1 (Random ist Zahl # von 0 bis 1,9999999...) # Wenn Zufallszahl eine 1 ist, soll Sitz gebucht # werden # Startpunkt des Hauptprogramms # Hier wird die implementierte Funktion zu Demonstrations- und # Testzwecken aufgerufen.