iniciar-programa

define-nueva-instruccion gretel(n) como inicio
        si frente-libre entonces inicio
            avanza;
            gretel(sucede(n));
        fin
        sino inicio
        repetir sucede(n) veces inicio
            repetir sucede(n) veces deja-zumbador;
        fin;
        fin;
fin;

define-nueva-instruccion hansel(n) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            hansel(sucede(n));
        fin
        sino inicio
            repetir n veces deja-zumbador;
            si junto-a-zumbador entonces inicio
                si frente-libre entonces inicio
                    avanza;
                    si no-junto-a-zumbador entonces inicio
                        repetir precede(n) veces deja-zumbador;
                    fin
                    sino inicio
                        repetir 2 veces gira-izquierda;
                        avanza;
                        repetir 2 veces gira-izquierda;
                        gira-izquierda;
                        avanza;
                        si no-junto-a-zumbador entonces inicio
                            repetir precede(n) veces deja-zumbador;
                        fin
                        sino inicio
                            repetir 2 veces gira-izquierda;
                            avanza;
                            coge-zumbador;
                            sal-de-instruccion;
                        fin;
                    fin;
                fin
                sino inicio
                    gira-izquierda;
                    si frente-libre entonces avanza;
                    repetir precede(n) veces deja-zumbador;
                fin;
            fin;
        fin;
fin;

    inicia-ejecucion
    mientras no-orientado-al-sur hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-oeste hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    mientras no-orientado-al-norte hacer gira-izquierda;
    mientras frente-libre hacer gretel(0);
    repetir 2 veces gira-izquierda;
    mientras junto-a-zumbador hacer hansel(0);
    deja-zumbador;

        apagate;
    termina-ejecucion
finalizar-programa
