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

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


        define-nueva-instruccion regala(n) como inicio
          repetir n veces
           deja-zumbador;
           fin;

    define-nueva-instruccion divide como
    inicio
    mientras orientado-al-este hacer
    inicio
    avanza;
    avanza;
    si frente-libre entonces divide sino media-vuelta;
    fin;
    avanza;
    fin;


     define-nueva-instruccion situarse como inicio
      si orientado-al-sur y derecha-libre y izquierda-bloqueada entonces inicio
       gira-derecha;
        mientras frente-libre y orientado-al-oeste hacer inicio
       avanza;
       si frente-bloqueado entonces inicio
        media-vuelta;
        fin;
        fin;
        fin;



        si orientado-al-sur y  izquierda-libre y derecha-bloqueada entonces inicio
       gira-izquierda;
        fin;

          si orientado-al-sur y  izquierda-libre y derecha-libre  entonces inicio
       gira-derecha;
           mientras frente-libre y orientado-al-oeste hacer inicio
       avanza;
        si frente-bloqueado entonces inicio
        media-vuelta;


       fin;
       fin;
       fin;
       fin;




          define-nueva-instruccion situarse2 como inicio
            si orientado-al-sur  y algun-zumbador-en-la-mochila y izquierda-libre o derecha-libre y orientado-al-sur  entonces inicio
       gira-derecha;

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


           define-nueva-instruccion escalar como inicio
          si junto-a-zumbador y orientado-al-este o orientado-al-oeste y algun-zumbador-en-la-mochila entonces inicio
       gira-izquierda;

       si frente-libre y orientado-al-sur entonces inicio
       avanza;

       fin
       sino si frente-bloqueado y junto-a-zumbador entonces inicio
       gira-derecha;
       mientras frente-libre y orientado-al-oeste hacer inicio
       avanza;
        fin;


       si frente-bloqueado y orientado-al-oeste  entonces inicio
       gira-izquierda;
       si frente-libre entonces inicio
       avanza;
       si izquierda-libre entonces
       gira-izquierda;
       fin
       sino si frente-bloqueado entonces inicio
        gira-izquierda;
        mientras frente-libre y derecha-bloqueada hacer inicio
        avanza;
        fin;
        si derecha-libre entonces inicio
        gira-derecha;
        avanza;
        si derecha-libre o izquierda-libre entonces
        gira-izquierda;
        fin;
        fin;
        fin;
       fin;
       fin;
       fin;



       define-nueva-instruccion situarse3 como inicio
        si orientado-al-oeste y frente-bloqueado entonces inicio
        media-vuelta;
          fin;
          fin;

          define-nueva-instruccion situarse4 como inicio

        si orientado-al-este y frente-bloqueado entonces inicio
        media-vuelta;
         mientras frente-libre y orientado-al-oeste y no-junto-a-zumbador hacer inicio
         avanza;
          si frente-bloqueado entonces inicio
          media-vuelta;
          fin;
          fin;
          fin;
          fin;


        define-nueva-instruccion situarse5 como inicio
           mientras derecha-bloqueada y izquierda-bloqueada y orientado-al-sur hacer inicio
           deja-zumbador;
           si frente-libre y derecha-bloqueada y izquierda-bloqueada  entonces inicio
           avanza;
           fin
           sino si frente-bloqueado entonces inicio
           apagate;
            fin;

           si derecha-libre o izquierda-libre entonces inicio
           media-vuelta;
           media-vuelta;
            fin;


           si izquierda-libre y derecha-libre entonces inicio
           situarse2;
           fin
           sino si frente-bloqueado y derecha-bloqueada y izquierda-libre entonces inicio
           gira-izquierda

           fin;
           si frente-bloqueado o frente-libre  y izquierda-bloqueada y derecha-libre entonces inicio
            situarse2;

            fin;
            fin;
            fin;


    inicia-ejecucion

       situarse;
       situarse5;
     mientras orientado-al-este y frente-libre hacer inicio
     divide;
     si algun-zumbador-en-la-mochila y no-junto-a-zumbador y algun-zumbador-en-la-mochila entonces
     deja-zumbador;

      escalar;
        situarse2;
        situarse3;
        situarse4;
        situarse5;
         fin;

        apagate;
    termina-ejecucion
finalizar-programa
