Skip to content
Snippets Groups Projects
Commit 57ddf379 authored by timeo's avatar timeo
Browse files

SAIS marche avec la somme simple, pas centrée

parent 9b1bb64e
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,8 @@ using namespace std::chrono;
string fichier;
int32_t* sommeAdditiveArray;
SuffixTree *arbre;
int32_t maxi = 0;
void parseFile(string namefile) // Enregitrement du fichier dans une variable
{
......@@ -45,7 +47,12 @@ void sommeAdditive(){
//std::cout << int(fichier[3]) - 48 << std::endl;
for (int i = 0; i <= fichier.size(); i++){
compteur += int(fichier[i]) - 48; // -48 pour faire la conversation char -> int de manière explicite
sommeAdditiveArray[i+1] = compteur;
if (compteur > maxi){
maxi = compteur;
}
}
}
......@@ -74,6 +81,10 @@ void sommeAdditiveCentre(){
}
compteur += nb;
sommeAdditiveArray[i+1] = compteur;
int32_t compteur_val_absolu = (compteur*2)/2;
if (compteur_val_absolu > maxi){
maxi = compteur_val_absolu;
}
}
}
/**
......@@ -303,22 +314,32 @@ int main(){
//parseFile("motstests/ACF_100_over_0123.txt");
parseFile("testfiles/100000fromCorrect.txt");
parseFile("testfiles/10000fromCorrect.txt");
//fichier = "00100100200100112001020011003";
std::cout << fichier.size() << std::endl;
sommeAdditiveCentre();
std::cout << sommeAdditiveArray[99999] << std::endl;
sommeAdditive();
/*int32_t* T = sommeAdditiveArray;
int32_t fs = 6000;
int32_t* SA = (int32_t*) malloc(11000 * sizeof(int32_t));
int32_t* T = new int32_t[fichier.size() + 1];
for (int i = 0; i < fichier.size() + 2; i++){
T[i] = sommeAdditiveArray[i];
}
int32_t fs = 8000;
int32_t* SA = new int32_t[fichier.size() + fs + 1];
std::cout << sizeof(SA)<< endl;
//SA = malloc()
std::cout << libsais_int(T, SA, 5001, 10, fs) << std::endl;*/
int32_t k = maxi;
std::cout << maxi << std::endl;
std::cout << libsais_int(T, SA, 10000, k, fs) << std::endl;
// free(T);
// free(SA);
//arbreDesSuffixes();
}
\ No newline at end of file
}
// Avec 100 000, segfault vers 14600
// Avec 50 000 segfault vers 7375
// Avec 5 000 va jusqu'au bout
// 50 000 segfault : 0x0000555555560172
\ No newline at end of file
......@@ -58,7 +58,10 @@ tree2: SuffixTree.cpp
$(BIB)
main: main.cpp $(OBJETS)
$(G) $(OPEN) $< -L. -lsais -o $@ $(OBJETS)
$(G) -g $(OPEN) $< -L. -lsais -o $@ $(OBJETS)
testSais: testSais.cpp $(OBJETS)
$(G) $(OPEN) $< -L. -lsais -o $@
run:
./$(EXEC)
#include <string>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <chrono>
#include "libsais-master/src/libsais.h"
#include <stdint.h>
#include <omp.h>
int main(){
int32_t* T = new int32_t[5];
int32_t* SA = new int32_t[10];
srand(time(NULL));
T[0] = 0;
T[1] = 0;
T[2] = 2;
T[3] = 2;
T[4] = 1;
int32_t n = 3;
int32_t k = 3;
int32_t fs = 0;
int32_t ret = libsais_int(T, SA, n, k, fs);
std::cout << "Tableau 5 : " << ret << std::endl;
/* -------------------------------------------------------- */
n = 10000;
T = new int32_t[n];
for (int i = 0; i < n; i++){
T[i] = rand() % 4;
}
k = 4;
SA = new int32_t[n];
ret = libsais_int(T, SA, n, k, fs);
std::cout << "Tableau 10000 : " << ret << std::endl;
/* -------------------------------------------------------- */
T = new int32_t[5];
SA = new int32_t[5];
srand(time(NULL));
T[0] = 0;
T[1] = 0;
T[2] = -2;
T[3] = -2;
T[4] = -10000000;
n = 3;
k = 3;
fs = 0;
ret = libsais_int(T, SA, n, k, fs);
std::cout << "Tableau 5 : " << ret << std::endl;
/* -------------------------------------------------------- */
}
// segfault quand n > size T
// double free + core dumped quand T = N > SA
/* initialize random seed:
srand (time(NULL));
/* generate secret number between 1 and 10:
iSecret = rand() % 10 + 1; */
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment