iniciar-programa
    define-nueva-instruccion atras como inicio
        gira-izquierda;
        gira-izquierda;
    fin;
    define-nueva-instruccion derecha como inicio
        atras;
        gira-izquierda;
    fin;
    define-nueva-instruccion cuenta(x) como inicio
        si junto-a-zumbador y orientado-al-este entonces inicio
            repetir x veces inicio
                avanza;
            fin;

        fin;
        si algun-zumbador-en-la-mochila entonces inicio
         si izquierda-libre y no-junto-a-zumbador entonces inicio
                gira-izquierda;
            fin;
         si algun-zumbador-en-la-mochila y no-junto-a-zumbador entonces inicio
            repetir x veces inicio
                avanza;
            fin;
            cuenta(x);
            si frente-libre entonces inicio
            avanza;
            gira-izquierda;
            avanza;
            derecha;
            si junto-a-zumbador entonces inicio
                gira-izquierda;
                avanza;
                derecha;

            fin;

            fin;
            si frente-bloqueado y orientado-al-sur entonces inicio
                  deja-zumbador;
              fin;
        fin;
     fin;
 fin;
      define-nueva-instruccion resta(s) como inicio
      si orientado-al-sur entonces inicio
           derecha;
           avanza;
           fin;
           si junto-a-zumbador entonces inicio
               coge-zumbador;
               resta(sucede(s));
           fin;
           atras;
           avanza;
           repetir s veces inicio
               coge-zumbador;
           fin;
           atras;
           avanza;
           repetir s veces inicio
               deja-zumbador;
           fin;
           derecha;
           avanza;
           gira-izquierda;
           avanza;
           mientras junto-a-zumbador hacer inicio
           coge-zumbador;
           gira-izquierda;
           avanza;
           deja-zumbador;
           atras;
           avanza;
           gira-izquierda;
           si no-junto-a-zumbador entonces inicio
           gira-izquierda;
           avanza;
           gira-izquierda;
           avanza;
           deja-zumbador;
           apagate;
           fin;
           fin;
           fin;
    define-nueva-instruccion cz(x) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            cz(sucede(x));
            si junto-a-zumbador entonces inicio
                atras;
                avanza;
                gira-izquierda;
                avanza;
                atras;
                cuenta(1);
            fin;
            resta(0);
        fin;
        gira-izquierda;
        avanza;
        repetir x veces inicio
            deja-zumbador;
        fin;
        derecha;
        cuenta(x);
    fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer inicio
        gira-izquierda;
    fin;
    avanza;
    cz(0);
        apagate;
    termina-ejecucion
finalizar-programa

