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 n1 como
 inicio
  avanza;
  norte;
  repetir 2 veces avanza;
  oeste;
  avanza;
  norte;
 fin;

define-nueva-instruccion vaciar como
 inicio
  mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
 fin;

 define-nueva-instruccion multiplicar(n) como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     multiplicar(sucede(n));
    fin
     sino
      inicio
       avanza;
        mientras junto-a-zumbador hacer
         inicio
          si junto-a-zumbador entonces
           inicio
            coge-zumbador;
            avanza;
            repetir n veces deja-zumbador;
            sur;
            avanza;
            norte;
           fin;
         fin;
      fin;
  fin;

  define-nueva-instruccion dejarm como
   inicio
    norte;
    avanza;
    mientras junto-a-zumbador hacer coge-zumbador;
    este;
    avanza;
    sur;
    repetir 3 veces avanza;
    oeste;
    avanza;
    vaciar;
   fin;

  define-nueva-instruccion ird como
   inicio
    este;
    repetir 2 veces avanza;
    norte;
    avanza;
    si junto-a-zumbador entonces coge-zumbador;
    oeste;
    avanza;
    si algun-zumbador-en-la-mochila entonces deja-zumbador;
    este;
    avanza;
   fin;

  define-nueva-instruccion division(n) como
   inicio
    si junto-a-zumbador entonces
     inicio
      coge-zumbador;
      division(sucede(n));
     fin
      sino
       inicio
        sur;
        avanza;
        este;
        avanza;
        norte;
        avanza;
         mientras junto-a-zumbador hacer
          inicio
           repetir n veces si junto-a-zumbador entonces coge-zumbador;
            si junto-a-zumbador entonces
             inicio
             coge-zumbador;
              este;
              avanza;
              norte;
              avanza;
              oeste;
              avanza;
              deja-zumbador;
              este;
              avanza;
              vaciar;
              sur;
              avanza;
              oeste;
              avanza;
             fin
              sino
               inicio
                sur;
                avanza;
                vaciar;
                avanza;
               fin;
          fin;
       fin;
   fin;
    inicia-ejecucion
       n1;
       multiplicar(0);
       vaciar;
       dejarm;
       ird;
       division(0);
        apagate;
    termina-ejecucion
finalizar-programa
