Su tarea es, dado un mapa como entrada, alejarlo o acercarlo, dependiendo de la escala. Tenga en cuenta que la escala es la escala dada por el cual se hace acercamiento a cabo , por lo que una escala entre 0 y 1 en realidad un zoom.
Por ejemplo, dado el siguiente mapa (mal hecho):
..____....
../OOO\...
..\OO/\...
..........
Y un factor de escala de 2, primero debe separarlo en secciones de 2x2:
.. | __ | __ | .. | ..
.. | /O | OO | \. | ..
----------------------
.. | \O | O/ | \. | ..
.. | .. | .. | .. | ..
Y en cada sección encuentra el personaje más común:
.__..
.....
Tenga en cuenta que había una sección ambigua:
__
OO
Elegí usar _para esta sección, pero usar Otambién habría sido perfectamente aceptable.
Si, por ejemplo, le dieron el factor de escala de 4, lo dividiría en secciones de 4x4, así:
..__ | __.. | ..
../O | OO\. | ..
..\O | O/\. | ..
.... | .... | ..
Como puede ver, el mapa no encaja perfectamente en secciones de 4x4, pero está bien, ya que podemos reducir el tamaño de la sección a un lado.
Además, cada vez que necesitamos cortar nuestros mapas, cortamos en la parte inferior o en el lado derecho.
El mapa resultante se vería así:
...
¡Qué mapa tan interesante!
Para factores de escala por debajo de 1, como 0.5, el proceso es más simple ya que en su lugar nos acercamos. Toma este mapa:
./O\.
.\O/.
Zoom con una escala de 0.5:
..//OO\\..
..//OO\\..
..\\OO//..
..\\OO//..
Tenga en cuenta que cada vez que el factor de zoom es inferior a 1, lo siguiente será siempre ser verdad: 1/(zoom factor) % 2 == 0. Cuando está arriba 1, la única garantía que tiene es que será un número entero. Cuando es así 1, el mapa debe permanecer igual.
Ejemplos:
4
/OO\
|OO|
|OO|
\OO/
O
0.25
ABCD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
1
My zoom
should
not change
My zoom
should
not change
También puede tomar el mapa como una matriz separada por una nueva línea.
.de O. Cortamos en el lado derecho e inferior.