iniciar-programa
    define-nueva-instruccion atras como inicio
        gira-izquierda;
        gira-izquierda;
    fin;
    define-nueva-instruccion derecha como inicio
        atras;
        gira-izquierda;
    fin;
    define-nueva-instruccion izquierda como inicio
        gira-izquierda;
    fin;
    define-nueva-instruccion fla como inicio
        mientras frente-libre hacer avanza;
    fin;
    define-nueva-instruccion centro como inicio
        si frente-libre y orientado-al-norte y derecha-libre entonces inicio
            avanza; derecha; avanza; izquierda;
            si frente-libre y derecha-libre entonces inicio
                avanza; derecha; avanza; izquierda;
            fin
            sino inicio
                si frente-bloqueado entonces atras;
                si derecha-bloqueada entonces atras;
            fin;
            si frente-bloqueado entonces atras;
            si orientado-al-norte entonces centro;
            avanza; derecha; avanza; izquierda;
        fin
        sino inicio
            si orientado-al-norte entonces atras;
        fin;
    fin;
    define-nueva-instruccion deja(x) como inicio
        si no-junto-a-zumbador entonces inicio
             si no-junto-a-zumbador entonces inicio
                 repetir x veces deja-zumbador;
             fin;
             si frente-libre entonces inicio
                 avanza; derecha; avanza; izquierda;
                 deja(sucede(x));
             fin;
         fin;
     fin;
     define-nueva-instruccion dejazum(x) como inicio
         si junto-a-zumbador entonces inicio
             coge-zumbador;
             dejazum(sucede(x));
             si no-junto-a-zumbador entonces inicio
             mientras no-junto-a-zumbador hacer inicio
                 repetir x veces deja-zumbador;
                 derecha; avanza;
                 si junto-a-zumbador entonces inicio
                     atras; avanza; derecha; avanza;
                 fin;
             fin;
             fin
             sino inicio
                 si frente-libre y izquierda-libre y orientado-al-oeste entonces inicio
                     izquierda; avanza; derecha; avanza; derecha;
                 fin
                 sino inicio
                     si orientado-al-oeste entonces inicio
                         apagate;
                     fin;
                 fin;
             fin;
         fin;
         si no-junto-a-zumbador entonces inicio
         repetir x veces deja-zumbador;
         coge-zumbador;
         avanza;
         fin;
     fin;

    inicia-ejecucion
        mientras no-orientado-al-norte hacer gira-izquierda;
        centro;
        deja(1);
        atras;
        centro;
        si frente-libre entonces inicio
            avanza; derecha; avanza; derecha;
        fin;
        mientras frente-libre hacer inicio
            dejazum(1);
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
 