Enunciado.
El país Pokémon se halla dividido de norte a sur por el
río Pikachu, pongamos por caso. Ana y Benito están en la orilla
izquierda del río. Carlos y Daniela en su orilla derecha.
Existe una única barca para cruzar el río en la que sólo puede
ir una persona.
Ana y Benito tienen que pasar 30 fardos de
manzana reineta que necesita la tía Rosa para hacer su
renombrada tarta de manzana para la boda de la prima Virginia.
Por su parte, Carlos y Daniela tienen transladar al otro
lado del río 30 paquetones de contenido que han preferido no
declarar.
Ana y Benito tardan 0.2 segundos en tomar un fardo.
Carlos y Daniela, 0.4 segundos. Se tarda un segundo en cruzar el
río. En 0.1s han dejado todos su bulto. Los muchachos van y vuelven
hasta que han pasado toda la mercancía y ellos mismos al otro lado.
Hacer un programa que, con cuatro hilos aparte del original,
simule la situación descrita en el párrafo anterior. El hilo
original ha de esperar a que acaben los otros cuatro y limpiar
los objetos de sincronización usados.
Esta práctica se puede presentar también para la asignatura
"Interfaces gráficas". En tal caso, la salida por pantalla es
libre y se debe adaptar a las condiciones puestas en aquella
asignatura y se debe dejar la posibilidad de configurar los
tiempos de más arriba. En el caso de que sólo se presente en
esta asignatura, la aplicación tiene que ser de consola y
la salida por pantalla debe ser obligatoriamente como esta:
30 00 ab ___............. cd 00 30
29 00 Ab ___............. cd 00 30
29 00 b ....._A_..... cd 00 30
29 00 b ....._A_..... Cd 00 29
29 00 b .............___ A Cd 00 29
29 00 b .............___ a Cd 01 29
29 00 b ....._C_..... a d 01 29
etc. etc.
Las letras mayúsculas indican que la persona está cargada y los
números, la cantidad de objetos que hay a un lado y otro del
río. Las líneas irán una a continuación de la otra sin limpiar
la pantalla y adaptándose exactamente al modelo expuesto.