!7 p { assertEquals("0", calc("0")); assertEquals("1", calc("1")); assertEquals("1", calc("1!")); assertEquals("1", calc("0!")); assertEquals("1", calc("!0")); assertEquals("0", calc("!1")); assertEquals("0", calc("!0!")); assertEquals("1", calc("!!0!")); assertEquals("0", calc("!!0")); } sS calc(S s) { ret applyUntilStable(s, func(S s) { s.replaceAll(".!", "1").replace("!0", "1").replace("!1", "0") }); }