iniciar-programa
define-nueva-instruccion g(n) como
repetir n veces
gira-izquierda;
define-nueva-instruccion cuenta como
inicio
     si no-junto-a-zumbador entonces
     inicio
          avanza;
          cuenta;
          deja-zumbador;
     fin
     sino
     inicio
          g(2);
          mientras frente-libre hacer
          avanza;
          g(1);
          repetir 2 veces avanza;
          g(1);
          avanza;

     fin;
fin;
define-nueva-instruccion cont(n) como
inicio
      si junto-a-zumbador entonces
      inicio
            coge-zumbador;
            cont(sucede(n));
      fin
      sino
      inicio
             repetir n veces
             deja-zumbador;
             g(3);
             avanza;
             repetir n veces
             deja-zumbador;
             g(2);
             avanza;
             g(3);
      fin;
fin;
define-nueva-instruccion compara(n) como
inicio
      repetir n veces
      inicio
      si junto-a-zumbador entonces
       coge-zumbador
      sino
      inicio
           repetir precede(n) veces
           deja-zumbador;
           g(3);
      fin;
      fin;
      si junto-a-zumbador y no-orientado-al-este entonces
      inicio
           repetir n veces
           deja-zumbador;
      fin;
      si no-junto-a-zumbador y no-orientado-al-este entonces
      inicio
          repetir n veces
          deja-zumbador;
          apagate;
      fin;
fin;
define-nueva-instruccion k(n) como
inicio
      si junto-a-zumbador entonces
      inicio
            si junto-a-zumbador entonces
            coge-zumbador;
            k(sucede(n));
      fin
      sino
      inicio
             repetir n veces
             deja-zumbador;
             avanza;
             compara(n);
             mientras no-orientado-al-oeste hacer
             g(1);
             avanza;
             g(1);
             avanza;
             g(2);
      fin;
fin;
define-nueva-instruccion corre como
inicio
      cont(0);
      avanza;
      cont(0);
      g(2);
      avanza; avanza;
      deja-zumbador;
      g(2);
      avanza;
      g(3);
      avanza;
      g(1);
      k(0);
fin;
    inicia-ejecucion
    repetir 3 veces
    avanza;
    g(3);
    cuenta;
    g(2);
    avanza;
    g(3);
    mientras algun-zumbador-en-la-mochila hacer
    corre;
        apagate;
    termina-ejecucion
finalizar-programa
