iniciar-programa
 define-nueva-instruccion mv como
  inicio
   repetir 2 veces
    gira-izquierda;
  fin;
 define-nueva-instruccion gd como
  inicio
   repetir 3 veces
    gira-izquierda;
  fin;
 define-nueva-instruccion cuentalargo como
  inicio
   si frente-libre entonces
    inicio
     avanza;
     cuentalargo;
     deja-zumbador;
    fin
   sino
    inicio
     gd;
     mientras frente-libre hacer
      avanza;
     gira-izquierda;
     avanza;
    fin
  fin;

 define-nueva-instruccion cuenta2 como
  inicio
   si frente-libre entonces
    inicio
     avanza;
     cuenta2;
     deja-zumbador;
    fin
   sino
    inicio
     gd;
     mientras izquierda-bloqueada hacer
      avanza;
     gira-izquierda;
     avanza;
     mientras junto-a-zumbador hacer
      avanza;
    fin;
   fin;

 define-nueva-instruccion cuenta como
 inicio
  si frente-libre entonces
   inicio
    avanza;
    cuenta;
    deja-zumbador;
   fin
  sino
   inicio
    mv;
    mientras frente-libre hacer
     avanza;
    gd;
    mientras izquierda-bloqueada hacer
     avanza;
    gira-izquierda;
    avanza;
   fin;
 fin;
 define-nueva-instruccion gol como
  inicio
   si junto-a-zumbador entonces
    inicio
     coge-zumbador;
     gol;
     avanza;
    fin
   sino
    inicio
     mientras frente-libre hacer
      avanza;
     mv;
    fin;
  fin;
  define-nueva-instruccion ancho como
   inicio
    si junto-a-zumbador entonces
     inicio
      coge-zumbador;
      ancho;
      avanza;
     fin
    sino
     inicio
      mv;
      mientras no-junto-a-zumbador hacer
       avanza;
      mv;
     fin;
   fin;
    inicia-ejecucion
     gd;
     avanza;
     avanza;
     mientras junto-a-zumbador hacer
      coge-zumbador;
     mv;
     avanza;
     gol;
     mv;
     avanza;
     deja-zumbador;
     mv;
     avanza;
     mientras no-junto-a-zumbador hacer
     avanza;
     ancho;
     mv;
     avanza;
     deja-zumbador;
     mientras frente-libre hacer
      avanza;
     mv;
     mientras no junto-a-zumbador hacer
      avanza;
     gira-izquierda;
     mientras frente-libre hacer
      avanza;
     gira-izquierda;
     cuenta;
     mv;
     avanza;
     mientras no-junto-a-zumbador hacer
      avanza;
     gd;
     mientras frente-libre hacer
      avanza;
     gd;
     cuenta2;
     mv;
     mientras junto-a-zumbador hacer
      inicio
       avanza;
       mv;
       coge-zumbador;
      fin;
     si orientado-al-este entonces
      inicio
       mv;
       mientras frente-libre hacer
        avanza;
       gd;
       mientras frente-libre hacer
        avanza;
       gd;
       cuentalargo;
       deja-zumbador;
      fin
     sino
      inicio
       avanza;
       mientras junto-a-zumbador hacer
        coge-zumbador;
       deja-zumbador;
      fin;


        apagate;
    termina-ejecucion
finalizar-programa
