Skip to content

Latest commit

 

History

History
139 lines (124 loc) · 8.53 KB

File metadata and controls

139 lines (124 loc) · 8.53 KB

Problema 3 (Gigino il piastrellista sbadato)

Difficoltà 🔥🔥🔥🔥

Come secondo incarico, viene chiesto a Gigino di piastrellare i pavimenti di una nuovissima struttura della macroarea di scienze, l'edificio PP3. Per costruire PP3 è stato chiamato un famoso architetto che ha progettato una serie di difici in stile moderno, con delle forme e geometrie molto particolari.

A Gigino vengono forniti i blueprints dei nuovi edifici, che rappresento la pianta degli edifici visti dall'alto. Il blueprint è una griglia di dimensioni $N \times M$ in cui ogni cella può contenere il simbolo ., il quale rappresenta una cella vuota, oppure uno tra i simboli ╗═╔║╝╚, i quali rappresentano i muri dell'edificio.

Un esempio di blueprint è il seguente:

...............
.╔════╗........
.║....╚═════╗..
.║..........║..
.╚═╗.╔════╗╔╝..
...║.║....║║...
...║.║....║║...
..╔╝.║....║╚══╗
..║..║....║...║
..║..║....║...║
..╚══╝....╚═══╝

Gigino deve capire quante piastrelle serve comprare per ricoprire il pavimento dell'edificio. Dato che ogni piastrella ha dimensioni 1 x 1, a Gigino servono esattamente 28 piastrelle per ricopripre il pavimento dell'esempio sopra.

...............
.╔════╗........
.║oooo╚═════╗..
.║oooooooooo║..
.╚═╗o╔════╗╔╝..
...║o║....║║...
...║o║....║║...
..╔╝o║....║╚══╗
..║oo║....║ooo║
..║oo║....║ooo║
..╚══╝....╚═══╝

Gigino nota un particolare schema nei muri dell'edificio. L'intero perimetro dell'edificio può essere disegnato tracciando una unica linea continua, senza mai sollevare la penna dal foglio, e senza mai passare due volte sullo stesso punto, inoltre le linee sono sempre orizzontali o verticali. Inoltre, Gigino sa che il perimetro dell'edificio è sempre chiuso.

Purtroppo Gigino è un tipo sbadato, e mentre era sovrappensiero ha scarabocchiato alcuni dei blueprint dell'edificio facendo un bel pasticcio. In particolare Gigino ha disegnato delle linee che, per fortuna, non hanno modificato il perimetro dell'edificio! Per esempio il seguente blueprint è stato scarabocchiato da Gigino:

.║╔╗╔╝║.╚╗.║...╔═╗╚╗...═══╝╔╗╔═╗.║....╔═╝╚╗.║║║.
.║║║╚═╝.║╚╗╚═══╝.║╔╝╔═════╗║║╚╗║.╚╗...╚══╗║║║║╚╗
╗╚╝║.╗╔╗╚.╚═╗╔.╔═╝╚╗║.╔══.║║║╔╝╚══║..╔═║╔╝╚╝║║.╚
╚╗║╚═╝║║╔╗══╝╚═║╔╗.║╚╗╚╗╔═╝.║║╔╗╔╗║..║.╚╝╔╗╔╝╚═.
.╚═╗║╔╝╚╝║.═════╝╚╗║.║═╝║.╔═╝╚╝║║╚╝.╔╝╔═╗║║╚╗╔═╗
...╚╝║╔╗╔╝╔═╗.╔═╗.╚╝.╚╗.╚╗╚════╝║╔═╗╚═╝.║║╚╗╚╝.║
═════╝║║║╔╝║╚═╝.║╔══╗.║╚╗╚╗╔═══.╔╝.║...╚╝║.║.═╗╚
══╗═══╝╚║║.╚═.╔╝║╚═╗╝╔╝.║║║╚═╗║╔╝..║.....╚╗║╗.║.
══╝.╔══╗╝║║╔╗═╝║╚╗.╚.║╔═╝║║..╚╝║...║╔═╗.╔═╝║║╔╝═
═══.║╔╗╚.╚╗║║║.║.╚═══╝║╔╗║╚════╝..╔╝╚.║╔╝╔╗╚╝║..
══.╔╝║╚╗╔.║║.╚╝╚╝.╔═══╗.╚╝╔╗╔══╗╔═╝╔╗╔╝╚═╝║.╔╝╔═
.╔╗╚╗║║╚╝╔╝.╔════╗╚═╗.║╔══╝║║╔╗.║╔═╝╚╝║.╔╗╚═╝.╚═
.║╚╗║║║╔═╝.╔╝═══.║╔═╝╚╝║..╔╝║║.╔╝║═╗╔═╝.║.╔═╗...
╗║.║╚╝║║.║.║.╔═══╝╚╗╔═══╗.║╔═║╔╝.╚═╝╚╗╔═╝╔╝╔╝.╔╗
╚╝.╚═╗║╚╗.╔╝║║.═╗║╔╝╚╗╔╗╚╗║.╔═╝╔╝.╔═╗╚╝║.║.╚╗╔╝║
╗....║║.╚═╝╔╝╚═╗╚╝║║.╚╝.╔╝╚╗║══╝..║.╚═╗║║║.╔╝║║╚
╚╗..╔╝╚╝═══╝.═.╚╗═╝╚╗.╔═╝.╗║╚╗╔═╗║╚╗.═╝╚╝.╔══╗╚╗
╗╚══╝═..════╗╔═╗║.╗.║║╚═╗═╝╚╗║╚.║║.╚╗.╔╗.╗╚═╗║.╝
╚══╗╔╗.╔╗╔══╝║═╝╚╗║.╚╝══╝╔═╗║║══╝╚╝╔╝╔╝╚╗║.╔╝╚═╗
..╔╝║║.║╚╝.╗╔╝.══╚═╗.╔═══╝.║.║.....║.╚╗╔╝..╚╗..╚
.║║╔╝╚╗╚══╗╚╝╔═╔══╗╚═╝╔═╗..╚═╝═╗...╚╗╔╝╚╗...╚╗..
.║═╝..║...╚═╗║.║╔═╝...║.║.═╗...║...║║╚╗╔╝....╚╗.

Ripulendo questo blueprint e cancellando tutte le linee che non si chiudono, otteniamo il blueprint originale:

................................................
....................╔═════╗.....................
....................║.....║.....................
....................╚╗..╔═╝.....................
.....................║..║.......................
..........╔═╗.╔═╗....╚╗.╚╗.......╔═╗............
.........╔╝.╚═╝.║.....║..╚╗.....╔╝.║............
.........║......║....╔╝...║....╔╝..║............
.........║......╚╗...║....║....║...║............
.........╚╗......╚═══╝....╚════╝..╔╝............
..........║.....................╔═╝.............
.........╔╝.╔════╗..............║...............
.......╔═╝.╔╝....║.............╔╝...............
.......║...║.╔═══╝............╔╝................
.......╚╗.╔╝.║..............╔═╝.................
........╚═╝..╚═╗............║...................
...............╚╗...........╚╗..................
................║............║..................
................╚╗.......╔═╗.║..................
.................╚═╗.╔═══╝.║.║..................
...................╚═╝.....╚═╝..................
................................................

A questo punto è possibile calcolare il numero di piastrelle necessarie per ricoprire il pavimento dell'edificio, ovvero 176.

................................................
....................╔═════╗.....................
....................║ooooo║.....................
....................╚╗oo╔═╝.....................
.....................║oo║.......................
..........╔═╗.╔═╗....╚╗o╚╗.......╔═╗............
.........╔╝o╚═╝o║.....║oo╚╗.....╔╝o║............
.........║oooooo║....╔╝ooo║....╔╝oo║............
.........║oooooo╚╗...║oooo║....║ooo║............
.........╚╗oooooo╚═══╝oooo╚════╝oo╔╝............
..........║ooooooooooooooooooooo╔═╝.............
.........╔╝o╔════╗oooooooooooooo║...............
.......╔═╝o╔╝....║ooooooooooooo╔╝...............
.......║ooo║.╔═══╝oooooooooooo╔╝................
.......╚╗o╔╝.║oooooooooooooo╔═╝.................
........╚═╝..╚═╗oooooooooooo║...................
...............╚╗ooooooooooo╚╗..................
................║oooooooooooo║..................
................╚╗ooooooo╔═╗o║..................
.................╚═╗o╔═══╝.║o║..................
...................╚═╝.....╚═╝..................
................................................

Aiuta Gigino a calcolare quante piastrelle servono per ricoprire i pavimenti rappresentati dai blueprint, eventualmente ripuliti dai suoi scarabocchi.

Input

Una sequenza di N righe, ognuna contenente una stringa di M caratteri, rappresentante il blueprint dell'edificio.

Output

Il numero esatto di piastrelle necessarie per ricoprire il pavimento dell'edificio rappresentato da quel blueprint.


< Home >