Editor de Imágenes Sencillo


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Java 8 2.0s
Python 4.0s
Memory limit: 64M
Java 8 128M
Python 128M

Author:
Problem types
Allowed languages
Ada, Assembly, Awk, BrainF***, C, C#, C++, Dart, Go, Java, JS, Kotlin, Lua, Pascal, Perl, Prolog, Python, Scala, Swift, VB

El sistema operativo de la nave Apolo necesita un editor de imágenes sencillo, para manipular las imágenes tomadas en el viaje a La Luna. Las imágenes son monocromáticas, cada una de ellas puede representarse como una matriz de enteros positivos entre 0 y 255. Cada imagen tendrá entre 4 y 128 columnas e igual número de filas.

Se requiere, que usted implemente este editor de imágenes, que permitirá ejecutar las 6 operaciones descritas a continuación:

  1. PAINT [X1],[Y1] [X2],[Y2] [COLOR] - Dado un rectángulo de la imagen con vértices superior izquierdo (x1,y1) e inferior derecho (x2,y2), así como un color: colorear el rectángulo indicado con el color dado.
  2. LINE [COORDENADA] [COLOR] [HORIZONTAL | VERTICAL] - Dada una coordenada, un color, y una de las dos palabras "horizontal" o "vertical": dibujar en la imagen una línea horizontal o vertical, en la coordenada dada y del color indicado.
  3. HMIRROR - Reflejar la imagen horizontalmente, o sea, realizar una reflexión sobre el eje y.
  4. ROTATE [90 | 180 | 270] - Rotar la imagen 90, 180 ó 270 grados, en el mismo sentido que las manecillas del reloj.
  5. PRINT - Imprimir en pantalla la imagen.
  6. EXIT - Cerrar el editor.

ACLARACIONES:

  • El par de coordenadas (0,0) indica la esquina superior izquierda de la imagen.
  • Las columnas se enumeran de iquierda a derecha, la primera es la número cero.
  • Las filas se enumeran de arriba hacia abajo, la primera es la número cero.

DESCRIPCIÓN DE LA ENTRADA:

La primera línea de la entrada, contiene un número entero N (4 <= N <= 128), que representa la cantidad tanto de filas como de columnas de la imagen. A continuación seguirán N líneas, cada una con N números enteros separados por un espacio, la imagen. Luego vendrán varias líneas, cada una de ellas describiendo una operación a realizar. Se asegura que la última operación indicada es "EXIT". Las coordenadas indicadas en las operaciones PAINT y LINE serán válidas, o sea, serán coordenadas pertenecientes al rango de la imagen. El valor indicado en <COLOR>, para las operaciones PAINT y LINE, será un número entre 0 y 255. En el caso de la operación PAINT, se asegura que x1 <= x2 y que y1 <= y2.

DESCRIPCIÓN DE LA SALIDA:

Por cada operación "PRINT" usted deberá imprimir en pantalla la imagen, seguida de una línea en blanco.

ENTRADA DE EJEMPLO:

4
1 2 2 1
1 3 3 1
1 3 3 1
1 2 2 1
PRINT
PAINT 1,1 2,2 5
PRINT
LINE 3 111 VERTICAL
PRINT
HMIRROR
PRINT
ROTATE 90
PRINT
ROTATE 270
PRINT
EXIT

SALIDA DE EJEMPLO:

1 2 2 1
1 3 3 1
1 3 3 1
1 2 2 1

1 2 2 1
1 5 5 1
1 5 5 1
1 2 2 1

1 2 2 111
1 5 5 111
1 5 5 111
1 2 2 111

111 2 2 1
111 5 5 1
111 5 5 1
111 2 2 1

111 111 111 111
2 5 5 2
2 5 5 2
1 1 1 1

111 2 2 1
111 5 5 1
111 5 5 1
111 2 2 1
 

Comments


  • 3
    Maite  commented on June 28, 2023, 7:05 p.m.

    No te dicen la cantidad de querys