iniciar-programa
define-nueva-instruccion divide(n) como
inicio
    si junto-a-zumbador entonces
    inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            divide(sucede(n))
        fin
        sino
        inicio
            divide(n);
        fin;
    fin
    sino
    inicio
        repetir n veces
        deja-zumbador;
    fin;
fin;
define-nueva-instruccion checa como
inicio
    si junto-a-zumbador entonces
    coge-zumbador;
    si junto-a-zumbador entonces
    inicio
        deja-zumbador;
    fin
    sino
    inicio
        deja-zumbador;
        apagate;
    fin;
fin;
define-nueva-instruccion ve(n) como
inicio
    si frente-libre y orientado-al-norte entonces
    inicio
        si frente-libre entonces
        inicio
            avanza;
            si frente-libre entonces
            inicio
                avanza;
                ve(sucede(n));
            fin
            sino
            inicio
                ve(n);
            fin;
        fin;
    fin
    sino
    inicio
        repetir 2 veces
        gira-izquierda;
        mientras frente-libre hacer
        avanza;
        gira-izquierda;
        repetir n veces
        inicio
        si orientado-al-este entonces
        inicio
            si frente-libre entonces
            avanza;
            si frente-libre entonces
            avanza
            sino
            inicio
            repetir 2 veces
            gira-izquierda;
            avanza;
            fin;
        fin;
        fin;
    fin;
fin;
define-nueva-instruccion centro(n) como
inicio
    si orientado-al-oeste entonces
    inicio
        si frente-libre entonces
        inicio
        repetir 2 veces
        avanza;
        centro(sucede(n));
        fin
        sino
        inicio
            repetir 2 veces
            gira-izquierda;
            centro(n);
        fin;
    fin
    sino
    inicio
       repetir n veces
       avanza;
       repetir 2 veces
       gira-izquierda;
    fin;
fin;
define-nueva-instruccion cuadro(n) como
inicio
    si frente-libre y orientado-al-oeste entonces
    inicio
        avanza;
        cuadro(sucede(n))
    fin
    sino
    inicio
            mientras no-orientado-al-norte hacer
           gira-izquierda;
           si orientado-al-norte entonces
           inicio
               repetir 2 veces
               repetir n veces
               inicio
               si no-junto-a-zumbador entonces
                   inicio
                       repetir n veces
                       deja-zumbador;
                       deja-zumbador;
                   fin;
                   avanza;
               fin;
               repetir 3 veces
               gira-izquierda;
           fin;
           si orientado-al-este entonces
           inicio
               repetir 2 veces
               repetir n veces
               inicio
               si no-junto-a-zumbador entonces
                   inicio
                       repetir n veces
                       deja-zumbador;
                       deja-zumbador;
                   fin;
                   avanza;
               fin;
               repetir 3 veces
               gira-izquierda;
           fin;
           si orientado-al-sur entonces
           inicio
               repetir 2 veces
               repetir n veces
               inicio
                   si no-junto-a-zumbador entonces
                   inicio
                   repetir n veces
                   deja-zumbador;
                   deja-zumbador;
                   fin;
                   avanza;
               fin;
               repetir 3 veces
               gira-izquierda;
               repetir 2 veces
               repetir n veces
               inicio
                   si no-junto-a-zumbador entonces
                   inicio
                   repetir n veces
                   deja-zumbador;
                   deja-zumbador;
                   fin;
                   avanza;
               fin;
               deja-zumbador;
               checa;
               coge-zumbador;
               repetir 2 veces
               gira-izquierda;
               avanza;
               gira-izquierda;
               avanza;
               gira-izquierda;
           fin;
           si orientado-al-oeste entonces
           inicio
               repetir n veces
               deja-zumbador;
               checa;
               repetir n veces
               coge-zumbador;
           fin;
           mientras no-orientado-al-norte hacer
           gira-izquierda;
           cuadro(precede(n));
    fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-norte hacer
    gira-izquierda;
    ve(0);
    mientras no-orientado-al-oeste hacer
    gira-izquierda;
    centro(0);
    cuadro(0);
        apagate;
    termina-ejecucion
finalizar-programa
