/*************************************************************************************************************************************/
/* */
/* 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);
}