scope test_G22RegionThinner sS test_G22RegionThinner(int repetitions, S imgString) { ret applyNTimes test_G22RegionThinner(repetitions, imgString); } sS test_G22RegionThinner(S imgString, bool allSteps default false) { var img = bwImageFromString(imgString); //img = bwWhiteBorder(1, 1, img); var image = toBufferedImage(img); var itr = Gazelle22_ImageToRegions( new FunctionTimings, image, new SnPSettings(image, 2)); itr.withDiagonals(true); var region = g22_darkestRegion(itr!); G22RegionThinner_v2 thinner = new(region); if (allSteps) stepAll(thinner); else step(thinner); ret bwImageToString(regionToBWImage_fullImageSize(thinner!)); } svoid #test(S in, S out, bool allSteps default false) { testFunctionValue(s -> "\n" + test_G22RegionThinner(s, allSteps), in, "\n" + mlsUnindent(out)); } svoid test_G22RegionThinner() { test( [[ ##### ##### ##### ]], [[ _____ _###_ _____ ]]); test( [[ ##### ##### ]], [[ ##### ##### ]]); test( [[ ______ _##___ _###__ __##__ ____#_ ______ ]], [[ ______ ______ __##__ __##__ ____#_ ______ ]]); test( [[ ######_ #####__ #####__ ######_ ######_ ####### ######_ ####### ########_ #######__ ]], [[ _______ _###___ _###___ _####__ _####__ _#####_ _####__ _#####_ _#####_ _______ ]]); theKProblem(); theEProblem(); } svoid #theKProblem { test( [[ #____### #___###_ #__###__ #_###___ ####____ ]], [[ #_______ #____#__ #____#__ #___#___ ####____ ]], true); test( [[ ####____ #_###___ #__###__ #___###_ #____### ]], [[ ##______ #_#_____ #__#____ #___##__ #_______ ]], true); } svoid #theEProblem(bool allSteps default true) { test( [[ #______ ##_____ ###____ ####### ###____ ##_____ #______ ]], [[ _______ _#_____ __##### _#_____ _______ _______ ]], allSteps); }