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

define-nueva-instruccion medio como inicio
si junto-a-zumbador entonces
girando(2);
si frente-libre entonces
avanza;
si frente-libre entonces
avanza;
girando(1);
si frente-libre entonces
avanza;
si frente-libre entonces
avanza;
si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces
si no-junto-a-zumbador entonces
deja-zumbador;
apagate;
fin;



define-nueva-instruccion lol como inicio
si frente-libre y derecha-bloqueada entonces inicio
avanza;
lol;
fin;
si derecha-libre entonces inicio
girando(3);
avanza;
fin;
si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces inicio
si no-junto-a-zumbador entonces inicio
deja-zumbador;
fin
sino
si junto-a-zumbador entonces inicio
medio;
fin
sino

apagate;
fin;

si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces inicio
girando(2);
si frente-libre entonces
avanza;
girando(3);
si frente-libre entonces inicio
avanza;
lol
fin
sino inicio
gira-izquierda;
lol;
fin;
fin;
si frente-bloqueado y derecha-bloqueada entonces inicio
gira-izquierda;
lol;
fin;
lol;
fin;



    inicia-ejecucion
    mientras no-orientado-al-sur hacer
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    si frente-bloqueado y derecha-bloqueada y izquierda-bloqueada entonces inicio
    girando(2);
    fin;
    si frente-bloqueado y orientado-al-oeste entonces inicio
    apagate;
    fin
    sino inicio
    si frente-bloqueado y derecha-bloqueada y orientado-al-este entonces inicio
    lol;
    fin;
    lol;
    fin;




        apagate;
    termina-ejecucion
finalizar-programa
