iniciar-programa

define-nueva-instruccion frijol como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 1 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 2 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir  3 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 4 veces
deja-zumbador;
sal-de-instruccion;
fin;

si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 5 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 6 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 7 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 8 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir  9 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 10 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 11 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 12 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 13 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 14 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 11 veces
deja-zumbador;
apagate;
fin;

si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 15 veces
deja-zumbador;
sal-de-instruccion;
fin;

si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 16 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 17 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 18 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 19 veces
deja-zumbador;
sal-de-instruccion;
fin;si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 20 veces
deja-zumbador;
sal-de-instruccion;
fin;
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
si no junto-a-zumbador entonces inicio
repetir 10 veces
deja-zumbador;
apagate;
fin;
si junto-a-zumbador entonces inicio
repetir 22 veces
deja-zumbador;
fin;



     fin;

    define-nueva-instruccion gira(n) como inicio
      repetir n veces gira-izquierda;
    fin;
    define-nueva-instruccion busca(n) como inicio
      si no-junto-a-zumbador entonces inicio
        deja-zumbador;
        repetir 4 veces inicio
          si frente-libre entonces inicio
            avanza;
            busca(sucede(n));
            gira(2);
            avanza;
            gira(2);
          fin;
          gira(1);
        fin;
      fin
      sino inicio
        si junto-a-zumbador entonces coge-zumbador;
          si junto-a-zumbador entonces inicio
            repetir n veces deja-zumbador;
            deja-zumbador;
          fin
          sino deja-zumbador;
      fin;
    fin;
    define-nueva-instruccion coge-zumbadores como inicio
      si junto-a-zumbador entonces inicio
        coge-zumbador;
        si junto-a-zumbador entonces inicio
          deja-zumbador;
        fin;
        repetir 4 veces inicio
          si frente-libre entonces inicio
            avanza;
            coge-zumbadores;
            gira(2);
            avanza;
            gira(2);
          fin;
          gira(1);
        fin;
      fin;
    fin;
    define-nueva-instruccion compara(n) como inicio
      si no si-es-cero(n) y junto-a-zumbador entonces inicio
        coge-zumbador;
        compara(precede(n));
        si orientado-al-oeste entonces deja-zumbador;
      fin
      sino inicio
        si junto-a-zumbador entonces inicio
          mientras junto-a-zumbador hacer coge-zumbador;
        fin
        sino inicio
          mientras no-orientado-al-oeste hacer gira-izquierda;
        fin;
      fin;
    fin;
    define-nueva-instruccion pasos(n) como inicio
      si no-junto-a-zumbador entonces inicio
        deja-zumbador;
        repetir 4 veces inicio
          si frente-libre entonces inicio
            avanza;
            pasos(sucede(n));
            gira(2);
            avanza;
            gira(2);
          fin;
          gira(1);
        fin;
      fin
      sino inicio
        si junto-a-zumbador entonces coge-zumbador;
        si junto-a-zumbador entonces inicio
          deja-zumbador;
          si junto-a-zumbador entonces inicio
            si no-orientado-al-este entonces inicio
              gira-izquierda;
              si no-orientado-al-este entonces inicio
                gira-izquierda;
                si no-orientado-al-este entonces inicio
                  gira-izquierda;
                  compara(n);
                  si no-junto-a-zumbador entonces inicio
                    repetir n veces deja-zumbador;
                  fin;
                  si orientado-al-este entonces gira(1)
                  sino gira(3);
                fin
                sino inicio
                  compara(n);
                  si no-junto-a-zumbador entonces inicio
                    repetir n veces deja-zumbador;
                  fin;
                  si orientado-al-este entonces gira(2)
                fin;
              fin
              sino inicio
                compara(n);
                si no-junto-a-zumbador entonces inicio
                  repetir n veces deja-zumbador;
                fin;
                si orientado-al-oeste entonces gira(1)
                sino gira(3);
              fin;
            fin
            sino inicio
              compara(n);
              si no-junto-a-zumbador entonces inicio
                repetir n veces deja-zumbador;
              fin;
              si orientado-al-oeste entonces gira(2);
            fin;
          fin;
        fin
        sino deja-zumbador;
      fin;
    fin;
    define-nueva-instruccion pasos2(n) como inicio
      si no-junto-a-zumbador entonces inicio
        deja-zumbador;
        repetir 4 veces inicio
          si frente-libre entonces inicio
            avanza;
            pasos2(sucede(n));
            gira(2);

            avanza;
            gira(2);
          fin;
          gira(1);
        fin;
      fin
      sino inicio
        si junto-a-zumbador entonces coge-zumbador;
        si junto-a-zumbador entonces inicio
          deja-zumbador;
          si junto-a-zumbador entonces inicio
            si no-orientado-al-este entonces inicio
              gira-izquierda;
              si no-orientado-al-este entonces inicio
                gira-izquierda;
                si no-orientado-al-este entonces inicio
                  gira-izquierda;
                  compara(n);
                  si no-junto-a-zumbador entonces inicio
                    repetir n veces deja-zumbador;
                  fin;
                  si orientado-al-este entonces gira(1)
                  sino gira(3);
                fin
                sino inicio
                  compara(n);
                  si no-junto-a-zumbador entonces inicio
                    repetir n veces deja-zumbador;
                  fin;
                  frijol;
                  si orientado-al-este entonces gira(2);
                fin;
              fin
              sino inicio
                compara(n);
                si no-junto-a-zumbador entonces inicio
                  repetir n veces deja-zumbador;
                fin;
                si orientado-al-oeste entonces gira(1)
                sino gira(3);
              fin;
            fin
            sino inicio
              compara(n);
              si no-junto-a-zumbador entonces inicio
                repetir n veces deja-zumbador;
              fin;
              frijol;
              si orientado-al-oeste entonces gira(2);
            fin;
          fin;
        fin
        sino deja-zumbador;
      fin;
    fin;
  inicia-ejecucion
       busca(0);
       coge-zumbadores;
       pasos2(0);
       gira-izquierda;
       coge-zumbadores;
       pasos(0);
       gira-izquierda;
       coge-zumbadores;
       pasos(0);
       gira-izquierda;
       coge-zumbadores;
       pasos(0);
       coge-zumbadores;
       pasos(0);
       coge-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
