#pragma once class Randomizer2Core { public: // CAUTION: These do not actually cut edges, they just returns a list of suggested cuts. static std::vector CutEdges(const Puzzle& p, size_t numEdges); static std::vector CutInsideEdges(const Puzzle& p, size_t numEdges); static std::vector CutSymmetricalEdgePairs(const Puzzle& p, size_t numEdges); private: static std::vector CutEdgesInternal(const Puzzle& p, int xMin, int xMax, int yMin, int yMax, 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); };