iniciar-programa
define-nueva-instruccion prueba(n) como
inicio
  si junto-a-zumbador y no si-es-cero(n) entonces
  inicio
     coge-zumbador;
     prueba(precede(n));
     deja-zumbador;
  fin
  sino
     si junto-a-zumbador entonces
     inicio
        repetir 4 veces
        inicio
          si frente-libre entonces
          inicio
             avanza;
             deja-zumbador;
             repetir 2 veces
                gira-izquierda;
             avanza;
             repetir 2 veces
                gira-izquierda;
           fin;
           gira-izquierda;
        fin;
        repetir 2 veces
        inicio
          si frente-libre entonces
          inicio
             avanza;
             si izquierda-libre entonces
             inicio
                gira-izquierda;
                avanza;
                deja-zumbador;
                repetir 2 veces
                   gira-izquierda;
                avanza;
                gira-izquierda;
             fin;
             si derecha-libre entonces
             inicio
                repetir 3 veces
                   gira-izquierda;
                avanza;
                deja-zumbador;
                repetir 2 veces
                   gira-izquierda;
                avanza;
                repetir 3 veces
                gira-izquierda;
             fin;
             repetir 2 veces
                gira-izquierda;
             avanza;
             repetir 2 veces
                gira-izquierda;
           fin;
           gira-izquierda;
           gira-izquierda;
        fin;
      fin;
fin;
define-nueva-instruccion regresa como
inicio
 si derecha-libre entonces
      inicio
         gira-izquierda;
         gira-izquierda;
         mientras frente-libre hacer
            avanza;
         gira-izquierda;
         avanza;
         gira-izquierda;
      fin
      sino
         apagate;
  fin;
define-nueva-instruccion recorre como
inicio
   mientras frente-libre o frente-bloqueado hacer
   inicio
      mientras frente-libre y no junto-a-zumbador hacer
         avanza;

      si junto-a-zumbador entonces
         prueba(8);
      si frente-libre entonces
         avanza
      sino
         regresa;
   fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-norte hacer
       gira-izquierda;
    mientras frente-libre hacer
       avanza;
   gira-izquierda;
   mientras frente-libre hacer
      avanza;
      gira-izquierda;
         gira-izquierda;
         recorre;
        apagate;
    termina-ejecucion
finalizar-programa
