iniciar-programa

    define-nueva-instruccion norte como mientras no orientado-al-norte hacer gira-izquierda;
    define-nueva-instruccion sur como mientras no orientado-al-sur hacer gira-izquierda;
    define-nueva-instruccion este como mientras no orientado-al-este hacer gira-izquierda;
    define-nueva-instruccion oeste como mientras no orientado-al-oeste hacer gira-izquierda;

    define-nueva-instruccion revisa como inicio
        avanza;
        si izquierda-bloqueada y derecha-bloqueada entonces inicio
            sur;
        fin;
        si no orientado-al-sur entonces inicio
             si izquierda-libre entonces inicio
                 norte;
                 avanza;
                 este;
                 si frente-libre entonces inicio
                     sur;
                     avanza;
                     este;
                     si frente-libre entonces inicio
                         norte;
                     fin sino inicio
                         sur;
                     fin;
                 fin sino inicio
                     sur;
                     avanza;
                     este;
                     si frente-libre entonces inicio
                         sur;
                     fin sino inicio
                         sur;
                     fin;
                 fin;
             fin sino inicio
                 sur;
                 avanza;
                 este;
                 si frente-libre entonces inicio
                     norte;
                     avanza;
                     este;
                     si frente-libre entonces inicio
                         norte;
                     fin sino inicio
                         sur;
                     fin;
                 fin sino inicio
                     norte;
                     avanza;
                     este;
                     si frente-libre entonces inicio
                         sur;
                     fin sino inicio
                         sur;
                     fin;
                 fin;
             fin;
         fin;
     fin;

    define-nueva-instruccion revisaSalida como inicio
        si izquierda-bloqueada y derecha-bloqueada entonces inicio
            sur;
        fin;
        si izquierda-libre y no orientado-al-sur entonces inicio
             norte;
             avanza;
             este;
             si frente-libre entonces inicio
                 sur;
                 avanza;
                 este;
                 si frente-libre entonces inicio
                     norte;
                 fin sino inicio
                      sur;
                 fin;
             fin sino inicio
                 sur;
                 avanza;
                 este;
                 si frente-libre entonces inicio
                     sur;
                 fin sino inicio
                     sur;
                 fin;
             fin;
         fin sino inicio
             si no orientado-al-sur entonces inicio
             sur;
             avanza;
             este;
             si frente-libre entonces inicio
                 norte;
                 avanza;
                 este;
                 si frente-libre entonces inicio
                     norte;
                 fin sino inicio
                     sur;
                 fin;
             fin sino inicio
                 norte;
                 avanza;
                 este;
                 si frente-libre entonces inicio
                     sur;
                 fin sino inicio
                     sur;
                 fin;
             fin;
             fin;
         fin;
     fin;

    define-nueva-instruccion superkarelman(n) como inicio
        si no junto-a-zumbador y algun-zumbador-en-la-mochila entonces inicio
            deja-zumbador;
            este;
            si frente-libre entonces inicio
                si si-es-cero(n) entonces inicio
                    revisa;
                    si orientado-al-sur entonces inicio
                        superkarelman(sucede(n));
                        oeste;
                        avanza;
                        sur;
                    fin sino inicio
                        oeste;
                        avanza;
                    fin;
                fin sino inicio
                    si algun-zumbador-en-la-mochila entonces inicio
                        este;
                        avanza;
                        revisaSalida;
                        si orientado-al-norte entonces inicio
                            deja-zumbador;
                            apagate;
                        fin sino inicio
                            superkarelman(n);
                            oeste;
                            avanza;
                            sur;
                        fin;
                    fin;
                fin;
            fin;
            si no orientado-al-oeste entonces inicio
            norte;
            si frente-libre entonces inicio
                avanza;
                superkarelman(n);
                sur;
                avanza;
            fin;
            sur;
            si frente-libre entonces inicio
                avanza;
                superkarelman(n);
                norte;
                avanza;
            fin;

            fin;
            coge-zumbador;
        fin;
    fin;

    inicia-ejecucion
        superkarelman(0);
        apagate;
    termina-ejecucion
finalizar-programa
