Karel Interactivo
Ver en PDFDescripción
Karel está jugando con Warel a un juego. En él, Warel cubre los ojos de Karel y lo coloca en algún lugar del mundo.
Warel deja a Karel hacer lo que él quiera por un tiempo y luego lo lleva al inicio del mundo. Entonces Warel le quita la venda de los ojos a Karel y le pide que regrese a donde lo puso la primera vez.
¿Puedes ayudar a Karel a encontrar una estrategia para volver al lugar en donde lo puso Warel?
Problema
Escribe un programa que implemente dos funciones memoriza y regresar, que ayuden a Karel a regresar a la posición orignal en la que estaba.
Interacción
Abajo puedes ver las plantillas para Java y Pascal. En ella están las funciones pre creadas memoriza y regresar pero están vacías. Nótese que no puedes tocar nada debajo del comentario que hemos puesto.
La función memoriza se llama primero, y tienes que hacer un programa como tú quieras, dentro de los límites del mundo, para que tú, después puedas regresar a la posición original. Esta función tienes que escribirla tú.
La función veAOrigen ya está escrita, y lo único que hace es regresar a Karel a (1,1) y orientarlo al norte. Esta función no la debes de tocar.
La función regresar se llama al final, y tiene que, de alguna forma, hacer que Karel regrese a su posición inicial en el mundo. Esta función también debes escribirla tú.
Plantilla de JAVA
import rekarel.globals;
class program {
void memoriza() {
}
void regresar() {
}
// ABAJO DE AQUI NO SE PUEDE TOCAR
void veAOrigen() {
while (notFacingSouth)
turnleft();
while(frontIsClear)
move();
while(notFacingWest)
turnleft();
while(frontIsClear)
move();
while(notFacingNorth)
turnleft();
}
program () {
memoriza();
veAOrigen();
regresar();
turnoff();
}
}
Plantilla de Pascal
usa rekarel.globales;
iniciar-programa
define-nueva-instruccion memoriza como inicio
fin;
define-nueva-instruccion regresar como inicio
fin;
{ ABAJO DE AQUI NO SE PUEDE TOCAR }
define-nueva-instruccion veAOrigen como inicio
mientras no-orientado-al-sur hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
mientras no-orientado-al-oeste hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
mientras no-orientado-al-norte hacer inicio
gira-izquierda;
fin;
fin;
inicia-ejecucion
memoriza;
veAOrigen;
regresar;
apagate;
termina-ejecucion
finalizar-programa
Consideraciones
- Karel empieza en algún lugar del mundo con orientación desconocida.
- Karel inicia con infinitos zumbadores en la mochila.
- Después de la ejecución de tu método memoriza Karel y el mundo pueden terminar como tú quieras.
- Al iniciar la ejecución de tu método regresar Karel iniciará en (1,1) orientado al norte.
- Si se modifica el código debajo del comentario, obtendrás 0 pts.
- No importa la orientación final de Karel, o cuántos zumbadores terminen en el mundo
- Sólo importan la posición final de Karel y que no hayas hecho cambios en el mundo
- Si en cualquier momento usas la funcion turnoff / apagate obtendrás 0 pts.
Mundo de ejemplo

Comentarios
hehe hago trampas con los parametros
Hola, tu ultima solucion no parece tener problemas ni realizar nada prohibido
A si, perdon, yo lo habia puesto de broma ese comentario, pero el problema parecia que iba a tener una solucion mas complicada. perdon por las molestias