Das Problem
Ein Schreckensszenario wird von drei Zahlen auf einer einzelnen Zeile beschrieben n
, m
und p
. Auf diese Zeile folgen n
Zeilen mit m
Werten pro Zeile. Jeder Wert gibt die Gesamtmenge an Wasser an, die jede Zelle aufnehmen kann.
Die folgenden p
Zeilen beschreiben das Wetter für die nächsten p
Tage. Pro Tag fällt 1 Einheit Regen auf eine einzelne Zelle. Wenn die Wassermenge in einer Zelle die Menge überschreitet, die sie aufnehmen kann, wird diese Zelle überflutet. Wenn mehrere benachbarte Zellen die volle Kapazität haben, werden sie als eine Zelle behandelt, die gemeinsame Nachbarn haben (denken Sie an Minesweeper, wenn Sie auf eine Gruppe von Leerzeichen klicken).
- Eine einzelne mittlere Zelle hat 4 Nachbarn
- Zwei benachbarte mittlere Zellen mit voller Kapazität werden als eine Zelle mit 6 Nachbarn behandelt
- Eine einzelne Eckzelle hat 2 Nachbarn
- Eine Einzelwandzelle hat 3 Nachbarn
Wenn eine Zelle überflutet, tritt ein Überflutungsereignis auf. Das überschüssige Wasser wird gleichmäßig an die Nachbarn verteilt. Wenn dies zu einer Überschwemmung eines oder mehrerer Nachbarn führt, tritt ein weiteres Überschwemmungsereignis auf. Dies setzt sich fort, bis sich das Wasser gesetzt hat oder die Stadt vollständig überflutet ist.
Beispiel Eingabe
7 5 3
3 2 3 4 5
2 2 0 3 4
1 1 2 3 3
4 1 2 2 2
4 1 1 2 2
4 4 1 2 2
4 2 2 2
0 0
1 2
4 3
0 0
bedeutet, dass es in Zeile 1, Spalte 1 geregnet hat1 2
bedeutet, dass es in Reihe 2, Spalte 3 geregnet hat (die kein Wasser fassen kann und sofort überschwemmt!)
p
Wenn die Stadt nach Regentagen vollständig überflutet ist, geben Sie Sink aus . Andernfalls geben Sie Swim aus .
Beispielausgabe
Schwimmen
Annahmen
- Die Eingabe kann über stdin erfolgen, aus "city.txt" gelesen oder als Argument akzeptiert werden. Alle drei sind erlaubt, um bereits gepostete Antworten nicht ungültig zu machen.
- Die Wasserkapazitäten sind nicht negative ganze Zahlen.
Über 40 Teams von Studenten (von A & M, UT, LSU, Rice, Baylor usw.), die an einem Programmierwettbewerb mit verschiedenen verfügbaren Sprachen teilgenommen haben, konnten dieses Problem nicht in 5 Stunden lösen. Aus diesem Grund kann ich nur erwähnen, dass dieses Rätsel einen Haken hat, der die Lösung trivial macht. Der kürzeste Code gewinnt immer noch, weil ich so zuversichtlich bin, dass der kürzeste Code auch das Rätsel lösen wird.
0.25
Einheiten auf jede benachbarte Zelle (unter der Annahme einer einzelnen mittelüberfluteten Zelle)?
n
umm
Wertelinien oder umgekehrt? Ihr Beispiel entspricht nicht der schriftlichen Spezifikation.