iniciar-programa
define-nueva-instruccion haku como
inicio
  si junto-a-zumbador y orientado-al-oeste y frente-bloqueado entonces
  inicio
        repetir 3 veces gira-izquierda;
  si frente-libre entonces
  inicio
        avanza;
        fin;
        fin;
  si izquierda-bloqueada y derecha-libre entonces
  inicio
apagate;
        fin;

  si izquierda-libre y derecha-bloqueada entonces
  inicio
        repetir 2 veces gira-izquierda;
        fin
  sino
  inicio
apagate;
        fin;

 si orientado-al-sur y frente-libre entonces
 inicio
       avanza;
       repetir 3 veces gira-izquierda;
       fin;
       fin;

define-nueva-instruccion  deja(n) como inicio
  repetir n veces
  deja-zumbador;
    fin;

 define-nueva-instruccion gira-derecha como inicio
     gira-izquierda;
     gira-izquierda;
     gira-izquierda;
     fin;



define-nueva-instruccion busca como inicio
  mientras frente-libre y izquierda-bloqueada  hacer
  inicio
        avanza;
        fin;
  si junto-a-zumbador y orientado-al-oeste y izquierda-bloqueada entonces
  inicio
haku;
        fin;
  si orientado-al-oeste y izquierda-bloqueada y frente-bloqueado y derecha-libre  y junto-a-zumbador entonces inicio
     repetir 2 veces gira-izquierda;
     fin;
  si frente-bloqueado y orientado-al-sur y junto-a-zumbador y derecha-bloqueada y izquierda-bloqueada entonces
  inicio
apagate;
        fin;
  si frente-libre y orientado-al-este y junto-a-zumbador y derecha-bloqueada entonces
  inicio
       repetir 2 veces gira-izquierda;
       fin;
  si frente-bloqueado y izquierda-bloqueada y algun-zumbador-en-la-mochila entonces
  inicio
        deja(5);
        gira-derecha;
    si orientado-al-sur y junto-a-zumbador y derecha-bloqueada y izquierda-bloqueada y frente-bloqueado entonces
    inicio
apagate;
          fin;
          fin;
    si frente-bloqueado y izquierda-bloqueada y algun-zumbador-en-la-mochila entonces
    inicio
         deja(5);
         gira-derecha;
         fin;
    si izquierda-libre y algun-zumbador-en-la-mochila entonces inicio
        deja(5);
        gira-izquierda;
    si frente-libre entonces
    inicio
          avanza;
          fin;
      si junto-a-zumbador y derecha-bloqueada y izquierda-bloqueada y frente-bloqueado y  orientado-al-sur entonces inicio
apagate;
           fin;
          fin;
         busca;
          fin;

    inicia-ejecucion
  mientras no orientado-al-norte hacer inicio
      gira-izquierda;
        fin;
     deja(5);
     si orientado-al-norte y derecha-bloqueada y izquierda-bloqueada y junto-a-zumbador entonces
     inicio
           repetir 3 veces gira-izquierda;
           deja(5);
           fin;

     si orientado-al-este y junto-a-zumbador y frente-bloqueado entonces
     inicio
          gira-izquierda;
          fin;
     busca;
apagate;
    termina-ejecucion
finalizar-programa



