#pragma once #include #include #include using std::vector; using std::tuple; using std::string; enum class Axis { X, Y }; using Coordinate = tuple; using Instruction = tuple; class Sheet { private: vector map; size_t width = 0; size_t height = 0; vector 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> parse_file(string path);