iniciar-programa
  define-nueva-instruccion gi como inicio
  gira-izquierda; fin;
  define-nueva-instruccion gm como inicio
  repetir 2 veces gira-izquierda; fin;
  define-nueva-instruccion gd como inicio
  repetir 3 veces gira-izquierda; fin;
  define-nueva-instruccion dil como inicio
  gm; avanza; avanza; gi; avanza; gd; fin;
  define-nueva-instruccion mul como inicio
  mientras no-orientado-al-norte hacer gi; avanza; gd; avanza; gi; avanza;
  gi; avanza; gd; avanza; gm; fin;

  define-nueva-instruccion mut(n) como inicio
  si junto-a-zumbador entonces inicio
  coge-zumbador; mut(n); repetir n veces inicio deja-zumbador; fin;
  fin sino inicio
  gi; avanza; gd; avanza; gd; avanza;
  fin; fin;
  define-nueva-instruccion muz(n) como inicio
  si junto-a-zumbador entonces inicio
  coge-zumbador; muz(sucede(n)); fin sino inicio
  avanza; mut(n) fin; fin;

  define-nueva-instruccion div(x) como inicio
  si junto-a-zumbador entonces inicio
  repetir x veces inicio si no-junto-a-zumbador entonces apagate;
  coge-zumbador; avanza; deja-zumbador; gm; avanza; gm; fin;
  avanza; si junto-a-zumbador entonces inicio
  repetir x veces inicio si junto-a-zumbador entonces coge-zumbador; fin;
  gi; avanza; gi; avanza; avanza; gi; avanza;
  deja-zumbador; avanza; gi; avanza; avanza;
  gi; avanza; gi; avanza; gm; si junto-a-zumbador entonces div(x);
  fin; fin; fin;

  define-nueva-instruccion diz(x) como inicio
  si junto-a-zumbador entonces inicio
  coge-zumbador; diz(sucede(x)); fin sino inicio
  gd; avanza; gi; avanza; gi; avanza; gm; div(x); fin; fin;

    inicia-ejecucion
    mul; muz(0); dil; diz(0);
        apagate;
    termina-ejecucion
finalizar-programa
