Ihre Aufgabe ist es, eine Karte als Eingabe zu erhalten und sie je nach Maßstab zu verkleinern oder zu vergrößern. Beachten Sie, dass der angegebene Maßstab der Maßstab ist, um den verkleinert werden soll , sodass ein Maßstab zwischen 0 und 1 tatsächlich vergrößert wird.
Zum Beispiel mit der folgenden (schlecht gemachten) Karte:
..____....
../OOO\...
..\OO/\...
..........
Und bei einem Skalierungsfaktor von 2 sollten Sie ihn zunächst in 2x2-Abschnitte unterteilen:
.. | __ | __ | .. | ..
.. | /O | OO | \. | ..
----------------------
.. | \O | O/ | \. | ..
.. | .. | .. | .. | ..
Und in jedem Abschnitt finden Sie den häufigsten Charakter:
.__..
.....
Beachten Sie, dass es einen mehrdeutigen Abschnitt gab:
__
OO
Ich habe mich _für diesen Abschnitt entschieden, aber die Verwendung Owäre auch vollkommen akzeptabel gewesen.
Wenn Sie zum Beispiel den Skalierungsfaktor 4 erhalten hätten, würden Sie ihn in 4x4-Abschnitte aufteilen, wie folgt:
..__ | __.. | ..
../O | OO\. | ..
..\O | O/\. | ..
.... | .... | ..
Wie Sie sehen können, passt die Karte nicht perfekt in 4x4-Abschnitte, aber das ist in Ordnung, da wir nur die Größe des Abschnitts an der Seite verringern können.
Außerdem schneiden wir, wenn wir unsere Karten abschneiden müssen, unten oder rechts ab.
Die resultierende Karte würde so aussehen:
...
Was für eine interessante Karte!
Bei Skalierungsfaktoren unter 1, z. B. 0,5, ist der Vorgang einfacher, da wir stattdessen zoomen. Nehmen Sie diese Karte:
./O\.
.\O/.
Zoomen mit einer Skala von 0,5:
..//OO\\..
..//OO\\..
..\\OO//..
..\\OO//..
Beachten Sie, dass , wenn Ihr Zoomfaktor kleiner als 1das Folgende immer wahr sein: 1/(zoom factor) % 2 == 0. Wenn es oben ist1 , ist die einzige Garantie, die Sie haben, dass es eine ganze Zahl sein wird. Wenn dies 1der Fall ist , sollte die Karte unverändert bleiben.
Beispiele:
4
/OO\
|OO|
|OO|
\OO/
O
0.25
ABCD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
1
My zoom
should
not change
My zoom
should
not change
Sie können die Karte auch als durch Zeilenumbrüche getrenntes Array verwenden.
.als O. Wir schneiden rechts und unten ab.