iniciar-programa

define-nueva-instruccion gira(n) como inicio
repetir n veces gira-izquierda;
FIN;

define-nueva-instruccion adios como inicio
repetir 100 veces deja-zumbador;
apagate;
FIN;

define-nueva-instruccion joder como inicio
mientras frente-libre hacer inicio
si no junto-a-zumbador entonces adios;
si junto-a-zumbador entonces coge-zumbador sino adios;
avanza;
FIN;

si frente-bloqueado y izquierda-bloqueada y derecha-bloqueada y orientado-al-este entonces inicio
gira(2);
si junto-a-zumbador entonces coge-zumbador;
si no junto-a-zumbador entonces adios;
FIN;


si frente-bloqueado y derecha-bloqueada y orientado-al-norte o izquierda-bloqueada y frente-bloqueado y orientado-al-sur entonces inicio
gira(2);
si junto-a-zumbador entonces coge-zumbador;
si no junto-a-zumbador entonces adios;
FIN;


si frente-bloqueado y izquierda-libre y orientado-al-este entonces inicio
si junto-a-zumbador entonces coge-zumbador sino adios;
gira(1);
avanza;
si no junto-a-zumbador entonces adios;
gira(1);
FIN;

si frente-bloqueado y  derecha-libre y orientado-al-oeste entonces inicio
si junto-a-zumbador entonces coge-zumbador sino adios;
gira(3);
avanza;
si no junto-a-zumbador entonces adios;
gira(3);
FIN;


si frente-bloqueado y  izquierda-libre y derecha-bloqueada  y orientado-al-oeste entonces inicio
si junto-a-zumbador entonces coge-zumbador sino adios;
 mientras no orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira(3);
    mientras frente-libre hacer avanza;
    gira(2);
    FIN;
si frente-bloqueado y izquierda-bloqueada y derecha-libre y orientado-al-este entonces inicio
si junto-a-zumbador entonces coge-zumbador sino adios;
 mientras no orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira(3);
    mientras frente-libre hacer avanza;
    gira(2);
FIN;
FIN;

    inicia-ejecucion
     mientras no orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira(3);
    mientras frente-libre hacer avanza;
    gira(2);
    si frente-bloqueado y izquierda-bloqueada entonces adios;
    si frente-bloqueado y izquierda-libre entonces gira(1);
    mientras frente-libre y junto-a-zumbador hacer inicio
    joder;
    si no junto-a-zumbador entonces adios;
   FIN;

        apagate;
    termina-ejecucion
finalizar-programa
