Du hast vor, in den Wäldern in der Nähe deines Hauses ein Baumhaus zu bauen, damit du den Sonnenaufgang und den Sonnenuntergang beobachten kannst.
Du hast Daten von einem örtlichen Vermessungsbüro erhalten, die die Höhe jedes Baums in jedem rechteckigen Abschnitt der Karte angeben. Du musst jedes Raster auf der Karte analysieren, um gute Bäume für dein Baumhaus zu finden.
Ein guter Baum erfüllt beides:
Deine Aufgabe ist es, die möglichen Bäume zu finden, in denen du dein Baumhaus bauen könntest.
Die Datenfirma stellt die Daten als Raster bereit, die die Höhen der Bäume anzeigen. Die Zeilen des Rasters stehen für die Ost-West-Richtung und die Spalten für die Nord-Süd-Richtung.
Ein geeigneter Baum ist der größte in seiner Zeile und gleichzeitig der kleinste in seiner Spalte.
Ein Raster hat vielleicht gar keine geeigneten Bäume. Oder es hat einen, oder sogar mehrere.
Hier ist ein Raster, in dem es genau einen Kandidaten gibt.
↓
1 2 3 4
|-----------
1 | 9 8 7 8
→ 2 |[5] 3 2 4
3 | 6 6 7 1
Der Punkt bei [2, 1] (Zeile: 2, Spalte: 1) ist also ein prima Platz für ein Baumhaus.
Manchmal ist es notwendig, eine Exception auszulösen. Wenn du das tust, solltest du immer eine aussagekräftige Fehlermeldung angeben, die angibt, woher der Fehler kommt. Das macht deinen Code lesbarer und hilft beim Debugging erheblich. Wenn du weißt, dass die Fehlerquelle von einem bestimmten Typ ist, kannst du einen der eingebauten Fehlertypen auslösen, solltest aber trotzdem eine aussagekräftige Meldung angeben.
Diese Übung erfordert, dass du die raise-Anweisung verwendest, um einen ValueError zu „werfen", wenn die matrix unregelmäßig ist. Die Tests bestehen nur, wenn du sowohl die exception raisest als auch eine Meldung mitgibst.
Um einen ValueError mit einer Meldung auszulösen, schreibe die Meldung als Argument an den exception-Typ:
# if the matrix is irregular
raise ValueError("irregular matrix")
Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.