iniciar-programa

define-nueva-instruccion oeste como inicio
  mientras no orientado-al-oeste hacer inicio
    gira-izquierda;
   fin;
 fin;

 define-nueva-instruccion este como inicio
  mientras no orientado-al-este hacer inicio
  gira-izquierda;
  fin;
  fin;

define-nueva-instruccion regresa  como inicio

    mientras frente-libre hacer inicio
     avanza;
    fin;
    repetir 3 veces inicio
    gira-izquierda;
    fin;
    mientras izquierda-bloqueada hacer inicio
      avanza;
     fin;
      gira-izquierda;
      avanza;
       gira-izquierda;
      avanza;
      mientras frente-libre hacer inicio
        avanza;
       fin;
       repetir 3 veces inicio
         gira-izquierda;

      fin;
        mientras frente-libre hacer inicio
        avanza;
        fin;
 fin;

 define-nueva-instruccion cruzar como inicio
    mientras frente-libre hacer inicio
      avanza;
     fin;
     gira-izquierda;
      mientras derecha-bloqueada hacer inicio
        avanza;
       fin;
     repetir 3 veces inicio
     gira-izquierda;
     fin;
     avanza;
     repetir 3 veces inicio
     gira-izquierda;
     fin;
     avanza;
     mientras frente-libre hacer inicio
      avanza;
      fin;

 fin;

define-nueva-instruccion pasos(n) como inicio
 si frente-libre entonces inicio
    avanza;
    pasos(sucede(n));

 fin sino inicio
    este;
    cruzar;
 fin;
 si orientado-al-este entonces inicio
   avanza;
 fin sino inicio
     este;
 fin;
 fin;

define-nueva-instruccion juntar como inicio
 si junto-a-zumbador entonces inicio
      coge-zumbador;
      juntar;

    fin sino inicio
    oeste;
      pasos(0);

 fin;
    si orientado-al-oeste entonces inicio
   deja-zumbador;
   fin sino inicio
    oeste;
    fin;

 fin;

define-nueva-instruccion busca como inicio
   mientras no junto-a-zumbador hacer inicio
    si frente-libre entonces inicio
       avanza;
    fin sino inicio
        apagate;
    fin;
   fin;

 fin;

    inicia-ejecucion
    mientras algun-zumbador-en-la-mochila hacer inicio
    este;
    busca;
    juntar;
    regresa;
    fin;

        apagate;
    termina-ejecucion
finalizar-programa
