Artifact 9caa644d5228a4f9afe09acf1f44a6fa1ddaa974:
0000: 28 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a (***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a *************. *
0050: 20 57 72 69 74 74 65 6e 20 69 6e 0a 20 2a 20 20 Written in. *
0060: 20 20 41 6c 69 63 65 20 31 2e 34 0a 20 2a 20 20 Alice 1.4. *
0070: 20 20 68 74 74 70 3a 2f 2f 77 77 77 2e 70 73 2e http://www.ps.
0080: 75 6e 69 2d 73 61 61 72 6c 61 6e 64 2e 64 65 2f uni-saarland.de/
0090: 61 6c 69 63 65 2f 0a 20 2a 2a 2a 2a 2a 2a 2a 2a alice/. ********
00a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
00b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
00c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
00d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
00e0: 2a 2a 2a 2a 29 0a 0a 66 75 6e 20 73 6f 6c 76 65 ****)..fun solve
00f0: 20 28 6e 20 3a 20 69 6e 74 2c 20 6b 20 3a 20 69 (n : int, k : i
0100: 6e 74 29 20 3a 20 62 6f 6f 6c 20 3d 0a 09 6c 65 nt) : bool =..le
0110: 74 0a 09 09 6f 70 65 6e 20 57 6f 72 64 0a 09 09 t...open Word...
0120: 69 6e 66 69 78 20 35 20 3c 3c 20 61 6e 64 62 0a infix 5 << andb.
0130: 09 09 76 61 6c 20 6d 61 73 6b 20 3d 20 28 30 77 ..val mask = (0w
0140: 78 31 20 3c 3c 20 66 72 6f 6d 49 6e 74 20 6e 29 x1 << fromInt n)
0150: 20 2d 20 30 77 78 31 0a 09 69 6e 0a 09 09 28 66 - 0wx1..in...(f
0160: 72 6f 6d 49 6e 74 20 6b 29 20 61 6e 64 62 20 6d romInt k) andb m
0170: 61 73 6b 20 3d 20 6d 61 73 6b 0a 09 65 6e 64 0a ask = mask..end.
0180: 0a 66 75 6e 20 6d 61 69 6e 20 28 29 20 3d 0a 09 .fun main () =..
0190: 6c 65 74 0a 09 09 66 75 6e 20 72 65 61 64 4c 69 let...fun readLi
01a0: 6e 65 20 28 29 20 3d 0a 09 09 09 63 61 73 65 20 ne () =....case
01b0: 54 65 78 74 49 4f 2e 69 6e 70 75 74 4c 69 6e 65 TextIO.inputLine
01c0: 20 54 65 78 74 49 4f 2e 73 74 64 49 6e 20 6f 66 TextIO.stdIn of
01d0: 0a 09 09 09 7c 20 4e 4f 4e 45 20 20 20 20 3d 3e ....| NONE =>
01e0: 20 5b 5d 0a 09 09 09 7c 20 53 4f 4d 45 28 73 29 []....| SOME(s)
01f0: 20 3d 3e 20 6d 61 70 20 49 6e 74 2e 66 72 6f 6d => map Int.from
0200: 53 74 72 69 6e 67 20 28 53 74 72 69 6e 67 2e 74 String (String.t
0210: 6f 6b 65 6e 73 20 28 66 6e 20 78 20 3d 3e 20 78 okens (fn x => x
0220: 20 3d 20 23 22 20 22 29 20 73 29 0a 0a 09 09 66 = #" ") s)....f
0230: 75 6e 20 70 61 72 73 65 4f 6e 65 20 63 20 3d 0a un parseOne c =.
0240: 09 09 09 63 61 73 65 20 72 65 61 64 4c 69 6e 65 ...case readLine
0250: 28 29 20 6f 66 0a 09 09 09 7c 20 5b 53 4f 4d 45 () of....| [SOME
0260: 20 6e 2c 20 53 4f 4d 45 20 6b 5d 20 3d 3e 20 28 n, SOME k] => (
0270: 63 2c 20 28 6e 2c 20 6b 29 29 0a 09 09 09 7c 20 c, (n, k))....|
0280: 5f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _
0290: 20 3d 3e 20 61 73 73 65 72 74 20 66 61 6c 73 65 => assert false
02a0: 0a 0a 09 09 66 75 6e 20 73 70 61 77 6e 20 73 6f ....fun spawn so
02b0: 6c 76 65 4f 6e 65 20 28 63 2c 20 69 6e 70 29 20 lveOne (c, inp)
02c0: 3d 0a 09 09 09 28 63 2c 20 73 6f 6c 76 65 20 69 =....(c, solve i
02d0: 6e 70 29 0a 0a 09 09 66 75 6e 20 70 72 69 6e 74 np)....fun print
02e0: 4f 6e 65 20 28 63 2c 20 61 6e 73 29 20 3d 0a 09 One (c, ans) =..
02f0: 09 09 70 72 69 6e 74 20 28 22 43 61 73 65 20 23 ..print ("Case #
0300: 22 20 5e 20 49 6e 74 2e 74 6f 53 74 72 69 6e 67 " ^ Int.toString
0310: 20 28 63 2b 31 29 20 5e 20 22 3a 20 22 20 5e 20 (c+1) ^ ": " ^
0320: 28 69 66 20 61 6e 73 20 74 68 65 6e 20 22 4f 4e (if ans then "ON
0330: 22 20 65 6c 73 65 20 22 4f 46 46 22 29 20 5e 20 " else "OFF") ^
0340: 22 5c 6e 22 29 0a 09 69 6e 0a 09 09 63 61 73 65 "\n")..in...case
0350: 20 72 65 61 64 4c 69 6e 65 20 28 29 20 6f 66 0a readLine () of.
0360: 09 09 7c 20 5b 53 4f 4d 45 20 74 5d 20 3d 3e 20 ..| [SOME t] =>
0370: 4c 69 73 74 2e 61 70 70 20 70 72 69 6e 74 4f 6e List.app printOn
0380: 65 20 28 4c 69 73 74 2e 6d 61 70 20 73 6f 6c 76 e (List.map solv
0390: 65 4f 6e 65 20 28 4c 69 73 74 2e 74 61 62 75 6c eOne (List.tabul
03a0: 61 74 65 20 28 74 2c 20 70 61 72 73 65 4f 6e 65 ate (t, parseOne
03b0: 29 29 29 0a 09 09 7c 20 5f 20 20 20 20 20 20 20 )))...| _
03c0: 20 3d 3e 20 61 73 73 65 72 74 20 66 61 6c 73 65 => assert false
03d0: 0a 09 65 6e 64 0a 0a 64 6f 20 6d 61 69 6e 20 28 ..end..do main (
03e0: 29 0a 64 6f 20 4f 53 2e 50 72 6f 63 65 73 73 2e ).do OS.Process.
03f0: 65 78 69 74 20 30 0a exit 0.