43 lines
672 B
C++
43 lines
672 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
#include <tuple>
|
|
|
|
using std::vector;
|
|
using std::tuple;
|
|
using std::string;
|
|
|
|
enum class Axis { X, Y };
|
|
|
|
using Coordinate = tuple<size_t, size_t>;
|
|
using Instruction = tuple<Axis, size_t>;
|
|
|
|
class Sheet {
|
|
private:
|
|
vector<bool> map;
|
|
size_t width = 0;
|
|
size_t height = 0;
|
|
vector<Instruction> instructions;
|
|
|
|
public:
|
|
Sheet(string path);
|
|
|
|
void fold_once();
|
|
|
|
void fold_all();
|
|
|
|
int count_dots();
|
|
|
|
void print();
|
|
|
|
private:
|
|
void fold(Axis axis, size_t pos);
|
|
|
|
void fold_up(size_t pos);
|
|
|
|
void fold_left(size_t pos);
|
|
};
|
|
|
|
tuple<vector<Coordinate>, vector<Instruction>> parse_file(string path);
|