iniciar-programa
    define-nueva-instruccion gira (z) como inicio
        repetir z veces
            gira-izquierda;
    fin;
    define-nueva-instruccion ge como inicio
       mientras no-orientado-al-norte hacer
          gira-izquierda;
       mientras junto-a-zumbador y frente-bloqueado y izquierda-bloqueada y derecha-bloqueada hacer inicio
          mientras no-orientado-al-sur hacer
             gira-izquierda;
          avanza;
          deja-zumbador;
          gira-izquierda;
          si frente-libre entonces
             avanza;
          si frente-bloqueado y no-junto-a-zumbador entonces
             deja-zumbador;
          si frente-bloqueado y orientado-al-este entonces
             apagate;
          gira(1);
          avanza;
        fin;
    fin;
    define-nueva-instruccion apagacion como inicio
        mientras no-orientado-al-sur hacer
            gira-izquierda;
        si frente-libre entonces
           avanza;
        mientras no-orientado-al-este hacer
            gira-izquierda;
        si frente-bloqueado entonces
            apagate;
        avanza;
        gira (1);
        avanza;
        mientras no-orientado-al-este hacer
            gira-izquierda;
    fin;                                                                            
    define-nueva-instruccion apag como inicio
        mientras no-orientado-al-sur hacer
            gira-izquierda;
        avanza;
        mientras no-orientado-al-este hacer
            gira-izquierda;

        si frente-libre entonces inicio
            mientras no orientado-al-oeste hacer
                gira-izquierda;
        fin;
    fin;
    define-nueva-instruccion posicionate como inicio
        si frente-libre entonces
            avanza;
        mientras no-orientado-al-norte hacer
            gira-izquierda;
        si frente-libre entonces
            avanza;
        gira (3);
        mientras frente-bloqueado y derecha-bloqueada hacer inicio
           mientras no-orientado-al-norte hacer
              gira-izquierda;
           mientras junto-a-zumbador y frente-bloqueado y derecha-bloqueada y izquierda-bloqueada hacer
              ge;
        fin;
    fin;
    define-nueva-instruccion marcador como inicio
        mientras no-orientado-al-norte hacer
            gira-izquierda;
            avanza;
            mientras no-orientado-al-oeste hacer
                gira-izquierda;
            mientras frente-libre hacer
                avanza;
            mientras no-orientado-al-sur hacer
                gira-izquierda;
            avanza;
            deja-zumbador;
            mientras no-orientado-al-este hacer
                gira-izquierda;
            avanza;
            mientras no-junto-a-zumbador hacer inicio
                deja-zumbador;
                si frente-libre entonces
                    avanza;
           si frente-bloqueado y junto-a-zumbador y orientado-al-este entonces
              apagate;
           fin;
            posicionate;
    fin;
    define-nueva-instruccion alacran como inicio
        mientras no-orientado-al-este hacer
            gira-izquierda;
        mientras frente-libre hacer
            avanza;
        si frente-bloqueado entonces
            apag;
        deja-zumbador;
        marcador;
    fin;
    define-nueva-instruccion posi como inicio
         mientras frente-libre hacer
            avanza;
        mientras no-orientado-al-este hacer
            gira-izquierda;
    fin;
    define-nueva-instruccion posicion como inicio
        mientras frente-libre hacer inicio
            si junto-a-zumbador entonces
                alacran;
            si frente-libre y no-junto-a-zumbador entonces
                avanza;
        fin;
         mientras no-orientado-al-norte hacer
            gira-izquierda;
         mientras junto-a-zumbador y frente-bloqueado y izquierda-bloqueada y derecha-bloqueada hacer
            ge;
        mientras junto-a-zumbador hacer
           alacran;
        si frente-bloqueado entonces
            apagacion;
    fin;
    inicia-ejecucion
        posi;
        mientras frente-libre hacer
            posicion;
        mientras frente-bloqueado hacer
            posicion;
        si junto-a-zumbador entonces
           alacran;
        si frente-bloqueado y izquierda-bloqueada y orientado-al-este entonces
           posicion;
        si no-junto-a-zumbador entonces
          posi;
           posicion;
         mientras frente-libre hacer
            posicion;
         si frente-bloqueado y izquierda-bloqueada y orientado-al-este entonces
            ge;
          mientras frente-bloqueado hacer
            posicion;
        apagate;
    termina-ejecucion
finalizar-programa
