iniciar-programa
    define-nueva-instruccion izquierda como si frente-bloqueado entonces gira-izquierda;
    define-nueva-instruccion izquierda2 como si frente-bloqueado entonces repetir 2 veces gira-izquierda;
    define-nueva-instruccion izquierda4 como si no-junto-a-zumbador entonces repetir 2 veces gira-izquierda;
    define-nueva-instruccion camino2 como
        inicio
           repetir 3 veces gira-izquierda;
           si frente-libre entonces
               inicio
                  avanza;
                  si no-junto-a-zumbador entonces
                      inicio
                         izquierda4;
                         avanza;
                         mientras junto-a-zumbador hacer coge-zumbador;
                      fin;
               fin;
        fin;

    define-nueva-instruccion camino1 como
        inicio
           gira-izquierda;
           si frente-libre entonces
               inicio
                  avanza;
                  si no-junto-a-zumbador entonces
                      inicio
                         izquierda4;
                         avanza;
                         gira-izquierda;
                         camino2;
                      fin;
               fin sino
                   inicio
                      repetir 3 veces gira-izquierda;
                      camino2;
                   fin;
        fin;


    define-nueva-instruccion calle(g) como
        inicio
           si frente-libre entonces
               inicio
                   avanza;
                   si no-junto-a-zumbador entonces
                       inicio
                           repetir 2 veces gira-izquierda;
                           avanza;
                           repetir 2 veces gira-izquierda;
                           camino1;
                       fin;
              fin sino camino1;
           mientras junto-a-zumbador hacer
               inicio
                  si junto-a-zumbador entonces
                      inicio
                         coge-zumbador;
                         si junto-a-zumbador entonces
                             inicio
                                mientras junto-a-zumbador hacer coge-zumbador;
                                calle(sucede(g));
                                repetir 100 veces deja-zumbador;
                                repetir g veces
                                    inicio
                                       si junto-a-zumbador entonces coge-zumbador;
                                       si no-junto-a-zumbador entonces
                                           inicio
                                              mientras no-orientado-al-este hacer gira-izquierda;
                                              avanza;
                                              repetir 5 veces deja-zumbador;
                                              apagate;
                                           fin;
                                    fin;
                                si junto-a-zumbador entonces
                                    inicio
                                       mientras junto-a-zumbador hacer coge-zumbador;
                                       repetir g veces deja-zumbador;
                                    fin;
                                si no-junto-a-zumbador entonces
                                      inicio
                                         mientras no-orientado-al-este hacer gira-izquierda;
                                         avanza;
                                         repetir 5 veces deja-zumbador;
                                      fin;
                                apagate;
                             fin sino
                             inicio
                                calle(G);
                             fin;
                     fin;
               fin;
        fin;

   define-nueva-instruccion contar (g) como
        inicio
           si junto-a-zumbador entonces
               inicio
                  coge-zumbador;
                  contar(precede(g));
               fin sino
               inicio
                  calle(g);
               fin;
        fin;
    inicia-ejecucion
        contar (1);
        apagate;
    termina-ejecucion
finalizar-programa
