iniciar-programa
define-nueva-instruccion gira(n) como inicio
repetir n veces gira-izquierda;
fin;
define-nueva-instruccion rectangulo(m) como inicio
si derecha-bloqueada y frente-libre entonces inicio
si frente-libre y derecha-bloqueada entonces avanza;
rectangulo(sucede(m));
fin sino inicio
gira(2);
mientras frente-libre hacer avanza;
si frente-bloqueado entonces gira(1);
mientras frente-libre hacer avanza;
si frente-bloqueado entonces gira(1);
mientras no junto-a-zumbador hacer avanza;
si junto-a-zumbador entonces repetir 2 veces repetir m veces coge-zumbador;
repetir 2 veces avanza;
mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
gira(2);
mientras frente-libre hacer avanza;
gira(3);
fin;
fin;
define-nueva-instruccion cuadro(p) como inicio
si derecha-bloqueada y frente-libre entonces inicio
si frente-libre entonces avanza;
cuadro(sucede(p));
fin sino inicio
gira(2);
mientras frente-libre hacer avanza;
si frente-bloqueado entonces gira(1);
mientras frente-libre hacer avanza;
si frente-bloqueado entonces gira(1);
mientras no junto-a-zumbador hacer avanza;
si junto-a-zumbador entonces repetir 3 veces repetir p veces coge-zumbador;
repetir 3 veces avanza;
mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
fin;
fin;
define-nueva-instruccion localiza como inicio
repetir 2 veces avanza;
gira(3);
mientras derecha-libre hacer avanza;
si derecha-bloqueada entonces rectangulo(1);
repetir 5 veces avanza;
gira(3);
mientras derecha-libre hacer avanza;
si derecha-bloqueada entonces cuadro(1);
gira(2); avanza;
gira(2); fin;
define-nueva-instruccion mayor como inicio
mientras junto-a-zumbador hacer inicio
si junto-a-zumbador entonces coge-zumbador;
gira(1); avanza;
si algun-zumbador-en-la-mochila entonces deja-zumbador;
gira(2); avanza;
si junto-a-zumbador entonces gira(1);
si junto-a-zumbador entonces avanza;
si junto-a-zumbador entonces coge-zumbador;
gira(1); avanza;
si algun-zumbador-en-la-mochila entonces deja-zumbador;
gira(2); avanza;
si junto-a-zumbador entonces gira(3);
si junto-a-zumbador entonces avanza;
si junto-a-zumbador entonces gira(2);
fin;
fin;
define-nueva-instruccion resultado como inicio
si orientado-al-oeste entonces inicio
gira(2); avanza;
si junto-a-zumbador entonces gira(1);
avanza;
mientras junto-a-zumbador hacer coge-zumbador;
gira(2); avanza;
mientras junto-a-zumbador hacer coge-zumbador;
gira(3);
mientras frente-libre hacer avanza;
fin;
si orientado-al-sur entonces inicio
gira(3); avanza;
gira(3); avanza;
mientras junto-a-zumbador hacer coge-zumbador;
gira(2); avanza;
mientras junto-a-zumbador hacer coge-zumbador;
gira(3); mientras frente-libre hacer avanza;
fin;
mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
fin;
    inicia-ejecucion
    mientras no orientado-al-norte hacer gira-izquierda;
    localiza;
    mayor;
    resultado;
        apagate;
    termina-ejecucion
finalizar-programa
