iniciar-programa
define-nueva-instruccion gira-derecha como
inicio
  repetir 3 veces
    gira-izquierda;
fin;
define-nueva-instruccion mira-norte como
inicio
  mientras no-orientado-al-norte hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-este como
inicio
  mientras no-orientado-al-este hacer
    gira-izquierdA;
fin;
define-nueva-instruccion mira-oeste como
inicio
  mientras no-orientado-al-oeste hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-sur como
inicio
  mientras no-orientado-al-sur hacer
    gira-izquierdA;
fin;
define-nueva-instruccion paso-atras como
inicio
  repetir 2 veces
    gira-izquierda;
  avanza;
  repetir 2 veces
    gira-izquierdA;
fin;
define-nueva-instruccion ubicate como
inicio
  mira-oeste;
  mientras frente-libre hacer
    avanza;
  mira-sur;
  mientras frente-libre hacer
   avanza;
 mira-norte;
fin;
define-nueva-instruccion torneo2(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    torneo2(n);
    repetir n veces
      deja-zumbador;
    avanza;
  fin
  sino
  inicio
    avanza;
    mira-oeste;
    mientras frente-libre hacer
      avanza;
    mira-este;
  fin;
fin;
define-nueva-instruccion torneo1(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    torneo1(sucede(n));
  fin
  sino
  inicio
    gira-derecha;
    avanza;
    gira-izquierdA;
    torneo2(n);
  fin;
fin;
define-nueva-instruccion numero(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    numero(sucede(n));
    deja-zumbador;
  fin
  sino
  inicio
    repetir n veces
      deja-zumbador;
    avanza;
    mira-oeste;
    mientras frente-libre hacer
      avanzA;
  fin;
fin;
define-nueva-instruccion distancia(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    avanza;
    distancia(n);
    repetir n veces
      deja-zumbador;
  fin
  sino
  inicio
    mira-oeste;
    mientras frente-libre hacer
      avanza;
  fin;

fin;
define-nueva-instruccion acomoda(n) como
inicio
 si junto-a-zumbador entonces
 inicio
   coge-zumbador;
   acomoda(Sucede(n));
 fin
 sino
 inicio
 avanza;
  distancia(N);
  repetir n veces
    deja-zumbador;
 fin;
fin;
define-nueva-instruccion copia como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    copia;
    deja-zumbador;
    gira-izquierda;
    avanza;
    deja-zumbador;
    paso-atras;
    gira-derecha;
  fin;
fin;
define-nueva-instruccion resta(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    resta(sucede(N));
    coge-zumbador;
  fin
  sino
  inicio
    gira-izquierda;
    avanza;
    gira-derecha;
    avanza;
  fin;
fin;
define-nueva-instruccion lleva como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    lleva;
    deja-zumbador;
  fin
  sino
  inicio
    paso-atras;
    gira-derecha;
    avanza;
    gira-izquierdA;
  fin;
fin;
define-nueva-instruccion cuenta(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    avanza;
    cuenta(sucede(n));
  fin
  sino
  inicio
    mira-oeste;
    repetir n veces
      avanza;
    repetir precede(n) veces
  inicio
    copia;
    paso-atras;
    resta(0);
    lleva;
  fin;
  fin;
fin;
define-nueva-instruccion mueve como
inicio
si junto-a-zumbador entonces
inicio
  coge-zumbador;
  mueve;
  deja-zumbador;
fin
 sino
   avanza;
fin;
define-nueva-instruccion suelta(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    suelta(n);
    repetir n veces
      deja-zumbador;
    avanza;
  fin;
fin;
define-nueva-instruccion cuenta2(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    avanza;
    cuenta2(sucede(N));
  fin
  sino
  inicio
    gira-izquierda;
    avanza;
    gira-izquierda;
    mientras frente-libre hacer
      avanza;
    gira-derecha;
    mueve;
    gira-derecha;
    suelta(n);
    mira-oeste;
    mientras frente-libre hacer
      avanza;
    mira-este;
    acomoda(0);
  fin;
fin;
define-nueva-instruccion compara(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    compara(sucede(n));
  fin
  sino
  inicio
    gira-derecha;
    repetir 2 veces
      avanza;
    gira-izquierda;
    mientras junto-a-zumbador hacer
    avanza;
    paso-atras;
    si no-junto-a-zumbador entonces
    inicio
      repetir 2 veces
        gira-izquierdA;
      mientras no-junto-a-zumbador hacer
      avanza;
    fin;
    mira-oeste;
    mientras junto-a-zumbador hacer
    inicio
      repetir n veces
      inicio
        si junto-a-zumbador entonces
          coge-zumbador
        sino
          mira-norte;
      fin;
      si orientado-al-norte entonces
      inicio
        gira-izquierda;
        avanza;
      fin
      sino
      inicio
        si junto-a-zumbador entonces
        inicio
          repetir n veces
            deja-zumbador;
          gira-derecha;
          repetir 2 veces
            avanza;
          mira-oeste;
          mientras frente-libre hacer
            avanza;
          mira-este;
          mientras junto-a-zumbador hacer
            avanza;
        fin
        sino
      inicio
        si no-junto-a-zumbador y orientado-al-oeste entonces
        inicio
          ubicate;
          mira-este;
          repetir 2 veces
            avanza;
          repetir n veces
            deja-zumbador;
          apagate;
        fin;
      fin;
      fin;
    fin;
  fin;
fin;
define-nueva-instruccion largo(n) como
inicio
  si frente-libre entonces
  inicio
    avanza;
    largo(sucede(N));

  fin
  sino
  inicio
    mira-este;
    mientras junto-a-zumbador hacer
      avanza;
    paso-atras;
    repetir n veces
    inicio
      mira-este;
      compara(0);
      paso-atras;
   fin;
  fin;
fin;
    inicia-ejecucion
    ubicate;
    torneo1(0);
    mira-oeste;
    avanza;
    gira-derecha;
    numero(0);
    gira-izquierda;
    avanza;
    mira-este;
    acomoda(0);
    mira-este;
    cuenta(0);
    mira-oeste;
    mientras frente-libre hacer
      avanza;
    mira-este;
    cuenta2(0);
    mira-este;
    cuenta(0);
    largo(1);
        apagate;
    termina-ejecucion
finalizar-programa
 