iniciar-programa

 define-nueva-instruccion ordenar(x) como inicio
     si junto-a-zumbador entonces inicio
         coge-zumbador;
         ordenar(sucede(x));
     fin sino inicio
         repetir 2 veces gira-izquierda;
         mientras frente-libre hacer avanza;
         gira-izquierda;
         mientras frente-libre hacer avanza;
         gira-izquierda;
         repetir precede(x) veces avanza;
         deja-zumbador;
         repetir 2 veces gira-izquierda;
         mientras frente-libre hacer avanza;
         repetir 3 veces gira-izquierda;
         avanza;
         repetir 3 veces gira-izquierda;
     fin;
 fin;

 define-nueva-instruccion parejas(z) como inicio
     si frente-libre entonces inicio
         si junto-a-zumbador entonces inicio
             coge-zumbador;
             si no-junto-a-zumbador entonces inicio
                 avanza;
                 parejas(sucede(z));
             fin;
             si junto-a-zumbador entonces inicio
                 avanza;
                 parejas(z);
             fin;
         fin;
         si no-junto-a-zumbador entonces inicio
             avanza;
             parejas(z);
         fin;
     fin sino inicio
         repetir 2 veces gira-izquierda;
         mientras frente-libre hacer avanza;
         si junto-a-zumbador entonces coge-zumbador;
          repetir z veces deja-zumbador;
         apagate;
     fin;
 fin;

    inicia-ejecucion

    mientras no-orientado-al-norte hacer gira-izquierda;
    avanza;
    repetir 3 veces gira-izquierda;

    mientras frente-libre o izquierda-libre hacer inicio
        si no-junto-a-zumbador entonces si frente-libre entonces avanza;
        si junto-a-zumbador entonces inicio
            ordenar(0);
        fin;
        si frente-bloqueado y izquierda-libre entonces inicio
            repetir 2 veces gira-izquierda;
            mientras frente-libre hacer avanza;
            repetir 3 veces gira-izquierda;
            avanza;
            repetir 3 veces gira-izquierda;
        fin;
    fin;

    repetir 2 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;

    parejas(0);

        apagate;
    termina-ejecucion
finalizar-programa
