iniciar-programa
define-nueva-instruccion dejauno como inicio
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    gira-izquierda;
    mientras junto-a-zumbador hacer
    avanza;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;

fin;

define-nueva-instruccion dejados como inicio
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    avanza;
    gira-izquierda;
    mientras junto-a-zumbador hacer
    avanza;
    deja-zumbador;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;

fin;

define-nueva-instruccion dejapareja como inicio
        gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    gira-izquierda;
    mientras junto-a-zumbador y frente-libre hacer
    avanza;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    avanza;
    gira-izquierda;
    mientras frente-libre y junto-a-zumbador hacer
    avanza;
    deja-zumbador;
    deja-zumbador;
    gira-izquierda;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;

fin;

define-nueva-instruccion coje como inicio
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
         si junto-a-zumbador entonces
         inicio
         coge-zumbador;
             si junto-a-zumbador entonces
             inicio
                     coge-zumbador;
                     si no-junto-a-zumbador entonces
                     dejapareja;
             fin;
             si no-junto-a-zumbador entonces
                 dejados;

         fin;
         si no-junto-a-zumbador y orientado-al-norte entonces
         dejauno;
    gira-izquierda;
    avanza;
    avanza;
    gira-izquierda;
    fin;
fin;
define-nueva-instruccion camb como inicio
    repetir 3 veces
    gira-izquierda;
    si frente-bloqueado entonces
    apagate;
    si frente-libre entonces
    avanza;
    repetir 3 veces
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    gira-izquierda;
fin;
define-nueva-instruccion anda como inicio
    mientras no-junto-a-zumbador hacer
    inicio
    si frente-bloqueado entonces
    camb;
    si frente-libre y no-junto-a-zumbador entonces
    avanza;
    fin;
    mientras junto-a-zumbador hacer
    coje;
fin;
define-nueva-instruccion iniciar como inicio
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    avanza;
    avanza;
    gira-izquierda;
    mientras frente-libre o frente-bloqueado hacer
    anda;
fin;









define-nueva-instruccion cam como inicio
gira-izquierda;
avanza;
gira-izquierda;
mientras frente-libre hacer
avanza;
gira-izquierda;
gira-izquierda;

fin;
define-nueva-instruccion regresaypon como inicio
gira-izquierda;
gira-izquierda;
mientras frente-libre hacer
avanza;
gira-izquierda;
mientras frente-libre hacer
avanza;
gira-izquierda;
mientras junto-a-zumbador hacer
inicio
si frente-libre entonces
avanza;
si frente-bloqueado entonces
cam
fin;
mientras algun-zumbador-en-la-mochila hacer
deja-zumbador;
si frente-bloqueado entonces
cam;
si frente-libre entonces
avanza;
fin;

define-nueva-instruccion cogeyve como inicio
mientras junto-a-zumbador hacer
coge-zumbador;
regresaypon;

fin;

define-nueva-instruccion cambio como inicio
gira-izquierda;
si frente-libre entonces
inicio
avanza;
gira-izquierda;
mientras frente-libre hacer
avanza;
gira-izquierda;
gira-izquierda;
fin;
si frente-bloqueado y no-junto-a-zumbador entonces
iniciar;
si frente-bloqueado y junto-a-zumbador entonces
inicio
mientras no-orientado-al-norte hacer
gira-izquierda;
cogeyve;
fin;
fin;


define-nueva-instruccion recolecta como inicio
     mientras no-junto-a-zumbador hacer
     inicio
         si frente-bloqueado entonces
         cambio;
         si frente-libre y no-junto-a-zumbador entonces
         avanza;

     fin;
     si junto-a-zumbador entonces
     cogeyve;
fin;

    inicia-ejecucion
    mientras no-orientado-al-este hacer
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    repetir 3 veces
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    repetir 2 veces
    gira-izquierda;
    mientras frente-libre o frente-bloqueado hacer
    recolecta;
        apagate;
    termina-ejecucion
finalizar-programa
