iniciar-programa
Define-nueva-instruccion Gira(x) como
   Repetir x veces gira-izquierda;

Define-nueva-instruccion Orienta como
 inicio
   Mientras no-orientado-al-sur hacer Gira-izquierda;
     Mientras frente-libre hacer avanza;
      Gira(3);
       Mientras frente-libre hacer avanza;
        Gira(3);
 fin;
Define-nueva-instruccion cuenta como
 inicio
   Si frente-libre y orientado-al-oeste entonces inicio
     avanza;
      cuenta;
       deja-zumbador;
    fin
    sino
      inicio
        gira(1); avanza; gira(1); avanza; avanza;
      fin;
 fin;
Define-nueva-instruccion Acomoda(n) como
 inicio
   Si no(si-es-cero(n)) entonces inicio
    Si orientado-al-norte y no(si-es-cero(n)) entonces
     inicio
       Si izquierda-bloqueada entonces inicio
         avanza; gira(3);
       fin
       sino
        inicio
          gira(1);
          avanza;
          Gira(3);
          avanza;
          gira(3);
        fin;
       Acomoda(precede(n));
     fin
    sino
     inicio
        Si orientado-al-este y no(si-es-cero(n)) entonces inicio
            si frente-libre  entonces
             avanza;
            Acomoda(precede(n));
        fin;
     fin;
    fin
    Sino
     Si no(junto-a-zumbador) entonces
      deja-zumbador
       sino
         inicio
            Gira(2);
            Cuenta;
         fin;
 fin;
Define-nueva-instruccion Reparte(n) como
 inicio
    Si junto-a-zumbador entonces inicio
        coge-zumbador;
        Reparte(sucede(n));
    fin
     sino
      inicio
        Repetir n veces deja-zumbador;
       Mientras frente-libre y derecha-libre hacer
         Acomoda(n);
      fin;
 fin;

    inicia-ejecucion
     Orienta;
     Reparte(0);
     Orienta;
      Gira(3);
      avanza;
      Gira(1);
     Reparte(0);
     Deja-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
  