iniciar-programa
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 mira-sur como
inicio
   mientras no-orientado-al-sur hacer
      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 recoge como
inicio
   si junto-a-zumbador entonces
   inicio
      coge-zumbador;
      si junto-a-zumbador entonces
      inicio
      coge-zumbador;
      si frente-libre entonces
      inicio
          avanza;
          recoge;
          paso-atras;
      fin;
      si izquierda-libre entonces
      inicio
          gira-izquierda;
          avanza;
          recoge;
          paso-atras;
          gira-derecha;
      fin;
      si derecha-libre entonces
      inicio
         gira-derecha;
         avanza;
         recoge;
         paso-atras;
         gira-izquierda;
      fin;
      repetir 2 veces
          gira-izquierda;
      si frente-libre entonces
      inicio
         avanza;
         recoge;
         paso-atras;
         repetir 2 veces
           gira-izquierda;
      fin
      sino
         repetir 2 veces
           gira-izquierda;
      fin
      sino
      inicio
         deja-zumbador;
      fin;
   fin;
fin;
define-nueva-instruccion ubicate como
inicio
   mira-sur;
   mientras frente-libre hacer
     avanza;
   mira-oeste;
   mientras frente-libre hacer
     avanza;
   mira-norte;
fin;
define-nueva-instruccion cuenta como
inicio
   mientras derecha-libre hacer
   inicio
      si junto-a-zumbador y algun-zumbador-en-la-mochila entonces
      inicio
         coge-zumbador;
         si no-junto-a-zumbador entonces
         inicio
         repetir 3 veces
            deja-zumbador;
         fin
         sino
           deja-zumbador;
      fin;
      si frente-libre entonces
        avanza
      sino
      inicio
         gira-derecha;
         avanzA;
         mira-sur;
         mientras frente-libre hacer
             avanza;
         mira-norte;
      fin;
   fin;
   mientras frente-libre hacer
   inicio
      si junto-a-zumbador y algun-zumbador-en-la-mochila entonces
      inicio
          coge-zumbador;
          si no-junto-a-zumbador entonces
          inicio
             repetir 3 veces
                deja-zumbador;
          fin
          sino
             deja-zumbador;
      fin;
      si frente-libre entonces
         avanza;
   fin;
   si junto-a-zumbador y algun-zumbador-en-la-mochila entonces
   inicio
      coge-zumbador;
      si no-junto-a-zumbador entonces
      inicio
          repetir 3 veces
             deja-zumbador;
      fin
      sino
         deja-zumbador;
   fin;
fin;
define-nueva-instruccion mitad como
inicio
   si junto-a-zumbador entonces
   inicio
      repetir 2 veces
         coge-zumbador;
      mitad;
     deja-zumbador;
   fin;
fin;
define-nueva-instruccion mueve(n) como
inicio
    si junto-a-zumbador entonces
    inicio
       coge-zumbador;
       mueve(sucede(n));
    fin
    sino
    inicio
        mientras algun-zumbador-en-la-mochila hacer
           deja-zumbador;
        repetir n veces
           coge-zumbador;
        mitad;
    fin;
fin;
define-nueva-instruccion final como
inicio
    mueve(0);
fin;
    inicia-ejecucion
    recoge;
    ubicate;
    cuenta;
    ubicate;
    final;
        apagate;
    termina-ejecucion
finalizar-programa
