-
Notifications
You must be signed in to change notification settings - Fork 1
/
game_of_life.cpp
105 lines (85 loc) · 2.7 KB
/
game_of_life.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <cstdlib>
#include <unistd.h>
/*-- Root --*/
#include "TH1F.h"
#include "TCanvas.h"
#include "TF1.h"
#include "TGraph.h"
#include "board.h"
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int len_i; // Tamaño inicial
int len_f; // Tamaño final
int step; // Incremento
// TH1F fData = TH1F("h1","Histograma 1", 10, 0, 30);
TCanvas c1("c1","Canvas 1",700,900);
char hName[100];
// para hacer el fit y extraer los parametros
TF1 *fit = new TF1("fit","gaus");
srand(time(NULL));
cout << endl << "Ingrese el tamaño inicial o -1 para terminar" << endl;
cin >> len_i;
if(len_i < 1)
return -1;
cout << endl << "Ingrese el tamaño final o -1 para terminar" << endl;
cin >> len_f;
if(len_f < len_i)
return -1;
cout << endl << "Ingrese incremento o -1 para terminar" << endl;
cin >> step;
if(step < 1)
return -1;
int maxValues[(int) (len_f - len_i) / step] = {0};
Float_t mean[(int) (len_f - len_i) / step];
ofstream fAllSizes;
ofstream fNData;
fAllSizes.open("./files/Medias_Maximos.txt");
fAllSizes<<"n\tmaximo\tmedia"<<endl;
for(int len = len_i; len <= len_f; len += step)
{
sprintf(hName, "./files/datos_n_%d", len);
fNData.open(hName);
TH1F *fData = new TH1F("h1","Histograma 1", 40, -50, 200);
for(int i = 0; i < 40; i++){
int time = 0;
Board board(len, len);
while(board.loop()){
//board.draw();
//cout << time << endl;
//usleep(100000);
//system("clear");
time++;
}
//system("clear");
fNData<< time << endl;
//cout << time << endl;
cout<<".";
usleep(1000);
fData->Fill(time);
if(time > maxValues[(len - len_i) / step])
maxValues[(len - len_i) / step] = time;
}
system("clear");
sprintf(hName, "n = %d", len);
fData->SetTitle(hName);
fData->Fit(fit);
mean[(len - len_i) / step] = fit->GetParameter(2);
fData->Draw();
sprintf(hName, "./img/fig%d.png", len);
c1.SaveAs(hName);
fAllSizes<<len<<"\t"<<maxValues[(len - len_i) / step];
fAllSizes<<"\t"<<mean[(len - len_i) / step]<<endl;
fNData.close();
delete fData;
}
fAllSizes.close();
cout << "Valores maximos y medias para cada n" << endl;
for(int i = 0; i < (int) (len_f - len_i) / step + 1; i++)
cout << maxValues[i] << " " << mean[i] << endl;
cout << "Ejecucion terminada" << endl;
return 0;
}