/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T R A N S F O R M A T I O N   D E   B U R R O W S - W H E E L E R  :                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtc/BurrowsWheeler.11$vv$c' :                                                                                  */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20151220094427).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   G E N E R A L E S  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  "INCLUDES.01.I"
#include  "BurrowsWheeler.11.vv.I"

#define   NUMERO_DU_TEST                                                                                                                \
                    62                                                                                                                  \
                                        /* Selecteur des chaines de test {12,22,32,...}.                                             */

/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H O I X   D E   L A   C H A I N E   D E   T E S T  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CONCATENE_1(argument1,argument2)                                                                                              \
                    argument1 ## _ ## argument2
#define   CONCATENE_2(argument1,argument2)                                                                                              \
                    CONCATENE_1(argument1,argument2)
                                        /* On notera que l'on ne peut ecritre directement :                                          */
                                        /*                                                                                           */
                                        /*                  CONCATENE_2(argument1,argument2)                                      \  */
                                        /*                                      argument1 ## _ ## argument2                          */
                                        /*                                                                                           */
                                        /* car cela n'assure pas la substitution de 'NUMERO_DU_TEST' par sa valeur, mais au lieu     */
                                        /* de cela, concatene la chaine "NUMERO_DU_TEST" et produit donc des symboles aberrants      */
                                        /* tels 'ChaineA_NUMERO_DU_TEST' au lieu, par exemple, de 'ChaineA_02'...                    */

#define   CHAINE_A                                                                                                                      \
                    CONCATENE_2(ChaineA,NUMERO_DU_TEST)
#define   LONGUEUR_CHAINE_A                                                                                                             \
                    strlen(CONCATENE_2(ChaineA,NUMERO_DU_TEST))

/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O G R A M M E   P R I N C I P A L  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
main()
          {
          CHAR      ChaineA_12[]="ABCDEFGHIJBCDEFGHIJCDEFGHIJDEFGHIJEFGHIJFGHIJGHIJHIJIJJ";
          CHAR      ChaineA_22[]="CDEFGHIJCDEFGABCDEFGHIJBHIJDEFGHGHIJHIJEFGHIJFGHIJIJIJJ";
                                        /* Chaines contenant 1 "A", 2 "B", 3 "C",..., 10 "J".                                        */
          CHAR      ChaineA_32[]="IX.MIXED.PIXIES.SIFT.SIXTY.PIXIE.DUST.BOXES";
          CHAR      ChaineA_42[]="BANANA";
          CHAR      ChaineA_52[]="ABRACADABRA";
          CHAR      ChaineA_62[]="TEXTUEL";
          CHAR      ChaineA_72[]="MPXGZAC";
                                        /* Quelques autres chaines...                                                                */

          TransformationDeBurrowsWheeler_InitialisationChaineATraiter(TransformationDeBurrowsWheeler_ChaineAPermuter
                                                                     ,CHAINE_A
                                                                     ,LONGUEUR_CHAINE_A
                                                                     );

          TransformationDeBurrowsWheeler_InitialisationTransformationDirecte(TransformationDeBurrowsWheeler_ChainePermutee);
          TransformationDeBurrowsWheeler_TransformationDirecte(TransformationDeBurrowsWheeler_ChainePermutee
                                                              ,TransformationDeBurrowsWheeler_ChaineAPermuter
                                                               );
          TransformationDeBurrowsWheeler_DesinitialisationsTransformationDirecte();

          TransformationDeBurrowsWheeler_InitialisationTransformationInverse_02(TransformationDeBurrowsWheeler_ChaineRetablie);
          TransformationDeBurrowsWheeler_TransformationInverse_02(TransformationDeBurrowsWheeler_ChaineRetablie
                                                                 ,TransformationDeBurrowsWheeler_ChainePermutee
                                                                  );
          TransformationDeBurrowsWheeler_Verifications(TransformationDeBurrowsWheeler_ChaineRetablie
                                                      ,TransformationDeBurrowsWheeler_ChaineAPermuter
                                                       );
          TransformationDeBurrowsWheeler_DesinitialisationsTransformationInverse_02(TransformationDeBurrowsWheeler_ChaineRetablie
                                                                                   ,TransformationDeBurrowsWheeler_ChainePermutee
                                                                                    );

          TransformationDeBurrowsWheeler_DesinitialisationChaineATraiter(TransformationDeBurrowsWheeler_ChaineAPermuter);
          }



Copyright © Jean-François Colonna, 2021-2023.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2021-2023.