Votre tâche consiste à, en fonction d'une carte en entrée, effectuer un zoom avant ou arrière, en fonction de l'échelle. Notez que l'échelle donnée est l'échelle de zoom arrière , donc une échelle entre 0 et 1 fera un zoom avant.
Par exemple, étant donné la carte suivante (mal faite):
..____....
../OOO\...
..\OO/\...
..........
Et un facteur d'échelle de 2, vous devez d'abord le séparer en sections 2x2:
.. | __ | __ | .. | ..
.. | /O | OO | \. | ..
----------------------
.. | \O | O/ | \. | ..
.. | .. | .. | .. | ..
Et dans chaque section, trouvez le personnage le plus courant:
.__..
.....
Notez qu'il y avait une section ambiguë:
__
OO
J'ai choisi d'utiliser _
cette section, mais l'utilisation O
aurait également été parfaitement acceptable.
Si, par exemple, on vous donnait le facteur d'échelle de 4, vous le diviseriez en sections 4x4, comme ceci:
..__ | __.. | ..
../O | OO\. | ..
..\O | O/\. | ..
.... | .... | ..
Comme vous pouvez le constater, la carte ne s'intègre pas parfaitement dans les sections 4x4, mais c'est bien, car nous pouvons simplement réduire la taille de la section sur le côté.
De plus, chaque fois que nous devons couper nos cartes, nous les coupons en bas ou à droite.
La carte résultante ressemblerait à ceci:
...
Quelle carte intéressante!
Pour les facteurs d'échelle inférieurs à 1, tels que 0,5, le processus est plus simple car nous zoomons à la place. Prenez cette carte:
./O\.
.\O/.
Zoom avec une échelle de 0,5:
..//OO\\..
..//OO\\..
..\\OO//..
..\\OO//..
Notez que chaque fois que votre facteur de zoom est inférieur 1
, ce qui suit sera toujours vrai: 1/(zoom factor) % 2 == 0
. Lorsqu'il est au-dessus 1
, la seule garantie que vous avez est qu'il s'agira d'un nombre entier. Lorsqu'il est1
, la carte doit rester la même.
Exemples:
4
/OO\
|OO|
|OO|
\OO/
O
0.25
ABCD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
AAAABBBBCCCCDDDD
1
My zoom
should
not change
My zoom
should
not change
Vous pouvez également prendre la carte comme un tableau séparé par des sauts de ligne.
.
que O
. Nous avons coupé à droite et en bas.