Nombre Password [ Regístrate ]

El rectángulo de Kubrik (OIE 3 - 1999)

 

El rectángulo de Kubrik es una adaptación a dos dimensiones del clásico cubo de Rubik. Se dispone de un rectángulo de 8 casillas, distribuidas en dos filas y cuatro columnas, coloreadas con 8 colores diferentes, que aquí representamos con un número del 1 al 8. Inicialmente, la disposición de los colores en las casillas es la siguiente:

    1    2    3    4
    8    7    6    5

Se pide, a partir de esta disposición inicial, alcanzar una disposición objetivo caracterizada por una configuración diferente del rectángulo. Un ejemplo podría ser la configuración final:

    5    1    8    3
    4    7    6    2

Para ello deberán aplicarse sobre la disposición inicial una serie de transformaciones hasta alcanzar la disposición objetivo. Existen tres tipos de transformaciones, identificadas por las letras A, B y C.

  • A: intercambia la fila superior y la fila inferior. El efecto se visualiza en la figura siguiente: de la configuración de la izquierda se pasa a la de la derecha:

        1    2    3    4
        8    7    6    5

        8    7    6    5
        1    2    3    4


  • B: desplazamiento circular derecho del rectángulo:

        1    2    3    4
        8    7    6    5

        4    1    2    3
        5    8    7    6


  • C: rotación en sentido horario de los cuatro cuadrados del centro:

        1    2    3    4
        8    7    6    5

        1    7    2    4
        8    6    3    5


Concretamente, el programa pide una secuencia mínima de transformaciones que lleve de la configuración inicial a la configuración destino. En caso de haber más de una secuencia mínima, se puede devolver cualquiera de ellas.

Entrada

Residente en el fichero de caracteres "KUBR.DAT": una línea con ocho caracteres entre '1' y '8', sin repetición y separados exactamente por un blanco (no hay ningún otro tipo de caracteres ni al inicio ni al final de la línea), que representan la configuración final, numeradas a partir del vértice superior izquierdo en el sentido del movimiento de las agujas del reloj.

Salida

A guardar en el fichero de caracteres "KUBR.OUT": una línea inicial diciendo la longitud de la secuencia mínima y, a continuación, tantas líneas como transformaciones aplicadas, en el orden de aplicación. No debe aparecer ningún otro tipo de información en la línea. Podéis trabajar con la seguridad de que existe una secuencia de movimientos que llevan de la configuración inicial a la configuración final.

Ejemplo de entrada

5 1 8 3 2 6 7 4

Ejemplo de salida

4
C
A
B
C



© (2001-2008) ALGORITMIA.NET - Política de privacidad