iniciar-programa
    define-nueva-instruccion g(n) como inicio
        repetir n veces
            gira-izquierda;
    fin;
    define-nueva-instruccion travis como inicio
       si frente-libre y no junto-a-zumbador entonces inicio
           avanza;
           travis;
           si junto-a-zumbador entonces
               deja-zumbador;
       fin;
    fin;
    define-nueva-instruccion raro como inicio
       si junto-a-zumbador entonces inicio
             coge-zumbador;
           si frente-libre entonces
               avanza;
           raro;
           deja-zumbador;
       fin sino inicio
          g(2);
          mientras frente-libre hacer
              avanza;
       fin;
    fin;
    define-nueva-instruccion dejar como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            dejar;
            deja-zumbador;
            si frente-libre entonces
                avanza;
        fin sino inicio
            g(2);
            mientras frente-libre hacer
                avanza;
            g(1);
            avanza;
            g(1);
        fin;

    fin;
    define-nueva-instruccion recoge como inicio
       si junto-a-zumbador entonces inicio
            coge-zumbador;
            recoge;
            avanza;
       fin sino inicio
           g(2);
           mientras frente-libre hacer
               avanza;
          g(3);
          avanza;
          g(3);
      fin;
    fin;
    inicia-ejecucion
       mientras no-orientado-al-este hacer
          g(1);
       mientras frente-libre hacer inicio
          si junto-a-zumbador entonces inicio
             coge-zumbador;
             recoge;
             deja-zumbador;
             g(2);
             mientras frente-libre hacer
                avanza;
             g(1);
             avanza;
             gira-izquierda;
          fin;
          mientras no-junto-a-zumbador y frente-libre hacer
            avanza;
       fin;
       si junto-a-zumbador entonces
          recoge;
       mientras frente-libre hacer
          avanza;
       g(3);
       mientras frente-libre hacer
             avanza;
       g(2);
       avanza;
       g(1);
       mientras frente-libre hacer inicio
          si junto-a-zumbador entonces inicio
             coge-zumbador;
             si frente-libre entonces inicio
                avanza;
                travis;
                si frente-libre entonces
                    deja-zumbador;
             fin;
          fin;
          mientras no-junto-a-zumbador y frente-libre hacer
            avanza;
       fin;
       g(2);
       mientras frente-libre hacer inicio
          si junto-a-zumbador entonces inicio
             dejar;
             g(2);
             mientras frente-libre hacer
                avanza;
            g(3);
             avanza;
             g(3);
          fin;
          mientras no-junto-a-zumbador y frente-libre hacer
            avanza;
       fin;
       g(2);
       mientras frente-libre hacer
          avanza;
       g(1);
       avanza;
       g(1);
       coge-zumbador;
       mientras junto-a-zumbador hacer inicio
          deja-zumbador;
          mientras junto-a-zumbador hacer inicio
             coge-zumbador;
             si frente-libre entonces
                 avanza;
          fin;
         g(2);
          mientras frente-libre hacer
             avanza;
          g(2);
          coge-zumbador;
       fin;
       deja-zumbador;
       raro;
       apagate;
    termina-ejecucion
finalizar-programa
