iniciar-programa
define-nueva-instruccion norte como inicio mientras no orientado-al-norte hacer gira-izquierda fin;
define-nueva-instruccion este como inicio mientras no orientado-al-este hacer gira-izquierda fin;
define-nueva-instruccion sur como inicio mientras no orientado-al-sur hacer gira-izquierda fin;
define-nueva-instruccion oeste como inicio mientras no orientado-al-oeste hacer gira-izquierda fin;

define-nueva-instruccion regresa como inicio
sur;
mientras frente-libre hacer avanza;
oeste;
mientras frente-libre hacer
avanza;
norte;
fin;

define-nueva-instruccion marca como inicio
mientras frente-libre o derecha-libre hacer inicio
    si junto-a-zumbador entonces inicio
        mientras junto-a-zumbador hacer coge-zumbador;
        deja-zumbador;
        deja-zumbador;
         si frente-libre entonces inicio
            avanza;
        fin sino inicio
            sur;
            mientras frente-libre hacer avanza;
            este;
            avanza;
            norte;
         fin;
    fin sino inicio
        si frente-libre entonces inicio
            avanza;
        fin sino inicio
            sur;
            mientras frente-libre hacer avanza;
            este;
            avanza;
            norte;
        fin;
    fin;
fin;
fin;

define-nueva-instruccion contagia como inicio
norte;
si frente-libre entonces inicio
avanza;
 si  no junto-a-zumbador entonces
 deja-zumbador;
 sur;
 avanza;
fin;
sur;
si frente-libre entonces inicio
avanza;
 si  no junto-a-zumbador entonces
 deja-zumbador;
 norte;
 avanza;
fin;
este;
si frente-libre entonces inicio
avanza;
 si  no junto-a-zumbador entonces
 deja-zumbador;
 oeste;
 avanza;
fin;
oeste;
si frente-libre entonces inicio
avanza;
 si  no junto-a-zumbador entonces
 deja-zumbador;
 este;
 avanza;
fin;
norte;
fin;

define-nueva-instruccion busca como inicio
  mientras frente-libre o derecha-libre hacer inicio
    si junto-a-zumbador entonces inicio
           coge-zumbador;
               si junto-a-zumbador entonces inicio
                   contagia;
               fin sino inicio
                   deja-zumbador;
               fiN;
            si frente-libre entonces inicio
                avanza;
            fin sino inicio
                sur;
                mientras frente-libre hacer avanza;
                este;
                avanza;
                norte;
        fin;
    fin sino inicio
        si frente-libre entonces inicio
            avanza;
        fin sino inicio
            sur;
            mientras frente-libre hacer avanza;
            este;
            avanza;
            norte;
        fin;
    fin;
fin;
fin;

define-nueva-instruccion cuenta(n) como inicio
si junto-a-zumbador entonces inicio
    coge-zumbador;
    cuenta(sucede(n));
fin sino inicio
    repetir n veces inicio
        marca;
        si junto-a-zumbador entonces deja-zumbador;
        regresa;
        busca;
        si junto-a-zumbador entonces inicio
           coge-zumbador;
               si junto-a-zumbador entonces inicio
                   contagia;
               fin sino inicio
                   deja-zumbador;
               fiN;
        fin;                                                                                                        
        regresa;
    fin;
fin;
fin;

define-nueva-instruccion recoge(a) como inicio
si frente-libre o derecha-libre entonces inicio
    si junto-a-zumbador entonces inicio
        mientras junto-a-zumbador hacer coge-zumbador;
        recoge(sucede(a));
    fin sino inicio
        si frente-libre entonces inicio
            avanza;
            recoge(a);
        fin sino inicio
            sur;
            mientras frente-libre hacer avanza;
            este;
            avanza;
            norte;
            recoge(a);
        fin;
    fin;
fin sino inicio
    si junto-a-zumbador entonces inicio                                                                                                      
        mientras junto-a-zumbador hacer coge-zumbador;
        recoge(sucede(a));
    fin sino inicio
        regresa;
        repetir a veces deja-zumbador;
        apagate;
    fin;
fin;
fin;

    inicia-ejecucion
    cuenta(0);
    recoge(0);
        apagate;
    termina-ejecucion
finalizar-programa
