iniciar-programa
define-nueva-instruccion g(h) como inicio
    repetir h veces gira-izquierda;
fin;
define-nueva-instruccion norte como inicio
    mientras no orientado-al-norte hacer gira-izquierda;
fin;
define-nueva-instruccion sur como inicio
    mientras no orientado-al-sur hacer gira-izquierda;
fin;
define-nueva-instruccion este como inicio
    mientras no orientado-al-este hacer gira-izquierda;
fin;
define-nueva-instruccion oeste como inicio
    mientras no orientado-al-oeste hacer gira-izquierda;
fin;

define-nueva-instruccion buscacamino(N) como inicio
    si no si-es-cero(N) entonces inicio
       si frente-libre y no junto-a-zumbador entonces inicio
           avanza;
           si no junto-a-zumbador entonces inicio
               g(2);
               avanza;
               g(2);
           fin;

       fin;
       gira-izquierda;
       buscacamino(precede(N));
    fin
fin;

define-nueva-instruccion faltantes(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        si junto-a-zumbador entonces inicio
            mientras junto-a-zumbador hacer coge-zumbador;
            buscacamino(4);
            faltantes(sucede(n));
        fin
        sino inicio
            buscacamino(4);
            faltantes(n);
        fin;
    fin
    sino inicio
         si no si-es-cero(n) entonces inicio
             repetir n veces deja-zumbador;
         fin
         sino inicio
              este;
              avanza;
              repetir 5 veces deja-zumbador;
         fin;
    fin;
fin;

define-nueva-instruccion contarfaltantes(n) como inicio
    si no si-es-cero(n) entonces inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
                mientras junto-a-zumbador hacer coge-zumbador;
                buscacamino(4);
                contarfaltantes(precede(n));
            fin
            sino inicio
                 buscacamino(4);
                contarfaltantes(n);
            fin;
        fin
        sino inicio
            este;
            avanza;
            repetir 5 veces deja-zumbador;
        fin;
    fin
    sino inicio
        faltantes(0);
    fin;
fin;

define-nueva-instruccion cupoautobus(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        cupoautobus(sucede(n));
    fin
    sino inicio
        avanza;
        contarfaltantes(n);
    fin;
fin;
       inicia-ejecucion
       cupoautobus(0);
        apagate;
    termina-ejecucion
finalizar-programa
