% Solution to Ostomachion puzzle (Riddler Classic, 2018-01-26) % https://twitter.com/jordancurve/status/957743754143784960 % https://fivethirtyeight.com/features/how-often-does-the-senate-vote-in-palindromes/ % Color in the regions of the Ostomachion square with four colors such that [no two adjacent regions share the same color and] each color shades an equal area. (That is, each color needs to shade 36 square units.) % Regions are numbered as shown in https://imgur.com/a/vjaVs. % Solution: Fix the colors of the three regions in the upper-left corner, then let the Clingo answer set solver color the rest of the regions. It finds 9 distinct solutions (https://twitter.com/jordancurve/status/957838324156305408). % To see it find them, paste the contents of this file into https://potassco.org/clingo/run/, set the mode to "Enumerate all", and click Run. % regionarea(R, N) :- the area of region R is N. regionarea(1, 24). regionarea(2, 3). regionarea(3, 9). regionarea(4, 12). regionarea(5, 6). regionarea(6, 12). regionarea(7, 6). regionarea(8, 12). regionarea(9, 12). regionarea(10, 21). regionarea(11, 6). regionarea(12, 12). regionarea(13, 3). regionarea(14, 6). % region(R) :- R is a region. region(1..14). % color(C) :- C is a color. color(1..4). % adj(R, S) :- region R and region S are adjacent. adj(1,(2;6)). adj(2,3). adj(3,7). adj(4,(5;8;9)). adj(5,(6;10)). adj(6,(7;11)). adj(7,12). adj(8,9). adj(9,(10;13;14)). adj(10,(11;13)). adj(11,12). adj(13,14). % WLOG, assign colors to region 4, 8, and 9. % regioncolor(R, C) :- region R has color C. regioncolor(4, 1). regioncolor(8, 2). regioncolor(9, 3). % Pick a color for each other region. 1 { regioncolor(R, C) : color(C) } 1 :- region(R). % No two adjacent regions can have the same color. :- adj(R, S), regioncolor(R, C), regioncolor(S, C). % No color's area can be more than 36. :- 36 < #sum { X, R : regionarea(R, X), regioncolor(R, C) }, color(C). #show regioncolor/2.