iniciar-programa
define-nueva-instruccion gira-derecha como
inicio
repetir 3 veces
inicio
gira-izquierda;
fin;
fin;
define-nueva-instruccion gira-180 como
inicio
repetir 2 veces
inicio
gira-izquierda;
fin;
fin;
     define-nueva-instruccion acomoda(n) como
     inicio
        si junto-a-zumbador entonces
        inicio
        si orientado-al-este entonces
        inicio
         gira-izquierda;
         mientras junto-a-zumbador hacer
         inicio
         avanza;
         fin;
         gira-180;
         avanza;
           fin;
         coge-zumbador;
         acomoda(sucede(n));
        fin
        sino
        inicio
             si si-es-cero(n) entonces
             inicio
             si orientado-al-sur entonces
             inicio
             gira-izquierda;
             fin;
              si frente-libre entonces
              inicio
              avanza;
              acomoda(n);
              fin;
              si frente-bloqueado y no junto-a-zumbador entonces
              inicio
              apagate;
              fin;
             fin
             sino
             inicio
               si orientado-al-sur entonces
               inicio
               gira-derecha;
               fin;
               mientras frente-libre hacer
               inicio
               avanza;
               fin;
               gira-izquierda;
               mientras frente-libre hacer
               inicio
               avanza;
               fin;
               gira-izquierda;
               avanza;
               avanza;
               mientras junto-a-zumbador hacer
               inicio
               avanza;
               fin;
               repetir n veces
               inicio
               deja-zumbador;
               fin;
               gira-180;
               mientras frente-libre hacer
               inicio
               avanza;
               fin;
               gira-derecha;
               avanza;
               gira-derecha;
               acomoda(0);
             fin;
        fin;
     fin;
       define-nueva-instruccion ordena(n) como
       inicio
        si junto-a-zumbador entonces
        inicio
        coge-zumbador;
        ordena(sucede(n));
        fin
        sino
        inicio
         mientras frente-libre hacer
         inicio
         avanza;
         fin;
         gira-derecha;
         avanza;
         gira-derecha;
         repetir precede(n) veces
         inicio
         avanza;
         fin;
             si junto-a-zumbador entonces
             inicio
              gira-izquierda;
              mientras junto-a-zumbador hacer
              inicio
              avanza;
              fin;
               repetir n veces
               inicio
               deja-zumbador;
               fin;
               gira-180;
               mientras frente-libre hacer
               inicio
               avanza;
               fin;
               gira-180;
               avanza;
               gira-derecha;
             fin
             sino
             inicio
             repetir n veces
             inicio
             deja-zumbador;
             fin;
             fin;
             gira-180;
             mientras frente-libre hacer
             inicio
             avanza;
             fin;
             gira-izquierda;
             mientras frente-libre hacer
             inicio
             avanza;
             fin;
             gira-izquierda;
        fin;
       fin;
              define-nueva-instruccion kaka(n) como
              inicio
                si junto-a-zumbador entonces
                inicio
                coge-zumbador;
                 kaka(sucede(n));
                fin
                sino
                inicio
                repetir precede(n) veces
                inicio
                deja-zumbador;
                fin;
                avanza;
                repetir n veces
                inicio
                avanza;
                fin;
                gira-180;
                 ordena(0);
                fin;
              fin;
    inicia-ejecucion
     si orientado-al-norte entonces
     inicio
     gira-derecha;
     fin;
     si orientado-al-sur entonces
     inicio
     gira-izquierda;
     fin;
     si orientado-al-oeste entonces
     inicio
     gira-180;
     fin;
     mientras junto-a-zumbador hacer
     inicio
      kaka(0);
      fin;
      gira-izquierda;
      avanza;
      gira-derecha;
       acomoda(0);
        apagate;
    termina-ejecucion
finalizar-programa
