advent-of-code/2021/day-13/common.hpp

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);