iniciar-programa
define-nueva-instruccion norte como mientras no orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion este como mientras no orientado-al-este hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no orientado-al-oeste hacer gira-izquierda;

define-nueva-instruccion encontrar como
 inicio
   si frente-libre entonces avanza;
    si no junto-a-zumbador entonces
     inicio
      repetir 2 veces gira-izquierda;
      avanza;
       gira-izquierda;
        si frente-libre entonces avanza;
         si no junto-a-zumbador entonces
          inicio
          repetir 2 veces gira-izquierda;
           avanza;
           si frente-libre entonces avanza;
           fin;
            si no junto-a-zumbador entonces
             inicio
               repetir 2 veces gira-izquierda;
               avanza;
               repetir 3 veces gira-izquierda;
             fin;
     fin;
 fin;


define-nueva-instruccion arcoiris como
 inicio
si junto-a-zumbador entonces
   inicio
     mientras junto-a-zumbador   hacer
      inicio

       si frente-libre entonces avanza;
        si no junto-a-zumbador entonces
          inicio
            repetir 2 veces gira-izquierda;
            si frente-libre entonces   avanza;
             si frente-libre entonces
              inicio
              gira-izquierda;
               si frente-libre entonces
                inicio
               avanza;
                fin
                 sino
                  inicio
                   repetir 2 veces gira-izquierda;  
                  fin;
                si no junto-a-zumbador entonces
                 inicio
                   repetir 2 veces gira-izquierda;
                  si frente-libre entonces avanza;
                  si frente-libre entonces
                   inicio
                  avanza;
                   fin
                    sino
                     inicio
                       repetir 3 veces gira-izquierda;
                       mientras junto-a-zumbador hacer avanza;
                     fin;
                 fin;
                fin;
         fin;
         si frente-bloqueado y junto-a-zumbador entonces
            inicio
              si frente-bloqueado y derecha-libre y izquierda-libre entonces
               inicio
                gira-izquierda;
                si frente-libre entonces avanza;
                 si no junto-a-zumbador entonces
                  inicio
                    repetir 2 veces gira-izquierda;
                    avanza;
                    avanza;
                  fin;
                 fin;
                si frente-bloqueado y izquierda-bloqueada entonces
                 inicio
                   repetir 3 veces gira-izquierda;
                  si frente-libre entonces avanza
                 fin;
                si frente-bloqueado y derecha-bloqueada entonces
                 inicio
                   gira-izquierda;
                   si frente-libre entonces avanza;
                 fin;

            fin;
      fin;
     repetir 2 veces gira-izquierda;
      mientras no junto-a-zumbador  y frente-libre hacer avanza;
       gira-izquierda;
       si no junto-a-zumbador y frente-libre  entonces avanza;
        si no junto-a-zumbador entonces
         inicio
          repetir 2 veces gira-izquierda;
         si frente-libre entonces avanza;
         fin;

 fin;
fin;
       inicia-ejecucion
        encontrar;
        arcoiris;
        apagate;
    termina-ejecucion
finalizar-programa
