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 orientar como
inicio
   norte;
   avanza;
   si junto-a-zumbador entonces
   inicio
      sur;
      avanza;
      norte;
      sal-de-instruccion;
   fin;
   repetir 2 veces gira-izquierda;
   avanza;

   sur;
   avanza;
   si junto-a-zumbador entonces
   inicio
      norte;
      avanza;
      sur;
      sal-de-instruccion;
   fin;
  repetir 2 veces gira-izquierda;
  avanza;
fin;

define-nueva-instruccion gira como
inicio
      si no-junto-a-zumbador entonces
      inicio
         repetir 2 veces gira-izquierda;
         avanza;
         gira-izquierda;
         avanza;

         si no-junto-a-zumbador entonces
         inicio
            repetir 2 veces gira-izquierda;
            repetir 2 veces avanza;
            si no-junto-a-zumbador entonces
            inicio
               repetir 2 veces gira-izquierda;
               avanza;
               gira-izquierda;
               avanza;
            fin;
         fin;
      fin;

fin;

define-nueva-instruccion suma1 como
inicio
   mientras junto-a-zumbador hacer
   inicio
      si junto-a-zumbador entonces deja-zumbador;
      avanza;
      si no-junto-a-zumbador entonces gira;
   fin;
fin;

define-nueva-instruccion recorre como
inicio
   mientras junto-a-zumbador y frente-libre hacer
   inicio
      si frente-libre entonces avanza;
      si no-junto-a-zumbador  entonces gira;
   fin;
fin;

define-nueva-instruccion revisa(n) como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      si junto-a-zumbador entonces
      inicio
        coge-zumbador;
        si junto-a-zumbador entonces revisa(sucede(n))
        sino
        inicio
           repetir sucede(n) veces repetir 2 veces deja-zumbador;
           deja-zumbador;
           avanza;
           si no-junto-a-zumbador entonces gira;
        fin;
      fin
      sino
      inicio
         deja-zumbador;
         repetir 2 veces gira-izquierda;
         recorre;
         si no-junto-a-zumbador entonces
         inicio
            repetir 2 veces gira-izquierda;
            avanza;
         fin;

         si frente-libre entonces inicio
            este;
           avanza;
         fin;
         repetir n veces repetir 2 veces deja-zumbador;
         deja-zumbador;
         oeste;
         avanza;

      fin;

   fin;
fin;

define-nueva-instruccion impares como
inicio
   mientras junto-a-zumbador hacer
   inicio
      coge-zumbador;
      si junto-a-zumbador entonces revisa(0)
      sino
      inicio
         deja-zumbador;
         avanza;
         si no-junto-a-zumbador entonces gira;
      fin;

   fin;
fin;

define-nueva-instruccion pares(n) como
inicio
   mientras junto-a-zumbador hacer
   inicio
      si junto-a-zumbador y frente-libre entonces coge-zumbador;
      si junto-a-zumbador y frente-libre entonces pares(sucede(n))
      sino
      inicio
         si frente-libre entonces
         inicio
            avanza;
            si no-junto-a-zumbador entonces gira;
         fin
         sino
         inicio
            repetir n veces si junto-a-zumbador entonces coge-zumbador;
            apagate;
         fin;
      fin;
   fin;
fin;

    inicia-ejecucion

        orientar;
        suma1;
        repetir 2 veces gira-izquierda;
        avanza;
        recorre;
        repetir 2 veces gira-izquierda;
        avanza;
        impares;
        repetir 2 veces gira-izquierda;
        avanza;
        pares(0);
        apagate;
    termina-ejecucion
finalizar-programa
