diff --git a/puzzles/SEND-MORE-MONEY.ipynb b/puzzles/SEND-MORE-MONEY.ipynb index a115f8116cd4cbd90c1379f9dc7bb1763e34b91b..fb959760b535b35ff058fe62d712e48a0b22c32e 100644 --- a/puzzles/SEND-MORE-MONEY.ipynb +++ b/puzzles/SEND-MORE-MONEY.ipynb @@ -389,27 +389,61 @@ " & A>D & D>G & B>E & E>H & C>F & F>I // symmetry breaking" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can compute all solutions using a set comprehension:" + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ - "$\\{(5\\mapsto 8\\mapsto 9\\mapsto 4\\mapsto 3\\mapsto 7\\mapsto 2\\mapsto 1\\mapsto 0\\mapsto 6),(5\\mapsto 9\\mapsto 8\\mapsto 4\\mapsto 3\\mapsto 7\\mapsto 2\\mapsto 0\\mapsto 1\\mapsto 6),(7\\mapsto 8\\mapsto 9\\mapsto 3\\mapsto 4\\mapsto 5\\mapsto 1\\mapsto 0\\mapsto 2\\mapsto 6),(7\\mapsto 8\\mapsto 9\\mapsto 4\\mapsto 3\\mapsto 5\\mapsto 0\\mapsto 1\\mapsto 2\\mapsto 6),(7\\mapsto 9\\mapsto 8\\mapsto 4\\mapsto 2\\mapsto 5\\mapsto 0\\mapsto 1\\mapsto 3\\mapsto 6),(8\\mapsto 5\\mapsto 9\\mapsto 2\\mapsto 4\\mapsto 7\\mapsto 1\\mapsto 3\\mapsto 0\\mapsto 6),(8\\mapsto 7\\mapsto 9\\mapsto 2\\mapsto 5\\mapsto 4\\mapsto 1\\mapsto 0\\mapsto 3\\mapsto 6),(8\\mapsto 7\\mapsto 9\\mapsto 3\\mapsto 4\\mapsto 5\\mapsto 0\\mapsto 1\\mapsto 2\\mapsto 6),(8\\mapsto 9\\mapsto 7\\mapsto 2\\mapsto 3\\mapsto 5\\mapsto 1\\mapsto 0\\mapsto 4\\mapsto 6),(8\\mapsto 9\\mapsto 7\\mapsto 3\\mapsto 2\\mapsto 5\\mapsto 0\\mapsto 1\\mapsto 4\\mapsto 6),(9\\mapsto 5\\mapsto 8\\mapsto 2\\mapsto 4\\mapsto 7\\mapsto 0\\mapsto 3\\mapsto 1\\mapsto 6),(9\\mapsto 7\\mapsto 8\\mapsto 2\\mapsto 4\\mapsto 5\\mapsto 0\\mapsto 1\\mapsto 3\\mapsto 6),(9\\mapsto 8\\mapsto 7\\mapsto 2\\mapsto 3\\mapsto 5\\mapsto 0\\mapsto 1\\mapsto 4\\mapsto 6)\\}$" + "|A|B|C|D|E|F|G|H|I|J|\n", + "|---|---|---|---|---|---|---|---|---|---|\n", + "|$5$|$8$|$9$|$4$|$3$|$7$|$2$|$1$|$0$|$6$|\n", + "|$5$|$9$|$8$|$4$|$3$|$7$|$2$|$0$|$1$|$6$|\n", + "|$7$|$8$|$9$|$3$|$4$|$5$|$1$|$0$|$2$|$6$|\n", + "|$7$|$8$|$9$|$4$|$3$|$5$|$0$|$1$|$2$|$6$|\n", + "|$7$|$9$|$8$|$4$|$2$|$5$|$0$|$1$|$3$|$6$|\n", + "|$8$|$5$|$9$|$2$|$4$|$7$|$1$|$3$|$0$|$6$|\n", + "|$8$|$7$|$9$|$2$|$5$|$4$|$1$|$0$|$3$|$6$|\n", + "|$8$|$7$|$9$|$3$|$4$|$5$|$0$|$1$|$2$|$6$|\n", + "|$8$|$9$|$7$|$2$|$3$|$5$|$1$|$0$|$4$|$6$|\n", + "|$8$|$9$|$7$|$3$|$2$|$5$|$0$|$1$|$4$|$6$|\n", + "|$9$|$5$|$8$|$2$|$4$|$7$|$0$|$3$|$1$|$6$|\n", + "|$9$|$7$|$8$|$2$|$4$|$5$|$0$|$1$|$3$|$6$|\n", + "|$9$|$8$|$7$|$2$|$3$|$5$|$0$|$1$|$4$|$6$|\n" ], "text/plain": [ - "{(5↦8↦9↦4↦3↦7↦2↦1↦0↦6),(5↦9↦8↦4↦3↦7↦2↦0↦1↦6),(7↦8↦9↦3↦4↦5↦1↦0↦2↦6),(7↦8↦9↦4↦3↦5↦0↦1↦2↦6),(7↦9↦8↦4↦2↦5↦0↦1↦3↦6),(8↦5↦9↦2↦4↦7↦1↦3↦0↦6),(8↦7↦9↦2↦5↦4↦1↦0↦3↦6),(8↦7↦9↦3↦4↦5↦0↦1↦2↦6),(8↦9↦7↦2↦3↦5↦1↦0↦4↦6),(8↦9↦7↦3↦2↦5↦0↦1↦4↦6),(9↦5↦8↦2↦4↦7↦0↦3↦1↦6),(9↦7↦8↦2↦4↦5↦0↦1↦3↦6),(9↦8↦7↦2↦3↦5↦0↦1↦4↦6)}" + "A\tB\tC\tD\tE\tF\tG\tH\tI\tJ\n", + "5\t8\t9\t4\t3\t7\t2\t1\t0\t6\n", + "5\t9\t8\t4\t3\t7\t2\t0\t1\t6\n", + "7\t8\t9\t3\t4\t5\t1\t0\t2\t6\n", + "7\t8\t9\t4\t3\t5\t0\t1\t2\t6\n", + "7\t9\t8\t4\t2\t5\t0\t1\t3\t6\n", + "8\t5\t9\t2\t4\t7\t1\t3\t0\t6\n", + "8\t7\t9\t2\t5\t4\t1\t0\t3\t6\n", + "8\t7\t9\t3\t4\t5\t0\t1\t2\t6\n", + "8\t9\t7\t2\t3\t5\t1\t0\t4\t6\n", + "8\t9\t7\t3\t2\t5\t0\t1\t4\t6\n", + "9\t5\t8\t2\t4\t7\t0\t3\t1\t6\n", + "9\t7\t8\t2\t4\t5\t0\t1\t3\t6\n", + "9\t8\t7\t2\t3\t5\t0\t1\t4\t6\n" ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "{A,B,C,D,E,F,G,H,I,J |\n", + ":table {A,B,C,D,E,F,G,H,I,J |\n", "{A,B,C,D,E,F,G,H,I,J} <: 0..9 &\n", "card({A,B,C,D,E,F,G,H,I,J}) = 10 &\n", " A*100 + B*10 + C +\n", @@ -420,6 +454,13 @@ " }" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By using the range operator we can find all possible values for J:" + ] + }, { "cell_type": "code", "execution_count": 6,