iniciar-programa
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;

define-nueva-instruccion buscaminas como
inicio
  mientras orientado-al-norte hacer
    inicio
      mientras no-junto-a-zumbador y frente-libre hacer avanza;
      si junto-a-zumbador entonces
        inicio
          repetir 8 veces si junto-a-zumbador entonces coge-zumbador;
          si junto-a-zumbador entonces
            inicio
              coge-zumbador;
              si junto-a-zumbador entonces mientras junto-a-zumbador hacer coge-zumbador
              sino repetir 9 veces deja-zumbador;
            fin;
        fin;
     si frente-libre entonces avanza
     sino
      inicio
        repetir 2 veces gira-izquierda;
        mientras frente-libre hacer avanza;
        si izquierda-libre entonces
          inicio
            gira-izquierda;
            avanza;
            gira-izquierda;
          fin;
       si izquierda-bloqueada entonces sal-de-instruccion;
      fin;
    fin;
fin;

define-nueva-instruccion marcar como
inicio
  norte;
  si frente-libre entonces
    inicio
      avanza;
      deja-zumbador;
      si izquierda-libre entonces
        inicio
          gira-izquierda;
          avanza;
          deja-zumbador;
          repetir 2 veces gira-izquierda;
          avanza;
          gira-izquierda;
        fin;
      repetir 2 veces gira-izquierda;
      avanza;
      norte;
    fin;
   sur;
  si frente-libre entonces
    inicio
      avanza;
      deja-zumbador;
      si izquierda-libre entonces
        inicio
          gira-izquierda;
          avanza;
          deja-zumbador;
          repetir 2 veces gira-izquierda;
          avanza;
          gira-izquierda;
        fin;
      repetir 2 veces gira-izquierda;
      avanza;
      sur;

    fin;
 oeste;
  si frente-libre entonces
    inicio
      avanza;
      deja-zumbador;
      si izquierda-libre entonces
        inicio
          gira-izquierda;
          avanza;
          deja-zumbador;
          repetir 2 veces gira-izquierda;
          avanza;
          gira-izquierda;
        fin;
      repetir 2 veces gira-izquierda;
      avanza;
      oeste;
    fin;
   este;
  si frente-libre entonces
    inicio
      avanza;
      deja-zumbador;
      si izquierda-libre entonces
        inicio
          gira-izquierda;
          avanza;
          deja-zumbador;
          repetir 2 veces gira-izquierda;
          avanza;
          gira-izquierda;
        fin;
      repetir 2 veces gira-izquierda;
      avanza;
      este;
    fin;
norte;
fin;

define-nueva-instruccion detectamina como
inicio
 si junto-a-zumbador entonces
   inicio
     si junto-a-zumbador entonces coge-zumbador;
     si junto-a-zumbador entonces coge-zumbador
     sino
      inicio
       deja-zumbador;
       sal-de-instruccion;
      fin;
     si junto-a-zumbador entonces coge-zumbador
     sino
      inicio
       repetir 2 veces deja-zumbador;
       sal-de-instruccion;
      fin;
     si junto-a-zumbador entonces coge-zumbador
     sino
      inicio
       repetir 3 veces deja-zumbador;
       sal-de-instruccion;
      fin;
     si junto-a-zumbador entonces coge-zumbador
     sino
      inicio
       repetir 4 veces deja-zumbador;
       sal-de-instruccion;
      fin;
     si junto-a-zumbador entonces coge-zumbador
     sino
      inicio
       repetir 5 veces deja-zumbador;
       sal-de-instruccion;
      fin;
      si junto-a-zumbador entonces coge-zumbador
     sino
      inicio
       repetir 6 veces deja-zumbador;
       sal-de-instruccion;
      fin;
     si junto-a-zumbador entonces coge-zumbador
     sino
      inicio
       repetir 7 veces deja-zumbador;
       sal-de-instruccion;
      fin;
     si junto-a-zumbador entonces
       inicio
         repetir 8 veces deja-zumbador;
         marcar;
         sal-de-instruccion;
       fin
     sino
      inicio
       repetir 8 veces deja-zumbador;
       sal-de-instruccion;
      fin;
   fin;
fin;

define-nueva-instruccion colocamina como
inicio
  mientras orientado-al-norte hacer
    inicio
      mientras no-junto-a-zumbador y frente-libre hacer avanza;
      detectamina;
      si frente-libre entonces avanza
      sino
        inicio
          sur;
          mientras frente-libre hacer avanza;
          si izquierda-libre entonces
            inicio
              gira-izquierda;
              avanza;
              gira-izquierda;
            fin
          sino  sal-de-instruccion;
        fin;
    fin;
fin;

    inicia-ejecucion
    oeste;
    mientras frente-libre hacer avanza;
    sur;
    mientras frente-libre hacer avanza;
    norte;
    buscaminas;
    oeste;
    mientras frente-libre hacer avanza;
    norte;
    colocamina;
        apagate;
    termina-ejecucion
finalizar-programa
 