iniciar-programa
define-nueva-instruccion media-vuelta como  repetir 2 veces gira-izquierda;
define-nueva-instruccion gira-derecha como  repetir 3 veces gira-izquierda;

define-nueva-instruccion compara(n) como inicio
 repetir n veces
 si junto-a-zumbador y orientado-al-norte entonces inicio
  coge-zumbador;
 fin sino
 inicio
 mientras no orientado-al-sur hacer gira-izquierda;
 deja-zumbador;
 fin;

 si junto-a-zumbador y orientado-al-norte entonces inicio
  repetir n veces deja-zumbador;
 fin;
fin;




define-nueva-instruccion prueba(n) como inicio
  Compara(2);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(3);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(5);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(7);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(11);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(13);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(17);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(19);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(23);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(29);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(31);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(37);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(41);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(43);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(47);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(53);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(59);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(61);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(67);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(71);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(73);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(79);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(83);
  si orientado-al-norte y junto-a-zumbador entonces
  Compara(89);
  si orientado-al-norte y junto-a-zumbador entonces inicio
  Compara(97);
    si junto-a-zumbador y orientado-al-norte entonces inicio
     mientras no orientado-al-sur hacer gira-izquierda;
    fin;
  fin;


 fin;






define-nueva-instruccion recorre(n) como inicio
 si junto-a-zumbador entonces inicio
  prueba(n);
  si junto-a-zumbador y orientado-al-sur entonces inicio
  mientras junto-a-zumbador hacer coge-zumbador;
  mientras no orientado-al-norte hacer gira-izquierda;
  fin sino inicio
  mientras no orientado-al-norte hacer gira-izquierda;
  deja-zumbador;
  fin;
  avanza;
  recorre(n);
 fin sino inicio
  media-vuelta; avanza; mientras frente-libre hacer avanza; gira-izquierda; avanza;
  si junto-a-zumbador entonces inicio
  gira-izquierda; recorre(n);
  fin
  sino inicio
  media-vuelta; mientras frente-libre hacer avanza; media-vuelta;
  fin;
 fin;
 fin;
define-nueva-instruccion dos1(n) como inicio
 si frente-libre entonces inicio
  avanza;
  dos1(n);
  avanza;
 fin sino inicio
  gira-izquierda;
  si orientado-al-sur entonces inicio
   dos1(n);
   gira-derecha;
  fin sino inicio
  gira-izquierda;
  recorre(0);
  gira-izquierda;
  fin;
 fin;
 fin;
define-nueva-instruccion uno(n) como inicio
 si no orientado-al-oeste entonces inicio
  gira-izquierda;
  uno(n);
  gira-derecha;
 fin sino inicio
  dos1(0);
 fin;
 fin;

 define-nueva-instruccion busca1(n) como inicio
 mientras no orientado-al-oeste hacer inicio

  si frente-libre entonces inicio
  avanza;
  si junto-a-zumbador entonces inicio
   coge-zumbador;
   mientras no orientado-al-norte hacer gira-izquierda;
   busca1(n);
  fin
  sino
  si no junto-a-zumbador  entonces inicio
  media-vuelta; avanza; gira-izquierda;
  fin;
  fin sino
  si frente-bloqueado entonces inicio
  gira-derecha;
  fin;
 fin;

  si orientado-al-oeste entonces inicio
   si frente-libre entonces inicio
   avanza;
   fin sino inicio
   apagate;
   fin;
   si junto-a-zumbador entonces inicio
   coge-zumbador;
   mientras no orientado-al-norte hacer gira-izquierda;
   busca1(n);
   fin sino inicio
   media-vuelta; avanza; gira-izquierda; apagate;
   fin;
  fin;
 fin;
    inicia-ejecucion
    uno(0);
    media-vuelta;
    mientras no orientado-al-norte hacer gira-izquierda;
    si junto-a-zumbador entonces inicio
    coge-zumbador;
    busca1(0);
    fin sino apagate;

        apagate;
    termina-ejecucion
finalizar-programa
