iniciar-programa
    define-nueva-instruccion vamos(n) como inicio
       repetir 2 veces
         gira-izquierda;
        avanza;
       repetir n veces
         deja-zumbador;
       repetir 2 veces
         gira-izquierda;
       avanza;
    fin;
    define-nueva-instruccion ven como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          ven;
          deja-zumbador;
       fin
       sino inicio
          gira-izquierda;
          gira-izquierda;
          avanza;
       fin
    fin;
    define-nueva-instruccion tachin(n) como inicio
       repetir 3 veces
          gira-izquierda;
       repetir 3 veces inicio
          si frente-libre entonces inicio
             avanza;
             si junto-a-zumbador entonces inicio
                coge-zumbador;
                si junto-a-zumbador entonces inicio
                   coge-zumbador;
                   si junto-a-zumbador entonces inicio
                      coge-zumbador;
                      gira-izquierda;
                      gira-izquierda;
                      avanza;
                      ven;
                      mientras no orientado-al-oeste hacer
                         gira-izquierda;
                      ven;
                      coge-zumbador;
                      apagate;
                   fin
                   sino inicio
                      si no si-es-cero(n) entonces inicio
                         gira-izquierda;
                         gira-izquierda;
                         avanza;
                         ven;
                         coge-zumbador;
                         tachin(precede(n));
                         ven;
                         deja-zumbador;
                         vamos(2);
                         gira-izquierda;
                         gira-izquierda;
                      fin
                      sino inicio
                         repetir 2 veces
                            deja-zumbador;
                         gira-izquierda;
                         gira-izquierda;
                         avanza;
                      gira-izquierda;
                      gira-izquierda;
                      fin;
                   fin;
                fin
                sino inicio
                   gira-izquierda;
                   gira-izquierda;
                   avanza;
                   ven;
                   tachin(n);
                   ven;
                         vamos(1);
                         gira-izquierda;
                         gira-izquierda;
                fin;
             fin
             sino inicio
                gira-izquierda;
                gira-izquierda;
                avanza;
                gira-izquierda;
                gira-izquierda;
             fin;
           fin;
           gira-izquierda;
       fin;
       gira-izquierda;
       gira-izquierda;
    fin;
    define-nueva-instruccion cubano(n) como inicio
       si frente-libre o frente-bloqueado entonces inicio
          avanza;
          gira-izquierda;
          gira-izquierda;
          coge-zumbador;
          si no-junto-a-zumbador entonces inicio
             avanza;
             ven;
             tachin(n);
             ven;
             repetir 2 veces
             gira-izquierda;
             avanza;
             deja-zumbador;
             repetir 2 veces
                gira-izquierda;
             avanza;
             repetir 2 veces
                gira-izquierda;
             cubano(sucede(n));
             fin
             sino inicio
                coge-zumbador;
                avanza;
                ven;
                coge-zumbador;
                tachin(n);
                ven;
                deja-zumbador;
                repetir 2 veces
                   gira-izquierda;
                avanza;
                repetir 2 veces
                   deja-zumbador;
                repetir 2 veces
                   gira-izquierda;
                avanza;
                repetir 2 veces
                   gira-izquierda;
                cubano(sucede(n));
             fin;
       fin;
    fin;
    inicia-ejecucion
       cubano(0);
       apagate;
    termina-ejecucion
finalizar-programa