iniciar-programa

define-nueva-instruccion come como mientras junto-a-zumbador hacer coge-zumbador;
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 media-vuelta como repetir 2 veces gira-izquierda;
define-nueva-instruccion choca como mientras frente-libre hacer avanza;
define-nueva-instruccion vacia como mientras algun-zumbador-en-la-mochila hacer deja-zumbador;

define-nueva-instruccion ir11-norte como inicio
    oeste; choca; norte;
fin;

define-nueva-instruccion busca como inicio
    avanza;
    este;
    mientras no-junto-a-zumbador y izquierda-libre hacer inicio
        si frente-libre entonces inicio
            avanza;
        fin sino inicio
            norte; avanza; oeste; choca; este;
        fin;
    fin;
    mientras no-junto-a-zumbador y frente-libre hacer inicio
        avanza;
    fin;

fin;

define-nueva-instruccion regresa como inicio
         sur; choca; oeste; choca;
        sur; choca; norte;
fin;

 define-nueva-instruccion acomoda como inicio
   este;
   mientras junto-a-zumbador hacer avanza;
   vacia;
   ir11-norte;
fin;

define-nueva-instruccion devuelve como inicio
    avanza;
    este;
    mientras junto-a-zumbador y izquierda-libre hacer inicio
        si frente-libre entonces inicio
            avanza;
        fin sino inicio
            norte; avanza; oeste; choca; este;
        fin;
    fin;
    mientras junto-a-zumbador y frente-libre hacer inicio
        avanza;
    fin;

fin;

define-nueva-instruccion ve-por-dos como inicio
    busca;
    si junto-a-zumbador entonces inicio
        come;
        regresa;
        acomoda;
        busca;
        si junto-a-zumbador entonces inicio
            come;
            regresa;
            acomoda;
        fin sino inicio
            regresa;
            si junto-a-zumbador entonces inicio
                come;
                este;
                repetir 7 veces avanza;
                deja-zumbador; avanza;
                vacia;
                oeste; choca;
                norte;
            fin;
        fin;
    fin sino inicio
            regresa;
            si junto-a-zumbador entonces inicio
                come;
                repetir 7 veces avanza;
                deja-zumbador; avanza;
                vacia;
                oeste; choca;
                norte;
            fin;
    fin;
fin;

define-nueva-instruccion ve-por-otro como inicio
     devuelve;
     vacia;
     si frente-libre entonces inicio
         avanza;
     fin sino inicio
         norte;
         si frente-libre entonces inicio
             avanza; oeste; choca; este;
         fin sino inicio
             regresa;
             come;
             norte;
             devuelve;
             vacia;
             regresa;
         fin;
     fin;
     si frente-libre entonces inicio
        mientras no-junto-a-zumbador y izquierda-libre hacer inicio
            si frente-libre entonces inicio
                avanza;
            fin sino inicio
                norte; avanza; oeste; choca; este;
            fin;
        fin;
        mientras no-junto-a-zumbador y frente-libre hacer inicio
            avanza;
        fin;
        si junto-a-zumbador entonces inicio
            come;
            regresa;
            este;
            mientras junto-a-zumbador hacer avanza;
            vacia;
            oeste; choca;
            este;
         fin sino inicio
             regresa;
             come; este;
             repetir 7 veces avanza;
             deja-zumbador;
             avanza; vacia;
             oeste; choca; norte;
             ve-por-dos;
         fin;
     fin sino inicio
            regresa;

     fin;

fin;

define-nueva-instruccion compara como inicio
    este;
    come;   avanza;
    mientras algun-zumbador-en-la-mochila y junto-a-zumbador hacer inicio
        coge-zumbador;
        este; avanza;
        deja-zumbador;
        oeste; choca;
        deja-zumbador;
        este; avanza;
    fin;
    si algun-zumbador-en-la-mochila entonces inicio
        oeste; choca; vacia;          (*Diferentes*)
        este; avanza; avanza;
        come;
        ir11-norte;
    fin sino inicio
        si junto-a-zumbador entonces inicio
            come; este; avanza;
            come; ir11-norte;
            (*Diferentes*)
        fin sino inicio
            (*Son iguales---elimina*)
            este;
            avanza; come;
            oeste; choca;
            come;
        fin;
    fin;
    si orientado-al-norte entonces inicio
        (* Son diferentes *)
        ve-por-otro;
    fin sino inicio
        este;
        repetir  8 veces avanza;
        vacia;
        oeste; choca;
        norte;
        ve-por-dos;
        este;
    fin;
fin;

    inicia-ejecucion
        norte;
        ve-por-dos;
        compara;

        mientras junto-a-zumbador hacer inicio
            compara;
        fin;
            regresa;
            este;
            repetir 7 veces avanza;
            come; oeste; choca; vacia;




        apagate;
    termina-ejecucion
finalizar-programa
