iniciar-programa
define-nueva-instruccion vuelta como
inicio
repetir 2 veces gira-izquierda;
fin;
define-nueva-instruccion paso como
inicio
si frente-libre entonces avanza;
fin;
define-nueva-instruccion checar como
inicio
paso;
si no-junto-a-zumbador entonces inicio
vuelta;
repetir 2 veces paso;
fin;
si no-junto-a-zumbador entonces inicio
vuelta; paso;
fin;
si no-junto-a-zumbador entonces inicio
gira-izquierda; paso;
fin;
si no-junto-a-zumbador entonces inicio
vuelta;
repetir 2 veces paso;
fin;
fin;
define-nueva-instruccion pared como
inicio
si frente-bloqueado y izquierda-libre y derecha-libre entonces inicio
gira-izquierda; paso;
si no-junto-a-zumbador entonces inicio
vuelta;
repetir 2 veces paso;
fin;
si no-junto-a-zumbador entonces inicio
vuelta; paso;
apagate;
fin;
fin;
si frente-bloqueado y derecha-bloqueada entonces inicio
gira-izquierda;
mientras junto-a-zumbador hacer avanza;
fin;
si frente-bloqueado y izquierda-bloqueada entonces inicio
repetir 3 veces gira-izquierda;
mientras junto-a-zumbador hacer avanza;
fin;
fin;
define-nueva-instruccion walls como
inicio
si izquierda-bloqueada entonces inicio
repetir 3 veces gira-izquierda;
paso;
si no-junto-a-zumbador entonces inicio
vuelta; paso;
apagate;
fin;
fin;
si derecha-bloqueada entonces inicio
gira-izquierda; paso;
si no-junto-a-zumbador entonces inicio
vuelta; paso;
apagate;
fin;
fin;
fin;
    inicia-ejecucion
    checar;
    mientras junto-a-zumbador hacer
    inicio
    si frente-bloqueado entonces pared;
    si junto-a-zumbador entonces paso;
    si no-junto-a-zumbador entonces
    inicio
    vuelta;  paso;  vuelta;
    si izquierda-libre y derecha-libre entonces inicio
    gira-izquierda;  paso;
    si no-junto-a-zumbador entonces inicio
    vuelta;
    repetir 2 veces paso;
    si no junto-a-zumbador entonces inicio
    vuelta; paso;
    apagate;
    fin;
    fin;
    fin
    sino inicio
    walls;
    fin;
    fin;
    fin;
termina-ejecucion
finalizar-programa
