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

define-nueva-instruccion vamos(n) como inicio
si frente-libre y orientado-al-este entonces inicio
avanza;
si frente-libre y orientado-al-este entonces inicio
avanza;
fin
sino inicio
girando(1);

mientras derecha-bloqueada y frente-libre hacer
avanza;
girando(3);
si frente-libre entonces
avanza;
girando(3);
mientras frente-libre hacer
avanza;
girando(1);
fin;

si orientado-al-este  entonces
vamos(sucede(0));
fin;
si frente-bloqueado y derecha-bloqueada y orientado-al-este entonces inicio
gira-izquierda;
mientras derecha-bloqueada y orientado-al-norte y frente-libre hacer
avanza;
si derecha-libre entonces inicio
girando(3);
avanza;
girando(3);
mientras frente-libre hacer
avanza;
girando(1);
vamos(n);
fin;
fin
sino
si frente-bloqueado y derecha-libre y orientado-al-este  entonces inicio
girando(3);
mientras frente-libre y orientado-al-sur hacer
avanza;
gira-izquierda;
vamos(n);
fin;
(*empieza!!*)
si frente-bloqueado y derecha-bloqueada y izquierda-libre y orientado-al-norte  entonces inicio
girando(1);
fin;
si frente-libre entonces inicio
repetir n veces
avanza;
si frente-bloqueado y derecha-libre entonces inicio
girando(3);
mientras izquierda-bloqueaDa y frente-libre hacer
avanza;
fin
sino
si frente-bloqueado  y derecha-bloqueada entonces inicio
gira-izquierda;
mientras derecha-bloqueada hacer
avanza;
girando(3);
fin;
fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer
    gira-izquierda;
      vamos(0);
            apagate;
    termina-ejecucion
finalizar-programa

