iniciar-programa
    define-nueva-instruccion derecha como inicio
     repetir 3 veces gira-izquierda;
     fin;
   define-nueva-instruccion left como inicio
    mientras izquierda-libre hacer inicio
      mientras no-junto-a-zumbador hacer inicio
       avanza;
      fin;
      gira-izquierda;
      mientras junto-a-zumbador y frente-libre hacer inicio
       avanza;
      fin;
      gira-izquierda;
      si frente-libre entonces inicio
      avanza;
      fin
      sino inicio
      gira-izquierda;
      mientras frente-libre hacer inicio
       avanza;
      fin;
      gira-izquierda;
      mientras algun-zumbador-en-la-mochila hacer inicio
       deja-zumbador;
      fin;
      apagate;
      fin;
      gira-izquierda;
      mientras no-junto-a-zumbador hacer inicio
       si frente-libre entonces inicio
        avanza;
       fin
       sino inicio
       derecha;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       repetir 2 veces gira-izquierda;
       mientras algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
       fin;
       apagate;
       fin;
      fin;
      derecha;
      mientras junto-a-zumbador hacer inicio
       coge-zumbador;
       si frente-libre entonces inicio
       avanza;
       fin
       sino inicio
       derecha;
       avanza;
       mientras junto-a-zumbador hacer inicio
        coge-zumbador;
       avanza;
       fin;
       mientras no-orientado-al-oeste hacer inicio
        gira-izquierda;
       fin;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
       fin;
      fin;
      repetir 2 veces gira-izquierda;
      si frente-libre entonces inicio
      avanza;
      fin
      sino inicio
      repetir 2 veces gira-izquierda;
      left;
      fin;
      gira-izquierda;
      avanza;
         mientras junto-a-zumbador hacer inicio
        coge-zumbador;
       si frente-libre entonces inicio
        avanza;
       fin
       sino inicio
       gira-izquierda;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
       left;
       fin;
        fin;

       mientras no-orientado-al-oeste hacer inicio
        gira-izquierda;
       fin;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
     fin;

     fin;
     define-nueva-instruccion right como inicio
         mientras frente-libre hacer inicio
     mientras no junto-a-zumbador hacer inicio
      avanza;
     fin;

     gira-izquierda;
     mientras junto-a-zumbador y frente-libre hacer inicio
      avanza;
     fin;
     derecha;
     si frente-libre entonces inicio
      avanza;
     fin
     sino inicio
     repetir 2 veces gira-izquierda;
     mientras frente-libre hacer inicio
      avanza;
     fin;
     gira-izquierda;
     mientras frente-libre hacer inicio
      avanza;
     fin;
     gira-izquierda;
     left;
     fin;

     derecha;
     mientras no-junto-a-zumbador hacer inicio

      si frente-libre entonces inicio
        avanza;
      fin
       sino inicio

       derecha;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       repetir 2 veces gira-izquierda;
       left;
       fin;

     fin;
      si junto-a-zumbador y derecha-bloqueada y frente-bloqueado entonces inicio
       repetir 2 veces gira-izquierda;
       avanza;
       gira-izquierda;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
       left;
      fin;


     gira-izquierda;
     mientras junto-a-zumbador hacer inicio
      coge-zumbador;
      si frente-libre entonces inicio
      avanza;
      fin
      sino inicio
      gira-izquierda;
      avanza;
      mientras junto-a-zumbador hacer inicio
       coge-zumbador;
      avanza;
      fin;
        mientras no-orientado-al-oeste hacer inicio
      gira-izquierda;
     fin;
     mientras frente-libre hacer inicio
      avanza;
     fin;
     gira-izquierda;
       mientras frente-libre hacer inicio
      avanza;
     fin;
     gira-izquierda;
      fin;
     fin;

     mientras orientado-al-este hacer inicio
      repetir 2 veces gira-izquierda;
      avanza;
      derecha;
      avanza;
      mientras junto-a-zumbador hacer inicio
       coge-zumbador;
  si frente-libre entonces inicio
        avanza;
       fin
       sino inicio
       gira-izquierda;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
       mientras frente-libre hacer inicio
        avanza;
       fin;
       gira-izquierda;
       right;
       fin;
        fin;
      fin;

     gira-izquierda;

     mientras no-orientado-al-oeste hacer inicio
      gira-izquierda;
     fin;
     mientras frente-libre hacer inicio
      avanza;
     fin;
     gira-izquierda;
       mientras frente-libre hacer inicio
      avanza;
     fin;
     gira-izquierda;
    fin;
    si frente-bloqueado entonces inicio
     left;
    fin;
    fin;
    inicia-ejecucion

    mientras no-orientado-al-este hacer inicio
     gira-izquierda;
    fin;

   mientras frente-libre hacer inicio
    right;
   fin;




        apagate;
    termina-ejecucion
finalizar-programa
