iniciar-programa
define-nueva-instruccion gira (r) como inicio
repetir r veces gira-izquierda;
fin;

define-nueva-instruccion bloqueado como inicio
 gira (2);
  mientras frente-libre hacer avanza;
   gira (3);
  avanza;
 gira (3);
fin;



define-nueva-instruccion contiguo como inicio
 repetir 4 veces inicio
  si frente-libre entonces inicio
   avanza;
    deja-zumbador;
     gira-izquierda;
     si frente-libre entonces inicio
      avanza;
       deja-zumbador;
       gira (2);
       avanza;
       gira (3);
       avanza;
       gira (3);
       fin
      sino inicio
     gira-izquierda;
    avanza;
   gira (3);
  fin;
 fin
 sino inicio
 gira-izquierda;
fin;

fin;

fin;



define-nueva-instruccion mina (k) como inicio
 si junto-a-zumbador y no si-es-cero (k) entonces inicio
  coge-zumbador;
   mina (precede(k));
    deja-zumbador;
    fin
   sino inicio
  si si-es-cero (k) entonces contiguo;
 fin;
fin;



    inicia-ejecucion

    mientras no-orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;
    mientras frente-libre hacer avanza;
    gira-izquierda;


  mientras frente-libre o izquierda-libre hacer inicio
     mientras frente-libre y no junto-a-zumbador hacer inicio
      avanza;
      si frente-bloqueado y izquierda-libre y no-junto-a-zumbador entonces bloqueado;
     fin;

    si junto-a-zumbador entonces mina (9);
    si frente-bloqueado y izquierda-bloqueada entonces apagate;
     si frente-libre entonces inicio
      avanza;
       fin
      sino inicio
     bloqueado;
    fin;

  fin;

  si junto-a-zumbador entonces mina (9);



        apagate;
    termina-ejecucion
finalizar-programa
