Problema 4
Dibujos
dibujo.pas, dibujo.c, dibujo.cpp

Problema
El MONOCROM es un monitor monocromo con pantalla cuadrada formada por una retícula de 16×16 puntos, cada uno de los cuales se puede poner de color blanco o de color negro.
El monitor dibuja a partir de ciertas órdenes que recibe en forma de secuencia de caracteres; los caracteres enviados actúan no sobre toda la pantalla, sino solamente sobre un área seleccionada, que puede cambiarse mediante algunos de estos caracteres.
Inicialmente, el área seleccionada es toda la pantalla, y puede suponerse que todos sus puntos son de color blanco. El carácter 'x' sirve para pintar el área seleccionada (es decir, poner todos sus puntos de color negro) e, inmediatamente, volver a considerar como área seleccionada la pantalla entera.
Finalmente, los caracteres del '1' al '4' sirven para hacer más pequeña el área seleccionada, de manera que posteriores caracteres 'x' afecten a menos puntos. Concretamente, estos caracteres escogen como nueva área seleccionada uno de los cuatro trozos siguientes: ‘1’ escoge la parte superior izquierda, ‘2’ la superior derecha, ‘3’ la inferior derecha y ‘4’ la inferior izquierda.
Nótese que en realidad MONOCROM sólo permite pintar uno o más cuadrados; cualquier figura compleja debe pintarse a trozos, seleccionando y pintando los cuadrados adecuados.
Se pide un programa que sea capaz de, dada una secuencia de caracteres, dibujar una figura según las reglas anteriores.

Entrada
Varias líneas que forman una figura. Cada línea corresponde a un cuadrado, y consta pues de cero, uno, dos, tres o cuatro dígitos entre el '1' y el '4' y, como último carácter de la línea, el carácter 'x'. Todos estos caracteres estarán separados por un único caracter blanco.

Salida
La figura resultante de aplicar las reglas descritas en el enunciado. Representamos la figura con 16 líneas de 16 caracteres.
Cada carácter de esta superficie 16×16 será o bien un carácter 'o' o bien un carácter 'x', según el punto correspondiente deba ser de color blanco o de color negro.

Ejemplo

entrada salida
1 x
2 2 x
3 3 3 x
4 4 4 4 x
xxxxxxxxooooxxxx
xxxxxxxxooooxxxx
xxxxxxxxooooxxxx
xxxxxxxxooooxxxx
xxxxxxxxoooooooo
xxxxxxxxoooooooo
xxxxxxxxoooooooo
xxxxxxxxoooooooo
oooooooooooooooo
oooooooooooooooo
oooooooooooooooo
oooooooooooooooo
oooooooooooooooo
oooooooooooooooo
xxoooooooooooooo
xxooooooooooooox

 


Concurso: ICPC - 2 Concurso Interno de la Universidad Bonaterra. 17/Mayo/2002
Propuesto por: Óscar Dávalos Orozco
Ayuda: entradas, salidas, sugerencias
Soluciones: dibujo.pas, dibujo.c, dibujo.cpp


World of πer