iniciar-programa
    define-nueva-instruccion gira(g) como inicio
       repetir g veces gira-izquierda;
    fin;
    define-nueva-instruccion esquina(e) como inicio
       gira(e);
       avanza;
       gira(e);
    fin;
    define-nueva-instruccion ninias como inicio
       deja-zumbador;
       deja-zumbador;
       si frente-libre entonces inicio
          avanza;
       fin;
    fin;
    define-nueva-instruccion move como inicio
       mientras frente-libre hacer inicio
          avanza;
       fin;
    fin;
    define-nueva-instruccion alaesquina como inicio
       mientras no-orientado-al-oeste hacer inicio
          gira-izquierda;
       fin;
       move;
       gira-izquierda;
       move;
    fin;
    define-nueva-instruccion formando como inicio
       si junto-a-zumbador entonces inicio
          coge-zumbador;
          si junto-a-zumbador entonces inicio
             coge-zumbador;
             si junto-a-zumbador entonces inicio
                coge-zumbador;
                formando;
                ninias;
             fin sino inicio
                formando;
                ninias;
             fin;
          fin sino inicio
             formando;
          fin;
       fin sino inicio
          si frente-libre entonces inicio
             avanza;
             formando;
          fin sino inicio
             si frente-bloqueado entonces inicio
                si orientado-al-norte y derecha-libre entonces inicio
                   esquina(3);
                   formando;
                fin sino inicio
                   si orientado-al-sur y izquierda-libre entonces inicio
                      esquina(1);
                      formando;
                   fin sino inicio
                      si derecha-bloqueada o izquierda-bloqueada entonces inicio
                         alaesquina;
                         esquina(1);
                      fin;
                   fin;
                fin;
             fin;
          fin;
       fin;
    fin;
    inicia-ejecucion
        alaesquina;
        gira(2);
        formando;
        gira(2);
        move;
        esquina(3);
        mientras algun-zumbador-en-la-mochila hacer inicio
           deja-zumbador;
           si frente-libre entonces inicio
              avanza;
           fin;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
