iniciar-programa
define-nueva-instruccion construye(x) como
inicio
si no si-es-cero(x) entonces
inicio
    repetir 2 veces
       repetir x veces
       inicio
       si no-junto-a-zumbador entonces
           deja-zumbador;
       avanza;
       fin;
       si no-junto-a-zumbador entonces
       deja-zumbador;
       gira-izquierda;
       avanzA;
       gira-izquierda;
       repetir 2 veces
           repetir x veces
               avanza;
       repetir 2 veces
           gira-izquierda;
       avanza;
       construye(precede(x));
fin
sino
inicio
        si no-junto-a-zumbador entonces
        deja-zumbador;
fin;
fin;
define-nueva-instruccion cima como inicio
si junto-a-zumbador entonces
inicio
    avanza;
    avanza;
    cima;
    avanza;
fin
sino
inicio
   repetir 2 veces
   gira-izquierda;
   avanza;
fin;
fin;
define-nueva-instruccion reconstruye(z) como
inicio
        si algun-zumbador-en-la-mochila entonces
        inicio
                construye(z);
                mientras no orientado-al-oeste hacer
                gira-izquierda;
                mientras frente-libre hacer
                avanza;
                gira-izquierda;
                mientras frente-libre hacer
                avanza;
                gira-izquierda;
                reconstruye(sucede(z));
        fin;
fin;
inicia-ejecucion
mientras no orientado-al-este hacer
gira-izquierda;
        reconstruye(1);
        cima;
        repetir 3 veces
            gira-izquierdA;
        mientras junto-a-zumbador hacer avanzA;
        repetir 2 veces
            gira-izquierdA;
            avanzA;
        apagate;
    termina-ejecucion
finalizar-programa
