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 interior como
  inicio
    mientras frente-bloqueado hacer gira-izquierda;
    deja-zumbador;
    mientras frente-libre hacer avanza;
    si izquierda-libre entonces
      inicio
        repetir 2 veces gira-izquierda;
        mientras no junto-a-zumbador hacer avanza;
        repetir 2 veces gira-izquierda;
      fin
    sino
      inicio
        repetir 2 veces gira-izquierda;
        mientras no junto-a-zumbador hacer avanza;
      fin;
     coge-zumbador;
  fin;

define-nueva-instruccion regreso como
  inicio
   repetir 2 veces gira-izquierda;
   mientras no junto-a-zumbador hacer
     inicio
       si frente-libre entonces avanza
       sino
         inicio
           si izquierda-libre entonces gira-izquierda
           sino repetir 3 veces gira-izquierda;
         fin;
     fin;
  fin;

define-nueva-instruccion contar como
  inicio
    si frente-bloqueado o izquierda-bloqueada o junto-a-zumbador entonces
      inicio
        si frente-libre entonces avanza
        sino
          inicio
            gira-izquierda;
            avanza;
          fin;
        contar;
          si frente-bloqueado o derecha-bloqueada entonces
            inicio
              si frente-libre entonces avanza
              sino
                inicio
                  repetir 3 veces gira-izquierda;
                  avanza;
                fin;
            fin;
      fin
    sino
      inicio
        regreso;

      fin;
  fin;

define-nueva-instruccion dejando1 como
   inicio
     mientras derecha-bloqueada o frente-bloqueado o junto-a-zumbador hacer
       inicio
         si no junto-a-zumbador entonces deja-zumbador;
         si frente-libre entonces avanza
         sino
           inicio
             repetir 3 veces gira-izquierda;
             avanza;
           fin;
       fin;
       si no junto-a-zumbador entonces deja-zumbador;
   fin;


 define-nueva-instruccion dejando2 como
   inicio
     mientras izquierda-bloqueada o frente-bloqueado o junto-a-zumbador hacer
       inicio
         si no junto-a-zumbador entonces deja-zumbador;
         si frente-libre entonces avanza
         sino
           inicio
             gira-izquierda;
             avanza;
           fin;
       fin;
       si no junto-a-zumbador entonces deja-zumbador;
   fin;

 define-nueva-instruccion eskina como
  inicio
    deja-zumbador;
    mientras frente-bloqueado hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    si izquierda-bloqueada entonces
      inicio
        repetir 2 veces gira-izquierda;
        mientras no junto-a-zumbador hacer avanza;
        gira-izquierda;
        avanza;
      fin
    sino
      inicio
        repetir 2 veces gira-izquierda;
        mientras no junto-a-zumbador hacer avanza;
        repetir 2 veces gira-izquierda;
      fin;
     contar;
      si derecha-libre y frente-libre entonces
                inicio
                  regreso;
                  repetir 2 veces gira-izquierda;
                  dejando1;
                  repetir 3 veces gira-izquierda;
                fin
              sino
                inicio
                  regreso;
                  dejando2;
                  gira-izquierda;
                fin;
  fin;



    inicia-ejecucion
          mientras frente-libre hacer gira-izquierda;
          repetir 2 veces gira-izquierda;
          si frente-libre entonces
            inicio
              eskina;
               avanza;
              repetir 3 veces gira-izquierda;
            fin
          sino
            inicio
              interior;
            fin;
          mientras no junto-a-zumbador hacer
            inicio
            si izquierda-bloqueada entonces
             inicio
              deja-zumbador;
              contar;
              si derecha-libre y frente-libre entonces
                inicio
                  regreso;
                  repetir 2 veces gira-izquierda;
                  dejando1;
                  repetir 3 veces gira-izquierda;
                fin
              sino
                inicio
                  regreso;
                  dejando2;
                  gira-izquierda;
                fin;
              fin
              sino
               inicio
                gira-izquierda;
                si no junto-a-zumbador entonces deja-zumbador;
               fin;
              avanza;
              repetir 3 veces gira-izquierda;
            fin;
        apagate;
    termina-ejecucion
finalizar-programa
