iniciar-programa
define-nueva-instruccion mira-norte como
inicio
  mientras no-orientado-al-norte hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-sur como
inicio
  mientras no-orientado-al-sur 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 gira-derecha como
inicio
  repetir 3 veces
    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 lleva como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    lleva;
    deja-zumbador;
    avanza;
    deja-zumbador;
    paso-atras;
  fin;
fin;
define-nueva-instruccion mayor(m) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    mayor(sucede(m));
  fin
  sino
  inicio
    avanza;
    repetir m veces
    inicio
      si junto-a-zumbador entonces
        coge-zumbador;
    fin;
    repetir m veces
      deja-zumbador;
  fin;
fin;
define-nueva-instruccion acomoda como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    acomoda;
    deja-zumbador;
  fin
  sino
  inicio
    paso-atras;
    gira-derecha;
    avanza;
    avanza;
    mira-norte;
  fin;
fin;
define-nueva-instruccion largo(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    avanza;
    largo(sucede(n));
  fin
  sino
  inicio
    paso-atras;
    
    repetir n veces
    inicio
    mientras junto-a-zumbador hacer
    inicio
      avanza;
      lleva;
      gira-derecha;
      avanza;
      gira-izquierda;
      lleva;
      gira-izquierda;

      avanza;
      gira-derecha;
      avanza;
      gira-derecha;
      mayor(0);

      acomoda;
      gira-izquierda;
      avanza;
      gira-derecha;
    fin;
    avanza;
    mira-este;
    avanza;
    avanza;
    mientras junto-a-zumbador hacer
    inicio
      mientras junto-a-zumbador hacer
        coge-zumbador;
      avanza;
    fin;

      paso-atras;

    mira-sur;

    repetir 2 veces
    si frente-libre entonces
      avanza;

    mira-norte;
    fin;
  fin;
fin;
define-nueva-instruccion ancho(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    avanza;
    ancho(sucede(n));
  fin
  sino
  inicio
    repetir 2 veces
      gira-izquierda;
    avanza;
    repetir precede(n) veces
    inicio
       mayor(0);
    fin;
  fin;
fin;
    inicia-ejecucion
    mira-este;
    avanza;
    mientras junto-a-zumbador hacer
      avanza;
    paso-atras;
    mira-norte;
    largo(0);
    mira-oeste;
    mientras frente-libre hacer
      avanza;
    repetir 2 veces
      gira-izquierda;
    avanza;
    ancho(0);
    lleva;
        apagate;
    termina-ejecucion
finalizar-programa
