iniciar-programa
    define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
    define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
    define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
    define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;

    define-nueva-instruccion contarcomparacion(g) como
        inicio
           si junto-a-zumbador entonces
               inicio
                  coge-zumbador;
                  contarcomparacion(sucede(g));
               fin sino
                   inicio
                      repetir g veces deja-zumbador;
                      avanza;
                      repetir g veces si junto-a-zumbador entonces coge-zumbador;
                      si junto-a-zumbador entonces
                          inicio
                             repetir g veces deja-zumbador;
                             mientras frente-libre hacer avanza;
                             deja-zumbador;
                             norte;
                          fin sino
                              inicio
                                 mientras frente-libre hacer avanza;
                                 deja-zumbador;
                              fin;

                   fin;
        fin;

    define-nueva-instruccion contartortuga(x) como
        inicio
           si junto-a-zumbador entonces
               inicio
                  coge-zumbador;
                  contartortuga(sucede(x));
                  coge-zumbador;
               fin sino
                   inicio
                      si orientado-al-norte entonces
                          inicio
                             repetir x veces deja-zumbador;
                             avanza;
                             sur;
                             contartortuga(0);
                             avanza;
                          fin;
                       si orientado-al-sur entonces
                           inicio
                              repetir x veces deja-zumbador;
                              mientras frente-libre hacer avanza;
                              este;
                              avanza;
                              mientras no-junto-a-zumbador hacer avanza;
                           fin;
                   fin;
        fin;

    define-nueva-instruccion contarcamino(e) como
        inicio
           si frente-libre entonces
               inicio
                  avanza;
                  contarcamino(sucede(e));
               fin sino
                   inicio
                      sur;
                      mientras frente-libre hacer avanza;
                      oeste;
                      avanza;
                      si junto-a-zumbador entonces
                          inicio
                             este;
                             avanza;
                          fin;
                      repetir sucede(e) veces deja-zumbador
                   fin;
        fin;
    inicia-ejecucion
        este;
        contarcamino(0);
        oeste;
        mientras frente-libre hacer avanza;
        norte;
        repetir 3 veces avanza;
        este;
        mientras no-junto-a-zumbador hacer avanza;
        contarcamino(0);
        oeste;
        mientras frente-libre hacer avanza;
        norte;
        mientras orientado-al-norte hacer
            inicio
               avanza;
               contartortuga(0);
               oeste;
               si junto-a-zumbador entonces contarcomparacion(0) sino inicio
                   mientras frente-libre hacer avanza;
                   mientras junto-a-zumbador hacer coge-zumbador;
                   fin;
            fin;
        apagate;
    termina-ejecucion
finalizar-programa
