iniciar-programa
define-nueva-instruccion norte como inicio
mientras no orientado-al-norte hacer inicio gira-izquierda; fin;
fin;
define-nueva-instruccion este como inicio
    mientras no orientado-al-este hacer inicio gira-izquierda; fin;
fin;
define-nueva-instruccion oeste como inicio
    mientras no orientado-al-oeste hacer inicio gira-izquierda; fin;
fin;
define-nueva-instruccion alzar como inicio
    mientras junto-a-zumbador hacer inicio
        coge-zumbador;
    fin;
fin;
define-nueva-instruccion sur como inicio
    mientras no orientado-al-sur hacer inicio gira-izquierda; fin;
fin;
define-nueva-instruccion dejar como inicio
    mientras algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
    fin;
fin;
define-nueva-instruccion regresar como inicio
    repetir 2 veces inicio gira-izquierda; fin;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    dejar;
    este;
    si frente-libre entonces inicio
        avanza;
        fin sino inicio
        oeste;
        mientras frente-libre hacer inicio
            avanza;
        fin;
    fin;
fin;
define-nueva-instruccion recoger como inicio
    mientras frente-libre y junto-a-zumbador  hacer inicio
        alzar;
        avanza;
    fin;
    alzar;
fin;
define-nueva-instruccion ir11 como inicio
    oeste;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    sur;
    mientras frente-libre hacer inicio
        avanza;
    fin;
    norte;
fin;
 define-nueva-instruccion subir(p) como inicio
     norte;
      repetir p veces avanza;
      dejar;
      sur;
      repetir p veces avanza;
      este;
 fin;
define-nueva-instruccion monton2(a) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        monton2(precede(a))
    fin sino inicio
       si si-es-cero (a) entonces inicio
          subir(2);
          fin sino inicio
          dejar;
      fin;
    fin;
fin;
define-nueva-instruccion comparar(n) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        comparar(sucede(n))
    fin sino inicio
        subir(1);
       mientras frente-libre hacer inicio
            avanza;
            monton2(n);
       fin;
    fin;
fin;
define-nueva-instruccion recoge como inicio
    norte;
    avanza;
    oeste;
    mientras frente-libre hacer inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
        fin;
        avanza;
    fin;
     si junto-a-zumbador entonces inicio
            coge-zumbador;
     fin;
     sur;
     avanza;
     dejar;
fin;
    inicia-ejecucion
       ir11;
    mientras no orientado-al-oeste hacer inicio
        norte;
        recoger;
        regresar;
    fin;
    este;
     mientras frente-libre o junto-a-zumbador hacer inicio
    comparar(0);
    ir11;
    este;
    mientras no junto-a-zumbador y frente-libre hacer inicio
         avanza;
    fin;
    fin;
    recoge;
        apagate;
    termina-ejecucion
finalizar-programa
