iniciar-programa
define-nueva-instruccion a como si frente-libre entonces avanza;
define-nueva-instruccion gi como gira-izquierda;
define-nueva-instruccion mv como repetir 2 veces gi;
define-nueva-instruccion gd como repetir 3 veces gi;
define-nueva-instruccion sa como mientras frente-libre hacer a;
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gi;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gi;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gi;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gi;
define-nueva-instruccion comer(x) como
inicio
    si junto-a-zumbador entonces
    inicio
        repetir x veces
        si junto-a-zumbador entonces coge-zumbador
        sino
        inicio
            si orientado-al-norte entonces sur
            sino norte;
            sal-de-instruccion;
        fin;
    fin
    sino
    inicio
        si orientado-al-norte entonces sur
        sino norte;
    fin;
    si junto-a-zumbador entonces
    repetir x veces deja-zumbador;
fin;
define-nueva-instruccion camino como
inicio
    si orientado-al-norte entonces
    inicio
       si no-junto-a-zumbador entonces sur
       sino
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(2);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(3);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(5);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(7);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(11);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(13);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(17);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(19);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(23);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(29);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(31);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(37);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(41);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(43);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(47);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(53);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(59);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(61);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(67);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(71);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(73);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(79);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(83);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(89);
       si junto-a-zumbador y no-orientado-al-sur entonces
       comer(97);
       si junto-a-zumbador entonces sur;
       si orientado-al-norte entonces
       inicio
           repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
           apagate;
       fin
       sino norte;
    fin
    sino
    si orientado-al-este entonces
    inicio
       si no-junto-a-zumbador entonces norte
       sino
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(2);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(3);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(5);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(7);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(11);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(13);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(17);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(19);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(23);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(29);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(31);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(37);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(41);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(43);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(47);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(53);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(59);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(61);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(67);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(71);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(73);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(79);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(83);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(89);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(97);
       si junto-a-zumbador entonces norte;
       si orientado-al-este entonces
       inicio
           repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
           apagate;
       fin
       sino este;
    fin
    sino
    si orientado-al-sur entonces
    inicio
       si no-junto-a-zumbador entonces norte
       sino
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(2);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(3);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(5);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(7);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(11);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(13);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(17);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(19);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(23);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(29);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(31);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(37);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(41);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(43);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(47);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(53);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(59);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(61);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(67);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(71);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(73);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(79);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(83);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(89);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(97);
       si junto-a-zumbador entonces norte;
       si orientado-al-sur entonces
       inicio
           repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
           apagate;
       fin
       sino sur;
    fin
    sino
    si orientado-al-oeste entonces
    inicio
       si no-junto-a-zumbador entonces norte
       sino
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(2);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(3);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(5);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(7);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(11);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(13);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(17);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(19);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(23);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(29);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(31);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(37);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(41);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(43);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(47);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(53);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(59);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(61);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(67);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(71);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(73);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(79);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(83);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(89);
       si junto-a-zumbador y no-orientado-al-norte entonces
       comer(97);
       si junto-a-zumbador entonces norte;
       si orientado-al-oeste entonces
       inicio
           repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
                      repetir 4 veces
           inicio
                si frente-libre entonces
                inicio
                    a;
                    camino;
                    mv;
                    a;
                    mv;
                fin;
                gi;
           fin;
           apagate;
       fin
       sino oeste;
    fin;
fin;
    inicia-ejecucion
    camino;
           apagate;
    termina-ejecucion
finalizar-programa
