Noviembre 03, 2003

Programing's Laboratory gone Wild!! (fr34k!! xD)

Madre mia, como se nota que el cuatrimestre que viene se cargan la asignatura.. yo la aprobé ya pero tengo una amiga que no y hoy me ha pasado el enunciado de la practica. Estaba en clase leiendolo y aguantandome la risa...

Ver el cuerpo extendido del post para ver el enunciado... (he resaltado las partes cachondas xD)

me recuerda a metal gear solid, o a Neuromante.

PROMET RELOADED

(PeRdidOs en Mitad de un labErinTo REmodeLadO, ActualizaDo y computErizaDo)

Desde la Antigüedad, las cuevas y laberintos han presentado diferentes amenazas
a quienes han intentado atravesarlos. Por si no fuera suficiente la posibilidad
de perderse en ellos y morir de hambre y de sed, un amplio repertorio de
trampas, fieras y animales venenosos ha acechado a los heroes de leyendas y
relatos de ficción que se han aventurado por las entrañas de la tiera: Teseo se
enfrentó al Minotauro, Indiana Jones esquivó fosos, estacas y enormes piedras
rodantes y Frodo Bolsón casi es devorado por Ella-Laraña
, por citar algunos
ejemplos bien conocidos.

Con el paso del tiempo, el mundo ha ido evolucionando gracias a los avances
tecnológicos y los laberintos no han sido una excepción. En la actualidad, si
un ente maligno quiere convertir un laberinto en una trampa mortal, sólo tiene
que instalar una serie de dispositivos para bloquear el acceso a las salas y
controlarlos remotamente desde su ordenador. Sin embargo, tales sistemas tienen
sus limitaciones y además los héroes de hoy también han desarrollado nuevos
recursos para llevar a cabo sus misiones.

A continuación describimos un escenario concreto dentro de este contexto, sobre
el que desarrollar las actividades de la práctica.

Un laberinto está formado por salas y pasillos. Hay una sala especial que sirve
como entrada. Cada sala tiene una puerta de entrada y dos de salida. Cada
puerta de salida puede dar acceso a un pasillo que lleva a otra sala o bien a
una salida del laberinto.

El "gestor" del laberinto dispone de una red de dispositivos para bloquear las
salas, controlada mediante un sistema informático. Existen N modelos distintos
de dispositivos, identificados con los números naturales entre 1 y N. En cada
sala sólo se puede instalar un dispositivo, que puede ser de cualquier modelo.
Un dispositivo tiene dos estados posibles: abierto, en cuyo caso la sala es
accesible, y cerrado, lo que causa el bloqueo de la sala. Cada vez que el
gestor lo ordena, el control envía una señal a un dispositivo para que cambie
de estado. Si en el laberinto hay varios dispositivos del mismo modelo, dicha
señal se envía simultáneamente a todos ellos.

Por otra parte, las condiciones geológicas del terreno en el que está enclavado
el laberinto dan lugar a que las salas se clasifiquen en tres tipos, según su
comportamiento respecto al dispositivo instalado en ellas.

Salas tipo 1: no permiten la llegada de señal a los dispositivos y se supone
que están siempre accesibles.

Salas tipo 2: la señal llega y el dispositivo funciona normalmente.

Salas tipo 3: la señal llega invertida, es decir, la situación real de
bloqueo/desbloqueo es la contraria de la ordenada por el control.

Consideramos que el gestor no tiene forma de saber si una sala es de tipo 1 y,
por tanto, coloca dispositivos incluso en éstas.

Por último, nuestros héroes también son un poco "hackers" y son capaces de
entrar en el sistema informático del gestor durante un breve espacio de tiempo.
De este modo pueden modificar la configuración del mismo, cambiando los estados
de unos pocos dispositivos, y así conseguir que las condiciones del laberinto
les sean más favorables.

En esta situación queremos resolver dos problemas:

1) Comprobación de salida.

Dada una configuración del sistema de control, averiguar si se puede salir del
laberinto. En caso de éxito, informar del número mínimo de salas distintas que
se deben visitar para salir. Se supone que durante la exploración del
laberinto no cambian las condiciones del mismo.


2) Hackeo del sistema.

A partir de una configuración del sistema de control, decidir si se puede
obtener otra que permita salir del laberinto, modificando el estado de dos
modelos de dispositivos como máximo (recordad que si se cambia el estado de un
dispositivo, también se cambian los de todos los demás del mismo modelo). En
caso afirmativo, informar de cuáles son los modelos que se deben cambiar de
estado.

En caso de que haya varias posibilidades, hay que obtener la que requiera menos
cambios. Obviamente, la opción prioritaria es la que no necesita ningún
cambio. Si ésta no es posible y hay varias formas de salir modificando el
estado de un solo modelo de dispositivos, nos interesa el de menor índice. Si
son necesarios dos cambios, pediremos el par de modelos modificados cuyo
*primer* elemento posea el identificador más pequeño. Por último, si con dicho
identificador hay varias opciones, elegiremos entre ellas el par cuyo *segundo*
elemento posea un identificador más pequeño.

SE PIDE

Diseñar un programa modular razonablemente eficiente que simule la situación
arriba descrita. En primer lugar, debe leer el laberinto y una configuración
del control de dispositivos. Después tendrá que ir procesando las diversas
tareas que se le pidan. Estas podrán ser cualquiera de las dos operaciones
anteriores, más leer un nuevo laberinto o una nueva configuración del control.

La forma de comunicarse con el programa para que realice dichas tareas será
parecida a la de los ejercicios "Cubeta", "PseudoTetris", etc. Podéis diseñar
un esquema provisional que ya refinaréis cuando conozcáis el juego de pruebas
público.

La sintaxis de los datos y resultados, acompañada del juego de pruebas público,
se conocerá dos semanas antes del día de la entrega del programa Java. Hasta
entonces no podréis implementar de forma definitiva las operaciones de lectura
y escritura necesarias para los tipos que utilicéis, aunque sí podréis
especificarlas. Podéis consultar el ejemplo del cuatrimestre anterior para
tener una idea aproximada.


=======================================

Joderrr es muy l33t la practica!!!

Posted by mikel at Noviembre 3, 2003 11:55 AM
Cometarios
Dime lo que piensas