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 ir11 como
  inicio
    oeste;
    mientras frente-libre hacer avanza;
    sur;
    mientras frente-libre hacer avanza;
    norte;
  fin;

define-nueva-instruccion subir como
  inicio
    norte;
    avanza;
    este;
    avanza;
  fin;

define-nueva-instruccion dejarlado1 como
  inicio
   mientras orientado-al-sur hacer
    inicio
     mientras orientado-al-sur hacer
       inicio
        si no junto-a-zumbador entonces deja-zumbador;
        si frente-libre entonces avanza
        sino
          inicio
            norte;
            mientras junto-a-zumbador hacer avanza;
            oeste;
          fin;
       fin;
      si frente-libre entonces
        inicio
          avanza;
          sur;
          avanza;
          si frente-libre entonces avanza sino norte;
        fin;
    fin;
   ir11;
  fin;

define-nueva-instruccion dejarlado2 como
  inicio
    mientras orientado-al-sur hacer
      inicio
       mientras orientado-al-sur hacer
         inicio
          si no junto-a-zumbador entonces deja-zumbador;
          si frente-libre entonces avanza
          sino
            inicio
              norte;
              mientras junto-a-zumbador hacer avanza;
              este;
            fin;
         fin;
        si frente-libre entonces
          inicio
            avanza;
            sur;
            avanza;
            si frente-libre entonces avanza
            sino norte;
          fin
        sino
          inicio
            norte;
          fin;
      fin;
  fin;

define-nueva-instruccion piramide(n) como
  inicio
   si algun-zumbador-en-la-mochila entonces
     inicio
       repetir n veces subir;
       sur;
       dejarlado1;
       repetir n veces subir;
       sur;
       dejarlado2;
       ir11;
       piramide(sucede(n));
     fin;
  fin;

define-nueva-instruccion punta como
inicio
  mientras junto-a-zumbador hacer
   inicio
     norte;
     avanza;
     este;
     avanza;
   fin;
  oeste;
  si frente-libre entonces avanza;
  sur;
  si frente-libre entonces avanza;
fin;
    inicia-ejecucion
         norte;
         piramide(0);
         punta;
        apagate;
    termina-ejecucion
finalizar-programa
