iniciar-programa
    define-nueva-instruccion a como inicio
       repetir 3 veces
          gira-izquierda;
    fin;
    define-nueva-instruccion u como inicio
       repetir 2 veces
          gira-izquierda;
    fin;
    define-nueva-instruccion e como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          e;
          deja-zumbador;
       fin
       sino inicio
          avanza;
       fin;
    fin;
    define-nueva-instruccion i(n) como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          i(sucede(n));
       fin
       sino inicio
          repetir n veces
             deja-zumbador;
          avanza;
          a;
          avanza;
          repetir n veces
             deja-zumbador;
          u;
          avanza;
          gira-izquierda;
       fin;
    fin;
    define-nueva-instruccion oi como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          oi;
          deja-zumbador;
       fin
       sino inicio
          avanza;
          gira-izquierda;
          gira-izquierda;
       fin;
    fin;
    define-nueva-instruccion ae como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          avanza;
           si junto-a-zumbador entonces inicio
              coge-zumbador;
              gira-izquierda;
              gira-izquierda;
              avanza;
              gira-izquierda;
              gira-izquierda;
              ae;
              deja-zumbador;
              avanza;
              gira-izquierda;
              gira-izquierda;
           fin
           sino inicio
              gira-izquierda;
              gira-izquierda;
              avanza;
              gira-izquierda;
              gira-izquierda;
              oi;
           fin;
           deja-zumbador;
           avanza;
           gira-izquierda;
           gira-izquierda;
       fin;
    fin;
    define-nueva-instruccion ai(n) como inicio
       repetir n veces inicio
          mientras no-orientado-al-oeste hacer
             gira-izquierda;
          mientras frente-libre hacer
             avanza;
          gira-izquierda;
          gira-izquierda;
          mientras frente-libre y junto-a-zumbador hacer inicio
             avanza;
              si junto-a-zumbador entonces inicio
                 u;
                 avanza;
                 u;
                 ae;
                 avanza;
              fin;
          fin;
       fin;
    fin;
    define-nueva-instruccion c(n) como inicio
       si junto-a-zumbador y frente-libre entonces inicio
          avanza;
          c(sucede(n));
       fin
       sino inicio
          u;
          mientras frente-libre hacer
             avanza;
          u;
          ai(n);
       fin;
    fin;
    inicia-ejecucion
       si frente-libre entonces
          avanza;
        mientras junto-a-zumbador y frente-libre hacer inicio
           u;
           avanza;
           u;
           c(1);
           u;
           mientras frente-libre hacer
              avanza;
           u;
           oi;
           i(0);
           si frente-libre entonces inicio
              avanza;
           fin
           sino inicio
              apagate;
           fin;
           si no-junto-a-zumbador entonces
              apagate;
           u;
           mientras junto-a-zumbador hacer inicio
              e;
           u;
           avanza;
           si frente-libre entonces inicio
              avanza;
              u;
           fin;
        fin;
        mientras no-orientado-al-oeste hacer
           u;
        mientras frente-libre hacer
           avanza;
        u;
        si frente-libre entonces
           avanza;
        fin;
        apagate;
        apagate;
    termina-ejecucion
finalizar-programa