iniciar-programa
define-nueva-instruccion turn(e) como repetir e veces gira-izquierda;
  define-nueva-instruccion poste(k) como inicio
     si junto-a-zumbador entonces inicio
     coge-zumbador;
          poste(sucede(k));
     fin sino inicio
         repetir k veces deja-zumbador;
         turn(1);
         avanza;
         turn(3);
       repetir 4 veces inicio
         deja-zumbador;
       repetir k veces   avanza;
         mientras izquierda-bloqueada hacer inicio
             deja-zumbador;
             repetir k veces avanza;
         fin;
         turn(1);

          fin;
       fin;

  fin;
  define-nueva-instruccion vuelve como inicio
      mientras no orientado-al-oeste hacer gira-izquierda;
     mientras frente-libre hacer avanza;
      turn(1);
      si frente-libre entonces avanza;
      mientras no orientado-al-este hacer gira-izquierda;

  fin;

  define-nueva-instruccion cuenta como inicio

      si junto-a-zumbador y izquierda-bloqueada entonces inicio
          coge-zumbador;
          avanza;
          cuenta;
          vuelve;
           repetir 2 veces avanza;
           deja-zumbador;
      fin sino inicio
      si  no junto-a-zumbador entonces inicio
          avanza;
          cuenta;
          vuelve;
          repetir 3 veces avanza;
          deja-zumbador;

          fin sino inicio
               si izquierda-libre  y no orientado-al-sur entonces inicio
                   turn(1);
                   avanza;
                   cuenta;
               fin sino inicio
                 sal-de-instruccion;
               fin;
          fin;
          fin;

  fin;

    inicia-ejecucion
    mientras no orientado-al-este hacer gira-izquierda;
    avanza;
    poste(0);
    avanza;
    cuenta;
    turn(2);
  mientras frente-libre hacer  avanza;
  turn(2);
 repetir 2 veces avanza;
    repetir 4 veces deja-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
