iniciar-programa
define-nueva-instruccion este como inicio
   mientras no-orientado-al-este hacer inicio
       gira-izquierda;
   fin;
fin;
define-nueva-instruccion sur como inicio
   mientras no-orientado-al-sur hacer inicio
       gira-izquierda;
   fin;
fin;
define-nueva-instruccion oeste como inicio
   mientras no-orientado-al-oeste hacer inicio
       gira-izquierda;
   fin;
fin;
define-nueva-instruccion norte como inicio
   mientras no-orientado-al-norte hacer inicio
       gira-izquierda;
   fin;
fin;
define-nueva-instruccion ir-b1 como inicio
   repetir 5 veces inicio
       avanza;
   fin;
   este;
   avanza;
   sur;
   avanza;
   norte;
fin;
define-nueva-instruccion coge como inicio
   mientras junto-a-zumbador hacer inicio
       coge-zumbador;
   fin;
fin;
define-nueva-instruccion recoger como inicio
   mientras junto-a-zumbador y frente-libre hacer inicio
       avanza;
   fin;
   si junto-a-zumbador y frente-bloqueado entonces inicio
       sur;
       coge;
   fin;
   si no-junto-a-zumbador y frente-libre entonces inicio
       sur;
   fin;
   si frente-libre entonces inicio
       avanza;
   fin;
   mientras junto-a-zumbador hacer inicio
      coge;
       mientras frente-libre y no junto-a-zumbador hacer inicio
          avanza;
       fin;
   fin;
   si frente-bloqueado entonces inicio
       este;
   fin;
   si frente-libre entonces inicio
      avanza;
      norte;
   fin sino inicio
       norte;
       avanza;
       oeste;
       sal-de-instruccion;
    fin;
    recoger;
fin;
define-nueva-instruccion dejar como inicio
    mientras frente-libre hacer inicio
       avanza;
    fin;
    si frente-bloqueado entonces inicio
        sur;
    fin;
    mientras frente-libre hacer inicio
       avanza;
    fin;
    si frente-bloqueado entonces inicio
        este;
        avanza;
        avanza;
        avanza;
        avanza;
        avanza;
    fin;
    mientras algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
    fin;
fin;
define-nueva-instruccion ir-b2 como inicio
   oeste;
   repetir 5 veces inicio
       avanza;
   fin;
    norte;
    repetir 5 veces inicio
        avanza;
    fin;
    este;
    repetir 7 veces inicio
        avanza;
    fin;
    sur;
    avanza;
    norte;
fin;
define-nueva-instruccion dejar-b2 como inicio
    mientras frente-libre hacer inicio
        avanza;
    fin;
    si frente-bloqueado entonces inicio
        sur;
    fin;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    si frente-bloqueado entonces inicio
        este;
        avanza;
        avanza;
        avanza;
        avanza;
    fin;
    mientras algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
   fin;
fin;
define-nueva-instruccion comparar como inicio
    mientras junto-a-zumbador hacer inicio
        este;
        coge-zumbador;
        avanza;
        oeste;
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            avanza;
        fin sino inicio
            avanza;
            deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
fin;

define-nueva-instruccion vacia como inicio
    oeste;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    si frente-bloqueado entonces inicio
        norte;
    fin;
    repetir 15 veces inicio
        avanza;
    fin;
    mientras algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
    fin;
    sur;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    si frente-bloqueado entonces inicio
        este;
    fin;
    mientras no-junto-a-zumbador y frente-libre hacer inicio
        avanza;
    fin;
fin;

define-nueva-instruccion mitad como inicio
    mientras junto-a-zumbador hacer inicio
        coge-zumbador;
    fin;
    mientras algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
        oeste;
        avanza;
        deja-zumbador;
        este;
        avanza;
    fin;
    oeste;
    avanza;
fin;

define-nueva-instruccion sobra como inicio
    mientras junto-a-zumbador hacer inicio
        coge-zumbador;
    fin;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    mientras frente-bloqueado y algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
    fin;
fin;



    inicia-ejecucion
    ir-b1;
    recoger;
    dejar;
    ir-b2;
    recoger;
    dejar-b2;
    comparar;
    vacia;
    mitad;
    sobra;
        apagate;
    termina-ejecucion
finalizar-programa
