class program { define turnright() { iterate(3) { turnleft(); } } program() { (* Primero avanzamos los 3 lugares hacia el norte, recordemos que *) (* estos 3 pasos son seguros, no hay paredes ni nada *) iterate(3) { move(); } (* Hemos llegado al punto donde debemos decidir, entonces las opciones *) (* para resolver el problema son muchas, recuerden que dependiendo de *) (* como pregunten, es la accion que deben tomar *) (* En esta solucion, preguntare primero si el frente esta libre, si *) (* esta libre, entonces avanzo y termino. Sino esta libre, entonces *) (* preguntare si la izquierda esta bloqueda, si esta bloqueda, entonces *) (* debo ir a la derecha. Sino esta bloqueda, entonces simplemente avanzo *) (* hacia la izquierda *) (* Primera pregunta - żEl frente esta libre?*) if( frontIsClear ) { (* si estamos aqui, entonces el frente esta libre*) move(); } else { (* Si estamos aqui, entonces no esta libre. Segunda pregunta *) (* żLa izquierda esta bloqueda ?*) if( leftIsBlocked ) { (* Si estamos aqui, la izquierda esta bloqueda por tanto *) (* debemos girar y avanzar a la derecha *) turnright(); move(); } else { (* si estamos aqui, no es necesario preguntar si la *) (* izquierda esta libre, puesto que la respuesta a la *) (* pregunta anterior fue FALSO, entonces significa que *) (* la izquierda esta libre. Asi que nos movenos a la *) (* libremente a la izquierda*) turnleft(); move(); } } turnoff(); } }