iniciar-programa
  define-nueva-instruccion g(s) como repetir s veces gira-izquierda;
  define-nueva-instruccion vira como inicio
    g(2);
        mientras frente-libre hacer avanza;
        g(1);
        avanza;
         g(1);
  fin;
    define-nueva-instruccion buscar-calcetin(p) como inicio
      si junto-a-zumbador y orientado-al-oeste entonces inicio
        coge-zumbador;
          buscar-calcetin(sucede(p));
      fin;
      si algun-zumbador-en-la-mochila entonces inicio
        mientras frente-libre hacer avanza;
        g(1);
         mientras frente-libre hacer avanza;
         g(1);
         avanza;
         mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
         g(2);
         avanza;
         g(3);
         mientras frente-libre hacer avanza;
         g(3);
      fin;
      mientras no-junto-a-zumbador  y frente-libre y orientado-al-este hacer avanza;
       si junto-a-zumbador y orientado-al-este entonces inicio
           repetir p veces inicio
             si no-junto-a-zumbador entonces inicio
              mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
             si frente-bloqueado entonces vira;
            si frente-libre  entonces  avanza;
               si derecha-bloqueada y izquierda-bloqueada entonces inicio
               coge-zumbador;
               g(2);
               avanza;
               deja-zumbador;
               g(2);
               avanza;
               g(2);
               fin;
              si orientado-al-este entonces buscar-calcetin(p);
              fin;
             si orientado-al-este entonces coge-zumbador;
           fin;
           si junto-a-zumbador y orientado-al-este entonces inicio
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           si frente-bloqueado entonces vira;
           si frente-libre entonces avanza;
                si derecha-bloqueada y izquierda-bloqueada entonces inicio
               coge-zumbador;
               g(2);
               avanza;
               deja-zumbador;
               g(2);
               avanza;
               g(2);
               fin;
             si orientado-al-este entonces buscar-calcetin(p);
           fin;
           si no-junto-a-zumbador y orientado-al-este entonces inicio
           g(2);
           mientras frente-libre hacer avanza;
           g(1);
           mientras frente-libre hacer avanza;
           g(1);
           avanza;
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           g(2);
           sal-de-instruccion;
           fin;
       fin;
       si frente-bloqueado y derecha-bloqueada y ningun-zumbador-en-la-mochila entonces inicio
        si si-es-cero (p) entonces apagate;
         g(2);
         mientras frente-libre hacer avanza;
         g(1);
         mientras frente-libre hacer avanza;
         g(1);
         avanza;
         coge-zumbador;
         g(2);
         avanza;
         deja-zumbador;
         g(2);
         avanza;
         g(2);
         sal-de-instruccion;
       fin;
       si frente-bloqueado y orientado-al-este entonces inicio
         vira;
         buscar-calcetin(p);
       fin;
      fin;
    inicia-ejecucion
          mientras no-orientado-al-norte hacer gira-izquierda;
          mientras frente-libre hacer avanza;
          g(3);
          mientras frente-libre hacer inicio
            mientras no-junto-a-zumbador y frente-libre hacer avanza;
            si junto-a-zumbador entonces inicio
            g(2);
            buscar-calcetin(0);
            fin;
             si derecha-bloqueada y no-junto-a-zumbador y orientado-al-este entonces apagate;
            si frente-bloqueado entonces inicio
              vira;
            fin;
            si orientado-al-oeste entonces inicio
              mientras frente-libre hacer avanza;
          g(3);
           mientras frente-libre hacer avanza;
          g(3);
          fin;
          si derecha-bloqueada y no-junto-a-zumbador entonces inicio
               avanza;
                 mientras junto-a-zumbador  hacer coge-zumbador;
                 apagate;
             fin;
              fin;
              avanza;
              mientras junto-a-zumbador  hacer coge-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
