#pragma once #include struct Pos; class Puzzle; class Randomizer2Core { public: // CAUTION: Does not actually cut edges, just returns a list of suggested cuts. // Cuts a number of edges equal to the number of colors in the color grid. static std::vector CutEdgesToBeUnique(const Puzzle& p); static void CutEdgesNotOutsideNotBreakingSequence(Puzzle& p, size_t numEdges); private: static std::vector CutEdgesInternal(const Puzzle& p, std::vector>& colorGrid, 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); };