Twoim zadaniem jest, biorąc pod uwagę mapę jako dane wejściowe, pomniejszyć ją lub powiększyć, w zależności od skali. Należy zauważyć, że skala podana jest skala, według której zoom out , a więc skala pomiędzy 0 i 1 będzie faktycznie powiększyć.
Na przykład biorąc pod uwagę następującą (źle wykonaną) mapę:
..____....
../OOO\...
..\OO/\...
..........
I współczynnik skali 2, najpierw należy podzielić na 2x2 sekcje:
.. | __ | __ | .. | ..
.. | /O | OO | \. | ..
----------------------
.. | \O | O/ | \. | ..
.. | .. | .. | .. | ..
I w każdej sekcji znajdź najczęstszą postać:
.__..
.....
Zauważ, że była niejednoznaczna sekcja:
__
OO
Wybrałem użycie _w tej sekcji, ale używanie Obyłoby również całkowicie do przyjęcia.
Jeśli na przykład otrzymasz współczynnik skali 4, podzielisz go na sekcje 4x4, tak jak poniżej:
..__ | __.. | ..
../O | OO\. | ..
..\O | O/\. | ..
.... | .... | ..
Jak widać, mapa nie pasuje idealnie do sekcji 4x4, ale to dobrze, ponieważ możemy po prostu zmniejszyć rozmiar sekcji z boku.
Ponadto, ilekroć musimy odciąć nasze mapy, odcinamy na dole lub po prawej stronie.
Powstała mapa wyglądałaby tak:
...
Co za interesująca mapa!
W przypadku współczynników skali poniżej 1, takich jak 0,5, proces jest prostszy, gdy zamiast tego powiększamy. Weź tę mapę:
./O\.
.\O/.
Powiększanie w skali 0,5:
..//OO\\..
..//OO\\..
..\\OO//..
..\\OO//..
Pamiętaj, że zawsze, gdy współczynnik zoomu mniej niż 1, co następuje zawsze będzie prawdą 1/(zoom factor) % 2 == 0. Gdy jest powyżej 1, jedyną gwarancją jest to, że będzie to liczba całkowita. Kiedy tak jest 1, mapa powinna pozostać taka sama.
Przykłady:
4
/OO\
|OO|
|OO|
\OO/
O
0.25
ABCD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
1
My zoom
should
not change
My zoom
should
not change
Możesz również wziąć mapę jako tablicę rozdzieloną znakiem nowej linii.
.niż O. Odcinamy po prawej i dolnej stronie.