Load files
This commit is contained in:
parent
a4785dd983
commit
029860bd79
4 changed files with 49 additions and 7 deletions
|
|
@ -11,7 +11,7 @@ MarkovMatrix::MarkovMatrix()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MarkovMatrix::MarkovMatrix(char length)
|
MarkovMatrix::MarkovMatrix(int length)
|
||||||
{
|
{
|
||||||
this->length = length;
|
this->length = length;
|
||||||
}
|
}
|
||||||
|
|
@ -57,14 +57,44 @@ std::unordered_map<std::string, int> MarkovMatrix::hiccup(std::string& previous)
|
||||||
|
|
||||||
void MarkovMatrix::load(std::istream& is)
|
void MarkovMatrix::load(std::istream& is)
|
||||||
{
|
{
|
||||||
char file_version;
|
int version;
|
||||||
is.read(&file_version, sizeof(char));
|
is >> version;
|
||||||
|
if (version != this->file_version) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
is >> this->length;
|
||||||
|
|
||||||
|
int size;
|
||||||
|
is >> size;
|
||||||
|
std::cout << "size: " << size << std::endl;
|
||||||
|
std::string read; std::getline(is, read);
|
||||||
|
for (int i=0; i<size; ++i) {
|
||||||
|
// read line as string
|
||||||
|
std::string before;
|
||||||
|
std::getline(is, before);
|
||||||
|
// read line as int
|
||||||
|
std::getline(is, read);
|
||||||
|
int characters = std::stoi(read);
|
||||||
|
|
||||||
|
for (int j=0; j<characters; ++j) {
|
||||||
|
// read line as string
|
||||||
|
std::string current;
|
||||||
|
std::getline(is, current);
|
||||||
|
// read line as int
|
||||||
|
std::getline(is, read);
|
||||||
|
int count = std::stoi(read);
|
||||||
|
|
||||||
|
this->matrix[before][current] = count;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MarkovMatrix::save(std::ostream& os)
|
void MarkovMatrix::save(std::ostream& os)
|
||||||
{
|
{
|
||||||
os << this->file_version << std::endl;
|
os << this->file_version << std::endl;
|
||||||
|
os << this->length << std::endl;
|
||||||
|
|
||||||
os << this->matrix.size() << std::endl;
|
os << this->matrix.size() << std::endl;
|
||||||
for (auto map : this->matrix) {
|
for (auto map : this->matrix) {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ class MarkovMatrix
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MarkovMatrix();
|
MarkovMatrix();
|
||||||
MarkovMatrix(char length);
|
MarkovMatrix(int length);
|
||||||
~MarkovMatrix();
|
~MarkovMatrix();
|
||||||
|
|
||||||
void feed(std::string& line);
|
void feed(std::string& line);
|
||||||
|
|
@ -21,10 +21,10 @@ public:
|
||||||
virtual void save(std::ostream& os);
|
virtual void save(std::ostream& os);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char length = 0;
|
int length = 0;
|
||||||
std::unordered_map<std::string, std::unordered_map<std::string, int> > matrix;
|
std::unordered_map<std::string, std::unordered_map<std::string, int> > matrix;
|
||||||
|
|
||||||
const char file_version = 1; // version of file format
|
const int file_version = 1; // version of file format
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,12 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
class SimpleMarkov : public Markov
|
class SimpleMarkov : public Markov
|
||||||
{
|
{
|
||||||
|
|
@ -72,7 +78,13 @@ void SimpleMarkov::load(std::string filename)
|
||||||
{
|
{
|
||||||
std::ifstream ifs(filename);
|
std::ifstream ifs(filename);
|
||||||
|
|
||||||
|
char gentype;
|
||||||
|
int version;
|
||||||
|
ifs >> gentype >> version;
|
||||||
|
|
||||||
|
if (gentype == this->file_gentype and version == this->file_version) {
|
||||||
|
ifs >> this->matrix;
|
||||||
|
}
|
||||||
|
|
||||||
ifs.close();
|
ifs.close();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ private:
|
||||||
std::default_random_engine generator;
|
std::default_random_engine generator;
|
||||||
|
|
||||||
const char file_gentype = 's'; // type of the generator
|
const char file_gentype = 's'; // type of the generator
|
||||||
const char file_version = 1; // version of file format
|
const int file_version = 1; // version of file format
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue