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 juntar como inicio
    norte;
    mientras  junto-a-zumbador o (derecha-libre y orientado-al-norte) hacer inicio
        si junto-a-zumbador entonces coge-zumbador;
        si frente-libre entonces avanza;
       si no junto-a-zumbador o frente-bloqueado entonces inicio
           sur;
           mientras frente-libre hacer avanza;
           si izquierda-libre entonces inicio
               gira-izquierda;
               avanza;                            
               norte;
               si no junto-a-zumbador entonces inicio
                   este;
                   mientras no junto-a-zumbador y frente-libre hacer avanza;
                   norte;
               fin;
           fin;
       fin;
   fin;
fin;
define-nueva-instruccion ordenar como inicio
    oeste;
    mientras frente-libre hacer avanza;
    este;
    mientras algun-zumbador-en-la-mochila hacer inicio
        si no junto-a-zumbador entonces deja-zumbador;
        si frente-libre entonces avanza;
        si frente-bloqueado y orientado-al-este entonces inicio
            norte;
            si no junto-a-zumbador entonces deja-zumbador;
            avanza;
            oeste;
        fin;
        si frente-bloqueado y orientado-al-oeste entonces inicio
            norte;
            si no junto-a-zumbador entonces deja-zumbador;
            avanza;
            este;
        fin;
    fin;
fin;
    inicia-ejecucion
    juntar;
    ordenar;
        apagate;
    termina-ejecucion
finalizar-programa
