iniciar-programa
define-nueva-instruccion gira (j) como inicio
repetir j veces gira-izquierda;
fin;

define-nueva-instruccion busca-calcetin como inicio
   mientras frente-libre y no-junto-a-zumbador hacer inicio
   mientras frente-libre y no-junto-a-zumbador hacer avanza;
    si frente-bloqueado y no-junto-a-zumbador y derecha-libre entonces inicio
     gira (3);
     si frente-libre entonces avanza;
     gira (3);
     mientras frente-libre hacer avanza;
    gira (2);
   fin;
   fin;
  fin;
(*----------------------------------------------------*)
                                                (* Se ha encontrado un calcetin  SIN PAREJA!!! *)
  define-nueva-instruccion sin-pareja como inicio
   gira-izquierda;
    mientras frente-libre hacer avanza;
     deja-zumbador;
      gira-izquierda;
      avanza;
       gira (2);
       mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
      avanza;
      gira (3);
     avanza;
     gira (3);
    mientras frente-libre hacer avanza;
   gira-izquierda;
  fin;


(*---------------------------------------------------*)

define-nueva-instruccion compara (n) como inicio
 si no si-es-cero (n) y junto-a-zumbador entonces inicio
   coge-zumbador;
   compara (precede(n));

   deja-zumbador;

    fin
    sino inicio

 (*Se ha encontrado un PAR!!*)
    si si-es-cero (n) y no-junto-a-zumbador entonces gira (2);

    fin;
fin;
 (*---------------------------------------------------*)

 define-nueva-instruccion color (n) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
  color (sucede(n));

  fin
  sino inicio

   busca-calcetin;

mientras orientado-al-oeste hacer inicio
   si junto-a-zumbador entonces compara (n);

         si frente-bloqueado y derecha-bloqueada y orientado-al-oeste entonces inicio
          sin-pareja;
         fin;

                                             (*NO es su pareja :( *)
      si orientado-al-oeste entonces inicio
       si frente-libre entonces inicio avanza; fin sino inicio
        gira (3);
         si frente-libre entonces avanza;
         gira (3);
         mientras frente-libre hacer avanza;
        gira (2);
        fin;
       busca-calcetin;
      fin;
fin;

      si orientado-al-este entonces inicio   (* Se encontro un PAR! :D *)
      mientras junto-a-zumbador hacer coge-zumbador;
       gira (2);
         mientras frente-libre hacer avanza;
          gira-izquierda;
           mientras frente-libre hacer avanza;
           gira-izquierda;                                              
           avanza;
           gira (2);
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           avanza;
          gira (3);
          avanza;
         gira (3);
        mientras frente-libre hacer avanza;
       gira (2);
      fin;


   fin;

  fin;


(*_________________________________________________________*)
   inicia-ejecucion
   mientras no-orientado-al-norte hacer gira-izquierda;
   avanza;
   gira (3);
   mientras frente-libre hacer avanza;
   gira (2);

   si junto-a-zumbador entonces color (0);


   mientras frente-libre y no-junto-a-zumbador hacer inicio
  mientras no-orientado-al-oeste hacer gira-izquierda;
   busca-calcetin;
      si junto-a-zumbador entonces  color (0);
   fin;

        apagate;
    termina-ejecucion
finalizar-programa
