iniciar-programa
define-nueva-instruccion g(x) como repetir x veces gira-izquierda;
define-nueva-instruccion cuenta(distancia) como inicio
    si frente-libre entonces inicio
        avanza;
        cuenta(sucede(distancia));
    fin sino inicio
        mientras junto-a-zumbador hacer coge-zumbador;
        repetir sucede(distancia) veces deja-zumbador;
    fin;
fin;
 define-nueva-instruccion baja(renglones) como inicio
     repetir renglones veces deja-zumbador;
     repetir precede(renglones) veces inicio
         si frente-libre entonces avanza;
         si no-junto-a-zumbador entonces repetir renglones veces deja-zumbador;
     fin;
     si frente-bloqueado entonces inicio
         g(3);
         cuenta(0);
     fin sino inicio
         si izquierda-libre entonces inicio
             g(1);
             avanza;
             g(3);
             baja(sucede(renglones));
         fin sino inicio
             mientras frente-libre hacer avanza;
             g(3);
             cuenta(0);
         fin;
     fin;
 fin;

 define-nueva-instruccion sube(altura) como inicio
     si no-junto-a-zumbador entonces repetir altura veces deja-zumbador;
     repetir precede(altura) veces inicio
         si frente-libre entonces inicio
             avanza;
         fin sino inicio
             si orientado-al-norte entonces g(1);
         fin;
         si no-junto-a-zumbador entonces repetir altura veces deja-zumbador;
     fin;
     si orientado-al-norte entonces inicio
         si derecha-libre entonces inicio
             g(3);
             avanza;
             g(1);
             si si-es-cero (precede(altura)) entonces inicio
                 g(2);
                 baja(1);
             fin sino inicio
                 sube(precede(altura));
             fin;
         fin sino inicio
             g(2);
             mientras frente-libre hacer avanza;
             g(3);
             cuenta(0);
         fin;
     fin sino inicio
         g(3);
         si derecha-libre entonces inicio
             g(3);
             avanza;
             g(3);
             baja(1);
         fin sino inicio
             g(2);
             mientras frente-libre hacer avanza;
             g(3);
             cuenta(0);
         fin;
     fin;
 fin;
 define-nueva-instruccion piedra(fuerza) como inicio
     si junto-a-zumbador entonces inicio
         coge-zumbador;
         piedra(sucede(fuerza));
     fin sino inicio
         sube(fuerza);
     fin;
 fin;
    inicia-ejecucion
        mientras no-orientado-al-norte hacer gira-izquierda;
        piedra(0);
        apagate;
    termina-ejecucion
finalizar-programa

