iniciar-programa
define-nueva-instruccion gira(n) como
inicio
    repetir n veces gira-izquierda;
fin;

define-nueva-instruccion nueve como
inicio
    repetir 9 veces
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
        fin
        sino
        inicio
            si no-junto-a-zumbador entonces deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
    si junto-a-zumbador entonces        (* Faltan o no es divisible*)
    inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            deja-zumbador;
            nueve;
        fin
        sino
        inicio
            deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
fin;

define-nueva-instruccion siete como
inicio
    repetir 7 veces
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
        fin
        sino
        inicio
            si no-junto-a-zumbador entonces deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
    si junto-a-zumbador entonces        (* Faltan o no es divisible*)
    inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            deja-zumbador;
            siete;
        fin
        sino
        inicio
            deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
fin;

define-nueva-instruccion cinco como
inicio
    repetir 5 veces
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
        fin
        sino
        inicio
            si no-junto-a-zumbador entonces deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
    si junto-a-zumbador entonces        (* Faltan o no es divisible*)
    inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            deja-zumbador;
            cinco;
        fin
        sino
        inicio
            deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
fin;

define-nueva-instruccion tres como
inicio
    repetir 3 veces
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
        fin
        sino
        inicio
            si no-junto-a-zumbador entonces deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
    si junto-a-zumbador entonces        (* Faltan o no es divisible*)
    inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            deja-zumbador;
            tres;
        fin
        sino
        inicio
            deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
fin;

define-nueva-instruccion dos como
inicio
    repetir 2 veces
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
        fin
        sino
        inicio
            deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
    si junto-a-zumbador entonces        (* Faltan o no es divisible*)
    inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            deja-zumbador;
            dos;
        fin
        sino
        inicio
            deja-zumbador;
            sal-de-instruccion;
        fin;
    fin;
fin;

define-nueva-instruccion checa(z) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        checa(sucede(z));
    fin
    sino
    inicio
        repetir z veces deja-zumbador;
        repetir 2 veces si junto-a-zumbador entonces coge-zumbador;
        si no-junto-a-zumbador entonces
        inicio
            deja-zumbador;
            sal-de-instruccion;
        fin;
        si junto-a-zumbador entonces
        inicio
            mientras junto-a-zumbador hacer coge-zumbador;
            repetir z veces deja-zumbador;
            dos;
            si junto-a-zumbador entonces
            inicio
                mientras junto-a-zumbador hacer coge-zumbador;
                repetir z veces deja-zumbador;
                repetir 3 veces si junto-a-zumbador entonces coge-zumbador;
                si no-junto-a-zumbador entonces
                inicio
                    deja-zumbador;
                    sal-de-instruccion;
                fin;
                si junto-a-zumbador entonces
                inicio
                    mientras junto-a-zumbador hacer coge-zumbador;
                    repetir z veces deja-zumbador;
                    tres;
                    si junto-a-zumbador entonces
                    inicio
                        mientras junto-a-zumbador hacer coge-zumbador;
                        repetir z veces deja-zumbador;
                        repetir 5 veces si junto-a-zumbador entonces coge-zumbador;
                        si no-junto-a-zumbador entonces
                        inicio
                            deja-zumbador;
                            sal-de-instruccion;
                        fin;
                        si junto-a-zumbador entonces
                        inicio
                            mientras junto-a-zumbador hacer coge-zumbador;
                            repetir z veces deja-zumbador;
                            cinco;
                            si junto-a-zumbador entonces
                            inicio
                                mientras junto-a-zumbador hacer coge-zumbador;
                                repetir z veces deja-zumbador;
                                repetir 7 veces si junto-a-zumbador entonces coge-zumbador;
                                si no-junto-a-zumbador entonces
                                inicio
                                    deja-zumbador;
                                    sal-de-instruccion;
                                fin;
                                si junto-a-zumbador entonces
                                inicio
                                    mientras junto-a-zumbador hacer coge-zumbador;
                                    repetir z veces deja-zumbador;
                                    siete;
                                    si junto-a-zumbador entonces
                                    inicio
                                        mientras junto-a-zumbador hacer coge-zumbador;
                                        repetir z veces deja-zumbador;
                                        repetir 9 veces si junto-a-zumbador entonces coge-zumbador;
                                        si no-junto-a-zumbador entonces
                                        inicio
                                            deja-zumbador;
                                            sal-de-instruccion;
                                        fin;
                                        si junto-a-zumbador entonces
                                            inicio
                                                mientras junto-a-zumbador hacer coge-zumbador;
                                                repetir z veces deja-zumbador;
                                                nueve;

                                            fin;

                                    fin;
                                fin;
                            fin;
                        fin;
                    fin;
                fin;
            fin;
        fin;
    fin;
fin;

define-nueva-instruccion pas(x) como
inicio
    repetir 4 veces
    inicio
        si frente-libre entonces
        inicio
            avanza;
            si junto-a-zumbador entonces
            inicio
               coge-zumbador;
               si junto-a-zumbador entonces
               inicio
                  deja-zumbador;
                  checa(0);
                  si junto-a-zumbador entonces
                  inicio
                      mientras junto-a-zumbador hacer coge-zumbador;
                      pas(x);
                  fin
                  sino
                  inicio
                      gira(2);
                      avanza;
                      gira(3);
                  fin;
               fin
               sino
               inicio
                   gira(2);
                   avanza;
                   gira(3);
               fin;
            fin
            sino
            inicio
               gira(2);
               avanza;
               gira(3);
            fin;
        fin
        sino
        inicio
            gira(1);
        fin;
    fin;
fin;

    inicia-ejecucion
    mientras junto-a-zumbador hacer coge-zumbador;
    pas(0);
        apagate;
    termina-ejecucion
finalizar-programa
