Flower Field ist eine einfühlsame Neuinterpretation des beliebten Spiels Minesweeper. Ziel des Spiels ist es, alle Blumen im Garten zu finden. Dabei helfen dir numerische Hinweise, die angeben, wie viele Blumen direkt an ein Feld angrenzen (waagerecht, senkrecht oder diagonal). „Flower Field“ erschien in regionalen Versionen von Microsoft Windows in Italien, Deutschland, Südkorea, Japan und Taiwan.
Deine Aufgabe ist es, in einem fertigen Blumenfeld-Garten die Anzahl der Blumen in die leeren Quadrate einzutragen.
Der Garten selbst ist ein rechteckiges Spielfeld, das aus Quadraten besteht, die entweder leer (' ') oder eine Blume ('*') sind.
Zähle für jedes leere Quadrat die Anzahl der Blumen, die daran angrenzen (horizontal, vertikal, diagonal). Wenn das leere Quadrat keine angrenzenden Blumen hat, lass es leer. Andernfalls ersetzt du es durch die Anzahl der angrenzenden Blumen.
Zum Beispiel kannst du ein 5 x 4 großes Spielfeld wie dieses erhalten (die leeren Felder werden hier mit dem Zeichen „·“ dargestellt, damit man sie am Bildschirm sieht):
·*·*·
··*··
··*··
·····
Dein Code soll daraus Folgendes machen:
1*3*1
13*31
·2*2·
·111·
Manchmal ist es notwendig, eine Ausnahme auszulösen. Wenn du das tust, solltest du immer eine aussagekräftige Fehlermeldung angeben, die zeigt, woher der Fehler kommt. Das macht deinen Code lesbarer und hilft beim Debuggen erheblich. Wenn du weißt, dass die Fehlerquelle von einem bestimmten Typ ist, kannst du eine der eingebauten Fehlertypen auslösen, solltest aber trotzdem eine aussagekräftige Meldung angeben.
Diese Übung verlangt, dass du die raise-Anweisung verwendest, um einen ValueError zu „werfen“, wenn die Funktion board() fehlerhafte Eingaben erhält. Die Tests bestehen nur, wenn du sowohl raise als auch exception verwendest und eine Meldung dazu mitgibst.
Um einen ValueError mit einer Meldung auszulösen, schreibst du die Meldung als Argument an den exception-Typ:
# when the board receives malformed input
raise ValueError("The board is invalid with current input.")
Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.
Wir schauen uns verschachtelte for-Schleifen an, den geschickten Einsatz von min/max zur Vereinfachung der Bereichsprüfung, funktionale Pipelines und die Verwendung zweidimensionaler Matrizen.