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 contar(x) como
    inicio

        si junto-a-zumbador entonces
        inicio
        coge-zumbador;
        contar (sucede (x));

        fin;
        si no-junto-a-zumbador y no-orientado-al-sur entonces
            inicio
                repetir x veces avanza;
                deja-zumbador;
                repetir 2 veces gira-izquierda;
                repetir x veces avanza;
                gira-izquierda;
                repetir x veces avanza;
                deja-zumbador;
                repetir 2 veces gira-izquierda;
                repetir x veces avanza;
                gira-izquierda;
                repetir x veces avanza;
                deja-zumbador;
                repetir 2 veces gira-izquierda;
                repetir x veces avanza;
                gira-izquierda;
                repetir x veces avanza;
                deja-zumbador;


            fin;
  fin;


define-nueva-instruccion medir como
    inicio
        contar(0);
        si junto-a-zumbador entonces sal-de-instruccion;
        medir;
    fin;

define-nueva-instruccion kabola3 como
    inicio
        si junto-a-zumbador entonces
            inicio
                avanza;
                gira-izquierda;
                avanza;
                si junto-a-zumbador entonces apagate;
                si no-junto-a-zumbador entonces deja-zumbador;
                oeste;
                kabola3;
            fin;
    fin;


define-nueva-instruccion kabola2 como
    inicio
        si junto-a-zumbador y orientado-al-norte entonces
            inicio
                avanza;
                gira-izquierda;
                avanza;
                si junto-a-zumbador entonces kabola3;
                si no-junto-a-zumbador entonces deja-zumbador;
                norte;
                kabola2;
            fin;
    fin;

define-nueva-instruccion kabola1 como
    inicio
        si junto-a-zumbador y orientado-al-este entonces
            inicio
                si frente-libre entonces avanza;
                gira-izquierda;
                avanza;
                si junto-a-zumbador entonces kabola2;
                si no-junto-a-zumbador entonces deja-zumbador;
                repetir 3 veces gira-izquierda;
                kabola1;
            fin;
    fin;


define-nueva-instruccion kabola como
    inicio
        si junto-a-zumbador y orientado-al-oeste entonces
            inicio
                gira-izquierda;
               si frente-libre entonces avanza;
                gira-izquierda;
               si frente-libre entonces avanza;
                si junto-a-zumbador entonces inicio
                    kabola1;

                fin;
                si no-junto-a-zumbador entonces deja-zumbador;
                repetir 2 veces gira-izquierda;
                kabola;
            fin;
    fin;
    inicia-ejecucion
        si no-junto-a-zumbador entonces
            inicio
                deja-zumbador;
                apagate;
            fin;
        si junto-a-zumbador entonces inicio
        norte;
        medir;
        kabola;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
