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

 define-nueva-instruccion identifica como
  inicio
   si no(derecha-bloqueada y no-junto-a-zumbador) entonces
    inicio
     mientras junto-a-zumbador y frente-libre hacer
      avanza;
     mv;
     si junto-a-zumbador entonces
      avanza
     sino
      inicio
       si frente-libre entonces
        avanza;
       si frente-libre entonces
        avanza
       sino
        inicio
         gira-izquierda;
         si frente-libre entonces
          avanza;
         gira-izquierda;
         identifica;
        fin;
      fin;
     mientras junto-a-zumbador hacer
      inicio
       coge-zumbador;
       si frente-libre entonces
        avanza;
      fin;
     si orientado-al-sur entonces
      inicio
       gira-izquierda;
       si frente-libre entonces
        avanza;
       gira-izquierda;
       identifica;
      fin;
    fin;
  fin;
 define-nueva-instruccion acomoda como
  inicio
   mientras no(derecha-bloqueada) hacer
    inicio
     si junto-a-zumbador entonces
      inicio
       coge-zumbador;
       gd;
       llevaderecha;
       gd;
      fin;
     avanza;
     si frente-bloqueado entonces
      inicio
       si junto-a-zumbador entonces
        inicio
         coge-zumbador;
         gd;
         llevaderecha;
         gd;
        fin;
       baja;
      fin;
    fin;
   fin;
  define-nueva-instruccion cuenta como
   inicio
   si frente-libre entonces
    inicio
     si junto-a-zumbador entonces
      inicio
       coge-zumbador;
       avanza;
       cuenta;
       deja-zumbador;
      fin;
    si frente-libre entonces
     inicio
      avanza;
      cuenta;
     fin;
   fin
  sino
   inicio
    gd;
    si junto-a-zumbador entonces
     inicio
      coge-zumbador;
      cuenta;
      deja-zumbador;
     fin;
    mientras frente-libre hacer
     avanza;
   fin;
 fin;

    inicia-ejecucion
     avanza;
     gira-izquierda;
     identifica;
     gira-izquierda;
     mientras frente-libre hacer
      avanza;
     mv;
     avanza;
     gira-izquierda;
     acomoda;
     mientras frente-libre hacer
      avanza;
     mv;
     cuenta;
        apagate;
    termina-ejecucion
finalizar-programa
