iniciar-programa
define-nueva-instruccion girando(n) como
repetir n veces
gira-izquierda;

define-nueva-instruccion ordena(n) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
ordena(sucede(n));
fin
sino
si no-junto-a-zumbador entonces inicio
girando(2);
mientras frente-libre y orientado-al-oeste hacer
avanza;
girando(3);
avanza;
GIRANDo(3);
repetir n veces
avanza;
deja-zumbador;
girando(2);
mientras frente-libre hacer
avanza;
gira-izquierda;
avanza;
gira-izquierda;
mientras frente-libre y no-junto-a-zumbador y orientado-al-este haCER
avanza;
si junto-a-zumbador entonces inicio
coge-zumbador;
ordena(0);
fin;
fin;
si frente-bloqueado entonces inicio
girando(2);
mientras frente-libre y orientado-al-oeste hacer
avanza;
fin;
fin;

define-nueva-instruccion lol(n) como inicio
si no-junto-a-zumbador y frente-libre entonces inicio
avanza;
lol(sucede(n));
si orientado-al-sur entonces
deja-zumbador;
fin
sino
si junto-a-zumbador entonces inicio
girando(3);
avanza;
fin;
fin;


define-nueva-instruccion mide(n) como inicio
  si junto-a-zumbador entonces inicio
   coge-zumbador;
   lol(0);
 si junto-a-zumbador entonces inicio
 mientras no orientado-al-oeste hacer gira-izquierda;
 mientras frente-libre hacer avanza;
 girando(3);
 avanza;
 girando(3);
 mientras no junto-a-zumbador hacer avanza;
 mide(0);
 fin;
 fin
 sino inicio
 si no-junto-a-zumbador y frente-bloqueado entonces
 girando(3);
 fin;
fin;
define-nueva-instruccion cuenta(n) como inicio
si junto-a-zumbador entonces inicio
repetir n veces
coge-zumbador;
si junto-a-zumbador entonces inicio
repetir n veces
deja-zumbador;
si frente-libre entonces inicio
avanza;
cuenta(n);
fin
sino inicio
girando(2);
mientras frente-libre hacer
avanza;
girando(2);
cuenta(sucede(n));
fin;
fin
sino inicio
girando(2);
mientras frente-libre hacer
avanza;
mientras junto-a-zumbador hacer
coge-zumbador;
repetir n veces
deja-zumbador;
fin;
fin
sino inicio
si frente-libre entonces  inicio
avanza;
cuenta(n);
fin
sino inicio
girando(2);
mientras frente-libre hacer
avanza;
girando(2);
cuenta(sucede(n));
fin;
fin;
fin;

    inicia-ejecucion
    mientraS No-orientado-al-este hacer
    gira-izquierda;
    si junto-a-zumbador entonces
    coge-zumbador;
    ordena(0);
    gira-izquierda;
    avanza;
    girando(3);
    mientras no-junto-a-zumbador y frente-libre hacer
    avanza;
    si junto-a-zumbador entonces
    mide(0);

    mientras no-orientado-al-sur hacer
    gira-izquierda;
    mientras frente-libre y orientado-al-sur hacer
    avanza;
    girando(3);
    mientras frente-libre y orientado-al-oeste hacer
    avanza;
    girando(2);

    cuenta(1);

        apagate;
    termina-ejecucion
finalizar-programa
