#pragma once #include struct Pos; class Puzzle; class Randomizer2Core { public: // CAUTION: Does not actually cut edges, just returns a list of suggested cuts. static std::vector CutEdges(const Puzzle& p, size_t numEdges, bool allowEdges); private: static std::vector CutEdgesInternal(const Puzzle& p, std::vector& edges, size_t numEdges); static void DebugColorGrid(const std::vector>& colorGrid); static void FloodFill(const Puzzle& p, std::vector>& colorGrid, int color, int x, int y); static void FloodFillOutside(const Puzzle& p, std::vector>& colorGrid, int x, int y); static std::tuple>, int> CreateColorGrid(const Puzzle& p); };