iniciar-programa
  define-nueva-instruccion gira-derecha como inicio
    gira-izquierda;
    gira-izquierda;
    gira-izquierda;
     fin;

    define-nueva-instruccion media-vuelta como inicio
 gira-izquierda;
 gira-izquierda;
 fin;

 define-nueva-instruccion ubicate como
 inicio
   mientras no orientado-al-oeste hacer
   inicio
    gira-izquierda;
   fin;
    mientras frente-libre y orientado-al-oeste hacer
    inicio
      avanza;
    fin;
      si frente-bloqueado y orientado-al-oeste entonces
      inicio
       gira-izquierda;
      fin;

       mientras frente-libre y orientado-al-sur hacer
        inicio
         avanza;
         fin;
        si frente-bloqueado y orientado-al-sur entonces
         inicio
          media-vuelta;
          fin;
    fin;


       define-nueva-instruccion ubicate1 como
       inicio
         si frente-bloqueado y orientado-al-este entonces inicio
          media-vuelta;
          mientras frente-libre y orientado-al-oeste hacer inicio
            avanza;
            fin;
            si frente-bloqueado entonces inicio
               media-vuelta;

               fin;

               fin;

               fin;








       define-nueva-instruccion encuentra(n) como inicio
           mientras frente-libre y orientado-al-norte y no junto-a-zumbador hacer inicio
            avanza;
            fin;
             si frente-bloqueado y orientado-al-norte y no junto-a-zumbador entonces inicio
            media-vuelta;
            fin;
            mientras frente-libre y orientado-al-sur  hacer inicio
            avanza;
             fin;
            si frente-bloqueado y orientado-al-sur entonces inicio
             gira-izquierda;
             fin;
             si frente-libre y orientado-al-este entonces inicio
             avanza;
             fin
             sino si frente-bloqueado y orientado-al-este entonces inicio
              ubicate1;
             sal-de-instruccion;

              fin;
              si orientado-al-este entonces inicio
              gira-izquierda;
              encuentra(n);
               fin;
            si junto-a-zumbador y orientado-al-norte entonces inicio
              repetir n veces coge-zumbador;
             si no junto-a-zumbador y orientado-al-norte  entonces inicio
             repetir 100 veces deja-zumbador;
            apagate;
            fin
            sino si junto-a-zumbador y orientado-al-norte entonces inicio
             repetir n veces deja-zumbador;
            si frente-libre entonces inicio
             avanza;
              fin
              sino si frente-bloqueado y orientado-al-norte  entonces inicio
              media-vuelta;
              encuentra(n);
             fin;
               si orientado-al-norte entonces
               encuentra(n);
              fin;
             fin;
             fin;


           define-nueva-instruccion numeros como inicio
               encuentra(1);
        gira-izquierda;

        encuentra(2);
         gira-izquierda;
        encuentra(3);
         gira-izquierda;
        encuentra(4);
         gira-izquierda;
        encuentra(5);
         gira-izquierda;
        encuentra(6);
         gira-izquierda;
        encuentra(7);
         gira-izquierda;
        encuentra(8);
         gira-izquierda;
        encuentra(9);
          gira-izquierda;
        encuentra(10);
        gira-izquierda;
        encuentra(11);
        gira-izquierda;
        encuentra(12);
        gira-izquierda;
        encuentra(13);
        gira-izquierda;
        encuentra(14);
        gira-izquierda;
        encuentra(15);
         gira-izquierda;
         encuentra(16);
        gira-izquierda;
        encuentra(17);
        gira-izquierda;
        encuentra(18);
        gira-izquierda;
        encuentra(19);
        gira-izquierda;
        encuentra(20);
        gira-izquierda;
        encuentra(21);
        gira-izquierda;
        encuentra(22);
        gira-izquierda;
        encuentra(23);


        gira-izquierda;
        encuentra(24);
        gira-izquierda;
        encuentra(25);
        gira-izquierda;
        encuentra(26);

         gira-izquierda;
        encuentra(27);
        gira-izquierda;
        encuentra(28);
        gira-izquierda;
        encuentra(29);

        gira-izquierda;
        encuentra(30);
        gira-izquierda;
        encuentra(31);
        gira-izquierda;
        encuentra(32);
         gira-izquierda;
        encuentra(33);
        gira-izquierda;
        encuentra(34);
        gira-izquierda;
        encuentra(35);
          gira-izquierda;
        encuentra(36);
        gira-izquierda;
        encuentra(37);
        gira-izquierda;
        encuentra(38);

         gira-izquierda;
        encuentra(39);
        gira-izquierda;
        encuentra(40);
        gira-izquierda;
        encuentra(41);
          gira-izquierda;
        encuentra(42);
        gira-izquierda;
        encuentra(43);
        gira-izquierda;
        encuentra(44);
         gira-izquierda;
        encuentra(45);
        gira-izquierda;
        encuentra(46);
        gira-izquierda;
        encuentra(47);

        gira-izquierda;
        encuentra(48);
        gira-izquierda;
        encuentra(49);
        gira-izquierda;
        encuentra(50);


       gira-izquierda;

          encuentra(51);
        gira-izquierda;

        encuentra(52);
         gira-izquierda;
        encuentra(53);
         gira-izquierda;
        encuentra(54);
         gira-izquierda;
        encuentra(55);
         gira-izquierda;
        encuentra(56);
         gira-izquierda;
        encuentra(57);
         gira-izquierda;
        encuentra(58);
         gira-izquierda;
        encuentra(59);
          gira-izquierda;
        encuentra(60);
        gira-izquierda;


           encuentra(61);
        gira-izquierda;

        encuentra(62);
         gira-izquierda;
        encuentra(63);
         gira-izquierda;
        encuentra(64);
         gira-izquierda;
        encuentra(65);
         gira-izquierda;
        encuentra(66);
         gira-izquierda;
        encuentra(67);
         gira-izquierda;
        encuentra(68);
         gira-izquierda;
        encuentra(69);
          gira-izquierda;
        encuentra(70);


        encuentra(71);
        gira-izquierda;

        encuentra(72);
         gira-izquierda;
        encuentra(73);
         gira-izquierda;
        encuentra(74);
         gira-izquierda;
        encuentra(75);
         gira-izquierda;
        encuentra(76);
         gira-izquierda;
        encuentra(77);
         gira-izquierda;
        encuentra(78);
         gira-izquierda;
        encuentra(79);
          gira-izquierda;
        encuentra(80);

        encuentra(81);
        gira-izquierda;

        encuentra(82);
         gira-izquierda;
        encuentra(83);
         gira-izquierda;
        encuentra(84);
         gira-izquierda;
        encuentra(85);
         gira-izquierda;
        encuentra(86);
         gira-izquierda;
        encuentra(87);
         gira-izquierda;
        encuentra(88);
         gira-izquierda;
        encuentra(89);
          gira-izquierda;
        encuentra(90);

        encuentra(91);
        gira-izquierda;

        encuentra(92);
         gira-izquierda;
        encuentra(93);
         gira-izquierda;
        encuentra(94);
         gira-izquierda;
        encuentra(95);
         gira-izquierda;
        encuentra(96);
         gira-izquierda;
        encuentra(97);
         gira-izquierda;
        encuentra(98);
         gira-izquierda;
        encuentra(99);
      fin;

       define-nueva-instruccion prueba(n) como inicio
            si no si-es-cero(n) entonces inicio
               si frente-libre entonces inicio
                   avanza;
                   prueba(precede(n));
                  si no si-es-cero(n) entonces inicio
                   si derecha-libre entonces
                   media-vuelta;
                   si orientado-al-sur entonces
                    repetir  31  veces avanza;
                     si orientado-al-sur entonces
                     gira-izquierda;
                     si orientado-al-este entonces
                     repetir 16 veces  avanza;
                        mientras junto-a-zumbador y orientado-al-este y derecha-libre y izquierda-libre hacer inicio
                         coge-zumbador;
                         fin;
                          si no junto-a-zumbador y orientado-al-este y derecha-libre y izquierda-libre  entonces  inicio
                         repetir 100 veces deja-zumbador;
                          apagate;
                          fin;
                          fin;
                    fin
                    sino si frente-bloqueado entonces inicio
                      media-vuelta;
                      mientras frente-libre y orientado-al-sur hacer inicio
                         avanza;
                         fin;
                         si frente-bloqueado y orientado-al-sur entonces inicio
                          media-vuelta;
                           fin;
                           numeros;
                      sal-de-instruccion;
                 fin;
              fin;
              fin;





    inicia-ejecucion
         ubicate;
         si derecha-bloqueada y izquierda-bloqueada y frente-bloqueado entonces inicio
            repetir 100 veces deja-zumbador;
            apagate;
            fin;

           prueba(44);


            numeros;








        apagate;
    termina-ejecucion
finalizar-programa
