iniciar-programa
define-nueva-instruccion ubicate como
inicio
mientras no-orientado-al-oeste hacer
gira-izquierda;
mientras frente-libre hacer
avanza;
mientras no-orientado-al-sur hacer
gira-izquierda;
mientras frente-libre hacer
avanza;
fin;

define-nueva-instruccion busca-uno como
inicio
mientras frente-libre hacer
inicio
si junto-a-zumbador entonces
coge-zumbador;
si junto-a-zumbador entonces
deja-zumbador;
    mientras frente-libre hacer
    inicio
    avanza;
    si junto-a-zumbador entonces
    coge-zumbador;
    si junto-a-zumbador entonces
    deja-zumbador
    fin;
mientras no-orientado-al-este hacer
gira-izquierda;
si frente-libre entonces
    inicio
        avanza;
        si derecha-libre entonces
        inicio
        gira-izquierda;
        gira-izquierda;
        gira-izquierda;
        fin
        sino
        gira-izquierda;
    fin;
    fin;
    fin;

define-nueva-instruccion busca-dos como
inicio
mientras frente-libre hacer
inicio
si junto-a-zumbador entonces
inicio
coge-zumbador;
coge-zumbador;
fin;
    mientras frente-libre hacer
    inicio
    avanza;
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
    coge-zumbador;
    fin;
    fin;
mientras no-orientado-al-este hacer
gira-izquierda;
si frente-libre entonces
    inicio
        avanza;
        si derecha-libre entonces
        inicio
        gira-izquierda;
        gira-izquierda;
        gira-izquierda;
        fin
        sino
        gira-izquierda;
    fin;
    fin;
    fin;

   define-nueva-instruccion recoge-faltante como
   inicio
   mientras frente-libre o orientado-al-este hacer
   inicio
   mientras frente-libre hacer
   inicio
   si junto-a-zumbador entonces
   coge-zumbador;
   si frente-libre entonces
   avanza;
   si junto-a-zumbador entonces
   coge-zumbador;
   fin;
   mientras no-orientado-al-norte hacer
gira-izquierda;
si frente-libre entonces
    inicio
        avanza;
        si derecha-libre entonces
        inicio
        gira-izquierda;
        gira-izquierda;
        gira-izquierda;
        fin
        sino
        gira-izquierda;
    fin;
    fin;
   fin;

define-nueva-instruccion esparce-uno como
inicio
mientras no-orientado-al-norte hacer
gira-izquierda;
si algun-zumbador-en-la-mochila entonces
deja-zumbador;
mientras algun-zumbador-en-la-mochila hacer
inicio
avanza;
deja-zumbador;
fin;
fin;

define-nueva-instruccion esparce-dos como
inicio
mientras no-orientado-al-norte hacer
gira-izquierda;
mientras algun-zumbador-en-la-mochila hacer
inicio
deja-zumbador;
deja-zumbador;
si frente-libre entonces
avanza;
fin;
fin;
    inicia-ejecucion
    ubicate;
    gira-izquierda;
    gira-izquierda;
    si frente-libre entonces
    inicio
    busca-uno;
    ubicate;
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
    si junto-a-zumbador entonces
    coge-zumbador;
    mientras no-orientado-al-este hacer
    gira-izquierda;
    si frente-libre entonces
    avanza;
    si junto-a-zumbador entonces
        inicio
        coge-zumbador;
        coge-zumbador;
            si junto-a-zumbador entonces
            inicio
            coge-zumbador;
            mientras no-orientado-al-oeste hacer
            gira-izquierda;
            avanza;
            deja-zumbador;
            gira-izquierda;
            gira-izquierda;
            avanza;
            fin;
         deja-zumbador;
         deja-zumbador;

        fin;
    deja-zumbador;
    deja-zumbador;
    mientras no-orientado-al-oeste hacer
    gira-izquierda;
    avanza;
    mientras no-orientado-al-norte hacer
    gira-izquierda;
    fin;
    mientras algun-zumbador-en-la-mochila hacer
    deja-zumbador;
    mientras no-orientado-al-norte hacer
    gira-izquierda;
    si frente-libre entonces
    avanza;
    busca-dos;
    ubicate;
    mientras no-orientado-al-este hacer
    gira-izquierda;
    si frente-libre entonces
    inicio
        avanza;
        si junto-a-zumbador entonces
        inicio
        coge-zumbador;
        gira-izquierda;
        gira-izquierda;
        avanza;
        deja-zumbador;
        gira-izquierda;
        gira-izquierda;
        avanza;
        fin;
        fin;
    mientras algun-zumbador-en-la-mochila hacer
    deja-zumbador;
    si frente-libre entonces
    avanza;
    recoge-faltante;
    ubicate;
    mientras junto-a-zumbador hacer
    coge-zumbador;
    esparce-uno;
    ubicate;
    mientras no-orientado-al-este hacer
    gira-izquierda;
    si frente-libre entonces
    inicio
    avanza;
    mientras junto-a-zumbador hacer
    coge-zumbador;
    esparce-dos;

    fin;
    fin;


        apagate;
    termina-ejecucion
finalizar-programa
