iniciar-programa
define-nueva-instruccion deja como
 inicio
    si algun-zumbador-en-la-mochila entonces
       inicio
        deja-zumbador;
        deja;
        fin;
       si junto-a-zumbador y orientado-al-norte entonces
        coge-zumbador;
        repetir 2 veces gira-izquierda;


 fin;
define-nueva-instruccion abajo como
   inicio
     mientras no-orientado-al-oeste hacer gira-izquierda;
     mientras frente-libre hacer avanza;
     gira-izquierda;
     mientras frente-libre hacer avanza;
     mientras no-orientado-al-norte hacer gira-izquierda;

   fin;
  define-nueva-instruccion recorre como
    inicio
      repetir 15 veces
        inicio
         repetir 25 veces
          inicio
           si junto-a-zumbador entonces
            coge-zumbador;
           si frente-libre entonces avanza;
          fin;
         si orientado-al-este entonces
          inicio
           gira-izquierda;
           si frente-libre entonces avanza;
           gira-izquierda;
          fin;
          si orientado-al-oeste y frente-bloqueado entonces
            inicio
             repetir 3 veces gira-izquierda;
             si frente-libre entonces avanza;
             repetir 3 veces gira-izquierda;
           fin;
         fin;

     fin;
     define-nueva-instruccion pir (n) como
       inicio
       si algun-zumbador-en-la-mochila entonces
          inicio
          repetir n veces
           inicio
           si algun-zumbador-en-la-mochila entonces
            inicio
            si no-junto-a-zumbador entonces
            deja-zumbador;
            si frente-libre entonces avanza;
           fin;
           fin;
            si algun-zumbador-en-la-mochila entonces
            inicio
            gira-izquierda;
            si frente-libre entonces avanza;
             gira-izquierda;
            mientras frente-libre hacer avanza;
            repetir 2 veces gira-izquierda;
          pir (sucede(n));
          fin;
          fin;
          repetir 2 veces gira-izquierda;
          si frente-libre entonces avanza;
          apagate;
       fin;
     define-nueva-instruccion mide(n) como
       inicio
        si junto-a-zumbador entonces
        inicio
        avanza;
        mide(sucede(n));
       fin;
       repetir 2 veces gira-izquierda;
       repetir 2 veces 
       si frente-libre entonces avanza
       sino
       apagate;
       repetir 2 veces gira-izquierda;
       repetir n veces
        si frente-libre entonces avanza;
        repetir 2 veces gira-izquierda;
        mientras no-orientado-al-norte hacer gira-izquierda;
        pir(1);

        fin;

      define-nueva-instruccion piramide (n) como
       inicio
         si algun-zumbador-en-la-mochila entonces
          inicio
          repetir n veces
           inicio
           si algun-zumbador-en-la-mochila entonces
            inicio
            deja-zumbador;
            si frente-libre entonces avanza;
           fin;
           fin;
            repetir 3 veces gira-izquierda;
            si frente-libre entonces avanza;
            repetir 3 veces gira-izquierda;
            mientras frente-libre hacer avanza;
            repetir 2 veces gira-izquierda;
          piramide (sucede(n));
          fin
          sino
           inicio
            mientras no-orientado-al-oeste hacer gira-izquierda;
            mientras frente-libre hacer avanza;
            repetir 3 veces gira-izquierda;
            si frente-libre entonces avanza;
            mientras junto-a-zumbador hacer coge-zumbador;
            repetir 2 veces gira-izquierda;
            si frente-libre entonces avanza;
            gira-izquierda;
            mide(0);
            fin;

       fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer gira-izquierda;
      recorre;
      abajo;
      si frente-libre entonces avanza;
       si algun-zumbador-en-la-mochila entonces deja-zumbador;
        deja;
         mientras no-orientado-al-sur hacer gira-izquierda;
          si frente-libre entonces avanza;
          repetir 2 veces gira-izquierda;
        piramide(1);
        apagate;
    termina-ejecucion
finalizar-programa
