iniciar-programa
    define-nueva-instruccion norte como inicio
        mientras no-orientado-al-norte hacer inicio
            gira-izquierda;
        fin;
    fin;

  define-nueva-instruccion sur como inicio
        mientras no-orientado-al-sur hacer inicio
            gira-izquierda;
       fin;
    fin;

  define-nueva-instruccion este como inicio
        mientras no-orientado-al-este hacer inicio
            gira-izquierda;
        fin;
    fin;

  define-nueva-instruccion oeste como inicio
        mientras no-orientado-al-oeste hacer inicio
            gira-izquierda;
        fin;
    fin;

  define-nueva-instruccion ir_esquina como inicio
     norte;
     mientras frente-libre hacer inicio
        avanza;
     fin;
     este;
     mientras frente-libre hacer inicio
        avanza;

     fin;
       sur;
  fin;
  define-nueva-instruccion marcar como inicio
     si no junto-a-zumbador entonces inicio
        deja-zumbador;
        sur;
        si frente-libre entonces inicio
           avanza;
           marcar;
           norte;
           avanza;
        fin;
           oeste;
        si frente-libre entonces inicio
           avanza;
           marcar;
           este;
           avanza;
        fin;


     fin;
  fin;

define-nueva-instruccion camina como inicio
   si frente-libre entonces inicio
      avanza;
   fin sino inicio
      si orientado-al-este entonces inicio
         sur;
         si frente-libre entonces inicio
            avanza;
            oeste;
         fin;
      fin sino inicio
         sur;
         si frente-libre entonces inicio
            avanza;
            este;
         fin;
      fin;
   fin;
fin;

define-nueva-instruccion contarUnos(n) como
inicio
  si no-orientado-al-sur entonces inicio
     si junto-a-zumbador entonces inicio
        coge-zumbador;
        si junto-a-zumbador entonces inicio
           coge-zumbador;
           camina;
           contarUnos(n);
        fin sino inicio
           camina;
           contarUnos(sucede(n));
        fin;
     fin sino inicio
         camina;
         contarUnos(n);
     fin;
  fin sino inicio
      ir_esquina;
      repetir n veces inicio
          deja-zumbador;
      fin;
  fin;
fin;

    inicia-ejecucion
        ir_esquina;
        marcar;
        ir_esquina;
        oeste;
        contarUnos(0);
        apagate;
    termina-ejecucion
finalizar-programa
