From 9b934780980a6b9ce729436977f928f740cf01a8 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Fri, 28 Nov 2014 14:40:39 -0500 Subject: [PATCH] Split the `games` collection out of the main repository. The `games` collection is now at https://github.com/racket/games --- pkgs/games/LICENSE.txt | 11 - pkgs/games/aces/aces.png | Bin 961 -> 0 bytes pkgs/games/aces/aces.rkt | 317 - pkgs/games/aces/info.rkt | 4 - pkgs/games/blackjack/blackjack.png | Bin 977 -> 0 bytes pkgs/games/blackjack/blackjack.rkt | 437 - pkgs/games/blackjack/info.rkt | 4 - pkgs/games/cards.rkt | 4 - pkgs/games/cards/base.rkt | 16 - pkgs/games/cards/card-class.rkt | 256 - pkgs/games/cards/cards.rkt | 19 - pkgs/games/cards/cards.scrbl | 517 - pkgs/games/cards/classes.rkt | 752 - pkgs/games/cards/constants.rkt | 57 - pkgs/games/cards/generate.rkt | 301 - pkgs/games/cards/hicolor/card-0-0.png | Bin 1931 -> 0 bytes pkgs/games/cards/hicolor/card-0-0@2x.png | Bin 4393 -> 0 bytes pkgs/games/cards/hicolor/card-0-1.png | Bin 1465 -> 0 bytes pkgs/games/cards/hicolor/card-0-1@2x.png | Bin 3650 -> 0 bytes pkgs/games/cards/hicolor/card-0-2.png | Bin 1562 -> 0 bytes pkgs/games/cards/hicolor/card-0-2@2x.png | Bin 3671 -> 0 bytes pkgs/games/cards/hicolor/card-0-3.png | Bin 3407 -> 0 bytes pkgs/games/cards/hicolor/card-0-3@2x.png | Bin 6554 -> 0 bytes pkgs/games/cards/hicolor/card-1-0.png | Bin 2255 -> 0 bytes pkgs/games/cards/hicolor/card-1-0@2x.png | Bin 5177 -> 0 bytes pkgs/games/cards/hicolor/card-1-1.png | Bin 1634 -> 0 bytes pkgs/games/cards/hicolor/card-1-1@2x.png | Bin 4107 -> 0 bytes pkgs/games/cards/hicolor/card-1-2.png | Bin 1766 -> 0 bytes pkgs/games/cards/hicolor/card-1-2@2x.png | Bin 4125 -> 0 bytes pkgs/games/cards/hicolor/card-1-3.png | Bin 2059 -> 0 bytes pkgs/games/cards/hicolor/card-1-3@2x.png | Bin 4731 -> 0 bytes pkgs/games/cards/hicolor/card-10-0.png | Bin 4396 -> 0 bytes pkgs/games/cards/hicolor/card-10-0@2x.png | Bin 15209 -> 0 bytes pkgs/games/cards/hicolor/card-10-1.png | Bin 3743 -> 0 bytes pkgs/games/cards/hicolor/card-10-1@2x.png | Bin 14351 -> 0 bytes pkgs/games/cards/hicolor/card-10-2.png | Bin 4035 -> 0 bytes pkgs/games/cards/hicolor/card-10-2@2x.png | Bin 14568 -> 0 bytes pkgs/games/cards/hicolor/card-10-3.png | Bin 3997 -> 0 bytes pkgs/games/cards/hicolor/card-10-3@2x.png | Bin 13408 -> 0 bytes pkgs/games/cards/hicolor/card-11-0.png | Bin 5021 -> 0 bytes pkgs/games/cards/hicolor/card-11-0@2x.png | Bin 16651 -> 0 bytes pkgs/games/cards/hicolor/card-11-1.png | Bin 4418 -> 0 bytes pkgs/games/cards/hicolor/card-11-1@2x.png | Bin 16051 -> 0 bytes pkgs/games/cards/hicolor/card-11-2.png | Bin 4653 -> 0 bytes pkgs/games/cards/hicolor/card-11-2@2x.png | Bin 15746 -> 0 bytes pkgs/games/cards/hicolor/card-11-3.png | Bin 5020 -> 0 bytes pkgs/games/cards/hicolor/card-11-3@2x.png | Bin 16783 -> 0 bytes pkgs/games/cards/hicolor/card-12-0.png | Bin 4374 -> 0 bytes pkgs/games/cards/hicolor/card-12-0@2x.png | Bin 14781 -> 0 bytes pkgs/games/cards/hicolor/card-12-1.png | Bin 3885 -> 0 bytes pkgs/games/cards/hicolor/card-12-1@2x.png | Bin 14160 -> 0 bytes pkgs/games/cards/hicolor/card-12-2.png | Bin 3875 -> 0 bytes pkgs/games/cards/hicolor/card-12-2@2x.png | Bin 13371 -> 0 bytes pkgs/games/cards/hicolor/card-12-3.png | Bin 4314 -> 0 bytes pkgs/games/cards/hicolor/card-12-3@2x.png | Bin 14335 -> 0 bytes pkgs/games/cards/hicolor/card-2-0.png | Bin 2469 -> 0 bytes pkgs/games/cards/hicolor/card-2-0@2x.png | Bin 5660 -> 0 bytes pkgs/games/cards/hicolor/card-2-1.png | Bin 1778 -> 0 bytes pkgs/games/cards/hicolor/card-2-1@2x.png | Bin 4562 -> 0 bytes pkgs/games/cards/hicolor/card-2-2.png | Bin 1903 -> 0 bytes pkgs/games/cards/hicolor/card-2-2@2x.png | Bin 4535 -> 0 bytes pkgs/games/cards/hicolor/card-2-3.png | Bin 2298 -> 0 bytes pkgs/games/cards/hicolor/card-2-3@2x.png | Bin 5227 -> 0 bytes pkgs/games/cards/hicolor/card-3-0.png | Bin 2162 -> 0 bytes pkgs/games/cards/hicolor/card-3-0@2x.png | Bin 5011 -> 0 bytes pkgs/games/cards/hicolor/card-3-1.png | Bin 1574 -> 0 bytes pkgs/games/cards/hicolor/card-3-1@2x.png | Bin 4072 -> 0 bytes pkgs/games/cards/hicolor/card-3-2.png | Bin 1701 -> 0 bytes pkgs/games/cards/hicolor/card-3-2@2x.png | Bin 4063 -> 0 bytes pkgs/games/cards/hicolor/card-3-3.png | Bin 2007 -> 0 bytes pkgs/games/cards/hicolor/card-3-3@2x.png | Bin 4604 -> 0 bytes pkgs/games/cards/hicolor/card-4-0.png | Bin 2359 -> 0 bytes pkgs/games/cards/hicolor/card-4-0@2x.png | Bin 5397 -> 0 bytes pkgs/games/cards/hicolor/card-4-1.png | Bin 1724 -> 0 bytes pkgs/games/cards/hicolor/card-4-1@2x.png | Bin 4443 -> 0 bytes pkgs/games/cards/hicolor/card-4-2.png | Bin 1855 -> 0 bytes pkgs/games/cards/hicolor/card-4-2@2x.png | Bin 4383 -> 0 bytes pkgs/games/cards/hicolor/card-4-3.png | Bin 2158 -> 0 bytes pkgs/games/cards/hicolor/card-4-3@2x.png | Bin 5001 -> 0 bytes pkgs/games/cards/hicolor/card-5-0.png | Bin 2463 -> 0 bytes pkgs/games/cards/hicolor/card-5-0@2x.png | Bin 6062 -> 0 bytes pkgs/games/cards/hicolor/card-5-1.png | Bin 1834 -> 0 bytes pkgs/games/cards/hicolor/card-5-1@2x.png | Bin 5089 -> 0 bytes pkgs/games/cards/hicolor/card-5-2.png | Bin 1974 -> 0 bytes pkgs/games/cards/hicolor/card-5-2@2x.png | Bin 5114 -> 0 bytes pkgs/games/cards/hicolor/card-5-3.png | Bin 2308 -> 0 bytes pkgs/games/cards/hicolor/card-5-3@2x.png | Bin 5745 -> 0 bytes pkgs/games/cards/hicolor/card-6-0.png | Bin 2358 -> 0 bytes pkgs/games/cards/hicolor/card-6-0@2x.png | Bin 5398 -> 0 bytes pkgs/games/cards/hicolor/card-6-1.png | Bin 1760 -> 0 bytes pkgs/games/cards/hicolor/card-6-1@2x.png | Bin 4416 -> 0 bytes pkgs/games/cards/hicolor/card-6-2.png | Bin 1870 -> 0 bytes pkgs/games/cards/hicolor/card-6-2@2x.png | Bin 4550 -> 0 bytes pkgs/games/cards/hicolor/card-6-3.png | Bin 2199 -> 0 bytes pkgs/games/cards/hicolor/card-6-3@2x.png | Bin 5011 -> 0 bytes pkgs/games/cards/hicolor/card-7-0.png | Bin 2528 -> 0 bytes pkgs/games/cards/hicolor/card-7-0@2x.png | Bin 6474 -> 0 bytes pkgs/games/cards/hicolor/card-7-1.png | Bin 1844 -> 0 bytes pkgs/games/cards/hicolor/card-7-1@2x.png | Bin 5443 -> 0 bytes pkgs/games/cards/hicolor/card-7-2.png | Bin 2059 -> 0 bytes pkgs/games/cards/hicolor/card-7-2@2x.png | Bin 5438 -> 0 bytes pkgs/games/cards/hicolor/card-7-3.png | Bin 2362 -> 0 bytes pkgs/games/cards/hicolor/card-7-3@2x.png | Bin 6162 -> 0 bytes pkgs/games/cards/hicolor/card-8-0.png | Bin 2638 -> 0 bytes pkgs/games/cards/hicolor/card-8-0@2x.png | Bin 6544 -> 0 bytes pkgs/games/cards/hicolor/card-8-1.png | Bin 1958 -> 0 bytes pkgs/games/cards/hicolor/card-8-1@2x.png | Bin 5420 -> 0 bytes pkgs/games/cards/hicolor/card-8-2.png | Bin 2105 -> 0 bytes pkgs/games/cards/hicolor/card-8-2@2x.png | Bin 5510 -> 0 bytes pkgs/games/cards/hicolor/card-8-3.png | Bin 2417 -> 0 bytes pkgs/games/cards/hicolor/card-8-3@2x.png | Bin 6258 -> 0 bytes pkgs/games/cards/hicolor/card-9-0.png | Bin 2873 -> 0 bytes pkgs/games/cards/hicolor/card-9-0@2x.png | Bin 6593 -> 0 bytes pkgs/games/cards/hicolor/card-9-1.png | Bin 2069 -> 0 bytes pkgs/games/cards/hicolor/card-9-1@2x.png | Bin 5321 -> 0 bytes pkgs/games/cards/hicolor/card-9-2.png | Bin 2210 -> 0 bytes pkgs/games/cards/hicolor/card-9-2@2x.png | Bin 5403 -> 0 bytes pkgs/games/cards/hicolor/card-9-3.png | Bin 2537 -> 0 bytes pkgs/games/cards/hicolor/card-9-3@2x.png | Bin 5982 -> 0 bytes pkgs/games/cards/hicolor/card-back.png | Bin 1097 -> 0 bytes pkgs/games/cards/hicolor/card-back@2x.png | Bin 2813 -> 0 bytes pkgs/games/cards/info.rkt | 3 - pkgs/games/cards/locolor/card-0-0.png | Bin 499 -> 0 bytes pkgs/games/cards/locolor/card-0-1.png | Bin 436 -> 0 bytes pkgs/games/cards/locolor/card-0-2.png | Bin 455 -> 0 bytes pkgs/games/cards/locolor/card-0-3.png | Bin 591 -> 0 bytes pkgs/games/cards/locolor/card-1-0.png | Bin 522 -> 0 bytes pkgs/games/cards/locolor/card-1-1.png | Bin 463 -> 0 bytes pkgs/games/cards/locolor/card-1-2.png | Bin 483 -> 0 bytes pkgs/games/cards/locolor/card-1-3.png | Bin 532 -> 0 bytes pkgs/games/cards/locolor/card-10-0.png | Bin 1132 -> 0 bytes pkgs/games/cards/locolor/card-10-1.png | Bin 1112 -> 0 bytes pkgs/games/cards/locolor/card-10-2.png | Bin 1124 -> 0 bytes pkgs/games/cards/locolor/card-10-3.png | Bin 1102 -> 0 bytes pkgs/games/cards/locolor/card-11-0.png | Bin 1253 -> 0 bytes pkgs/games/cards/locolor/card-11-1.png | Bin 1292 -> 0 bytes pkgs/games/cards/locolor/card-11-2.png | Bin 1302 -> 0 bytes pkgs/games/cards/locolor/card-11-3.png | Bin 1310 -> 0 bytes pkgs/games/cards/locolor/card-12-0.png | Bin 1158 -> 0 bytes pkgs/games/cards/locolor/card-12-1.png | Bin 1186 -> 0 bytes pkgs/games/cards/locolor/card-12-2.png | Bin 1131 -> 0 bytes pkgs/games/cards/locolor/card-12-3.png | Bin 1160 -> 0 bytes pkgs/games/cards/locolor/card-2-0.png | Bin 559 -> 0 bytes pkgs/games/cards/locolor/card-2-1.png | Bin 469 -> 0 bytes pkgs/games/cards/locolor/card-2-2.png | Bin 497 -> 0 bytes pkgs/games/cards/locolor/card-2-3.png | Bin 560 -> 0 bytes pkgs/games/cards/locolor/card-3-0.png | Bin 563 -> 0 bytes pkgs/games/cards/locolor/card-3-1.png | Bin 479 -> 0 bytes pkgs/games/cards/locolor/card-3-2.png | Bin 520 -> 0 bytes pkgs/games/cards/locolor/card-3-3.png | Bin 571 -> 0 bytes pkgs/games/cards/locolor/card-4-0.png | Bin 605 -> 0 bytes pkgs/games/cards/locolor/card-4-1.png | Bin 516 -> 0 bytes pkgs/games/cards/locolor/card-4-2.png | Bin 542 -> 0 bytes pkgs/games/cards/locolor/card-4-3.png | Bin 608 -> 0 bytes pkgs/games/cards/locolor/card-5-0.png | Bin 598 -> 0 bytes pkgs/games/cards/locolor/card-5-1.png | Bin 522 -> 0 bytes pkgs/games/cards/locolor/card-5-2.png | Bin 540 -> 0 bytes pkgs/games/cards/locolor/card-5-3.png | Bin 613 -> 0 bytes pkgs/games/cards/locolor/card-6-0.png | Bin 630 -> 0 bytes pkgs/games/cards/locolor/card-6-1.png | Bin 545 -> 0 bytes pkgs/games/cards/locolor/card-6-2.png | Bin 568 -> 0 bytes pkgs/games/cards/locolor/card-6-3.png | Bin 651 -> 0 bytes pkgs/games/cards/locolor/card-7-0.png | Bin 614 -> 0 bytes pkgs/games/cards/locolor/card-7-1.png | Bin 559 -> 0 bytes pkgs/games/cards/locolor/card-7-2.png | Bin 579 -> 0 bytes pkgs/games/cards/locolor/card-7-3.png | Bin 648 -> 0 bytes pkgs/games/cards/locolor/card-8-0.png | Bin 660 -> 0 bytes pkgs/games/cards/locolor/card-8-1.png | Bin 590 -> 0 bytes pkgs/games/cards/locolor/card-8-2.png | Bin 634 -> 0 bytes pkgs/games/cards/locolor/card-8-3.png | Bin 700 -> 0 bytes pkgs/games/cards/locolor/card-9-0.png | Bin 708 -> 0 bytes pkgs/games/cards/locolor/card-9-1.png | Bin 622 -> 0 bytes pkgs/games/cards/locolor/card-9-2.png | Bin 661 -> 0 bytes pkgs/games/cards/locolor/card-9-3.png | Bin 750 -> 0 bytes pkgs/games/cards/locolor/card-back.png | Bin 599 -> 0 bytes pkgs/games/cards/main.rkt | 4 - pkgs/games/cards/make-cards.rkt | 103 - pkgs/games/cards/region.rkt | 75 - pkgs/games/cards/snipclass.rkt | 10 - pkgs/games/cards/utils.rkt | 26 - pkgs/games/chat-noir/3x3-empty-board.png | Bin 2525 -> 0 bytes pkgs/games/chat-noir/7x7-empty-board.png | Bin 9271 -> 0 bytes pkgs/games/chat-noir/cat-distance-example.png | Bin 13329 -> 0 bytes pkgs/games/chat-noir/chat-noir-literate.rkt | 2387 --- pkgs/games/chat-noir/chat-noir-unit.rkt | 71 - pkgs/games/chat-noir/chat-noir.png | Bin 1479 -> 0 bytes pkgs/games/chat-noir/hash.rkt | 8 - pkgs/games/chat-noir/info.rkt | 8 - pkgs/games/checkers/checkers.png | Bin 127 -> 0 bytes pkgs/games/checkers/checkers.rkt | 466 - pkgs/games/checkers/dark.jpg | Bin 24888 -> 0 bytes pkgs/games/checkers/honu-bitmaps.rkt | 426 - pkgs/games/checkers/info.rkt | 4 - pkgs/games/checkers/light.jpg | Bin 23937 -> 0 bytes pkgs/games/crazy8s/crazy8s.png | Bin 1169 -> 0 bytes pkgs/games/crazy8s/crazy8s.rkt | 639 - pkgs/games/crazy8s/images/club.png | Bin 404 -> 0 bytes pkgs/games/crazy8s/images/diamond.png | Bin 393 -> 0 bytes pkgs/games/crazy8s/images/heart.png | Bin 429 -> 0 bytes pkgs/games/crazy8s/images/spade.png | Bin 368 -> 0 bytes pkgs/games/crazy8s/info.rkt | 5 - pkgs/games/doors/doors.rkt | 284 - pkgs/games/doors/graph.rkt | 148 - pkgs/games/doors/private/utils.rkt | 21 - pkgs/games/doors/utils.rkt | 194 - pkgs/games/gcalc/gcalc-examples.rktd | 9 - pkgs/games/gcalc/gcalc.png | Bin 981 -> 0 bytes pkgs/games/gcalc/gcalc.rkt | 1000 -- pkgs/games/gcalc/info.rkt | 4 - pkgs/games/ginrummy/ginrummy.png | Bin 864 -> 0 bytes pkgs/games/ginrummy/ginrummy.rkt | 482 - pkgs/games/ginrummy/info.rkt | 5 - pkgs/games/gl-board-game.rkt | 4 - pkgs/games/gl-board-game/gl-board-game.scrbl | 111 - pkgs/games/gl-board-game/gl-board.rkt | 461 - pkgs/games/gl-board-game/info.rkt | 3 - pkgs/games/gl-board-game/main.rkt | 4 - pkgs/games/gobblet/check.rkt | 82 - pkgs/games/gobblet/explore.rkt | 637 - pkgs/games/gobblet/gobblet.png | Bin 878 -> 0 bytes pkgs/games/gobblet/gobblet.rkt | 66 - pkgs/games/gobblet/gui.rkt | 515 - pkgs/games/gobblet/heuristics.rkt | 77 - pkgs/games/gobblet/info.rkt | 4 - pkgs/games/gobblet/model.rkt | 500 - pkgs/games/gobblet/plays-3x3.rkt | 80 - pkgs/games/gobblet/robot.rkt | 86 - pkgs/games/gobblet/sig.rkt | 43 - pkgs/games/gobblet/test-explore.rkt | 77 - pkgs/games/gobblet/test-model.rkt | 401 - pkgs/games/gobblet/test.rkt | 26 - pkgs/games/gofish/gofish.png | Bin 853 -> 0 bytes pkgs/games/gofish/gofish.rkt | 326 - pkgs/games/gofish/info.rkt | 5 - pkgs/games/info.rkt | 33 - pkgs/games/jewel/array.rkt | 97 - pkgs/games/jewel/info.rkt | 4 - pkgs/games/jewel/jewel.png | Bin 667 -> 0 bytes pkgs/games/jewel/jewel.rkt | 1374 -- pkgs/games/jewel/shapes.rkt | 658 - pkgs/games/jewel/text.rkt | 186 - pkgs/games/lights-out/board.rkt | 149 - pkgs/games/lights-out/boards.rkt | 69 - pkgs/games/lights-out/info.rkt | 4 - pkgs/games/lights-out/lights-out.png | Bin 199 -> 0 bytes pkgs/games/lights-out/lights-out.rkt | 186 - pkgs/games/main.icns | Bin 33719 -> 0 bytes pkgs/games/main.ico | Bin 25214 -> 0 bytes pkgs/games/main.rkt | 124 - pkgs/games/memory/images/club.png | Bin 1152 -> 0 bytes pkgs/games/memory/images/diamond.png | Bin 839 -> 0 bytes pkgs/games/memory/images/fish.png | Bin 1625 -> 0 bytes pkgs/games/memory/images/happy.png | Bin 2191 -> 0 bytes pkgs/games/memory/images/heart.png | Bin 917 -> 0 bytes pkgs/games/memory/images/jack.png | Bin 1694 -> 0 bytes pkgs/games/memory/images/spade.png | Bin 1047 -> 0 bytes pkgs/games/memory/images/star.png | Bin 1136 -> 0 bytes pkgs/games/memory/images/two-fish.png | Bin 2325 -> 0 bytes pkgs/games/memory/images/unhappy.png | Bin 2313 -> 0 bytes pkgs/games/memory/info.rkt | 4 - pkgs/games/memory/memory.png | Bin 403 -> 0 bytes pkgs/games/memory/memory.rkt | 160 - pkgs/games/mines/gen-tiles.rkt | 183 - pkgs/games/mines/images/bg.png | Bin 411 -> 0 bytes pkgs/games/mines/images/bomb.png | Bin 567 -> 0 bytes pkgs/games/mines/images/explode.png | Bin 923 -> 0 bytes pkgs/games/mines/images/flag.png | Bin 345 -> 0 bytes pkgs/games/mines/images/hilite-tile.png | Bin 454 -> 0 bytes pkgs/games/mines/images/lclick-tile.png | Bin 478 -> 0 bytes pkgs/games/mines/images/local-tile.png | Bin 429 -> 0 bytes pkgs/games/mines/images/near-tile.png | Bin 460 -> 0 bytes pkgs/games/mines/images/rclick-tile.png | Bin 482 -> 0 bytes pkgs/games/mines/images/tile.png | Bin 490 -> 0 bytes pkgs/games/mines/info.rkt | 5 - pkgs/games/mines/mines.png | Bin 475 -> 0 bytes pkgs/games/mines/mines.rkt | 474 - pkgs/games/paint-by-numbers/all-problems.rkt | 80 - pkgs/games/paint-by-numbers/gui.rkt | 867 - pkgs/games/paint-by-numbers/hattori/1.gif | Bin 1512 -> 0 bytes pkgs/games/paint-by-numbers/hattori/10.gif | Bin 3089 -> 0 bytes pkgs/games/paint-by-numbers/hattori/100.gif | Bin 4044 -> 0 bytes pkgs/games/paint-by-numbers/hattori/101.gif | Bin 4220 -> 0 bytes pkgs/games/paint-by-numbers/hattori/102.gif | Bin 4369 -> 0 bytes pkgs/games/paint-by-numbers/hattori/103.gif | Bin 3755 -> 0 bytes pkgs/games/paint-by-numbers/hattori/104.gif | Bin 3625 -> 0 bytes pkgs/games/paint-by-numbers/hattori/105.gif | Bin 4101 -> 0 bytes pkgs/games/paint-by-numbers/hattori/106.gif | Bin 4659 -> 0 bytes pkgs/games/paint-by-numbers/hattori/107.gif | Bin 4231 -> 0 bytes pkgs/games/paint-by-numbers/hattori/108.gif | Bin 6922 -> 0 bytes pkgs/games/paint-by-numbers/hattori/109.gif | Bin 4945 -> 0 bytes pkgs/games/paint-by-numbers/hattori/11.gif | Bin 3237 -> 0 bytes pkgs/games/paint-by-numbers/hattori/110.gif | Bin 5011 -> 0 bytes pkgs/games/paint-by-numbers/hattori/111.gif | Bin 6791 -> 0 bytes pkgs/games/paint-by-numbers/hattori/112.gif | Bin 3828 -> 0 bytes pkgs/games/paint-by-numbers/hattori/113.gif | Bin 3982 -> 0 bytes pkgs/games/paint-by-numbers/hattori/114.gif | Bin 5715 -> 0 bytes pkgs/games/paint-by-numbers/hattori/115.gif | Bin 7404 -> 0 bytes pkgs/games/paint-by-numbers/hattori/116.gif | Bin 3090 -> 0 bytes pkgs/games/paint-by-numbers/hattori/117.gif | Bin 5081 -> 0 bytes pkgs/games/paint-by-numbers/hattori/118.gif | Bin 3738 -> 0 bytes pkgs/games/paint-by-numbers/hattori/119.gif | Bin 6761 -> 0 bytes pkgs/games/paint-by-numbers/hattori/12.gif | Bin 3590 -> 0 bytes pkgs/games/paint-by-numbers/hattori/120.gif | Bin 4467 -> 0 bytes pkgs/games/paint-by-numbers/hattori/121.gif | Bin 3420 -> 0 bytes pkgs/games/paint-by-numbers/hattori/122.gif | Bin 9685 -> 0 bytes pkgs/games/paint-by-numbers/hattori/123.gif | Bin 5912 -> 0 bytes pkgs/games/paint-by-numbers/hattori/124.gif | Bin 2738 -> 0 bytes pkgs/games/paint-by-numbers/hattori/125.gif | Bin 3867 -> 0 bytes pkgs/games/paint-by-numbers/hattori/126.gif | Bin 2516 -> 0 bytes pkgs/games/paint-by-numbers/hattori/127.gif | Bin 3771 -> 0 bytes pkgs/games/paint-by-numbers/hattori/128.gif | Bin 5852 -> 0 bytes pkgs/games/paint-by-numbers/hattori/129.gif | Bin 5176 -> 0 bytes pkgs/games/paint-by-numbers/hattori/13.gif | Bin 3003 -> 0 bytes pkgs/games/paint-by-numbers/hattori/130.gif | Bin 3623 -> 0 bytes pkgs/games/paint-by-numbers/hattori/131.gif | Bin 3334 -> 0 bytes pkgs/games/paint-by-numbers/hattori/132.gif | Bin 3997 -> 0 bytes pkgs/games/paint-by-numbers/hattori/133.gif | Bin 4241 -> 0 bytes pkgs/games/paint-by-numbers/hattori/134.gif | Bin 5459 -> 0 bytes pkgs/games/paint-by-numbers/hattori/135.gif | Bin 3713 -> 0 bytes pkgs/games/paint-by-numbers/hattori/136.gif | Bin 4530 -> 0 bytes pkgs/games/paint-by-numbers/hattori/137.gif | Bin 3693 -> 0 bytes pkgs/games/paint-by-numbers/hattori/138.gif | Bin 6083 -> 0 bytes pkgs/games/paint-by-numbers/hattori/139.gif | Bin 5039 -> 0 bytes pkgs/games/paint-by-numbers/hattori/14.gif | Bin 3692 -> 0 bytes pkgs/games/paint-by-numbers/hattori/15.gif | Bin 4373 -> 0 bytes pkgs/games/paint-by-numbers/hattori/16.gif | Bin 3420 -> 0 bytes pkgs/games/paint-by-numbers/hattori/17.gif | Bin 3861 -> 0 bytes pkgs/games/paint-by-numbers/hattori/18.gif | Bin 4463 -> 0 bytes pkgs/games/paint-by-numbers/hattori/19.gif | Bin 3599 -> 0 bytes pkgs/games/paint-by-numbers/hattori/2.gif | Bin 2501 -> 0 bytes pkgs/games/paint-by-numbers/hattori/20.gif | Bin 4176 -> 0 bytes pkgs/games/paint-by-numbers/hattori/21.gif | Bin 3855 -> 0 bytes pkgs/games/paint-by-numbers/hattori/22.gif | Bin 3309 -> 0 bytes pkgs/games/paint-by-numbers/hattori/23.gif | Bin 4414 -> 0 bytes pkgs/games/paint-by-numbers/hattori/24.gif | Bin 4225 -> 0 bytes pkgs/games/paint-by-numbers/hattori/25.gif | Bin 4168 -> 0 bytes pkgs/games/paint-by-numbers/hattori/26.gif | Bin 4192 -> 0 bytes pkgs/games/paint-by-numbers/hattori/27.gif | Bin 3981 -> 0 bytes pkgs/games/paint-by-numbers/hattori/28.gif | Bin 3797 -> 0 bytes pkgs/games/paint-by-numbers/hattori/29.gif | Bin 3939 -> 0 bytes pkgs/games/paint-by-numbers/hattori/3.gif | Bin 2624 -> 0 bytes pkgs/games/paint-by-numbers/hattori/30.gif | Bin 4219 -> 0 bytes pkgs/games/paint-by-numbers/hattori/31.gif | Bin 3755 -> 0 bytes pkgs/games/paint-by-numbers/hattori/32.gif | Bin 3908 -> 0 bytes pkgs/games/paint-by-numbers/hattori/33.gif | Bin 3677 -> 0 bytes pkgs/games/paint-by-numbers/hattori/34.gif | Bin 3921 -> 0 bytes pkgs/games/paint-by-numbers/hattori/35.gif | Bin 4176 -> 0 bytes pkgs/games/paint-by-numbers/hattori/36.gif | Bin 4408 -> 0 bytes pkgs/games/paint-by-numbers/hattori/37.gif | Bin 4244 -> 0 bytes pkgs/games/paint-by-numbers/hattori/38.gif | Bin 3673 -> 0 bytes pkgs/games/paint-by-numbers/hattori/39.gif | Bin 3789 -> 0 bytes pkgs/games/paint-by-numbers/hattori/4.gif | Bin 2441 -> 0 bytes pkgs/games/paint-by-numbers/hattori/40.gif | Bin 4195 -> 0 bytes pkgs/games/paint-by-numbers/hattori/41.gif | Bin 3976 -> 0 bytes pkgs/games/paint-by-numbers/hattori/42.gif | Bin 3909 -> 0 bytes pkgs/games/paint-by-numbers/hattori/43.gif | Bin 4120 -> 0 bytes pkgs/games/paint-by-numbers/hattori/44.gif | Bin 3750 -> 0 bytes pkgs/games/paint-by-numbers/hattori/45.gif | Bin 3890 -> 0 bytes pkgs/games/paint-by-numbers/hattori/46.gif | Bin 4265 -> 0 bytes pkgs/games/paint-by-numbers/hattori/47.gif | Bin 4300 -> 0 bytes pkgs/games/paint-by-numbers/hattori/48.gif | Bin 3740 -> 0 bytes pkgs/games/paint-by-numbers/hattori/49.gif | Bin 4304 -> 0 bytes pkgs/games/paint-by-numbers/hattori/5.gif | Bin 2616 -> 0 bytes pkgs/games/paint-by-numbers/hattori/50.gif | Bin 4135 -> 0 bytes pkgs/games/paint-by-numbers/hattori/51.gif | Bin 3882 -> 0 bytes pkgs/games/paint-by-numbers/hattori/52.gif | Bin 4634 -> 0 bytes pkgs/games/paint-by-numbers/hattori/53.gif | Bin 4762 -> 0 bytes pkgs/games/paint-by-numbers/hattori/54.gif | Bin 4361 -> 0 bytes pkgs/games/paint-by-numbers/hattori/55.gif | Bin 4357 -> 0 bytes pkgs/games/paint-by-numbers/hattori/56.gif | Bin 3710 -> 0 bytes pkgs/games/paint-by-numbers/hattori/57.gif | Bin 4466 -> 0 bytes pkgs/games/paint-by-numbers/hattori/58.gif | Bin 3581 -> 0 bytes pkgs/games/paint-by-numbers/hattori/59.gif | Bin 4189 -> 0 bytes pkgs/games/paint-by-numbers/hattori/6.gif | Bin 2608 -> 0 bytes pkgs/games/paint-by-numbers/hattori/60.gif | Bin 4505 -> 0 bytes pkgs/games/paint-by-numbers/hattori/61.gif | Bin 3616 -> 0 bytes pkgs/games/paint-by-numbers/hattori/62.gif | Bin 4295 -> 0 bytes pkgs/games/paint-by-numbers/hattori/63.gif | Bin 3460 -> 0 bytes pkgs/games/paint-by-numbers/hattori/64.gif | Bin 4072 -> 0 bytes pkgs/games/paint-by-numbers/hattori/65.gif | Bin 4199 -> 0 bytes pkgs/games/paint-by-numbers/hattori/66.gif | Bin 4271 -> 0 bytes pkgs/games/paint-by-numbers/hattori/67.gif | Bin 4384 -> 0 bytes pkgs/games/paint-by-numbers/hattori/68.gif | Bin 4002 -> 0 bytes pkgs/games/paint-by-numbers/hattori/69.gif | Bin 4448 -> 0 bytes pkgs/games/paint-by-numbers/hattori/7.gif | Bin 2595 -> 0 bytes pkgs/games/paint-by-numbers/hattori/70.gif | Bin 4086 -> 0 bytes pkgs/games/paint-by-numbers/hattori/71.gif | Bin 4664 -> 0 bytes pkgs/games/paint-by-numbers/hattori/72.gif | Bin 4041 -> 0 bytes pkgs/games/paint-by-numbers/hattori/73.gif | Bin 3867 -> 0 bytes pkgs/games/paint-by-numbers/hattori/74.gif | Bin 3791 -> 0 bytes pkgs/games/paint-by-numbers/hattori/75.gif | Bin 4183 -> 0 bytes pkgs/games/paint-by-numbers/hattori/76.gif | Bin 4536 -> 0 bytes pkgs/games/paint-by-numbers/hattori/77.gif | Bin 3976 -> 0 bytes pkgs/games/paint-by-numbers/hattori/78.gif | Bin 4455 -> 0 bytes pkgs/games/paint-by-numbers/hattori/79.gif | Bin 4322 -> 0 bytes pkgs/games/paint-by-numbers/hattori/8.gif | Bin 2719 -> 0 bytes pkgs/games/paint-by-numbers/hattori/80.gif | Bin 4078 -> 0 bytes pkgs/games/paint-by-numbers/hattori/81.gif | Bin 1540 -> 0 bytes pkgs/games/paint-by-numbers/hattori/82.gif | Bin 2198 -> 0 bytes pkgs/games/paint-by-numbers/hattori/83.gif | Bin 4414 -> 0 bytes pkgs/games/paint-by-numbers/hattori/84.gif | Bin 3614 -> 0 bytes pkgs/games/paint-by-numbers/hattori/85.gif | Bin 4426 -> 0 bytes pkgs/games/paint-by-numbers/hattori/86.gif | Bin 4117 -> 0 bytes pkgs/games/paint-by-numbers/hattori/87.gif | Bin 3571 -> 0 bytes pkgs/games/paint-by-numbers/hattori/88.gif | Bin 4565 -> 0 bytes pkgs/games/paint-by-numbers/hattori/89.gif | Bin 4196 -> 0 bytes pkgs/games/paint-by-numbers/hattori/9.gif | Bin 2483 -> 0 bytes pkgs/games/paint-by-numbers/hattori/90.gif | Bin 3905 -> 0 bytes pkgs/games/paint-by-numbers/hattori/91.gif | Bin 4286 -> 0 bytes pkgs/games/paint-by-numbers/hattori/92.gif | Bin 3887 -> 0 bytes pkgs/games/paint-by-numbers/hattori/93.gif | Bin 4110 -> 0 bytes pkgs/games/paint-by-numbers/hattori/94.gif | Bin 4464 -> 0 bytes pkgs/games/paint-by-numbers/hattori/95.gif | Bin 4482 -> 0 bytes pkgs/games/paint-by-numbers/hattori/96.gif | Bin 4304 -> 0 bytes pkgs/games/paint-by-numbers/hattori/97.gif | Bin 4475 -> 0 bytes pkgs/games/paint-by-numbers/hattori/98.gif | Bin 3463 -> 0 bytes pkgs/games/paint-by-numbers/hattori/99.gif | Bin 3107 -> 0 bytes pkgs/games/paint-by-numbers/info.rkt | 8 - .../paint-by-numbers/paint-by-numbers.png | Bin 434 -> 0 bytes .../paint-by-numbers/paint-by-numbers.rkt | 528 - pkgs/games/paint-by-numbers/problem.rkt | 3 - .../games/paint-by-numbers/problems/directory | 31 - pkgs/games/paint-by-numbers/problems/games | 1 - pkgs/games/paint-by-numbers/problems/h1-30 | 1 - pkgs/games/paint-by-numbers/problems/h121-138 | 1 - pkgs/games/paint-by-numbers/problems/h31-60 | 1 - pkgs/games/paint-by-numbers/problems/h61-90 | 1 - pkgs/games/paint-by-numbers/problems/h91-120 | 1 - pkgs/games/paint-by-numbers/problems/k15x15 | 1 - pkgs/games/paint-by-numbers/problems/k15x20 | 1 - pkgs/games/paint-by-numbers/problems/k15x25 | 1 - pkgs/games/paint-by-numbers/problems/k20x15 | 1 - pkgs/games/paint-by-numbers/problems/k20x20 | 1 - pkgs/games/paint-by-numbers/problems/k20x25 | 1 - pkgs/games/paint-by-numbers/problems/k20x30 | 1 - pkgs/games/paint-by-numbers/problems/k25x15 | 1 - pkgs/games/paint-by-numbers/problems/k25x20 | 1 - pkgs/games/paint-by-numbers/problems/k25x25 | 1 - pkgs/games/paint-by-numbers/problems/k25x30 | 1 - pkgs/games/paint-by-numbers/problems/k25x35 | 1 - pkgs/games/paint-by-numbers/problems/k30x20 | 1 - pkgs/games/paint-by-numbers/problems/k30x25 | 1 - pkgs/games/paint-by-numbers/problems/k30x30 | 1 - pkgs/games/paint-by-numbers/problems/k30x35 | 1 - pkgs/games/paint-by-numbers/problems/k30x40 | 1 - pkgs/games/paint-by-numbers/problems/k35x25 | 1 - pkgs/games/paint-by-numbers/problems/k35x30 | 1 - pkgs/games/paint-by-numbers/problems/k35x35 | 1 - pkgs/games/paint-by-numbers/problems/k35x40 | 1 - pkgs/games/paint-by-numbers/problems/k40x30 | 1 - pkgs/games/paint-by-numbers/problems/k40x35 | 1 - pkgs/games/paint-by-numbers/problems/k40x40 | 1 - pkgs/games/paint-by-numbers/problems/misc | 1 - .../raw-problems/allowed-email | 61 - .../raw-problems/build-final.rkt | 72 - .../raw-problems/build-hattori.rkt | 166 - .../raw-problems/build-rows-cols.rkt | 93 - .../raw-problems/build-solution-sets.rkt | 290 - .../raw-problems/raw-hattori.rkt | 5471 ------ .../raw-problems/raw-kajitani.rkt | 14480 ---------------- .../raw-problems/raw-misc.rkt | 41 - .../raw-problems/raw-problems.rkt | 82 - .../raw-problems/size-calculation.rkt | 183 - .../paint-by-numbers/solution-sets/directory | 31 - .../paint-by-numbers/solution-sets/games | 1 - .../paint-by-numbers/solution-sets/h1-30 | 1 - .../paint-by-numbers/solution-sets/h31-60 | 1 - .../paint-by-numbers/solution-sets/h61-90 | 1 - .../paint-by-numbers/solution-sets/h91-99 | 1 - .../paint-by-numbers/solution-sets/k15x15 | 1 - .../paint-by-numbers/solution-sets/k15x20 | 1 - .../paint-by-numbers/solution-sets/k15x25 | 1 - .../paint-by-numbers/solution-sets/k20x15 | 1 - .../paint-by-numbers/solution-sets/k20x20 | 1 - .../paint-by-numbers/solution-sets/k20x25 | 1 - .../paint-by-numbers/solution-sets/k20x30 | 1 - .../paint-by-numbers/solution-sets/k25x15 | 1 - .../paint-by-numbers/solution-sets/k25x20 | 1 - .../paint-by-numbers/solution-sets/k25x25 | 1 - .../paint-by-numbers/solution-sets/k25x30 | 1 - .../paint-by-numbers/solution-sets/k25x35 | 1 - .../paint-by-numbers/solution-sets/k30x20 | 1 - .../paint-by-numbers/solution-sets/k30x25 | 1 - .../paint-by-numbers/solution-sets/k30x30 | 1 - .../paint-by-numbers/solution-sets/k30x35 | 1 - .../paint-by-numbers/solution-sets/k30x40 | 1 - .../paint-by-numbers/solution-sets/k35x25 | 1 - .../paint-by-numbers/solution-sets/k35x30 | 1 - .../paint-by-numbers/solution-sets/k35x35 | 1 - .../paint-by-numbers/solution-sets/k35x40 | 1 - .../paint-by-numbers/solution-sets/k40x30 | 1 - .../paint-by-numbers/solution-sets/k40x35 | 1 - .../paint-by-numbers/solution-sets/k40x40 | 1 - .../games/paint-by-numbers/solution-sets/misc | 1 - pkgs/games/paint-by-numbers/solve.rkt | 707 - pkgs/games/parcheesi/admin-gui.rkt | 803 - pkgs/games/parcheesi/admin.rkt | 172 - pkgs/games/parcheesi/best-players.rkt | 765 - pkgs/games/parcheesi/board.rkt | 345 - pkgs/games/parcheesi/die.rkt | 74 - pkgs/games/parcheesi/gui.rkt | 590 - pkgs/games/parcheesi/info.rkt | 4 - pkgs/games/parcheesi/interfaces.rkt | 20 - pkgs/games/parcheesi/make-bitmap.rkt | 595 - pkgs/games/parcheesi/moves.rkt | 448 - pkgs/games/parcheesi/parcheesi.png | Bin 500 -> 0 bytes pkgs/games/parcheesi/parcheesi.rkt | 10 - pkgs/games/parcheesi/play-game.rkt | 149 - pkgs/games/parcheesi/rules.rkt | 269 - pkgs/games/parcheesi/test.rkt | 89 - pkgs/games/pousse/board-size.rkt | 3 - pkgs/games/pousse/board.rkt | 106 - pkgs/games/pousse/counter.rkt | 127 - pkgs/games/pousse/help.txt | 37 - pkgs/games/pousse/info.rkt | 4 - pkgs/games/pousse/left.gif | Bin 174 -> 0 bytes pkgs/games/pousse/pousse.png | Bin 940 -> 0 bytes pkgs/games/pousse/pousse.rkt | 770 - pkgs/games/pousse/right.gif | Bin 178 -> 0 bytes pkgs/games/pousse/robot.rkt | 308 - pkgs/games/pousse/robots.txt | 40 - pkgs/games/pousse/utils.rkt | 106 - pkgs/games/same/info.rkt | 4 - pkgs/games/same/same-lib.rkt | 226 - pkgs/games/same/same.png | Bin 1014 -> 0 bytes pkgs/games/same/same.rkt | 336 - pkgs/games/scribblings/aces.scrbl | 20 - pkgs/games/scribblings/blackjack.scrbl | 33 - pkgs/games/scribblings/chat-noir.scrbl | 3 - pkgs/games/scribblings/checkers.scrbl | 7 - pkgs/games/scribblings/common.rkt | 41 - pkgs/games/scribblings/crazy8s.scrbl | 28 - pkgs/games/scribblings/games.scrbl | 103 - pkgs/games/scribblings/gcalc.scrbl | 88 - pkgs/games/scribblings/ginrummy.scrbl | 22 - pkgs/games/scribblings/gobblet.scrbl | 121 - pkgs/games/scribblings/gofish.scrbl | 36 - pkgs/games/scribblings/jewel.scrbl | 38 - pkgs/games/scribblings/lights-out.scrbl | 10 - pkgs/games/scribblings/memory.scrbl | 9 - pkgs/games/scribblings/mines.scrbl | 17 - pkgs/games/scribblings/paint-by-numbers.scrbl | 102 - pkgs/games/scribblings/parcheesi.scrbl | 60 - pkgs/games/scribblings/pousse.scrbl | 62 - pkgs/games/scribblings/same.scrbl | 127 - pkgs/games/scribblings/slidey.scrbl | 7 - pkgs/games/scribblings/spider.scrbl | 62 - pkgs/games/scribblings/std-games.scrbl | 27 - pkgs/games/scribblings/tally-maze.scrbl | 50 - pkgs/games/show-help.rkt | 72 - pkgs/games/show-scribbling.rkt | 21 - pkgs/games/slidey/11.jpg | Bin 22128 -> 0 bytes pkgs/games/slidey/info.rkt | 4 - pkgs/games/slidey/slidey-main.rkt | 6 - pkgs/games/slidey/slidey.png | Bin 507 -> 0 bytes pkgs/games/slidey/slidey.rkt | 357 - pkgs/games/spider/info.rkt | 4 - pkgs/games/spider/spider.png | Bin 1687 -> 0 bytes pkgs/games/spider/spider.rkt | 407 - pkgs/games/tally-maze/game.rkt | 296 - .../images/pumpkin/pumpkin-48x48.png | Bin 3961 -> 0 bytes .../images/pumpkin/pumpkin-64x64.png | Bin 6631 -> 0 bytes .../tally-maze/images/very-emotional/01.png | Bin 9503 -> 0 bytes .../tally-maze/images/very-emotional/19.png | Bin 9172 -> 0 bytes .../tally-maze/images/very-emotional/20.png | Bin 9191 -> 0 bytes .../tally-maze/images/very-emotional/21.png | Bin 8514 -> 0 bytes .../tally-maze/images/very-emotional/35.png | Bin 8705 -> 0 bytes .../tally-maze/images/very-emotional/36.png | Bin 8434 -> 0 bytes .../tally-maze/images/very-emotional/37.png | Bin 8419 -> 0 bytes pkgs/games/tally-maze/info.rkt | 4 - pkgs/games/tally-maze/maze.rkt | 539 - pkgs/games/tally-maze/tally-maze.png | Bin 5089 -> 0 bytes pkgs/games/tests/test-docs-complete.rkt | 7 - pkgs/main-distribution/info.rkt | 1 - pkgs/plt-services/meta/drdr/pkgs.rktd | 1 + 575 files changed, 1 insertion(+), 48741 deletions(-) delete mode 100644 pkgs/games/LICENSE.txt delete mode 100644 pkgs/games/aces/aces.png delete mode 100644 pkgs/games/aces/aces.rkt delete mode 100644 pkgs/games/aces/info.rkt delete mode 100644 pkgs/games/blackjack/blackjack.png delete mode 100644 pkgs/games/blackjack/blackjack.rkt delete mode 100644 pkgs/games/blackjack/info.rkt delete mode 100644 pkgs/games/cards.rkt delete mode 100644 pkgs/games/cards/base.rkt delete mode 100644 pkgs/games/cards/card-class.rkt delete mode 100644 pkgs/games/cards/cards.rkt delete mode 100644 pkgs/games/cards/cards.scrbl delete mode 100644 pkgs/games/cards/classes.rkt delete mode 100644 pkgs/games/cards/constants.rkt delete mode 100644 pkgs/games/cards/generate.rkt delete mode 100644 pkgs/games/cards/hicolor/card-0-0.png delete mode 100644 pkgs/games/cards/hicolor/card-0-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-0-1.png delete mode 100644 pkgs/games/cards/hicolor/card-0-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-0-2.png delete mode 100644 pkgs/games/cards/hicolor/card-0-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-0-3.png delete mode 100644 pkgs/games/cards/hicolor/card-0-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-1-0.png delete mode 100644 pkgs/games/cards/hicolor/card-1-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-1-1.png delete mode 100644 pkgs/games/cards/hicolor/card-1-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-1-2.png delete mode 100644 pkgs/games/cards/hicolor/card-1-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-1-3.png delete mode 100644 pkgs/games/cards/hicolor/card-1-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-10-0.png delete mode 100644 pkgs/games/cards/hicolor/card-10-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-10-1.png delete mode 100644 pkgs/games/cards/hicolor/card-10-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-10-2.png delete mode 100644 pkgs/games/cards/hicolor/card-10-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-10-3.png delete mode 100644 pkgs/games/cards/hicolor/card-10-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-11-0.png delete mode 100644 pkgs/games/cards/hicolor/card-11-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-11-1.png delete mode 100644 pkgs/games/cards/hicolor/card-11-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-11-2.png delete mode 100644 pkgs/games/cards/hicolor/card-11-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-11-3.png delete mode 100644 pkgs/games/cards/hicolor/card-11-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-12-0.png delete mode 100644 pkgs/games/cards/hicolor/card-12-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-12-1.png delete mode 100644 pkgs/games/cards/hicolor/card-12-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-12-2.png delete mode 100644 pkgs/games/cards/hicolor/card-12-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-12-3.png delete mode 100644 pkgs/games/cards/hicolor/card-12-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-2-0.png delete mode 100644 pkgs/games/cards/hicolor/card-2-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-2-1.png delete mode 100644 pkgs/games/cards/hicolor/card-2-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-2-2.png delete mode 100644 pkgs/games/cards/hicolor/card-2-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-2-3.png delete mode 100644 pkgs/games/cards/hicolor/card-2-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-3-0.png delete mode 100644 pkgs/games/cards/hicolor/card-3-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-3-1.png delete mode 100644 pkgs/games/cards/hicolor/card-3-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-3-2.png delete mode 100644 pkgs/games/cards/hicolor/card-3-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-3-3.png delete mode 100644 pkgs/games/cards/hicolor/card-3-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-4-0.png delete mode 100644 pkgs/games/cards/hicolor/card-4-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-4-1.png delete mode 100644 pkgs/games/cards/hicolor/card-4-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-4-2.png delete mode 100644 pkgs/games/cards/hicolor/card-4-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-4-3.png delete mode 100644 pkgs/games/cards/hicolor/card-4-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-5-0.png delete mode 100644 pkgs/games/cards/hicolor/card-5-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-5-1.png delete mode 100644 pkgs/games/cards/hicolor/card-5-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-5-2.png delete mode 100644 pkgs/games/cards/hicolor/card-5-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-5-3.png delete mode 100644 pkgs/games/cards/hicolor/card-5-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-6-0.png delete mode 100644 pkgs/games/cards/hicolor/card-6-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-6-1.png delete mode 100644 pkgs/games/cards/hicolor/card-6-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-6-2.png delete mode 100644 pkgs/games/cards/hicolor/card-6-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-6-3.png delete mode 100644 pkgs/games/cards/hicolor/card-6-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-7-0.png delete mode 100644 pkgs/games/cards/hicolor/card-7-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-7-1.png delete mode 100644 pkgs/games/cards/hicolor/card-7-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-7-2.png delete mode 100644 pkgs/games/cards/hicolor/card-7-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-7-3.png delete mode 100644 pkgs/games/cards/hicolor/card-7-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-8-0.png delete mode 100644 pkgs/games/cards/hicolor/card-8-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-8-1.png delete mode 100644 pkgs/games/cards/hicolor/card-8-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-8-2.png delete mode 100644 pkgs/games/cards/hicolor/card-8-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-8-3.png delete mode 100644 pkgs/games/cards/hicolor/card-8-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-9-0.png delete mode 100644 pkgs/games/cards/hicolor/card-9-0@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-9-1.png delete mode 100644 pkgs/games/cards/hicolor/card-9-1@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-9-2.png delete mode 100644 pkgs/games/cards/hicolor/card-9-2@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-9-3.png delete mode 100644 pkgs/games/cards/hicolor/card-9-3@2x.png delete mode 100644 pkgs/games/cards/hicolor/card-back.png delete mode 100644 pkgs/games/cards/hicolor/card-back@2x.png delete mode 100644 pkgs/games/cards/info.rkt delete mode 100644 pkgs/games/cards/locolor/card-0-0.png delete mode 100644 pkgs/games/cards/locolor/card-0-1.png delete mode 100644 pkgs/games/cards/locolor/card-0-2.png delete mode 100644 pkgs/games/cards/locolor/card-0-3.png delete mode 100644 pkgs/games/cards/locolor/card-1-0.png delete mode 100644 pkgs/games/cards/locolor/card-1-1.png delete mode 100644 pkgs/games/cards/locolor/card-1-2.png delete mode 100644 pkgs/games/cards/locolor/card-1-3.png delete mode 100644 pkgs/games/cards/locolor/card-10-0.png delete mode 100644 pkgs/games/cards/locolor/card-10-1.png delete mode 100644 pkgs/games/cards/locolor/card-10-2.png delete mode 100644 pkgs/games/cards/locolor/card-10-3.png delete mode 100644 pkgs/games/cards/locolor/card-11-0.png delete mode 100644 pkgs/games/cards/locolor/card-11-1.png delete mode 100644 pkgs/games/cards/locolor/card-11-2.png delete mode 100644 pkgs/games/cards/locolor/card-11-3.png delete mode 100644 pkgs/games/cards/locolor/card-12-0.png delete mode 100644 pkgs/games/cards/locolor/card-12-1.png delete mode 100644 pkgs/games/cards/locolor/card-12-2.png delete mode 100644 pkgs/games/cards/locolor/card-12-3.png delete mode 100644 pkgs/games/cards/locolor/card-2-0.png delete mode 100644 pkgs/games/cards/locolor/card-2-1.png delete mode 100644 pkgs/games/cards/locolor/card-2-2.png delete mode 100644 pkgs/games/cards/locolor/card-2-3.png delete mode 100644 pkgs/games/cards/locolor/card-3-0.png delete mode 100644 pkgs/games/cards/locolor/card-3-1.png delete mode 100644 pkgs/games/cards/locolor/card-3-2.png delete mode 100644 pkgs/games/cards/locolor/card-3-3.png delete mode 100644 pkgs/games/cards/locolor/card-4-0.png delete mode 100644 pkgs/games/cards/locolor/card-4-1.png delete mode 100644 pkgs/games/cards/locolor/card-4-2.png delete mode 100644 pkgs/games/cards/locolor/card-4-3.png delete mode 100644 pkgs/games/cards/locolor/card-5-0.png delete mode 100644 pkgs/games/cards/locolor/card-5-1.png delete mode 100644 pkgs/games/cards/locolor/card-5-2.png delete mode 100644 pkgs/games/cards/locolor/card-5-3.png delete mode 100644 pkgs/games/cards/locolor/card-6-0.png delete mode 100644 pkgs/games/cards/locolor/card-6-1.png delete mode 100644 pkgs/games/cards/locolor/card-6-2.png delete mode 100644 pkgs/games/cards/locolor/card-6-3.png delete mode 100644 pkgs/games/cards/locolor/card-7-0.png delete mode 100644 pkgs/games/cards/locolor/card-7-1.png delete mode 100644 pkgs/games/cards/locolor/card-7-2.png delete mode 100644 pkgs/games/cards/locolor/card-7-3.png delete mode 100644 pkgs/games/cards/locolor/card-8-0.png delete mode 100644 pkgs/games/cards/locolor/card-8-1.png delete mode 100644 pkgs/games/cards/locolor/card-8-2.png delete mode 100644 pkgs/games/cards/locolor/card-8-3.png delete mode 100644 pkgs/games/cards/locolor/card-9-0.png delete mode 100644 pkgs/games/cards/locolor/card-9-1.png delete mode 100644 pkgs/games/cards/locolor/card-9-2.png delete mode 100644 pkgs/games/cards/locolor/card-9-3.png delete mode 100644 pkgs/games/cards/locolor/card-back.png delete mode 100644 pkgs/games/cards/main.rkt delete mode 100644 pkgs/games/cards/make-cards.rkt delete mode 100644 pkgs/games/cards/region.rkt delete mode 100644 pkgs/games/cards/snipclass.rkt delete mode 100644 pkgs/games/cards/utils.rkt delete mode 100644 pkgs/games/chat-noir/3x3-empty-board.png delete mode 100644 pkgs/games/chat-noir/7x7-empty-board.png delete mode 100644 pkgs/games/chat-noir/cat-distance-example.png delete mode 100644 pkgs/games/chat-noir/chat-noir-literate.rkt delete mode 100644 pkgs/games/chat-noir/chat-noir-unit.rkt delete mode 100644 pkgs/games/chat-noir/chat-noir.png delete mode 100644 pkgs/games/chat-noir/hash.rkt delete mode 100644 pkgs/games/chat-noir/info.rkt delete mode 100644 pkgs/games/checkers/checkers.png delete mode 100644 pkgs/games/checkers/checkers.rkt delete mode 100644 pkgs/games/checkers/dark.jpg delete mode 100644 pkgs/games/checkers/honu-bitmaps.rkt delete mode 100644 pkgs/games/checkers/info.rkt delete mode 100644 pkgs/games/checkers/light.jpg delete mode 100644 pkgs/games/crazy8s/crazy8s.png delete mode 100644 pkgs/games/crazy8s/crazy8s.rkt delete mode 100644 pkgs/games/crazy8s/images/club.png delete mode 100644 pkgs/games/crazy8s/images/diamond.png delete mode 100644 pkgs/games/crazy8s/images/heart.png delete mode 100644 pkgs/games/crazy8s/images/spade.png delete mode 100644 pkgs/games/crazy8s/info.rkt delete mode 100644 pkgs/games/doors/doors.rkt delete mode 100644 pkgs/games/doors/graph.rkt delete mode 100644 pkgs/games/doors/private/utils.rkt delete mode 100644 pkgs/games/doors/utils.rkt delete mode 100644 pkgs/games/gcalc/gcalc-examples.rktd delete mode 100644 pkgs/games/gcalc/gcalc.png delete mode 100644 pkgs/games/gcalc/gcalc.rkt delete mode 100644 pkgs/games/gcalc/info.rkt delete mode 100644 pkgs/games/ginrummy/ginrummy.png delete mode 100644 pkgs/games/ginrummy/ginrummy.rkt delete mode 100644 pkgs/games/ginrummy/info.rkt delete mode 100644 pkgs/games/gl-board-game.rkt delete mode 100644 pkgs/games/gl-board-game/gl-board-game.scrbl delete mode 100644 pkgs/games/gl-board-game/gl-board.rkt delete mode 100644 pkgs/games/gl-board-game/info.rkt delete mode 100644 pkgs/games/gl-board-game/main.rkt delete mode 100644 pkgs/games/gobblet/check.rkt delete mode 100644 pkgs/games/gobblet/explore.rkt delete mode 100644 pkgs/games/gobblet/gobblet.png delete mode 100644 pkgs/games/gobblet/gobblet.rkt delete mode 100644 pkgs/games/gobblet/gui.rkt delete mode 100644 pkgs/games/gobblet/heuristics.rkt delete mode 100644 pkgs/games/gobblet/info.rkt delete mode 100644 pkgs/games/gobblet/model.rkt delete mode 100644 pkgs/games/gobblet/plays-3x3.rkt delete mode 100644 pkgs/games/gobblet/robot.rkt delete mode 100644 pkgs/games/gobblet/sig.rkt delete mode 100644 pkgs/games/gobblet/test-explore.rkt delete mode 100644 pkgs/games/gobblet/test-model.rkt delete mode 100644 pkgs/games/gobblet/test.rkt delete mode 100644 pkgs/games/gofish/gofish.png delete mode 100644 pkgs/games/gofish/gofish.rkt delete mode 100644 pkgs/games/gofish/info.rkt delete mode 100644 pkgs/games/info.rkt delete mode 100644 pkgs/games/jewel/array.rkt delete mode 100644 pkgs/games/jewel/info.rkt delete mode 100644 pkgs/games/jewel/jewel.png delete mode 100644 pkgs/games/jewel/jewel.rkt delete mode 100644 pkgs/games/jewel/shapes.rkt delete mode 100644 pkgs/games/jewel/text.rkt delete mode 100644 pkgs/games/lights-out/board.rkt delete mode 100644 pkgs/games/lights-out/boards.rkt delete mode 100644 pkgs/games/lights-out/info.rkt delete mode 100644 pkgs/games/lights-out/lights-out.png delete mode 100644 pkgs/games/lights-out/lights-out.rkt delete mode 100644 pkgs/games/main.icns delete mode 100644 pkgs/games/main.ico delete mode 100644 pkgs/games/main.rkt delete mode 100644 pkgs/games/memory/images/club.png delete mode 100644 pkgs/games/memory/images/diamond.png delete mode 100644 pkgs/games/memory/images/fish.png delete mode 100644 pkgs/games/memory/images/happy.png delete mode 100644 pkgs/games/memory/images/heart.png delete mode 100644 pkgs/games/memory/images/jack.png delete mode 100644 pkgs/games/memory/images/spade.png delete mode 100644 pkgs/games/memory/images/star.png delete mode 100644 pkgs/games/memory/images/two-fish.png delete mode 100644 pkgs/games/memory/images/unhappy.png delete mode 100644 pkgs/games/memory/info.rkt delete mode 100644 pkgs/games/memory/memory.png delete mode 100644 pkgs/games/memory/memory.rkt delete mode 100644 pkgs/games/mines/gen-tiles.rkt delete mode 100644 pkgs/games/mines/images/bg.png delete mode 100644 pkgs/games/mines/images/bomb.png delete mode 100644 pkgs/games/mines/images/explode.png delete mode 100644 pkgs/games/mines/images/flag.png delete mode 100644 pkgs/games/mines/images/hilite-tile.png delete mode 100644 pkgs/games/mines/images/lclick-tile.png delete mode 100644 pkgs/games/mines/images/local-tile.png delete mode 100644 pkgs/games/mines/images/near-tile.png delete mode 100644 pkgs/games/mines/images/rclick-tile.png delete mode 100644 pkgs/games/mines/images/tile.png delete mode 100644 pkgs/games/mines/info.rkt delete mode 100644 pkgs/games/mines/mines.png delete mode 100644 pkgs/games/mines/mines.rkt delete mode 100644 pkgs/games/paint-by-numbers/all-problems.rkt delete mode 100644 pkgs/games/paint-by-numbers/gui.rkt delete mode 100644 pkgs/games/paint-by-numbers/hattori/1.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/10.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/100.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/101.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/102.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/103.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/104.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/105.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/106.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/107.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/108.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/109.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/11.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/110.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/111.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/112.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/113.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/114.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/115.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/116.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/117.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/118.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/119.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/12.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/120.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/121.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/122.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/123.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/124.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/125.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/126.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/127.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/128.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/129.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/13.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/130.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/131.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/132.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/133.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/134.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/135.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/136.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/137.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/138.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/139.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/14.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/15.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/16.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/17.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/18.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/19.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/2.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/20.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/21.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/22.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/23.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/24.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/25.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/26.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/27.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/28.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/29.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/3.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/30.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/31.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/32.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/33.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/34.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/35.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/36.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/37.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/38.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/39.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/4.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/40.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/41.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/42.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/43.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/44.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/45.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/46.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/47.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/48.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/49.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/5.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/50.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/51.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/52.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/53.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/54.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/55.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/56.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/57.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/58.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/59.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/6.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/60.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/61.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/62.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/63.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/64.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/65.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/66.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/67.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/68.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/69.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/7.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/70.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/71.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/72.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/73.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/74.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/75.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/76.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/77.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/78.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/79.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/8.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/80.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/81.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/82.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/83.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/84.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/85.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/86.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/87.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/88.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/89.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/9.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/90.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/91.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/92.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/93.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/94.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/95.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/96.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/97.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/98.gif delete mode 100644 pkgs/games/paint-by-numbers/hattori/99.gif delete mode 100644 pkgs/games/paint-by-numbers/info.rkt delete mode 100644 pkgs/games/paint-by-numbers/paint-by-numbers.png delete mode 100644 pkgs/games/paint-by-numbers/paint-by-numbers.rkt delete mode 100644 pkgs/games/paint-by-numbers/problem.rkt delete mode 100644 pkgs/games/paint-by-numbers/problems/directory delete mode 100644 pkgs/games/paint-by-numbers/problems/games delete mode 100644 pkgs/games/paint-by-numbers/problems/h1-30 delete mode 100644 pkgs/games/paint-by-numbers/problems/h121-138 delete mode 100644 pkgs/games/paint-by-numbers/problems/h31-60 delete mode 100644 pkgs/games/paint-by-numbers/problems/h61-90 delete mode 100644 pkgs/games/paint-by-numbers/problems/h91-120 delete mode 100644 pkgs/games/paint-by-numbers/problems/k15x15 delete mode 100644 pkgs/games/paint-by-numbers/problems/k15x20 delete mode 100644 pkgs/games/paint-by-numbers/problems/k15x25 delete mode 100644 pkgs/games/paint-by-numbers/problems/k20x15 delete mode 100644 pkgs/games/paint-by-numbers/problems/k20x20 delete mode 100644 pkgs/games/paint-by-numbers/problems/k20x25 delete mode 100644 pkgs/games/paint-by-numbers/problems/k20x30 delete mode 100644 pkgs/games/paint-by-numbers/problems/k25x15 delete mode 100644 pkgs/games/paint-by-numbers/problems/k25x20 delete mode 100644 pkgs/games/paint-by-numbers/problems/k25x25 delete mode 100644 pkgs/games/paint-by-numbers/problems/k25x30 delete mode 100644 pkgs/games/paint-by-numbers/problems/k25x35 delete mode 100644 pkgs/games/paint-by-numbers/problems/k30x20 delete mode 100644 pkgs/games/paint-by-numbers/problems/k30x25 delete mode 100644 pkgs/games/paint-by-numbers/problems/k30x30 delete mode 100644 pkgs/games/paint-by-numbers/problems/k30x35 delete mode 100644 pkgs/games/paint-by-numbers/problems/k30x40 delete mode 100644 pkgs/games/paint-by-numbers/problems/k35x25 delete mode 100644 pkgs/games/paint-by-numbers/problems/k35x30 delete mode 100644 pkgs/games/paint-by-numbers/problems/k35x35 delete mode 100644 pkgs/games/paint-by-numbers/problems/k35x40 delete mode 100644 pkgs/games/paint-by-numbers/problems/k40x30 delete mode 100644 pkgs/games/paint-by-numbers/problems/k40x35 delete mode 100644 pkgs/games/paint-by-numbers/problems/k40x40 delete mode 100644 pkgs/games/paint-by-numbers/problems/misc delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/allowed-email delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/build-final.rkt delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/build-hattori.rkt delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/build-rows-cols.rkt delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/build-solution-sets.rkt delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/raw-hattori.rkt delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/raw-kajitani.rkt delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/raw-misc.rkt delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/raw-problems.rkt delete mode 100644 pkgs/games/paint-by-numbers/raw-problems/size-calculation.rkt delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/directory delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/games delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/h1-30 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/h31-60 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/h61-90 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/h91-99 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k15x15 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k15x20 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k15x25 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k20x15 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k20x20 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k20x25 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k20x30 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k25x15 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k25x20 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k25x25 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k25x30 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k25x35 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k30x20 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k30x25 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k30x30 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k30x35 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k30x40 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k35x25 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k35x30 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k35x35 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k35x40 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k40x30 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k40x35 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/k40x40 delete mode 100644 pkgs/games/paint-by-numbers/solution-sets/misc delete mode 100644 pkgs/games/paint-by-numbers/solve.rkt delete mode 100644 pkgs/games/parcheesi/admin-gui.rkt delete mode 100644 pkgs/games/parcheesi/admin.rkt delete mode 100644 pkgs/games/parcheesi/best-players.rkt delete mode 100644 pkgs/games/parcheesi/board.rkt delete mode 100644 pkgs/games/parcheesi/die.rkt delete mode 100644 pkgs/games/parcheesi/gui.rkt delete mode 100644 pkgs/games/parcheesi/info.rkt delete mode 100644 pkgs/games/parcheesi/interfaces.rkt delete mode 100644 pkgs/games/parcheesi/make-bitmap.rkt delete mode 100644 pkgs/games/parcheesi/moves.rkt delete mode 100644 pkgs/games/parcheesi/parcheesi.png delete mode 100644 pkgs/games/parcheesi/parcheesi.rkt delete mode 100644 pkgs/games/parcheesi/play-game.rkt delete mode 100644 pkgs/games/parcheesi/rules.rkt delete mode 100644 pkgs/games/parcheesi/test.rkt delete mode 100644 pkgs/games/pousse/board-size.rkt delete mode 100644 pkgs/games/pousse/board.rkt delete mode 100644 pkgs/games/pousse/counter.rkt delete mode 100644 pkgs/games/pousse/help.txt delete mode 100644 pkgs/games/pousse/info.rkt delete mode 100644 pkgs/games/pousse/left.gif delete mode 100644 pkgs/games/pousse/pousse.png delete mode 100644 pkgs/games/pousse/pousse.rkt delete mode 100644 pkgs/games/pousse/right.gif delete mode 100644 pkgs/games/pousse/robot.rkt delete mode 100644 pkgs/games/pousse/robots.txt delete mode 100644 pkgs/games/pousse/utils.rkt delete mode 100644 pkgs/games/same/info.rkt delete mode 100644 pkgs/games/same/same-lib.rkt delete mode 100644 pkgs/games/same/same.png delete mode 100644 pkgs/games/same/same.rkt delete mode 100644 pkgs/games/scribblings/aces.scrbl delete mode 100644 pkgs/games/scribblings/blackjack.scrbl delete mode 100644 pkgs/games/scribblings/chat-noir.scrbl delete mode 100644 pkgs/games/scribblings/checkers.scrbl delete mode 100644 pkgs/games/scribblings/common.rkt delete mode 100644 pkgs/games/scribblings/crazy8s.scrbl delete mode 100644 pkgs/games/scribblings/games.scrbl delete mode 100644 pkgs/games/scribblings/gcalc.scrbl delete mode 100644 pkgs/games/scribblings/ginrummy.scrbl delete mode 100644 pkgs/games/scribblings/gobblet.scrbl delete mode 100644 pkgs/games/scribblings/gofish.scrbl delete mode 100644 pkgs/games/scribblings/jewel.scrbl delete mode 100644 pkgs/games/scribblings/lights-out.scrbl delete mode 100644 pkgs/games/scribblings/memory.scrbl delete mode 100644 pkgs/games/scribblings/mines.scrbl delete mode 100644 pkgs/games/scribblings/paint-by-numbers.scrbl delete mode 100644 pkgs/games/scribblings/parcheesi.scrbl delete mode 100644 pkgs/games/scribblings/pousse.scrbl delete mode 100644 pkgs/games/scribblings/same.scrbl delete mode 100644 pkgs/games/scribblings/slidey.scrbl delete mode 100644 pkgs/games/scribblings/spider.scrbl delete mode 100644 pkgs/games/scribblings/std-games.scrbl delete mode 100644 pkgs/games/scribblings/tally-maze.scrbl delete mode 100644 pkgs/games/show-help.rkt delete mode 100644 pkgs/games/show-scribbling.rkt delete mode 100644 pkgs/games/slidey/11.jpg delete mode 100644 pkgs/games/slidey/info.rkt delete mode 100644 pkgs/games/slidey/slidey-main.rkt delete mode 100644 pkgs/games/slidey/slidey.png delete mode 100644 pkgs/games/slidey/slidey.rkt delete mode 100644 pkgs/games/spider/info.rkt delete mode 100644 pkgs/games/spider/spider.png delete mode 100644 pkgs/games/spider/spider.rkt delete mode 100644 pkgs/games/tally-maze/game.rkt delete mode 100644 pkgs/games/tally-maze/images/pumpkin/pumpkin-48x48.png delete mode 100644 pkgs/games/tally-maze/images/pumpkin/pumpkin-64x64.png delete mode 100644 pkgs/games/tally-maze/images/very-emotional/01.png delete mode 100644 pkgs/games/tally-maze/images/very-emotional/19.png delete mode 100644 pkgs/games/tally-maze/images/very-emotional/20.png delete mode 100644 pkgs/games/tally-maze/images/very-emotional/21.png delete mode 100644 pkgs/games/tally-maze/images/very-emotional/35.png delete mode 100644 pkgs/games/tally-maze/images/very-emotional/36.png delete mode 100644 pkgs/games/tally-maze/images/very-emotional/37.png delete mode 100644 pkgs/games/tally-maze/info.rkt delete mode 100644 pkgs/games/tally-maze/maze.rkt delete mode 100644 pkgs/games/tally-maze/tally-maze.png delete mode 100644 pkgs/games/tests/test-docs-complete.rkt diff --git a/pkgs/games/LICENSE.txt b/pkgs/games/LICENSE.txt deleted file mode 100644 index a2fc138bc0..0000000000 --- a/pkgs/games/LICENSE.txt +++ /dev/null @@ -1,11 +0,0 @@ -games -Copyright (c) 2010-2014 PLT Design Inc. - -This package is distributed under the GNU Lesser General Public -License (LGPL). This means that you can link this package into proprietary -applications, provided you follow the rules stated in the LGPL. You -can also modify this package; if you distribute a modified version, -you must distribute it under the terms of the LGPL, which in -particular means that you must release the source code for the -modified software. See http://www.gnu.org/copyleft/lesser.html -for more information. diff --git a/pkgs/games/aces/aces.png b/pkgs/games/aces/aces.png deleted file mode 100644 index 64fdd04d3adebb41bfb22fd0c5094967c44ede9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 961 zcmV;y13vtTP)e9gsggy_tZm8`TGvLbWT8tp!bB*YeJSigCfElb_u^Y&D82~d zlL&>uU{8G%tuT=>MjxsW>_{7m8Maw(Vwa>%)77ws)g+DW&CNY~aJ_q|t%)T6r+YsB zoZtN)zVC1(Ap{Ex6M`nl=Nplv`T2Xo<2l)k{fWh9uYvVf6JpsPnrYR-riwy@;4qoo<-9t4Ff2<9}gak;qkbco{l0!RuOd|0L!+3W) z9|$OyD?}nI7>2;-_+0Ynx=Vn*g-7wxTEsg+c*M(@<5FmX;PeJ5Lf0FC94f`vPLIRdihk zpufML#l=O05C|bqRTWLs=IYo9G>F^n zBpz4EX8&YhpoiD5OL#m^yj~a2pZ`uYI!7Sj!R`L=t$R3~ZR{P}|KxHx86EwGYSloN zEfkAolF4N{IvflSe?c(lMUo^emj9=^Qqg(#><@Z-Kf&pA0PGLgl`OvrxxAdiZiiGV zi>?Py6nT&L=FK0ufB#o16`j@9C$#}~<@0sn^K~8Qxp;Ai@$sJs2K{EOWpRWZ z*i{AxgJ!L!%dQsf>}X6+N4b3YYjb{}fe9o@;>L|1=p~%iB!nOw j{=VVQcOl^H*-`0V&+k#6(>5{!00000NkvXXu0mjf_h`8X diff --git a/pkgs/games/aces/aces.rkt b/pkgs/games/aces/aces.rkt deleted file mode 100644 index faaa3e5102..0000000000 --- a/pkgs/games/aces/aces.rkt +++ /dev/null @@ -1,317 +0,0 @@ -#| - -possible to disable dragging but still allow double-clicking? -possible to remap single click (instead of double click)? - -|# - -#lang racket/base - -(require games/cards racket/gui racket/unit string-constants - "../show-scribbling.rkt") - -(provide game@) -(define game@ (unit (import) (export) - -(define table (make-table "Aces" 6 5)) - -(make-object button% (string-constant help-menu-label) table - (let ([show-help (show-scribbling '(lib "games/scribblings/games.scrbl") - "aces")]) - (lambda x (show-help)))) - -(define draw-pile null) - -(define card-height (send (car (make-deck)) card-height)) -(define card-width (send (car (make-deck)) card-width)) -(define region-height (send table table-height)) - -;; space between cards in the 4 stacks -(define card-space 30) - -(define-struct stack (x y cards) #:mutable) - -(define (get-x-offset n) - (let* ([table-width (send table table-width)] - [stack-spacing 7] - [num-stacks 5] - [all-stacks-width (+ (* num-stacks card-width) - (* (- num-stacks 1) stack-spacing))]) - (+ (- (/ table-width 2) (/ all-stacks-width 2)) - (* n (+ card-width stack-spacing))))) - -(define draw-pile-region - (make-button-region - (get-x-offset 0) - 0 - card-width - region-height ; card-height - #f - #f)) - -(define stacks - (list (make-stack (get-x-offset 1) 0 null) - (make-stack (get-x-offset 2) 0 null) - (make-stack (get-x-offset 3) 0 null) - (make-stack (get-x-offset 4) 0 null))) - -;; type state = (make-state (listof cards) (listof[4] (listof cards))) -(define-struct state (draw-pile stacks)) - -;; extract-current-state : -> state -(define (extract-current-state) - (make-state (copy-list draw-pile) - (map (lambda (x) (copy-list (stack-cards x))) stacks))) - -(define (copy-list l) (map (lambda (x) x) l)) - -;; install-state : -> void -(define (install-state state) - (send table begin-card-sequence) - - ;; erase all old snips - (send table remove-cards draw-pile) - (for ([stack (in-list stacks)]) - (send table remove-cards (stack-cards stack))) - - ;; restore old state - (set! draw-pile (state-draw-pile state)) - (for ([stack (in-list stacks)] - [cards (in-list (state-stacks state))]) - (set-stack-cards! stack cards)) - - ;; restore GUI - (for ([draw-pile-card (in-list draw-pile)]) - (send table add-card draw-pile-card 0 0)) - (send table move-cards-to-region draw-pile draw-pile-region) - (for ([draw-pile-card (in-list (reverse draw-pile))]) - (send table card-face-down draw-pile-card) - (send table card-to-front draw-pile-card)) - - (for ([stack (in-list stacks)]) - (define num-cards (length (stack-cards stack))) - (send table add-cards (stack-cards stack) 0 0) - (send table move-cards (stack-cards stack) - (stack-x stack) - (stack-y stack) - (lambda (i) - (values 0 (* (- num-cards i 1) card-space)))) - (send table cards-face-up (stack-cards stack))) - (send table end-card-sequence)) - -;; undo-stack : (listof state) -(define undo-stack null) - -;; redo-stack : (listof state) -(define redo-stack null) - -;; save-undo : -> void -;; saves the current state in the undo stack -(define (save-undo) - (set! undo-stack (cons (extract-current-state) undo-stack)) - (set! redo-stack null)) - -;; do-undo : -> void -;; pre: (not (null? undo-stack)) -(define (do-undo) - (let ([to-install (car undo-stack)]) - (set! redo-stack (cons (extract-current-state) redo-stack)) - (set! undo-stack (cdr undo-stack)) - (install-state to-install))) - -;; do-redo : -> void -;; pre: (not (null? redo-stack)) -(define (do-redo) - (let ([to-install (car redo-stack)]) - (set! undo-stack (cons (extract-current-state) undo-stack)) - (set! redo-stack (cdr redo-stack)) - (install-state to-install))) - -(define (position-cards stack) - (let ([m (length (stack-cards stack))]) - (lambda (i) - (values 0 (if (= m 0) 0 (* (- m i 1) card-space)))))) - -(define (reset-game) - (send table remove-cards draw-pile) - (for ([stack (in-list stacks)]) - (send table remove-cards (stack-cards stack))) - - (set! undo-stack null) - (set! redo-stack null) - - (let* ([deck (shuffle-list (make-deck) 7)] - [set-stack - (lambda (which) - (set-stack-cards! (which stacks) (list (which deck))))]) - (for ([card (in-list deck)]) - (send card user-can-move #f) - (send card user-can-flip #f)) - (set! draw-pile (cddddr deck)) - (set-stack car) - (set-stack cadr) - (set-stack caddr) - (set-stack cadddr)) - - (for ([stack (in-list stacks)]) - (send table add-cards - (stack-cards stack) - (stack-x stack) - (stack-y stack) - (position-cards stack)) - (for ([card (in-list (stack-cards stack))]) (send card flip))) - - (send table add-cards-to-region draw-pile draw-pile-region)) - -(define (move-from-deck) - (save-undo) - (unless (null? draw-pile) - (define (move-one select) - (let ([stack (select stacks)] - [card (select draw-pile)]) - (set-stack-cards! stack (cons card (stack-cards stack))) - (send table card-to-front card) - (send table flip-card card))) - - (send table begin-card-sequence) - (move-one car) - (move-one cadr) - (move-one caddr) - (move-one cadddr) - (send table end-card-sequence) - - (let ([cards-to-move (list (car draw-pile) - (cadr draw-pile) - (caddr draw-pile) - (cadddr draw-pile))]) - (send table move-cards cards-to-move - 0 0 - (lambda (i) - (define stack (list-ref stacks i)) - (define-values [dx dy] ((position-cards stack) 0)) - (values (+ dx (stack-x stack)) - (+ dy (stack-y stack)))))) - - (set! draw-pile (cddddr draw-pile)) - - (send table move-cards-to-region draw-pile draw-pile-region))) - -(define (move-to-empty-spot card stack) - (save-undo) - (send table move-cards - (list card) - (stack-x stack) - (stack-y stack) - (position-cards stack)) - (remove-card-from-stacks card) - (set-stack-cards! stack (cons card (stack-cards stack)))) - -(define (remove-card card) - (save-undo) - (send table remove-card card) - (remove-card-from-stacks card)) - -(define (remove-card-from-stacks card) - (define old-cards (map stack-cards stacks)) - (for ([stack (in-list stacks)]) - (set-stack-cards! stack (remq card (stack-cards stack)))) - (for ([stack (in-list stacks)] - [old-cards (in-list old-cards)]) - (unless (equal? (stack-cards stack) old-cards) - (send table move-cards - (stack-cards stack) - (stack-x stack) - (stack-y stack) - (position-cards stack))))) - -(send table set-single-click-action - (lambda (card) - (if (send card face-down?) - (move-from-deck) - (let ([bottom-four - (let loop ([l stacks]) - (if (null? l) - null - (let ([stack (car l)]) - (if (null? (stack-cards stack)) - (loop (cdr l)) - (cons (car (stack-cards stack)) (loop (cdr l)))))))]) - (when (memq card bottom-four) - (if (ormap (lambda (bottom-card) - (and (eq? (send card get-suit) - (send bottom-card get-suit)) - (or (and (not (= 1 (send card get-value))) - (= 1 (send bottom-card get-value))) - (and (not (= 1 (send card get-value))) - (< (send card get-value) - (send bottom-card get-value)))))) - bottom-four) - (remove-card card) - (let loop ([stacks stacks]) - (if (null? stacks) - (void) - (let ([stack (car stacks)]) - (if (null? (stack-cards stack)) - (move-to-empty-spot card stack) - (loop (cdr stacks)))))))))) - (check-game-over))) - -(define (game-over?) - (and (null? draw-pile) - (let ([suits/false - (map (lambda (x) - (let ([stack-cards (stack-cards x)]) - (if (null? stack-cards) - #f - (send (car stack-cards) get-suit)))) - stacks)]) - (and (not (member #f suits/false)) - (memq 'clubs suits/false) - (memq 'diamonds suits/false) - (memq 'hearts suits/false) - (memq 'spades suits/false))))) - -(define (won?) - (and (game-over?) - (andmap (lambda (x) - (define cards (stack-cards x)) - (and (not (null? cards)) - (null? (cdr cards)) - (= 1 (send (car cards) get-value)))) - stacks))) - -(define (check-game-over) - (when (game-over?) - (case (message-box "Aces" - (if (won?) - "Congratulations! You win! Play again?" - "Game Over. Play again?") - table - '(yes-no)) - [(yes) (reset-game)] - [(no) (send table show #f)]))) - -(send table add-region draw-pile-region) -(reset-game) - -(define mb (or (send table get-menu-bar) - (make-object menu-bar% table))) -(define edit-menu (new menu% [parent mb] [label (string-constant edit-menu)])) -(new menu-item% - [label (string-constant undo-menu-item)] - [parent edit-menu] - [callback (lambda (x y) (do-undo))] - [shortcut #\z] - [demand-callback - (lambda (item) (send item enable (not (null? undo-stack))))]) -(new menu-item% - [label (string-constant redo-menu-item)] - [parent edit-menu] - [callback (lambda (x y) (do-redo))] - [shortcut #\y] - [demand-callback - (lambda (item) (send item enable (not (null? redo-stack))))]) - -(send table show #t) - -)) diff --git a/pkgs/games/aces/info.rkt b/pkgs/games/aces/info.rkt deleted file mode 100644 index 3c8f8bd43b..0000000000 --- a/pkgs/games/aces/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game "aces.rkt") -(define game-set "Card Games") diff --git a/pkgs/games/blackjack/blackjack.png b/pkgs/games/blackjack/blackjack.png deleted file mode 100644 index b517f8b7b84d15bd53a4b2878dc3fa3285918dc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmV;?11|iDP)@zc+c4X?A9kOg7Edja|i3uvi7Pf@m#b5fl}{Lk}y6AVm-qp<+?& z)r%J|dk~Kv^(2Ub(1R>4MN!1k7IjyRY?3CMf0LPH@@Fz0CZggd6L(X=4~BWedvAWj zoAiN3CIH05K!ECj7F(Td>VrCd-N#Zb zTKyLFom;*D z%#2A81n4OpyKbXuDhuWUqu~f6ZP4%b@rOQoN(TXE#v~?VG_E%=7n6}gE&&F;0eV^o zz;irQO=Zv@a8X+$lSo5i+*%)>ja}}f13_4K_3B5v&WU1iQ%C@}?>Ln)R&xdgTY=bn#z`Y0Ty8Yq8Uv}1lE#8`Ij>MR)%+81674W zaV~)hfMFQ~et?t`&-Lhadnk$mk3IkgG>EJ4*va_?PSS!(4W4`n9)A(O|8XvXQ?+0@ z2QNGWg%X@NKEJ?8S^)6ISr`mKnYdd0E2e7!;X5?-N&WX0I8lomfC6JJbPccL(P?+E zmMom66WzPlhigBB*9)BuqIbFJT14@|$ME2@u=+YY^jtW(B9JiFVms7gI2it^MHEMG z1q58Y1cwiS6}?+1@J}uJ-9BE&iw-<>FTA`OPOP=JAi3K%@^_-On1&FcHg_L`QzxR^ zGm92cXmNP@k=fevztdu`fqT|sR@!dpD*M%97DfTQ@;0n2!|MGJyG68C(R_UwKHmt- z4<88wbG|UYXv=fGeQyAJN6vXfIE-Er|*I9gK8s7r7dwGc_yGj_&L}gH;i_8 zHa=SqhjTDMe6fKDrYyKuu6!8e^DFxc-1rXOd>4j8et7i>Zj5Yy<-X&PHpAog+x~+< z8H1DegzKy-rw5iwTf%jB_WvvQ)Lj77YTM#>O}?A~BX|iW00000NkvXXu0mjfOcSP* diff --git a/pkgs/games/blackjack/blackjack.rkt b/pkgs/games/blackjack/blackjack.rkt deleted file mode 100644 index ab8cf8da05..0000000000 --- a/pkgs/games/blackjack/blackjack.rkt +++ /dev/null @@ -1,437 +0,0 @@ -;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; Blackjack -;; -;; The standard rules apply. Specifics: -;; -;; 1 player (not counting the dealer) -;; -;; 4 decks, reshuffled after 3/4 of the cards are used -;; -;; Dealer stands on soft 17s -;; -;; Splitting allowed only on the first two cards, and only if they -;; are equal; 10 and the face cards are all considered equal for -;; splitting -;; -;; Doubling allowed on all unsplit hands, not on split hands -;; -;; No blackjacks after splitting -;; -;; No surrender -;; -;; No insurance -;; -;; No maximum under-21 hand size -;; -;; Dealer's second card is not revealed if the player busts (or -;; both halves of a split hand bust) -;; -;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -#lang racket - -(require games/cards racket/gui racket/class racket/unit) - -(provide game@) -(define game@ (unit (import) (export) - -;; Number of decks to use -(define DECK-COUNT 4) - -;; Region layout constants -(define MARGIN 10) -(define SUBMARGIN 10) -(define LABEL-H 15) - -;; Randomize -(random-seed (modulo (current-milliseconds) 10000)) - -;; Reshuffle when 3/4 of the deck is used -(define min-deck-size (/ (* DECK-COUNT 52) 4)) - -;; Set up the table -(define t (make-table "Blackjack" 6 3)) -(define status-pane (send t create-status-pane)) -(send t add-scribble-button status-pane - '(lib "games/scribblings/games.scrbl") "blackjack") -(send t show #t) -(send t set-double-click-action #f) -(send t set-button-action 'left 'drag/one) -(send t set-button-action 'middle 'drag/one) -(send t set-button-action 'right 'drag/one) - -;; Get table width & height -(define w (send t table-width)) -(define h (send t table-height)) - -;; Build the deck -(define deck - (let loop ([n DECK-COUNT]) - (if (zero? n) - null - (append (make-deck) (loop (sub1 n)))))) - -;; Card width & height -(define cw (send (car deck) card-width)) -(define ch (send (car deck) card-height)) - -;; Size of buttons -(define BUTTON-HEIGHT 16) -(define BUTTON-WIDTH cw) - -;; Cards are not movable -(for-each (lambda (card) (send* card (user-can-move #f) (user-can-flip #f))) - deck) - -;; Set up card regions -(define deck-region - (make-region MARGIN MARGIN cw ch #f #f)) - -(define discard-region - (make-region (- w cw MARGIN) MARGIN cw ch #f #f)) - -(define dealer-region - (make-region (+ cw (* 2 MARGIN)) MARGIN - (- w (* 2 cw) (* 4 MARGIN)) ch - #f #f)) - -(define player-region - (make-region (+ cw (* 2 MARGIN)) (- h (* 2 MARGIN) ch BUTTON-HEIGHT) - (- w (* 2 cw) (* 4 MARGIN)) ch - #f #f)) - -;; In case of split, we need more regions -(define ww (* 3/2 cw)) -(define player-2-region - (make-region MARGIN (region-y player-region) - (- w ww (* 3 MARGIN)) (region-h player-region) - #f #f)) -(define player-2-wait-region - (make-region (region-x player-2-region) (region-y player-2-region) - ww (region-h player-2-region) - #f #f)) -(define player-1-region - (make-region (- w MARGIN (region-w player-2-region)) (region-y player-2-region) - (region-w player-2-region) (region-h player-2-region) - #f #f)) -(define player-1-wait-region - (make-region (- (+ (region-x player-1-region) (region-w player-1-region)) ww) - (region-y player-1-region) - ww (region-h player-1-region) - #f #f)) -(define (make-border-region r) - (define hm (/ MARGIN 2)) - (make-region (- (region-x r) hm) (- (region-y r) hm) - (+ (region-w r) MARGIN) (+ (region-h r) MARGIN) - "" #f)) -(define player-1-border (make-border-region player-1-region)) -(define player-2-border (make-border-region player-2-region)) - -;; Player buttons -(define (make-button title pos) - (make-button-region (+ (/ (- w (* 4 BUTTON-WIDTH) (* 3 MARGIN)) 2) - (* pos (+ BUTTON-WIDTH MARGIN))) - (- h MARGIN BUTTON-HEIGHT) - BUTTON-WIDTH BUTTON-HEIGHT - title void)) -(define hit-button (make-button "Hit" 1)) -(define stand-button (make-button "Stand" 2)) -(define split-button (make-button "Split" 0)) -(define double-button (make-button "Double" 3)) - -;; Put the cards on the table -(send t add-cards-to-region deck deck-region) - -;; Function to compute the normal or minimum value of a card -(define (min-card-value c) - (let ([v (send c get-value)]) (if (> v 10) 10 v))) - -;; Function to compute the value of a hand, counting aces as 1 or 11 -;; to get the highest total possible under 21 -(define (best-total l) - (let* ([ace? (lambda (is?) (lambda (c) (eq? is? (= (send c get-value) 1))))] - [aces (filter (ace? #t) l)] - [others (filter (ace? #f) l)] - [base (apply + (map min-card-value others))]) - (let loop ([l aces][base base]) - (cond [(null? l) base] - [(<= (+ base (* (length aces) 11)) 21) - (+ base (* (length aces) 11))] - [else (loop (cdr l) (add1 base))])))) - -;; Function to test whether a hand is a bust -(define (bust? p) - (> (best-total p) 21)) - -;; Very simple betting... -(define money 100) -(define (update-money! d) - (set! money (+ money d)) - (send t set-status (format "You have $~a. (Each bet is $2.)" money))) - -;; Let's play! -(let shuffle-loop () - ;; Shuffle the cards, none are discarded, yet - (let* ([deck (shuffle-list deck 7)] - [discard null] - [deal (lambda (n) - (let deal ([n n]) - (if (zero? n) - null - (let ([c (car deck)]) - (set! deck (cdr deck)) - (cons c (deal (sub1 n)))))))]) - ;; Put the shuffled deck in place - (send t move-cards-to-region deck deck-region) - (send t stack-cards deck) - ;; Loop rounds over while there's enough cards in the deck - (let loop () - ;; All bets are $2 - (update-money! -2) - ;; Deal to player - (let ([p (deal 2)] - [p2 null] ; in case of splitting - [double? #f]) ; in case of doubling (flag is needed to adjust money) - ;; Move the player's cards into place and show them - (send t move-cards-to-region p player-region) - (send t cards-face-up p) - ;; Deal to dealer - (let ([d (deal 2)]) - ;; Move the dealer's cards into place and show one - (send t move-cards-to-region d dealer-region) - (send t card-face-up (car d)) - (let* ([continue (make-semaphore)] - ;; Make a button in the center to show results - [make-status - (lambda (title continue) - (let ([r (make-button-region - (/ (- w (* 2 cw)) 2) - (region-y hit-button) - (* 2 cw) BUTTON-HEIGHT - title #f)]) - (set-region-callback! r (lambda () - (send t remove-region r) - (semaphore-post continue))) - r))] - ;; Done with hand: - [done - (lambda (title continue) - (send t remove-region hit-button) - (send t remove-region stand-button) - (send t add-region (make-status title continue)))] - ;; Compute winnings (not called for busts by the player) - [finish - (lambda (p blackjack?) - (let ([pt (best-total p)] - [dt (best-total d)] - [continue (make-semaphore)]) - (cond - [(or (> dt 21) (> pt dt)) - (update-money! (if blackjack? 5 (if double? 8 4))) - (done (if blackjack? - "Blackjack" - "You Win") - continue)] - [(> dt pt) - (done (if blackjack? - "Dealer Blackjack" - "You Lose") - continue)] - [else (update-money! (if double? 4 2)) - (done "Push" continue)]) - (yield continue)))] - ;; Done with the first hand of a split - [finish-split - (lambda (p player-region player-wait-region player-border) - (unless (bust? p) - (send t move-cards-to-region p player-region) - (send t add-region player-border) - (finish p #f) - (send t remove-region player-border) - (send t move-cards-to-region p player-wait-region)))] - ;; Player busts - [bust (lambda () - (done "Bust" continue))] - ;; Bust in one hand of a split - [local-bust (lambda () - (let ([cont (make-semaphore)]) - (done "Bust" cont) - (yield cont)))] - ;; Callback for the hit button; the button's callback is - ;; changed for different modes: normal, split part 1, or split - ;; part 2 - [make-hit-callback - (lambda (get-p set-p! player-region bust) - (lambda () - (send t remove-region double-button) - (send t remove-region split-button) - (set-p! (append (deal 1) (get-p))) - (send t stack-cards (get-p)) - (send t move-cards-to-region (get-p) player-region) - (send t cards-face-up (get-p)) - ;; Check for bust - (when (bust? (get-p)) (bust))))]) - ;; Blackjack by player or dealer? - (if (or (= 21 (best-total p)) - (= 21 (best-total d))) - (begin - ;; Show the dealers cards... - (send t cards-face-up d) - ;; ... and compute the result - (finish p #t)) - (begin - ;; Three basic actions are allowed: - (send t add-region hit-button) - (send t add-region stand-button) - (send t add-region double-button) - ;; Set the callbacks for normal (unsplit) hands - (set-region-callback! - hit-button - (make-hit-callback (lambda () p) - (lambda (v) (set! p v)) - player-region - bust)) - (set-region-callback! - stand-button - (lambda () (semaphore-post continue))) - (set-region-callback! - double-button - (lambda () - ;; Note the double for adjusting money on a win - (set! double? #t) - ;; Double the bet - (update-money! -2) - ;; Deal one more card - ((region-callback hit-button)) - ;; No more cards or actions, but if the player busted, the - ;; hit callback has already continued - (unless (bust? p) (semaphore-post continue)))) - ;; Split allowed? - (when (= (min-card-value (car p)) (min-card-value (cadr p))) - ;; Yes, we can split. If the player hits the split button, we - ;; have to split the cards, deal one more to each split half - ;; and adjust the callbacks for hit and stand. (If aces are - ;; split, the round is over.) - (send t add-region split-button) - (set-region-callback! - split-button - (lambda () - ;; Double our bet... - (update-money! -2) - ;; Split the hand - (set! p2 (list (cadr p))) - (set! p (list (car p))) - ;; Move the split halves to the "waiting" area. The active - ;; area is reserved for hands that are being played - (send t move-cards-to-region p player-1-wait-region) - (send t move-cards-to-region p2 player-2-wait-region) - ;; Deal one more card to each half and move them into - ;; place - (set! p (append (deal 1) p)) - (set! p2 (append (deal 1) p2)) - (send t stack-cards p) - (send t stack-cards p2) - (send t move-cards-to-region p player-1-wait-region) - (send t move-cards-to-region p2 player-2-wait-region) - ;; Show the newly dealt cards - (send t flip-cards (list (car p) (car p2))) - ;; No more splits, no doubling - (send t remove-region split-button) - (send t remove-region double-button) - ;; Function called when the last split hand is done - (let* ([close-split - (lambda () - ;; Unhilite the second hand - (send t remove-region player-2-border) - (send t move-cards-to-region p2 player-2-wait-region) - ;; Let the main loop finish up - (semaphore-post continue))] - ;; Callback to swicth from the first split hand to - ;; the second - [switch - (lambda () - ;; Unhilite the first hand - (send t remove-region player-1-border) - (send t move-cards-to-region p player-1-wait-region) - ;; Hilite the second hand - (send t move-cards-to-region p2 player-2-region) - (send t add-region player-2-border) - ;; Adjust callbacks to operate on the second hand - (set-region-callback! - hit-button - (make-hit-callback (lambda () p2) - (lambda (v) (set! p2 v)) - player-2-region - (lambda () - (local-bust) - (close-split)))) - (set-region-callback! - stand-button - close-split))]) - ;; Did we split aces? - (if (= 1 (send (cadr p) get-value)) - ;; Split aces; no more cards - (semaphore-post continue) - (begin - ;; The first of the split hands is ready to go - (send t move-cards-to-region p player-1-region) - ;; Hilite the first hand - (send t add-region player-1-border) - ;; Adjust callbacks to work on the first of a split - ;; hand - (set-region-callback! - hit-button - (make-hit-callback (lambda () p) - (lambda (v) (set! p v)) - player-1-region - (lambda () - (local-bust) - (switch) - (send t add-region hit-button) - (send t add-region stand-button)))) - (set-region-callback! stand-button switch))))))) - ;; Wait until the player is done - (yield continue) - ;; No more player actions; get rid of the buttons - (send t remove-region hit-button) - (send t remove-region stand-button) - (send t remove-region double-button) - (send t remove-region split-button) - ;; If all the player's hards are bust, the dealer doesn't do - ;; anything - (unless (and (bust? p) (or (null? p2) (bust? p2))) - ;; Show the dealer's starting hand - (send t card-face-up (cadr d)) - (let loop () - ;; Hit on 16 or lower, stand on 17 and higher - (when (< (best-total d) 17) - ;; Hit the dealer - (set! d (append (deal 1) d)) - (send t stack-cards d) - (send t move-cards-to-region d dealer-region) - (send t cards-face-up d) - (loop))) - (if (null? p2) - ;; Finish normal game (adjusts winnings) - (finish p #f) - ;; Finish split game (adjusts winnings for each hand) - (begin - (finish-split p player-1-region player-1-wait-region player-1-border) - (finish-split p2 player-2-region player-2-wait-region player-2-border)))))) - ;; Move all the discarded cards to the back - (unless (null? discard) - (send t card-to-back (car discard)) - (send t stack-cards discard)) - ;; Discard all the cards we used - (set! discard (append p p2 d discard)) - (send t cards-face-down discard) - (send t move-cards-to-region discard discard-region) - ;; Go again. Check whether we should reshuffle the deck or keep - ;; going with this one - (if (< (length deck) min-deck-size) - (begin (send t move-cards-to-region deck discard-region) - (shuffle-loop)) - (loop)))))))) - -)) diff --git a/pkgs/games/blackjack/info.rkt b/pkgs/games/blackjack/info.rkt deleted file mode 100644 index bebb8f1d9a..0000000000 --- a/pkgs/games/blackjack/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game "blackjack.rkt") -(define game-set "Card Games") diff --git a/pkgs/games/cards.rkt b/pkgs/games/cards.rkt deleted file mode 100644 index f231212947..0000000000 --- a/pkgs/games/cards.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang racket - -(require "cards/cards.rkt") -(provide (all-from-out "cards/cards.rkt")) diff --git a/pkgs/games/cards/base.rkt b/pkgs/games/cards/base.rkt deleted file mode 100644 index 211d0a4278..0000000000 --- a/pkgs/games/cards/base.rkt +++ /dev/null @@ -1,16 +0,0 @@ -(module base racket - (require racket/class - "make-cards.rkt" "classes.rkt" "card-class.rkt") - - (provide make-table make-deck make-card - table<%> card<%>) - - (define table<%> (class->interface table%)) - (define card<%> (class->interface card%)) - - (define make-table - (lambda ([title "Cards"][w 7][h 3]) - (make-object table% title w h))) - - (define (make-deck) - (map (lambda (l) (send l copy)) deck-of-cards))) diff --git a/pkgs/games/cards/card-class.rkt b/pkgs/games/cards/card-class.rkt deleted file mode 100644 index bfd4a65130..0000000000 --- a/pkgs/games/cards/card-class.rkt +++ /dev/null @@ -1,256 +0,0 @@ - -(module card-class racket/base - (require racket/class - racket/shared - (prefix-in mred: racket/gui) - "snipclass.rkt" - "region.rkt") - - (provide card%) - - (define prev-regions #f) - (define prev-region-dc #f) - - (define (rotate-bm bm cw?) - (let ([w (send bm get-width)] - [h (send bm get-height)]) - (let ([bm2 (mred:make-bitmap h w)] - [s (make-bytes (* w h 4))] - [s2 (make-bytes (* h w 4))]) - (send bm get-argb-pixels 0 0 w h s) - (for ([i (in-range w)]) - (for ([j (in-range h)]) - (let ([src-pos (* (+ i (* j w)) 4)]) - (bytes-copy! s2 - (if cw? - (* (+ (- (- h j) 1) (* i h)) 4) - (* (+ j (* (- (- w i) 1) h)) 4)) - s src-pos (+ src-pos 4))))) - (let ([dc (make-object mred:bitmap-dc% bm2)]) - (send dc set-argb-pixels 0 0 h w s2) - (send dc set-bitmap #f)) - bm2))) - - (define orientations (shared ([o (list* 'n 'e 's 'w o)]) o)) - (define (find-head l s) - (if (eq? (car l) s) - l - (find-head (cdr l) s))) - - (define card% - (class mred:snip% - (init -suit-id -value -width -height -front -back -mk-dim-front -mk-dim-back -rotated-bms) - (inherit set-snipclass set-count get-admin) - (define suit-id -suit-id) - (define value -value) - (define width -width) - (define height -height) - (define rotated 'n) - (define front -front) - (define back -back) - (define mk-dim-front -mk-dim-front) - (define mk-dim-back -mk-dim-back) - (define dim-front #f) - (define dim-back #f) - (define is-dim? #f) - (define flipped? #f) - (define semi-flipped? #f) - (define can-flip? #t) - (define can-move? #t) - (define snap-back? #f) - (define stay-region #f) - (define home-reg #f) - (define rotated-bms -rotated-bms) - (private* - [refresh - (lambda () - (let ([a (get-admin)]) - (when a - (send a needs-update this 0 0 width height))))] - [refresh-size - (lambda () - (let ([a (get-admin)]) - (when a - (send a resized this #f))) - (refresh))] - [check-dim - (lambda () - (when is-dim? - (if flipped? - (unless dim-back - (set! dim-back (mk-dim-back))) - (unless dim-front - (set! dim-front (mk-dim-front))))))] - [get-rotated - (lambda (bm dir) - (if (eq? dir 'n) - bm - (or (hash-ref rotated-bms (cons dir bm) #f) - (let ([rotated-bm (case dir - [(w) (rotate-bm bm #f)] - [(e) (rotate-bm bm #t)] - [(s) (rotate-bm (rotate-bm bm #t) #t)])]) - (hash-set! rotated-bms (cons dir bm) rotated-bm) - rotated-bm))))]) - (public* - [face-down? (lambda () flipped?)] - [flip - (lambda () - (set! flipped? (not flipped?)) - (refresh))] - [semi-flip - (lambda () - (set! semi-flipped? (not semi-flipped?)) - (refresh))] - [face-up (lambda () (when flipped? (flip)))] - [face-down (lambda () (unless flipped? (flip)))] - [dim (case-lambda - [() is-dim?] - [(v) - (unless (eq? is-dim? (and v #t)) - (set! is-dim? (and v #t)) - (refresh))])] - [orientation (lambda () (case rotated - [(n) 0] - [(e) 270] - [(w) 90] - [(s) 180]))] - [rotate (lambda (mode) - (let ([delta (case mode - [(0 360) 0] - [(cw -90 270) 1] - [(ccw 90 -270) 3] - [(180 -180) 2] - [else (error 'rotate "bad mode: ~e" mode)])]) - (set! rotated (list-ref (find-head orientations rotated) delta)) - (if (odd? delta) - (let ([w width]) - (set! width height) - (set! height w) - (refresh-size)) - (refresh))))] - [get-suit-id - (lambda () suit-id)] - [get-suit - (lambda () - (case suit-id - [(1) 'clubs] - [(2) 'diamonds] - [(3) 'hearts] - [(4) 'spades] - [else 'unknown]))] - [get-value - (lambda () value)] - [user-can-flip - (case-lambda - [() can-flip?] - [(f) (set! can-flip? (and f #t))])] - [user-can-move - (case-lambda - [() can-move?] - [(f) (set! can-move? (and f #t))])] - [snap-back-after-move - (case-lambda - [() snap-back?] - [(f) (set! snap-back? (and f #t))])] - [stay-in-region - (case-lambda - [() stay-region] - [(r) (set! stay-region r)])] - [home-region - (case-lambda - [() home-reg] - [(r) (set! home-reg r)])] - [card-width (lambda () width)] - [card-height (lambda () height)]) - (override* - [resize - (lambda (w h) (void))] - [get-extent - (lambda (dc x y w h descent space lspace rspace) - (map - (lambda (b) - (when b - (set-box! b 0))) - (list descent space lspace rspace)) - (when w (set-box! w width)) - (when h (set-box! h height)))] - [draw - (lambda (dc x y left top right bottom dx dy draw-caret) - (check-dim) - (let ([do-draw - (lambda (x y) - (send dc draw-bitmap - (let ([bm (if flipped? - (if is-dim? dim-back back) - (if is-dim? dim-front front))]) - (get-rotated bm rotated)) - x y))]) - (if semi-flipped? - (let-values ([(sx sy) (send dc get-scale)]) - (case rotated - [(n s) - (send dc set-scale (/ sx 2) sy) - (do-draw (+ (* 2 x) (/ width 2)) y) - (send dc set-scale sx sy)] - [(e w) - (send dc set-scale sx (/ sy 2)) - (do-draw x (+ (* 2 y) (/ height 2))) - (send dc set-scale sx sy)])) - (do-draw x y))))] - [copy (lambda () - (let ([rotated? (memq rotated '(e w))]) - (make-object card% suit-id value - (if rotated? height width) - (if rotated? width height ) - front back - (lambda () - (unless dim-front - (set! dim-front (mk-dim-front))) - dim-front) - (lambda () - (unless dim-back - (set! dim-back (mk-dim-back))) - dim-back) - rotated-bms)))]) - (define save-x (box 0)) - (define save-y (box 0)) - (public* - [remember-location - (lambda (pb) - (send pb get-snip-location this save-x save-y))] - [back-to-original-location - (lambda (pb) - (when snap-back? - (send pb move-to this (unbox save-x) (unbox save-y))) - (when home-reg - (let ([xbox (box 0)] - [ybox (box 0)]) - (send pb get-snip-location this xbox ybox #f) - ;; Completely in the region? - (let* ([l (unbox xbox)] - [rl (region-x home-reg)] - [r (+ l width)] - [rr (+ rl (region-w home-reg))] - [t (unbox ybox)] - [rt (region-y home-reg)] - [b (+ t height)] - [rb (+ rt (region-h home-reg))]) - (when (or (< l rl) (> r rr) - (< t rt) (> b rb)) - ;; Out of the region - completely or partly? - (if (and (or (<= rl l rr) (<= rl r rr)) - (or (<= rt t rb) (<= rt b rb))) - ;; Just slightly out - (send pb move-to this - (min (max l rl) (- rr width)) - (min (max t rt) (- rb height))) - ;; Completely out - (send pb move-to this (unbox save-x) (unbox save-y))))))))]) - - (super-make-object) - (set-count 1) - (set-snipclass sc) - (flip)))) - - diff --git a/pkgs/games/cards/cards.rkt b/pkgs/games/cards/cards.rkt deleted file mode 100644 index b2c4b1594e..0000000000 --- a/pkgs/games/cards/cards.rkt +++ /dev/null @@ -1,19 +0,0 @@ -(module cards racket - (require "base.rkt" - "utils.rkt" - "region.rkt") - - (provide table<%> card<%> - region struct:region - make-region - region? region-x region-y region-w region-h - region-label region-callback region-interactive-callback - set-region-callback! - set-region-interactive-callback! - make-button-region - make-background-region - - make-deck make-card - make-table - - shuffle-list)) diff --git a/pkgs/games/cards/cards.scrbl b/pkgs/games/cards/cards.scrbl deleted file mode 100644 index 4db5397834..0000000000 --- a/pkgs/games/cards/cards.scrbl +++ /dev/null @@ -1,517 +0,0 @@ -#lang scribble/doc -@(require scribble/manual - (for-label games/cards - racket/gui/base)) - -@title{Cards: Virtual Playing Cards Library} - -@defmodule[games/cards]{The @racketmodname[games/cards] -module provides a toolbox for creating card games.} - -@; ---------------------------------------------------------------------- -@section{Creating Tables and Cards} - -@defproc[(make-table [title string? "Cards"] - [w exact-nonnegative-integer? 7] - [h exact-nonnegative-integer? 3]) - table<%>]{ - -Returns a table. The table is named by @racket[title], and it is -@racket[w] cards wide and @racket[h] cards high (assuming a standard -card of 71 by 96 pixels). The table is not initially shown; -@racket[(send table show #t)] shows it.} - -@defproc[(make-deck) - (listof card<%>)]{ - -Returns a list of 52 cards, one for each suit-value combination. The -cards are all face-down, sorted lowest-suit then lowest-value. A card -can only be on one table at a time.} - -@defproc[(make-card [front-bm (is-a?/c bitmap?)] - [back-bm (or/c (is-a?/c bitmap%) false/c)] - [suit-id any/c] - [value any/c]) - (is-a?/c card<%>)]{ - -Returns a single card given a bitmap for the front, an optional bitmap -for the back, and arbitrary values for the card's suit and value -(which are returned by the card's @method[card<%> get-value] and -@method[card<%> get-suit-id] methods). All provided bitmaps should be -the same size.} - -@defproc[(shuffle-list [lst list?] [n exact-nonnegative-integer?]) - list?]{ - -Shuffles the given @racket[lst] @racket[n] times, returning the new -list. Shuffling simulates an actual shuffle: the list is split into -halves which are merged back together by repeatedly pulling the top -card off one of the halves, randomly selecting one half or the -other. According to some mathematical theorem, 7 is a large enough -@racket[n] to get a perfect shuffle.} - -@; ---------------------------------------------------------------------- -@section{Regions and Buttons} - -@defstruct[region ([x real?] - [y real?] - [w (and/c real? (not/c negative?))] - [h (and/c real? (not/c negative?))] - [label (or/c string? false/c)] - [(callback #:mutable) (or/c ((listof (is-a?/c card<%>)) . -> . any) - false/c)])]{ - -The @racket[x], @racket[y], @racket[w], and @racket[h] fields -determine the region's location on the table. - -When @racket[label] is a string, it is drawn in the region in 12-pixel -text, centered horizontally and 5 pixels down from the region's top -outline. If label is @racket[#f], no label or box is drawn for the -region. - -The @racket[callback] procedure takes a list of cards that were -dragged to the region; if callback is @racket[#f], the region is not -active (i.e., dragging cards to the region doesn't highlight the -region box). The region remains hilited until the callback returns. - -The only available mutator on the structure is -@racket[set-region-callback!]. The structure created by -@racket[make-region] actually has extra hidden fields.} - -@defproc[(make-button-region [x real?] - [y real?] - [w (and/c real? (not/c negative?))] - [h (and/c real? (not/c negative?))] - [label (or/c string? false/c)] - [callback (or/c ((listof (is-a?/c card<%>)) . -> . any) - false/c)]) - region?]{ - -Returns a region like one made by @racket[make-region], but the is - drawn slightly differently and it reacts differently to cards and the - mouse. The label is drawn in the middle of the box instead of at the - top, and the callback is called with no arguments when the user - clicks the region (instead of dragging cards to the region).} - -@defproc[(make-background-region [x real?] - [y real?] - [w (and/c real? (not/c negative?))] - [h (and/c real? (not/c negative?))] - [paint-callback - ((is-a?/c dc<%>) real? real? real? real? . -> . any)]) - region?]{ - - Returns a region that does not respond to mouse clicks, but which has - a general paint callback. The @racket[paint-callback] function is - called with a drawing context, x and y offsets, and the width and - height (which are always @racket[w] and @racket[h]). The x and y - offsets can be different than the supplied @racket[x] and @racket[y] - when part of the table is drawn offscreen. Regions are painted in the - order that they are added to a table, and all regions are painted - before any card. The @racket[paint-callback] procedure should not - assume a particular state for the drawing context (i.e.,current brush - or pen), and it should restore any modified drawing context state - before returning.} - -@defproc[(set-region-interactive-callback! - [r region?] - [callback (or/c (boolean? (listof (is-a?/c card<%>)) . -> . any) - false/c)]) - void?]{ - - Sets a callback procedure that is invoked when a region is - (un)hilited as the user drags a set of cards to the region. The - callback is provided two arguments: a boolean indicating whether the - region is hilited, and the list of cards being dragged. Like - region-callback, the default is @racket[#f], which indicates that the - region has no interactive callback (but does not affect whether the - region is hilited as cards are dragged). The final unhilite (when - cards are potentially delivered) does not trigger this callback.} - - -@defproc[(region-interactive-callback [r region?]) - (boolean? (listof (is-a?/c card<%>)) . -> . any)]{ - - Gets the current callback that is installed via - @racket[set-region-interaction-callback!].} - -@; ---------------------------------------------------------------------- -@section{Table Methods} - -@definterface[table<%> (frame%)]{ - -Create an instance with @racket[make-table]. - -@defmethod[(add-card [card (is-a?/c card<%>)] - [x real?] - [y real?]) - void?]{ - - Adds @racket[card] to the table with its top-left corner at - (@racket[x], @racket[y]) in table pixels.} - -@defmethod[(add-cards [cards (listof (is-a?/c card<%>))] - [x real?] - [y real?] - [offset-proc (exact-nonnegative-integer? - . -> . (values real? real?)) - (lambda (i) (values 0 0))]) - void?]{ - - Adds a list of cards at (@racket[x], @racket[y]). The optional - @racket[offset-proc] procedure is called with an index @racket[_i] - (counting from 0) and should return two values: @racket[_dx] and - @racket[_dy]; the @racket[_i]th card is the placed at @racket[(+ x - +dx)] and @racket[(+ y _dy)]. The cards are added in order on top of - cards already one the table such that the first card in - @racket[cards] is topmost.} - -@defmethod[(add-cards-to-region [cards (listof (is-a?/c card<%>))] - [region? r]) - void?]{ - - Adds @racket[cards] to fill the region @racket[r], fanning them out - bottom-right to top-left, assuming that all cards in @racket[cards] - have the same width and height. The region @racket[r] does not have - to be added to the table.} - -@defmethod[(remove-card [card (is-a?/c card<%>)]) - void?]{ - -Removes @racket[card] from the table.} - -@defmethod[(remove-cards [cards (listof (is-a?/c card<%>))]) - void?]{ - - Removes @racket[cards] from the table.} - -@defmethod[(move-card [card (is-a?/c card<%>)] - [x real?] - [y real?]) - void?]{ - - Moves @racket[card], which must be on the same already. The movement - of the cards is animated. If the cards are in snap-back-after-move - mode and a drag is active, snapping back will use the new location.} - -@defmethod[(move-cards [cards (listof (is-a?/c card<%>))] - [x real?] - [y real?] - [offset-proc (exact-nonnegative-integer? - . -> . (values real? real?)) - (lambda (i) (values 0 0))]) - void?]{ - - Like @method[table<%> add-cards], but moves cards that are already on - the table like @method[table<%> move-card]. All of the cards are - moved at once.} - -@defmethod[(move-cards-to-region [cards (listof (is-a?/c card<%>))] - [region? r]) - void?]{ - - Like @method[table<%> add-cards-to-region], but moves cards that are - already on the table like @racket[move-card]. All of the cards are - moved at once.} - - -@defmethod*[([(flip-card [card (is-a?/c card<%>)]) void?] - [(flip-cards [cards (listof (is-a?/c card<%>))]) void?])]{ - - Flips @racket[card] or all @racket[cards] over (at once) with - animation.} - -@defmethod*[([(card-face-up [card (is-a?/c card<%>)]) void?] - [(cards-face-up [cards (listof (is-a?/c card<%>))]) void?] - [(card-face-down [card (is-a?/c card<%>)]) void?] - [(cards-face-down [cards (listof (is-a?/c card<%>))]) void?])]{ - - Like @method[table<%> flip-cards], but only for @racket[card] or - elements of @racket[cards] that are currently face down/up.} - -@defmethod*[([(rotate-card [card (is-a?/c card<%>)] - [mode (or/c 'cw 'ccw 0 90 -90 180 -180 270 -270 360)]) - void?] - [(rotate-cards [cards (listof (is-a?/c card<%>))] - [mode (or/c 'cw 'ccw 0 90 -90 180 -180 270 -270 360)]) - void?])]{ - - Rotates @racket[card] or all @racket[cards] (at once, currently - without animation, but animation may be added in the future). - The center of each card is kept in place, except that the card is - moved as necessary to keep it on the table. See @xmethod[card<%> - rotate] for information on @racket[mode].} - -@defmethod*[([(card-to-front [card (is-a?/c card<%>)]) void?] - [(card-to-back [card (is-a?/c card<%>)]) void?])]{ - - Moves @racket[card] before/behind of all other cards.} - -@defmethod[(stack-cards [cards (listof (is-a?/c card<%>))]) void?]{ - - The first card in @racket[cards] is not moved; the second card is - moved to follow immediately behind the first one, then - @method[table<%> stack-cards] is called on @racket[(cdr cards)]. If - @racket[cards] is empty or contains only one card, no action is - taken.} - -@defmethod[(card-location [card (is-a?/c card<%>)]) - (values real? real?)]{ - - Returns the location of the given card; an exception is raised if the - card is not on the table.} - -@defmethod[(all-cards) (listof (is-a?/c card<%>))]{ - - Returns a list of all cards on the table in stacking order from front - to back.} - -@defmethod*[([(table-width) exact-nonnegative-integer?] - [(table-height) exact-nonnegative-integer?])]{ - - Returns the width/height of the table in pixels.} - -@defmethod*[([(begin-card-sequence) void?] - [(end-card-sequence) void?])]{ - - Starts/ends a sequence of card or region changes that won't be - animated or updated until the end of the sequence. Sequences can be - nested via matching @racketidfont{begin-}/@racketidfont{end-} pairs.} - -@defmethod[(add-region [r region?]) void]{ - - Adds the region @racket[r] to the table; regions are drawn in the - order that they are added to the table, and when a region added later - is hilighted, it can obscure regions added earlier.} - -@defmethod[(remove-region [r region?]) void]{ - - Removes the region @racket[r] from the table.} - -@defmethod*[([(hilite-region [r region?]) void?] - [(unhilite-region [r region?]) void?])]{ - - Manual (un)hilite, usually for animation.} - -@defmethod[(set-button-action [which (one-of/c 'left 'middle 'right)] - [action symbol?]) - void?]{ - - Sets the way that a mouse click is handled for a particular button - indicated by @racket[which]. The @racket[action] argument must be one - of the following: - - @itemize[ - - @item{@racket['drag/one] --- drag only the clicked-on card.} - - @item{@racket['drag-raise/one] --- like drag/one, but raise the - card to the top on a click.} - - @item{@racket['drag/above] --- drag the card along with any card - on top of the card (i.e., more towards the front and - overlapping with the card). The on-top-of relation - is closed transitively.} - - @item{@racket['drag-raise/above] --- like @racket['drag/above], - but raises.} - - @item{@racket['drag-below] --- drag the card along with any card - underneath the card (i.e., more towards the back and - overlapping with the card). The underneath relation - is closed transitively.} - - @item{@racket['drag-raise/below] --- like @racket['drag/below], - but raises.} - ] - - The initial settings are: @racket['drag-raise/above] for - @racket['left], @racket['drag/one] for @racket['middle], and - @racket['drag/below] for @racket['right].} - -@defmethod[(set-double-click-action - [proc ((is-a?/c card<%>) . -> . any)]) - void?]{ - - Sets the procedure to be called when a card is double-clicked. The - procedure is called with the double-clicked card. The default - procedure flips the cards along with its on-top-of cards, raises the - cards, and reverses the front-to-back order of the cards} - -@defmethod[(set-single-click-action - [proc ((is-a?/c card<%>) . -> . any)]) - void?]{ - - Sets the procedure to be called when a card is single-clicked, after - the button action is initiated. (If the card is double-clicked, this - action is invoked for the first click, then the double-click action - is invoked.) The default action does nothing.} - -@defmethod[(pause [secs real?]) void?]{ - - Pauses, allowing the table display to be updated (unless a sequence - is active), but does not let the user click on the cards.} - -@defmethod*[([(animated) boolean?] - [(animated [on? any/c]) void?])]{ - - Gets/sets animation enabled/diabled.} - -@defmethod[(create-status-pane) (is-a?/c pane%)]{ - - Creates a pane with a status message (initially empty) and returns - the pane so that you can add additional controls.} - -@defmethod[(set-status [str sring]) void?]{ - - Sets the text message in the status pane.} - -@defmethod[(add-help-button [pane (is-a?/c area-container<%>)] - [coll-path (listof string?)] - [str string?] - [tt? any/c]) - void?]{ - - Adds a @onscreen{Help} button to the given pane, where clicking the - button opens a new window to display @filepath{doc.txt} from the given - collection. The @racket[str] argument is used for the help window - title. If @racket[tt?] is true, then @filepath{doc.txt} is displayed - verbatim, otherwise it is formatted as for @racket[show-help] from - @racketmodname[games/show-help].} - -@defmethod[(add-scribble-button [pane (is-a?/c area-container<%>)] - [mod-path module-path?] - [tag string?]) - void?]{ - - Adds a @onscreen{Help} button to the given pane, where clicking the - button opens Scribble-based documentation, as with - @racket[show-scribbling] from @racketmodname[games/show-scribbling].} - -} - -@; ---------------------------------------------------------------------- -@section{Card Methods} - -@definterface[card<%> ()]{ - -Create instances with @racket[make-deck] or @racket[make-card]. - -@defmethod[(card-width) exact-nonnegative-integer?]{ - - Returns the width of the card in pixels. If the card is rotated 90 or - 270 degrees, the result is the card's original height.} - -@defmethod[(card-height) exact-nonnegative-integer?]{ - - Returns the height of the card in pixels. If the card is rotated 90 or - 270 degrees, the result is the card's original width.} - -@defmethod[(flip) void?]{ - - Flips the card without animation. This method is useful for flipping - a card before it is added to a table.} - -@defmethod[(face-up) void?]{ - - Makes the card face up without animation.} - -@defmethod[(face-down) void?]{ - - Makes the card face down without animation.} - -@defmethod[(face-down?) boolean?]{ - - Returns @racket[#t] if the card is currently face down.} - -@defmethod[(rotate [mode (or/c 'cw 'ccw 0 90 -90 180 -180 270 -270 360)]) void?]{ - - Rotates the card. Unlike using the @xmethod[table<%> rotate-card] method, - the card's top-left position is kept in place. - - If @racket[mode] is @racket['cw], the card is - rotated clockwise; if @racket[mode] is @racket['ccw], the card is - rotated counter-clockwise; if @racket[mode] is one of the allowed - numbers, the card is rotated the corresponding amount in degrees - counter-clockwise.} - -@defmethod[(orientation) (or/c 0 90 180 270)]{ - - Returns the orientation of the card, where @racket[0] corresponds to - its initial state, @racket[90] is rotated 90 degrees counter-clockwise, and so on.} - -@defmethod[(get-suit-id) any/c]{ - - Normally returns @racket[1], @racket[2], @racket[3], or @racket[4] - (see @method[card<%> get-suit] for corresponding suit names), but the - result can be anything for a card created by @racket[make-card].} - -@defmethod[(get-suit) symbol?]{ - - Returns @racket['clubs], @racket['diamonds], @racket['hearts], - @racket['spades], or @racket['unknown], depending on whether - @method[card<%> get-suit-id] returns @racket[1], @racket[2], - @racket[3], @racket[4], or something else.} - -@defmethod[(get-value) any/c]{ - - Normally returns @racket[1] (Ace), @racket[2], ... @racket[10], - @racket[11] (Jack), @racket[12] (Queen), or @racket[13] (King), but - the result can be anything for a card created by @racket[make-card].} - -@defmethod*[([(user-can-flip) boolean?] - [(user-can-flip [can? any/c]) void?])]{ - - Gets/sets whether the user can flip the card interactively, usually - by double-clicking it. Initially @racket[#t].} - -@defmethod*[([(user-can-move) boolean?] - [(user-can-move [can? any/c]) void?])]{ - - Gets/sets whether the user can move the card interactively, usually - by dragging it. Disabling moves has the side-effect of disabling - raises and double-clicks. Initially @racket[#t].} - -@defmethod*[([(snap-back-after-move) boolean?] - [(snap-back-after-move [on? any/c]) void?])]{ - - Assuming user can move the card interactively, gets/sets whether the - card stays where the user dragged it or snaps back to its original - place. Initially @racket[#f]. - - A region's @italic{interactive} callback can disable snap-back for a - card so that the card can be delivered to the region. (A region's - normal callback cannot release the card, because it's too late.)} - -@defmethod*[([(stay-in-region) (or/c region? false/c)] - [(stay-in-region [r (or/c region? false/c)]) void?])]{ - - - Gets/sets a constraining region @racket[r]. If @racket[r] is not - @racket[#f], the user cannot move the card out of @racket[r]. - Initially @racket[#f].} - -@defmethod*[([(home-region) (or/c region? false/c)] - [(home-region [r (or/c region? false/c)]) void?])]{ - - Gets/sets a home region @racket[r]. If @racket[r] is not @racket[#f], - then the user can move the card freely within the region, but it - snaps back if moved completely out of the region. If moved partly out - of the region, the card is moved enough to get completely back - in. Initially @racket[#f]. - - A region's @italic{interactive} callback can disable snap-back for a - card so that the card can be delivered to the region. (A region's - normal callback cannot release the card, because it's too late.)} - -@defmethod*[([(dim) boolean?] - [(dim [can? any/c]) void?])]{ - - Gets/sets a hilite on the card, which is rendered by drawing it dimmer - than normal.} - -@defmethod[(copy) (is-a?/c card<%>)]{ - - Makes a new card with the same suit and value.} - -} diff --git a/pkgs/games/cards/classes.rkt b/pkgs/games/cards/classes.rkt deleted file mode 100644 index ea5090e40e..0000000000 --- a/pkgs/games/cards/classes.rkt +++ /dev/null @@ -1,752 +0,0 @@ -(module classes racket/base - (require racket/class - (prefix-in mred: racket/gui) - (prefix-in util: "utils.rkt") - "constants.rkt" - "make-cards.rkt" - "region.rkt" - string-constants - "../show-help.rkt" - "../show-scribbling.rkt") - - (provide pasteboard% - table%) - - (define pasteboard% - (class mred:pasteboard% - (inherit begin-edit-sequence end-edit-sequence get-admin - invalidate-bitmap-cache - find-next-selected-snip find-first-snip find-snip - set-before set-after - add-selected is-selected? no-selected set-selected remove-selected - get-snip-location move-to - dc-location-to-editor-location - set-selection-visible) - - (define select-one? #t) - (define select-backward? #f) - (define raise-to-front? #f) - (define button-map '((left #f #f #t) - (middle #t #f #t) - (right #f #t #f))) - - (define do-on-double-click 'flip) - (define do-on-single-click void) - - (define selecting? #f) - (define dragging? #f) - (define bg-click? #f) - (define click-base #f) - (define last-click #f) - (define regions null) - (private* - [get-snip-bounds - (lambda (s) - (let ([xbox (box 0)] - [ybox (box 0)]) - (get-snip-location s xbox ybox #f) - (let ([l (unbox xbox)] - [t (unbox ybox)]) - (get-snip-location s xbox ybox #t) - (values l t (unbox xbox) (unbox ybox)))))] - [for-each-selected - (lambda (f) - (let loop ([snip (find-next-selected-snip #f)]) - (when snip - (f snip) - (loop (find-next-selected-snip snip)))))] - [make-overlapping-list - (lambda (s so-far behind?) - (let-values ([(sl st sr sb) (get-snip-bounds s)]) - (let loop ([t (find-first-snip)][so-far so-far][get? (not behind?)]) - (cond - [(not t) so-far] - [(eq? s t) (if behind? - (loop (send t next) so-far #t) - so-far)] - [get? - (let ([l (if (and (not (memq t so-far)) - (let-values ([(tl tt tr tb) - (get-snip-bounds t)]) - (and (or (<= sl tl sr) - (<= sl tr sr)) - (or (<= st tt sb) - (<= st tb sb))))) - (make-overlapping-list t (cons t so-far) behind?) - so-far)]) - (loop (send t next) l #t))] - [else - (loop (send t next) so-far #f)]))))] - [get-reverse-selected-list - (lambda () - (let loop ([s (find-next-selected-snip #f)][l null]) - (if s - (loop (find-next-selected-snip s) (cons s l)) - l)))] - [shuffle - (lambda (selected-list) ; cards to shuffle in back->front order - (let* ([permuted-list - (util:shuffle-list selected-list 7)] - [get-pos - (lambda (s) - (let ([xb (box 0)] - [yb (box 0)]) - (get-snip-location s xb yb) - (cons (unbox xb) (unbox yb))))] - [sel-loc-list (map get-pos selected-list)] - [perm-loc-list (map get-pos permuted-list)]) - (for-each - (lambda (s start-pos end-pos) - (let* ([sx (car start-pos)] - [sy (cdr start-pos)] - [ex (car end-pos)] - [ey (cdr end-pos)] - [steps (max 1 (floor (/ 50 (length selected-list))))]) - (let loop ([i 1]) - (unless (> i steps) - (let ([x (+ sx (* (/ i steps) (- ex sx)))] - [y (+ sy (* (/ i steps) (- ey sy)))]) - (move-to s x y) - (mred:flush-display) - (loop (add1 i))))))) - permuted-list perm-loc-list sel-loc-list) - (let loop ([l permuted-list]) - (unless (null? l) - (set-before (car l) #f) - (loop (cdr l)))) - (no-selected)))] - [update-region - (lambda (region) - (let-values ([(sx sy sw sh) (get-region-box region)]) - (invalidate-bitmap-cache sx sy sw sh)))]) - (public* - [only-front-selected - (lambda () - (let loop ([s (find-next-selected-snip #f)][ok (find-first-snip)]) - (when s - (if (eq? s ok) - (loop (find-next-selected-snip s) - (send ok next)) - (let loop ([s s][l (list s)]) - (let ([next (find-next-selected-snip s)]) - (if next - (loop next (cons s l)) - (for-each (lambda (s) - (remove-selected s)) - l))))))))]) - (override* - [on-paint - (lambda (before? dc l t r b dx dy caret) - (when before? - (for-each - (lambda (region) - (when (region-paint-callback region) - (let-values ([(sx sy sw sh) (get-region-box region)]) - ((region-paint-callback region) dc (+ dx sx) (+ dy sy) sw sh))) - (when (region-label region) - (let ([old-b (send dc get-brush)] - [old-p (send dc get-pen)]) - (let-values ([(sx sy sw sh) (get-region-box region)]) - (send dc set-brush white-brush) - (send dc set-pen no-pen) - (send dc draw-rectangle (+ dx sx) (+ dy sy) sw sh) - (send dc set-pen dark-gray-pen) - (draw-roundish-rectangle dc (+ dx sx) (+ dy sy) sw sh) - (let ([text (region-label region)]) - (if (string? text) - (let ([old-f (send dc get-font)]) - (send dc set-font nice-font) - (let-values ([(x y d a) (send dc get-text-extent text)]) - (send dc draw-text text - (+ dx sx (/ (- sw x) 2)) - (if (region-button? region) - ;; Since we use size-in-pixels, the letters - ;; should really be 12 pixels high (including - ;; the descender), but the space above the letter - ;; can vary by font; center on 12, splitting - ;; the difference for the descender - (+ dy sy (/ (- sh 12) 2) (- 12 y (/ d -2))) - (+ dy sy 5)))) - (send dc set-font old-f)) - (send dc draw-bitmap text - (+ dx sx (/ (- sw (send text get-width)) 2)) - (+ dy sy (/ (- sh (send text get-height)) 2)) - 'solid black-color - (send text get-loaded-mask)))) - (when (region-hilite? region) - (send dc set-brush hilite-brush) - (send dc set-pen no-pen) - (send dc draw-rectangle (+ dx sx 1) (+ dy sy 1) (- sw 2) (- sh 2)))) - (send dc set-brush old-b) - (send dc set-pen old-p)))) - regions)))]) - (augment* - [after-select - (lambda (s on?) - (inner (void) after-select s on?) - (unless (or (not on?) selecting?) - (set! selecting? #t) - (if select-one? - (when raise-to-front? - (set-before s #f)) - (begin - (begin-edit-sequence) - (let ([l (make-overlapping-list s (list s) select-backward?)]) - (for-each (lambda (i) (add-selected i)) l)) - (when raise-to-front? - (let loop ([snip (find-next-selected-snip #f)][prev #f]) - (when snip - (if prev - (set-after snip prev) - (set-before snip #f)) - (loop (find-next-selected-snip snip) snip)))) - (end-edit-sequence))) - (set! selecting? #f)))] - [on-interactive-move - (lambda (e) - (inner (void) on-interactive-move e) - (for-each (lambda (region) (set-region-decided-start?! region #f)) regions) - (for-each-selected (lambda (snip) (send snip remember-location this))) - (set! dragging? #t))]) - (override* - [interactive-adjust-move - (lambda (snip xb yb) - (super interactive-adjust-move snip xb yb) - (let-values ([(l t r b) (get-snip-bounds snip)]) - (let-values ([(rl rt rw rh) - (let ([r (send snip stay-in-region)]) - (if r - (values (region-x r) (region-y r) - (region-w r) (region-h r)) - (let ([wb (box 0)][hb (box 0)]) - (send (get-admin) get-view #f #f wb hb) - (values 0 0 (unbox wb) (unbox hb)))))]) - (let ([max-x (- (+ rl rw) (- r l))] - [max-y (- (+ rt rh) (- b t))]) - (when (< (unbox xb) rl) - (set-box! xb rl)) - (when (> (unbox xb) max-x) - (set-box! xb max-x)) - (when (< (unbox yb) rt) - (set-box! yb rt)) - (when (> (unbox yb) max-y) - (set-box! yb max-y))))))]) - (augment* - [after-interactive-move - (lambda (e) - (when dragging? - (set! dragging? #f) - (inner (void) after-interactive-move e) - (for-each-selected (lambda (snip) (send snip back-to-original-location this))) - (let ([cards (get-reverse-selected-list)]) - (only-front-selected) ; in case overlap changed - (for-each - (lambda (region) - (when (region-hilite? region) - (mred:queue-callback - ; Call it outside the current edit sequence - (lambda () - ((region-callback region) cards) - (unhilite-region region))))) - regions))))]) - (override* - [on-default-event - (lambda (e) - (let ([click (let ([c (or (and (send e button-down? 'left) 'left) - (and (send e button-down? 'right) 'right) - (and (send e button-down? 'middle) 'middle))]) - (cond - [(eq? c last-click) c] - [(not last-click) c] - ;; Move/drag event has different mouse button, - ;; and there was no mouse up. Don't accept the - ;; click, yet. - [else #f]))]) - (set! last-click click) - (when click - (let* ([actions (cdr (assoc click button-map))] - [one? (list-ref actions 0)] - [backward? (list-ref actions 1)] - [raise? (list-ref actions 2)]) - (unless (and (eq? backward? select-backward?) - (eq? one? select-one?) - (eq? raise? raise-to-front?)) - (set! select-one? one?) - (set! select-backward? backward?) - (set! raise-to-front? raise?) - (no-selected)))) - (let*-values ([(lx ly) (dc-location-to-editor-location - (send e get-x) - (send e get-y))] - [(s) (find-snip lx ly)]) - ; Clicking on a "selected" card unselects others - ; in this interface - (when (send e button-down?) - (unless (or (not click-base) (not s) (eq? s click-base)) - (no-selected)) - (set! click-base s)) - (when (and dragging? click-base (send click-base user-can-move)) - (for-each - (lambda (region) - (when (and (not (region-button? region)) - (region-callback region) - (or (not (region-decided-start? region)) - (region-can-select? region))) - (let-values ([(sx sy sw sh) (get-region-box region)]) - (let ([in? (and (<= sx lx (+ sx sw)) - (<= sy ly (+ sy sh)))]) - (unless (region-decided-start? region) - (set-region-decided-start?! region #t) - (set-region-can-select?! region (not in?))) - (when (and (not (eq? in? (region-hilite? region))) - (region-can-select? region)) - (set-region-hilite?! region in?) - (when (region-interactive-callback region) - ((region-interactive-callback region) in? (get-reverse-selected-list))) - (invalidate-bitmap-cache sx sy sw sh)))))) - regions)) - ; Can't move => no raise, either - (unless (or (not click-base) (send click-base user-can-move)) - (set! raise-to-front? #f)) - (let ([was-bg? bg-click?]) - (if (send e button-down?) - (set! bg-click? (not s)) - (when (and bg-click? (not (send e dragging?))) - (set! bg-click? #f))) - (unless bg-click? - (super on-default-event e)) - (when (and bg-click? dragging?) - ;; We didn't call super on-default-event, so we need - ;; to explicitly end the drag: - (after-interactive-move e)) - (when bg-click? - ; Check for clicking on a button region: - (for-each - (lambda (region) - (when (and (region-button? region) - (region-callback region)) - (let-values ([(sx sy sw sh) (get-region-box region)]) - (let ([in? (and (<= sx lx (+ sx sw)) - (<= sy ly (+ sy sh)))]) - (unless (region-decided-start? region) - (set-region-decided-start?! region #t) - (set-region-can-select?! region in?)) - (when (and (not (eq? in? (region-hilite? region))) - (region-can-select? region)) - (set-region-hilite?! region in?) - (invalidate-bitmap-cache sx sy sw sh)))))) - regions)) - (when (and was-bg? (not bg-click?)) - ; Callback hilighted button: - (for-each - (lambda (region) - (when (region-button? region) - (set-region-decided-start?! region #f) - (when (region-hilite? region) - (mred:queue-callback - ; Call it outside the current edit sequence - (lambda () - ((region-callback region)) - (unhilite-region region)))))) - regions))) - (when (and (send e button-down?) - click-base - (not (send click-base user-can-move))) - (no-selected))) - (when (and click click-base) - (do-on-single-click click-base))))] - [on-double-click - (lambda (s e) - (cond - [(eq? do-on-double-click 'flip) - (begin-edit-sequence) - (let ([l (get-reverse-selected-list)]) - (for-each - (lambda (s) - (when (send s user-can-flip) - (send s flip))) - l) - (let loop ([l (reverse l)]) - (unless (null? l) - (set-before (car l) #f) - (loop (cdr l))))) - (no-selected) - (end-edit-sequence)] - [do-on-double-click - (do-on-double-click s)] - [else (void)]))]) - (public* - [get-all-list - (lambda () - (let loop ([t (find-first-snip)][accum null]) - (cond - [(not t) (reverse accum)] - [else (loop (send t next) (cons t accum))])))] - [get-full-box - (lambda () - (let ([xb (box 0)][yb (box 0)] - [wb (box 0)][hb (box 0)]) - (send (get-admin) get-view xb yb wb hb) - (values 0 0 (unbox wb) (unbox hb))))] - [get-region-box - (lambda (region) - (values (region-x region) - (region-y region) - (region-w region) - (region-h region)))] - [add-region - (lambda (r) - (set! regions (append regions (list r))) - (update-region r))] - [remove-region - (lambda (r) - (set! regions (remq r regions)) - (update-region r))] - [unhilite-region - (lambda (region) - (set-region-hilite?! region #f) - (update-region region))] - [hilite-region - (lambda (region) - (set-region-hilite?! region #t) - (update-region region))] - [set-double-click-action - (lambda (a) - (set! do-on-double-click a))] - [set-single-click-action - (lambda (a) - (set! do-on-single-click a))] - [set-button-action - (lambda (button action) - (let ([map - (case action - [(drag/one) (list #t #f #f)] - [(drag-raise/one) (list #t #f #t)] - [(drag/above) (list #f #f #f)] - [(drag-raise/above) (list #f #f #t)] - [(drag/below) (list #f #t #f)] - [(drag-raise/below) (list #f #t #t)] - [else (error 'set-button-action "unknown action: ~s" action)])]) - (set! button-map - (cons - (cons button map) - (remq (assoc button button-map) - button-map)))))]) - (super-make-object) - (set-selection-visible #f))) - - (define table% - (class mred:frame% - (init title w h) - (inherit reflow-container) - (augment* - [on-close - (lambda () - (exit))]) - (public* - [table-width (lambda () - (reflow-container) - (let-values ([(x y w h) (send pb get-full-box)]) - w))] - [table-height (lambda () - (reflow-container) - (let-values ([(x y w h) (send pb get-full-box)]) - h))] - [begin-card-sequence - (lambda () - (set! in-sequence (add1 in-sequence)) - (send pb begin-edit-sequence))] - [end-card-sequence - (lambda () - (send pb end-edit-sequence) - (set! in-sequence (sub1 in-sequence)))] - [add-card - (lambda (card x y) - (position-cards (list card) x y (lambda (p) (values 0 0)) add-cards-callback))] - [add-cards - (lambda (cards x y [offset (lambda (p) (values 0 0))]) - (position-cards cards x y offset add-cards-callback))] - [add-cards-to-region - (lambda (cards region) - (position-cards-in-region cards region add-cards-callback))] - [move-card - (lambda (card x y) - (position-cards (list card) x y (lambda (p) (values 0 0)) move-cards-callback))] - [move-cards - (lambda (cards x y [offset (lambda (p) (values 0 0))]) - (position-cards cards x y offset move-cards-callback))] - [move-cards-to-region - (lambda (cards region) - (position-cards-in-region cards region (lambda (c x y) (send pb move-to c x y))))] - [card-location - (lambda (card) - (let ([x (box 0)] - [y (box 0)]) - (unless (send pb get-snip-location card x y) - (raise-mismatch-error 'card-location "card not on table: " card)) - (values (unbox x) (unbox y))))] - [all-cards - (lambda () - (send pb get-all-list))] - [remove-card - (lambda (card) - (remove-cards (list card)))] - [remove-cards - (lambda (cards) - (begin-card-sequence) - (for-each (lambda (c) (send pb release-snip c)) cards) - (end-card-sequence))] - [flip-card - (lambda (card) - (flip-cards (list card)))] - [flip-cards - (lambda (cards) - (if (or (not animate?) (positive? in-sequence)) - (for-each (lambda (c) (send c flip)) cards) - (let ([flip-step - (lambda (go) - (let ([start (current-milliseconds)]) - (begin-card-sequence) - (go) - (end-card-sequence) - (pause (max 0 (- (/ ANIMATION-TIME ANIMATION-STEPS) - (/ (- (current-milliseconds) start) 1000))))))]) - (flip-step (lambda () (for-each (lambda (c) (send c semi-flip)) cards))) - (flip-step (lambda () (for-each (lambda (c) (send c flip)) cards))) - (flip-step (lambda () (for-each (lambda (c) (send c semi-flip)) cards))))))] - [rotate-card - (lambda (card mode) (rotate-cards (list card) mode))] - [rotate-cards - (lambda (cards mode) - (begin-card-sequence) - (let ([tw (table-width)] - [th (table-height)]) - (map (lambda (c) - (let ([w (send c card-width)] - [h (send c card-height)]) - (send c rotate mode) - (let ([w2 (send c card-width)] - [h2 (send c card-height)] - [x (box 0)] - [y (box 0)]) - (send pb get-snip-location c x y) - (send pb move-to c - (min (max 0 (+ (unbox x) (/ (- w w2) 2))) (- tw w2)) - (min (max 0 (+ (unbox y) (/ (- h h2) 2))) (- th h2)))))) - cards) - (end-card-sequence)))] - [card-face-up - (lambda (card) - (cards-face-up (list card)))] - [cards-face-up - (lambda (cards) - (flip-cards (filter (lambda (c) (send c face-down?)) cards)))] - [card-face-down - (lambda (card) - (cards-face-down (list card)))] - [cards-face-down - (lambda (cards) - (flip-cards (filter (lambda (c) (not (send c face-down?))) cards)))] - [card-to-front - (lambda (card) - (send pb set-before card #f))] - [card-to-back - (lambda (card) - (send pb set-after card #f))] - [stack-cards - (lambda (cards) - (unless (null? cards) - (send pb only-front-selected) ; in case overlap changes - (begin-card-sequence) - (let loop ([l (cdr cards)][behind (car cards)]) - (unless (null? l) - (send pb set-after (car l) behind) - (loop (cdr l) (car l)))) - (end-card-sequence)))] - [add-region - (lambda (r) - (send pb add-region r))] - [remove-region - (lambda (r) - (send pb remove-region r))] - [hilite-region - (lambda (r) - (send pb hilite-region r))] - [unhilite-region - (lambda (r) - (send pb unhilite-region r))] - [set-button-action - (lambda (button action) - (send pb set-button-action button action))] - [set-double-click-action - (lambda (a) - (send pb set-double-click-action a))] - [set-single-click-action - (lambda (a) - (send pb set-single-click-action a))] - [pause - (lambda (duration) - (let ([s (make-semaphore)] - [a (alarm-evt (+ (current-inexact-milliseconds) - (* duration 1000)))] - [enabled? (send c is-enabled?)]) - ;; Can't move the cards during this time: - (send c enable #f) - (mred:yield a) - (when enabled? - (send c enable #t))))] - [animated - (case-lambda - [() animate?] - [(on?) (set! animate? (and on? #t))])] - [create-status-pane - (lambda () - (let ([p (make-object mred:horizontal-pane% this)]) - (set! msg (new mred:message% - [parent p] - [label ""] - [stretchable-width #t])) - p))] - [set-status - (lambda (str) - (when msg - (send msg set-label str)))] - [add-help-button - (lambda (pane where title tt?) - (new mred:button% - (parent pane) - (label (string-constant help-menu-label)) - (callback - (let ([show-help (show-help where title tt?)]) - (lambda x - (show-help))))))] - [add-scribble-button - (lambda (pane mod tag) - (new mred:button% - (parent pane) - (label (string-constant help-menu-label)) - (callback - (let ([show-help (show-scribbling mod tag)]) - (lambda x - (show-help))))))]) - (begin - (define msg #f) - (define add-cards-callback - (lambda (card x y) - (send pb insert card #f x y))) - (define move-cards-callback - (lambda (card x y) - (send pb move-to card x y) - (send card remember-location pb)))) - (begin - (define animate? #t) - (define in-sequence 0)) - (private* - [position-cards - (lambda (cards x y offset set) - (let ([positions (let loop ([l cards][n 0]) - (if (null? l) - null - (let-values ([(dx dy) (offset n)]) - (cons (cons (+ x dx) (+ y dy)) - (loop (cdr l) (add1 n))))))]) - (if (or (not animate?) (positive? in-sequence) (eq? set add-cards-callback)) - (begin - (begin-card-sequence) - (for-each (lambda (c p) (set c (car p) (cdr p))) cards positions) - (end-card-sequence)) - (let-values ([(moving-cards - source-xs - source-ys - dest-xs - dest-ys) - (let loop ([cl cards][pl positions]) - (if (null? cl) - (values null null null null null) - (let-values ([(mcl sxl syl dxl dyl) (loop (cdr cl) (cdr pl))] - [(card) (car cl)] - [(x y) (values (caar pl) (cdar pl))]) - (let ([xb (box 0)][yb (box 0)]) - (send pb get-snip-location card xb yb) - (let ([sx (unbox xb)][sy (unbox yb)]) - (if (and (= x sx) (= y sy)) - (values mcl sxl syl dxl dyl) - (values (cons card mcl) - (cons sx sxl) - (cons sy syl) - (cons x dxl) - (cons y dyl))))))))]) - (let ([time-scale - ;; An animation speed that looks good for - ;; long moves looks too slow for short - ;; moves. So scale the time back by as much - ;; as 50% if the max distance for all cards - ;; is short. - (let ([max-delta (max (apply max 0 (map (lambda (sx dx) - (abs (- sx dx))) - source-xs dest-xs)) - (apply max 0 (map (lambda (sy dy) - (abs (- sy dy))) - source-ys dest-ys)))]) - (if (max-delta . < . 100) - (/ (+ max-delta 100) 200.0) - 1))]) - (let loop ([n 1]) - (unless (> n ANIMATION-STEPS) - (let ([start (current-milliseconds)] - [scale (lambda (s d) - (+ s (* (/ n ANIMATION-STEPS) (- d s))))]) - (begin-card-sequence) - (for-each - (lambda (c sx sy dx dy) - (set c (scale sx dx) (scale sy dy))) - moving-cards - source-xs source-ys - dest-xs dest-ys) - (end-card-sequence) - (pause (max 0 (- (/ (* time-scale ANIMATION-TIME) ANIMATION-STEPS) - (/ (- (current-milliseconds) start) 1000)))) - (loop (add1 n)))))))) - ;; In case overlap changed: - (send pb only-front-selected)))] - [position-cards-in-region - (lambda (cards r set) - (unless (null? cards) - (let-values ([(x y w h) (send pb get-region-box r)] - [(len) (sub1 (length cards))] - [(cw ch) (values (send (car cards) card-width) - (send (car cards) card-height))]) - (let* ([pretty (lambda (cw) (+ (* (add1 len) cw) (* len PRETTY-CARD-SEP-AMOUNT)))] - [pw (pretty cw)] - [ph (pretty ch)]) - (let-values ([(x w) (if (> w pw) - (values (+ x (/ (- w pw) 2)) pw) - (values x w))] - [(y h) (if (> h ph) - (values (+ y (/ (- h ph) 2)) ph) - (values y h))]) - (position-cards cards x y - (lambda (p) - (if (zero? len) - (values (/ (- w cw) 2) - (/ (- h ch) 2)) - (values (* (- len p) (/ (- w cw) len)) - (* (- len p) (/ (- h ch) len))))) - set))))))]) - (super-new [label title] [style '(metal no-resize-border)]) - (begin - (define c (make-object mred:editor-canvas% this #f '(no-vscroll no-hscroll))) - (define pb (make-object pasteboard%))) - (send c min-client-width (+ 10 (inexact->exact (floor (* w (send back get-width)))))) - (send c min-client-height (+ 10 (inexact->exact (floor (* h (send back get-height)))))) - (send c stretchable-width #f) - (send c stretchable-height #f) - (send this stretchable-width #f) - (send this stretchable-height #f) - (send c set-editor pb))) - - (define (draw-roundish-rectangle dc x y w h) - (send dc draw-line (+ x 1) y (+ x w -2) y) - (send dc draw-line (+ x 1) (+ y h -1) (+ x w -2) (+ y h -1)) - (send dc draw-line x (+ y 1) x (+ y h -2)) - (send dc draw-line (+ x w -1) (+ y 1) (+ x w -1) (+ y h -2)))) diff --git a/pkgs/games/cards/constants.rkt b/pkgs/games/cards/constants.rkt deleted file mode 100644 index ab22fca26b..0000000000 --- a/pkgs/games/cards/constants.rkt +++ /dev/null @@ -1,57 +0,0 @@ - -(module constants racket - (require racket/class - racket/gui) - - (provide ANIMATION-STEPS - ANIMATION-TIME - - PRETTY-CARD-SEP-AMOUNT - - white-brush - hilite-brush - black-pen - dark-gray-pen - no-pen - black-color - nice-font) - - (define ANIMATION-STEPS 5) - (define ANIMATION-TIME 0.3) - - (define PRETTY-CARD-SEP-AMOUNT 5) - - (define black-color - (make-object color% "black")) - - (define white-brush - (send the-brush-list - find-or-create-brush - "white" 'solid)) - - (define hilite-brush - (send the-brush-list - find-or-create-brush - black-color 'hilite)) - - (define black-pen - (send the-pen-list - find-or-create-pen - black-color 1 'solid)) - - (define dark-gray-pen - (send the-pen-list - find-or-create-pen - "dark gray" 1 'solid)) - - (define no-pen - (send the-pen-list - find-or-create-pen - black-color 1 'transparent)) - - (define nice-font - (send the-font-list - find-or-create-font - 12 'decorative 'normal 'bold - #f 'default #t))) - diff --git a/pkgs/games/cards/generate.rkt b/pkgs/games/cards/generate.rkt deleted file mode 100644 index 46a6bcf761..0000000000 --- a/pkgs/games/cards/generate.rkt +++ /dev/null @@ -1,301 +0,0 @@ -#lang racket/base - -;; Code used to generate card images, just in case the cards -;; need to be regenarted in a similar way. This code relies -;; on fonts that were available on a Mac OS X 10.9 machine -;; at the time that the cards were generated. - -(module generate racket - (require racket/draw) - - (define W 71) - (define H 96) - - (define IW 41) - (define IH 73) - - ;; Numbers: Lucida Grande - ;; Letters: Helvetica - ;; Suits: Osaka - - (define (extract-color) - (define bm0 (read-bitmap "card-1-1.png")) - (define c (new color%)) - (send (send bm0 make-dc) get-pixel (sub1 (sub1 W)) 20 c) - (list - (send c red) - (send c green) - (send c blue))) - - ;; Extract the core of a face card so that it can be re-decorated. - ;; some by-hand editing may be needed to generate images - ;; in "faces-clean". Create initial cards by scaling up the originals - ;; such as ImageMagick's `-adaptive-resize` mode. - (define (extract-faces) - (define D 0) - (define dh 2) - (define tw (* 2 (+ D IW))) - (define th (- (* 2 (+ D IH)) (* 2 dh))) - (define T 200) - - (for* ([val (in-range 10 13)] - [suit 4]) - - (define (white-out bstr x y) - (define Zx (cond - [(and (= val 11) (= suit 3)) 26] - [(and (= val 12) (= suit 0)) 28] - [(and (= val 12) (= suit 2)) 28] - [else 32])) - (define Zy 40) - (when (or (and (< 0 x Zx) (< 0 y Zy)) - (and (< (- tw Zx) x tw) (< (- th Zy) y th))) - (define p (* 4 (+ x (* y tw)))) - (define r (bytes-ref bstr (+ p 1))) - (define g (bytes-ref bstr (+ p 2))) - (define b (bytes-ref bstr (+ p 3))) - (unless (and (r . > . T) - (g . > . T) - (b . > . T)) - (bytes-set! bstr (+ p 1) 255) - (bytes-set! bstr (+ p 2) 255) - (bytes-set! bstr (+ p 3) 255) - (white-out bstr (- x 1) y) - (white-out bstr (+ x 1) y) - (white-out bstr x (- y 1)) - (white-out bstr x (+ y 1))))) - - (define old-bm (read-bitmap - (collection-file-path (format "card-~a-~a@2x.png" val suit) "games/cards/hicolor"))) - (define bm2 (make-bitmap tw th)) - (define dc (send bm2 make-dc)) - (define dx (quotient (- W (+ D IW)) 2)) - (define dy (quotient (- H (+ D IH)) 2)) - (send dc draw-bitmap-section old-bm 0 0 (* 2 dx) (+ (* 2 dy) dh) tw th) - (define bstr (make-bytes (* tw th 4))) - (send bm2 get-argb-pixels 0 0 tw th bstr) - (define P 16) - (white-out bstr P P) - (white-out bstr (- tw P) (- th P)) - (send bm2 set-argb-pixels 0 0 tw th bstr) - (send bm2 save-file (format "faces/face-~a-~a.png" val suit) 'png))) - - (define (card suit val) - (define bm (make-bitmap W H #:backing-scale 2)) - (define dc (send bm make-dc)) - - (define clip-path (new dc-path%)) - (define R 4) - (send clip-path move-to R 0) - (send clip-path arc (- W R) 0 R R (* pi 1/2) 0 #f) - (send clip-path arc (- W R) (- H R) R R 0 (* pi -1/2) #f) - (send clip-path arc 0 (- H R) R R (* pi -1/2) (* pi -1) #f) - (send clip-path arc 0 0 R R (* pi -1) (* pi -3/2) #f) - (send clip-path close) - (define region (new region%)) - (send region set-path clip-path) - (send dc set-clipping-region region) - - (send dc set-pen "black" 1 'transparent) - (send dc set-brush (make-color 236 236 186) 'solid) - (send dc draw-rectangle 0 0 W H) - - (send dc set-smoothing 'smoothed) - (send dc set-brush "black" 'transparent) - (define tr (send dc get-transformation)) - (send dc translate -1.0 -1.0) - (send dc set-pen (make-color 200 200 180) 2 'solid) - (send dc draw-path clip-path 0 0) - (send dc set-transformation tr) - (send dc set-pen (make-color 150 150 100) 2 'solid) - (send dc draw-path clip-path 0 0) - (send dc set-smoothing 'aligned) - - (cond - [(and (not suit) (not val)) - (define dx 4) - (send dc set-pen "black" 1 'transparent) - (send dc set-brush (make-color 0 170 0) 'solid) - (send dc draw-rectangle dx dx (- W dx dx) (- H dx dx)) - (send dc set-clipping-rect dx dx (- W dx dx) (- H dx dx)) - (send dc set-text-foreground (make-color 0 240 0)) - (send dc set-font (make-font #:face "Athelas" #:size 16)) - (define-values (lw lh ld la) (send dc get-text-extent "\u3BB")) - (define d (/ (- W dx dx) 8)) - (for* ([j (in-range -4 5)] - [i (in-range 8)]) - (define x (+ dx (* i d))) - (define y (+ -2 (/ W 2) (* j (+ 1 (/ (- H dx dx) 8))))) - (define flip? (odd? (+ i j))) - (send dc draw-text "\u3BB" - (+ x (if flip? 0 lw)) - (+ y (if flip? 0 lh)) - #f 0 (if flip? 0 pi)))] - [else - (define pip - (case suit - [(0) "\u2663"] ; club - [(1) "\u2666"] ; diamond - [(2) "\u2665"] ; heart - [(3) "\u2660"])) ; spade - (define color - (case suit - [(0 3) "black"] - [(1 2) (make-color 240 0 0)])) - (define num - (case val - [(0) "A"] - [(9) "I0"] - [(10) "J"] - [(11) "Q"] - [(12) "K"] - [else (format "~a" (add1 val))])) - (define squish - (case val - [(9) #e0.9] - [(10) #e1.1] - [(11) #e0.8] - [else 1])) - - (send dc set-text-foreground color) - - (when (val . > . 9) - (define (get) - (read-bitmap (format "faces-clean/face-~a-~a.png" val suit))) - (define old-bm (get)) - (define old-bm2 (get)) - - (define odc (send old-bm make-dc)) - (send odc rotate pi) - (send odc translate (- (send old-bm get-width)) (- (send old-bm get-height))) - (send odc set-clipping-rect 0 0 (send old-bm get-width) (quotient (send old-bm get-height) 2)) - (send odc draw-bitmap old-bm2 0 0) - - (define tr (send dc get-transformation)) - (send dc scale 0.5 0.5) - (define D 0) - (define dh 2) - (define dx (quotient (- W (+ D IW)) 2)) - (define dy (quotient (- H (+ D IH)) 2)) - (send dc draw-bitmap old-bm (* 2 dx) (+ (* 2 dy) dh)) - (send dc set-transformation tr) - (send dc set-pen (make-color 150 150 100) 1 'solid) - (send dc draw-rectangle (- dx 1) (- dy 0) (+ IW 2) (+ IH 0))) - - (define number? (<= 1 val 8)) - - (define (half first?) - (send dc set-font (make-font #:face (if number? - "Lucida Grande" - "Helvetica") - #:weight 'bold #:size 18)) - - (define tr (send dc get-transformation)) - (send dc scale squish 1) - (send dc draw-text num (/ 1 squish) (if number? 0 4) #t) - (define-values (nw nh nd na) (send dc get-text-extent num)) - (send dc set-transformation tr) - - (send dc set-font (make-font #:face "Osaka" #:size 12)) - (define-values (spw sph spd spa) (send dc get-text-extent pip)) - (send dc draw-text pip (+ 1 (quotient (- (floor (* squish nw)) spw) 2)) 20) - - (send dc set-font (make-font #:face "Osaka" #:size 16)) - (define-values (pw ph pd pa) (send dc get-text-extent pip)) - - (define dx (quotient (- W IW) 2)) - (define dy (quotient (- H IH) 2)) - (define dy2 (+ dy ph (/ (- (/ IH 2) ph ph) 2))) - - (define (pips n) - (case n - [(1) - (when first? - (cond - [(and (= val 0) (= suit 3)) - (define S 6) - - (define plt (read-bitmap (collection-file-path "PLT-206.png" "icons"))) - (define w (send plt get-width)) - (define h (send plt get-height)) - - (define spade (make-bitmap w h)) - (define sdc (send spade make-dc)) - (define f (make-font #:face (send (send dc get-font) get-face) #:size (* 4 64))) - (define-values (pw ph pd pa) (send sdc get-text-extent pip f)) - (send sdc set-font f) - (send sdc draw-text pip (quotient (- w pw) 2) (quotient (- h ph) 2)) - - (define bstr (make-bytes (* w h 4))) - (send plt get-argb-pixels 0 0 w h bstr) - (define sbstr (make-bytes (* w h 4))) - (send spade get-argb-pixels 0 0 w h sbstr) - - (for ([i (in-range 0 (* w h 4) 4)]) - (define a (quotient (+ (bytes-ref bstr (+ i 1)) - (bytes-ref bstr (+ i 2)) - (bytes-ref bstr (+ i 3))) - 3)) - (bytes-set! bstr i (bytes-ref sbstr i)) - (bytes-set! bstr (+ i 1) a) - (bytes-set! bstr (+ i 2) a) - (bytes-set! bstr (+ i 3) a)) - (send plt set-argb-pixels 0 0 w h bstr) - (define tr (send dc get-transformation)) - (send dc scale (/ 1 S) (/ 1 S)) - (send dc draw-bitmap plt - (* S (/ (- W (quotient w S)) 2)) - (* S (/ (- H (quotient h S)) 2))) - (send dc set-transformation tr)] - [else - (send dc draw-text pip (quotient (- W pw) 2) (quotient (- H ph) 2))]))] - [(2) - (send dc draw-text pip (+ dx (quotient (- IW pw) 2)) dy)] - [(3) - (pips 1) - (pips 2)] - [(4) - (send dc draw-text pip dx dy) - (send dc draw-text pip (- W dx pw) dy)] - [(5) - (pips 4) - (pips 1)] - [(6) - (pips 4) - (when first? - (send dc draw-text pip dx (quotient (- H ph) 2)) - (send dc draw-text pip (- W dx pw) (quotient (- H ph) 2)))] - [(7) - (pips 6) - (when first? - (send dc draw-text pip (quotient (- W pw) 2) (+ dy (- (quotient IH 3) (quotient ph 2)))))] - [(8) - (pips 4) - (send dc draw-text pip dx dy2) - (send dc draw-text pip (- W dx pw) dy2)] - [(9) - (pips 8) - (pips 1)] - [(10) - (pips 8) - (send dc draw-text pip (quotient (- W pw) 2) (+ dy (- (quotient IH 4) (quotient ph 2))))] - [else - (send dc set-brush "white" 'solid) - (send dc set-pen "black" 1 'transparent) - (send dc draw-rectangle dx (+ dy 2) (- pw 2) (+ ph 3)) - (send dc draw-text pip (- dx 1) (+ dy 2))])) - - (pips (add1 val))) - - (half #t) - (send dc rotate pi) - (send dc translate (- W) (- H)) - (half #f)]) - - bm) - - (for* ([s 4] - [n 13]) - (send (card s n) save-file (format "/tmp/cards/card-~a-~a@2x.png" n s) 'png #:unscaled? #t)) - - (send (card #f #f) save-file "/tmp/cards/card-back@2x.png" 'png #:unscaled? #t)) diff --git a/pkgs/games/cards/hicolor/card-0-0.png b/pkgs/games/cards/hicolor/card-0-0.png deleted file mode 100644 index af1a4c0c1d4b4fa7e888576d10c20ecc18f0612a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1931 zcmV;62Xy#}P) zZA=t*9>+hs3aIg5SplU+??i3HU{ByED6l+K6skPvO1w03Z7*ILnMa%WNvA~_Dn1l83xVY;H?s+@ULg-A|) z{dIdVN2HAtD0S`H&qhnmS&;&qs z_GS_iq5!CqhlBh2DWU8BP}f+fX2o)1_rd(S{`zyTPi9ljG!Ph zsi|=QIGs+atLx=Yr!az?2M-=nTYC+FXP>nI5F8vxcz7tF&ApZ&=d;fm7$2Vi;ONo! zh2xy|_S*n7H{0p&|4x~d3L(fTE31_(bhno6r_Q4)i~s`zL)dIL04OLp$k0%W$KRvY z($-$f2vAj3$JCS)FR!`m+Lb0M+Pym+fX_c~r>}2N-h>KbC@R|H($C60abLE0Lq98* zLYE`K+}UPczy5cco7-5o?nzQoHefIqi`@+{9Af@ z`pL-HPkFhv4gle?ZBB0PAL;1$7XT$Cl>of+&R>PXmXeatcB&1RZZBzxFXM|ZI*5#1i;s_&l38U(Saash^CmGdie<}|aOcil zGBT3+>Z^Ye5MW}{rWj3aYo?j?2st!#B_~e2E_W8yp`Tkxpv#d!mm`5LM*>}r1iBmv zbU6~}awO2@NTAD+VAj(IIeGBlA%%sfX>I))v)K=;HHEaacvW1~S5(gAi-m^X8lT6-?$v(Y9)8YV!~?O=00_Ror$~RL;oA=&bWyE*B#sV=|`^qo|yO zgeU?6OrrS_5o=koVyOa&JW)iB)9K{y-TN4gMoLSMvt&ttux#zxm3;j1+YApsq`SKp zmrJ>KR%Dmc)6>t!jk{UD-bzTwW-2SMa^}o&00IO3DK0J`KmUC~LbebVmc@=82N@kz zrp08J^V(~F7H$DK91|24p2lKv-){c)+y4?B{cFyit;Okd0#ILngQB8Rxnlwf$eDS& z`NuH*)S2AKE@yIbN|x{ZKagF{#*OPerh|ga)Ykq5faAvxvvcQW(RUIPqh!f86WNcD z-+lL0Mn=ZCb?Xk{;h`Km_A1Ml2LoU>`*HH*QNqGjQ(RoZ=;#>Rwk496r_3WTvddYz zbTL&`?|IDY>beg=TiZX#%6f*pyd3iKa^#LCLKSD_H8sun`Yz}r1iBmvbU6~}awO2@NTAD+K$jzdE=K}Q z%ej2{n#XGmGtr!!;o3uB9uev_C8x9V9{29`0PZy?GxGqwy#u`P z!VzIKhPt{IpJ~{_i^ON?}d6z$pNrhQ?Oc7C@!wx(4jv8uy5a6)YP05hNbA}7yvZZR*&=P zr0 zyolJ?Z~#8}q*}DRwDckq6O+uDVU9x9Axm!JO<06somY~7k5)N4u(!1nFW z0Pay=dVAgHP!}#V0+5mtD-2Ho8kCcso+Px^rAy89_kTxg>(_v1OM%8V$N&KWCM=dn zY_^+Ryx4@%XvF1mv0%Y`Qd46+YBeVZ+T1l za&j`r$;ptcF~Xy3raGQ3=7Jr&9Ux1wKx)Hoe**x6`zM?t^`CH>L2hoF;eQ&3PK}3V RjRgPz002ovPDHLkV1mvsu0sF- diff --git a/pkgs/games/cards/hicolor/card-0-0@2x.png b/pkgs/games/cards/hicolor/card-0-0@2x.png deleted file mode 100644 index a13c9b89dc5e8c277e873e48567590622d72ecb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4393 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 diff --git a/pkgs/games/cards/hicolor/card-0-1.png b/pkgs/games/cards/hicolor/card-0-1.png deleted file mode 100644 index bf2471dc942789274b871189199d337c173e5d55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmV;q1xEUbP) zdu$X%9LGO*w3Y%w<&6&#e5FLx@D$QoELsa9$Rna56(b;8gAYQYJOmmPg2adhDMZ0& z1rrhkLlF>AN*?6DLm9ohTF>IZ{t7_5~0l3RX-qxw)O`*KZ7f z$g%k2FK7B9$Qdllr<((g6dt^CE;d7Dm9xL;>)_Ia46mHs-@&;?XMfK@IMWbdr10RC zvtfs<3kE<|CbYz1%btK^g#)*of6l|!y|VrI!!UH9Y;W2XaIA3Pmh;tq5fq6)aXyT= zU&^a%px(So%Pr^1B{i@QbnOVk^JPCChsxanN7IiZ=dZtE=YH9Kq(Ig^xcf$N%2AMB zPSrs;a5%sy;UmMh^u!-9`E|H16RInuwQL~XGw1vTD0vOeo`X~MFl8QGYS9o)KW;gR z1iZ2Ye)!2L+gk&RKL|KhIB?5Z{W+}P?ydFCC$M9GK#{_OTh8r0A?kCF&Tb7oy9X30 zJh)914uS=x-dgX?hTK~NiWDBar^!nt@YpbCf66$RP#j>S@Zf!vM2Y)#Lx7`w8jBsM#trS=}3alIjR*nKIM}d{2z{*iz z|^wnDmn(owM))@=zcj}Lm}Y^j3xKf89lnM>iwFaLX-bm)v)FSUC!;90gX60xL&>m7~DQQDEgLuyPbw zISQ;C1y+s%v*nyT1;~tRPS}ngPrC{!vGkckIMb{mJ>2J#CR4JG# zXZ?0(-~z~06wB9ns+lLJ?wEXVmr7Z=eAk+Ud2&vil20{LiO1pRjZgyWqWO<_xSp4(0mD6MQI!+z(X1OX$k4ii{_@++w!I=Mk&vOi!`)x&m?sD1sa17QX4O1@ zQOZUZ$UH$wn0HwLJUSFwMde5K>O)fIGql%CIh}HxS;9d+H5hiEr<$2^zx!jaY0x01^2Mr~dXYoKh$)t%>{#QXxn? Tof&Mk00000NkvXXu0mjft{BY? diff --git a/pkgs/games/cards/hicolor/card-0-1@2x.png b/pkgs/games/cards/hicolor/card-0-1@2x.png deleted file mode 100644 index 1edfb863566267ac02f87f129a111b2ac83e4ce7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3650 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 z zS!@+m7=XXIU7$eaLMg}+Q6vV?7bqaoS}dC^f-QuI#03z+5^zBu6ts}Efbm6ep%7_E zfCP!9C2U1opsdPv`=A7(CPt%TOACdH-S73`r=2^U+W{XsGx5xqOlHoxr^%nMb7tn8 z`_H*rC=?<$_tg*{VFbv`yr^lLHZ2MP%$v8!>4;pxl`EA50(*e~KJdhZGh|3FMvO=Y z5IG)^i7aQ?TJVpNZO1;FLvjyhIrWXOzf><59@3`@(aXorLshknA-M;$ zocwQOpE?pc#Xxfq4ji{REO%g(^G_`tIw{9Z92y$sc+Kbfb57Z1sXG;bit7%9=p4G7{9@~t!JzT^M*&1mWi^zZlbW?}K=pUV zt+i{Zb=ML(`;N-BM#{SmLP?(e5ju!2 zr@TrR1CYHL8k_X;g-dew^tjK)@SH`L)2$2meDbgd@YAoxma#F=CC|t)zCjqjT+Z2*}Fv_{V7vyD2_i7=^2itNYOZ%T=e$Gi9 z2`d-tyCtJ z|G(sB4eUH%to!~)*j)tM3e9uZTl1l=!M^yyu>Z{Yqe7p=4`y|-WS za>vDT7o53A&Y298$KJhN#sob-(E*&1qiK+v1^xT9-)7JN*!Z5KbJ)&3At(4HSs^yU zx2TX3d7mqL((u<|CYIa!@Kb4VEf}~gY#png&A^fX<}gQ<#rPa!Ll4#5@+ux z##b8dpzfKI`y~{AE1CKmc0_EVrkpcn@WH2gIcJNkxX=dmXAhWD4~p4f$;H!_JpadT34->{nePO(0lx0jbd^fL_ z9FRn)MYD}{X`^LpgIe9{KjO);Kpi>dRnX%JS%)mI!2Ee-H6*5he+>SDB0wcMeG(w~ z&MV+M_nSZ8T_nllQ9f$MCj+WokTWLA7^>{DoI#OD8%?ucvgy@1a{y*M6>)09!0bt_ zhib{`-BZuz7(P^A&2IHlsp}L2)5o43~e&Ldo!@3lxc0mT{<%iTHC_N8FCq+~!BpGE>k_}DOlLKuhMIUbg~xW}Lj>R^KRd$YAPHpsJh%zrIR1NW$j$$4$-Dlmo`x=b32{GwId5<^a4n zQ#K2HAiuBTA%we#h5&&8K)PcAxs5;|3jj@i!YRr738yw>W?t0(1zYTEXf&P0f&c&j M07*qoM6N<$f(C5+{r~^~ diff --git a/pkgs/games/cards/hicolor/card-0-2@2x.png b/pkgs/games/cards/hicolor/card-0-2@2x.png deleted file mode 100644 index 6ac1e5f8703b9d319ca27b7f4939a14963496427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3671 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 diff --git a/pkgs/games/cards/hicolor/card-0-3@2x.png b/pkgs/games/cards/hicolor/card-0-3@2x.png deleted file mode 100644 index 1c654bbaf89f597f4fcf0bb29f8f21cea558383c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6554 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 diff --git a/pkgs/games/cards/hicolor/card-1-0.png b/pkgs/games/cards/hicolor/card-1-0.png deleted file mode 100644 index daf55b42ee156ab4efebd4550c4d97639a2580bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2255 zcmb_e`9Bkm8($wsDCaaL(0Dd)hsPH_)ltL%R!#=y&vbxOD-2UAqyOe z0BX`oNq2!oUqHwae?U0?CfJ&)@_BPLz3d@-2)<^uh> ziYjCt=Zr#0fx$4(nVTX<)+(d__~>J=o^!lAU&MNL7z*7D4q1dK1n9YJukISx-;syt z;K^M{x&}tMzh21#e0^;I-8~0Eb)+1LvqcaskH$kyGtKZ9$JXb%9KA8Xk70{O`ug(g zzn*o@bzvm=oBg2EnKj+eyE+dYiz_AgA7rYtkDvaNB%{UQpp-5M0SIEbUf)|%P>g$x z_IUk7L62@--Cw^~=$S(CP4j&{>lnRS0cvUr%gOb1+cF+Udx?>#8^{qUxdvKyw@0?|$aIOf9$2&nmsNoH-zd{eFe=J5 zq&)T@Z)J)>?(Qy@mdPsomb1pkR}mV+wNG$y<2Q$QL;Ldwz6tmCPX(ktDk>6R-x9Sc zYqVM(21W1x2}?`I$QoclxyBKvF2tOD;}pc|q=fqEfg2jEQ?q}cr&5ECrZKf2my_XWK z$f&6G-yt6cfj&3Uw>P1SiywU`n2iXQmV1L<7c{YH4sZPg{5&+!*SGbluJNJAL}J_Y z0Usl@Jw*|lHoo+AMg*$LR;{eukTrZS4pb%UEjYydXcyw47`i%cn<%zw6BfpAXD0?2 z9S!r`-DaNiG{?>UNLgPQ3%&5y&*b}e`cW!Vd!Y*&p?SiL8O(|NR*C>=>7zr)WH-Y* zEANajR#vA0bF97IDu1Sm2^ZMXYNqYne*j|il zpsd11xcrTK?Z^)Oy^f+E^Ve(x2@C&$qiLs4y#&1XYSq*}XS}QC?yj;hTEQS*(Npwh zOCQ_2qVxXMD{5NWuC-RlnUmd|4gBGP8|p`-q=vnDkPW`5sKVg{;?mRk7*R|dRk<%A z5_S62TNU0V)2KTg&4s#NUI7R-H^gf(Jc|T2sM)W=26^?n*pf$~Ym5;R=Lg{{qu$g2 zH|4W5Bs|AH0P^(Lz%b4E7TTu{MxWeS9!U?HaLTEpLI_;8r|?avR44vaD(jL`55=74 zXbqcxP-Ol}x&QydZy0Zvzfb5lD;_Bx>w5i`n^09Hr*I*!?`V3OqjMy| zI0F8lPHcmNGDo2Vnw#y1hK9ngx{NRHqMv2b%H3AOuvxc-eAz!|*S=5=e0j>6nZO|_ zsi`fUl!t@2t6?@BbWBIqO`mytbaZ}6i5Zd82N#RWpN4U{5GlpjN1u|If=U{JqOV_1 z95<>`MAXPD=uvu>=KG8{SB(W!RdJ2GKjSXr6%2!2xC|b>FKoVUdgnZ%O);Wo)(#F` z%QLz4<>erx3+feL-_IGXz~0k_FyEHG2_TZj+lav9RY4PpWAp=aKR=1qL{UJ2t3ecr z1b42}17|J?J`~*YS{^=TXmm&0Pu?S%bB0fFb9TJivYi~>`tSV$_v9{C;8X)4*I1m` z!L#v6Gp6}uIBV&~c?%0klSo9(HRpSOt*DxNiHs-%*(xy$iEKUp5SqZKt4KUKX?M@*)ZUczEC{>FMvQs|9BWig$ouql*psRk-OL6y2w=c|$!@)5uIr zEcX*M!7^e%EIoo;bn66JZp_kukx%371meb4a#NE~$aMMQ*R0eG>AuQap=Y#WVJQl3 z{(~*SDPDW>FR5oI+CBvB^0Y5&I)1~qUt?L$LLxY9CB8b`*r(5>e``5m7R{soYq6Gv z1V0*Gcl`R*`aiaCFw7EH)thQzBAt4_shG$pq zAKk5X!clwuTABg>;-U61SL4%-xJ9udkfx<#vA<i{j1%gKhfWxaLO%xw6ffrN&m#yqz<(8iD{{b1rM^FF& diff --git a/pkgs/games/cards/hicolor/card-1-0@2x.png b/pkgs/games/cards/hicolor/card-1-0@2x.png deleted file mode 100644 index 80c0ecddf3dd4e5b1c016068405f46f84db3115c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5177 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 diff --git a/pkgs/games/cards/hicolor/card-1-2@2x.png b/pkgs/games/cards/hicolor/card-1-2@2x.png deleted file mode 100644 index 19bea47e477e46bb491f1167092f2b670af47320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4125 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 O2k6~2&@H}U9r`~l|I7#g diff --git a/pkgs/games/cards/hicolor/card-1-3.png b/pkgs/games/cards/hicolor/card-1-3.png deleted file mode 100644 index 59ec8cf3cf465e3e3e15fc78bca10e13c7ec88c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2059 zcmcIli8tGc7XGzrrx_Hrghwq?x+ofrwO&P>GHF%L911n>%$k_q< zNUdH@rt|P*BWj7h(Vv$Vh zW8>T_ar;IRlB_AZtG?eE3yZeY)AO2sJzj52LwA#pec##=F0NTAB0@$uoDW?IHGaOn znZ`a8F^67M0|YR5oNLS0F*H2sWiV?~Gf@0)@6Bu1XCA@c^aRQW;-6q=)ESOZ06f{)vg8O`33)`{EWp$<{n?P75;;|82pRd!ZHL;=~^7_sa zj-(Ytne45q*-LJ1y;V7GRq`66sE@Km$OafIBkTtkxNV}42c~F+f`Tn=CRhp?s;n|Y zNaI`&3c9$s80|{=mpkCVES)c=RF5vV+>YyuAEyyxOJx=ukskoFyii zr{nr1O=SS%{b#~upTRL=k*AI;NT}0rsHz?^JUJ=yo=Nh#f~_B{rZhKCYCIKCmZpMZ z@EC1Fbp!ola$qoX`>(>2Oto_gP+Q(;QTQ77>%to60^+#8|IuLCO;72{O@_L<<8Q(7 zk7tlK*{lsp?@Ke2R8i0)ZIC(ckYzoNx{W5^N*|reW<@!zq3pvpOo%5gc$iDlrcEIx zSPS58i;jR#_M-qM@j7Dnv{=OAEPblWzoG8++uiC9LKSv9N-&t2m_#nV;aen|JyAT~ z0~kcD+oY= z&E}St^4=*~cfnm<6BA}c6JEd_zF?(47Vfu4 zYHNKo2+S9)szQ*v%5E;TZ?9o`LeGLE^ZK&&%fiEB;K9MabaxlMd34)2>@$9T&63C@ z>Gn;Qo8K7-+ux7*zOhkKQj)N}-QCp8CI6_9^kI0*iv4o>N)q}Vr0t7G{>h4tzp~_D z>A?Tro@kt}C@(K;nd5T4-4MIxWbZtBUg~+?_FjigNQf{=XUFkwbeb8qomQ<98fsr) z3itI@&CGO52k#lJt(`&K;;`a{5qSJZC)C!DolyXa-(Cy2G?}wo>`C)R?23Uv^IZubajAR^)?EP_yCe&M)DIJ9XJdfofSqUK zIU~MVt6z>q?mX;>V_-5%ovQc*uyKUCEh*QvF|Kow^-0v-DmtR_1C@~~zJgu-nAFx^ zuov!5J_9$Fi6&DhRsA`a#_vrj-+D5>ghQPJXw$m{GAzBNMRBG@*QzCOJ6LgZHHuM! zdrqTuBa6O#fj)7a?tiI)q)`XLh{XFzsreeUQCn!Rwe@C$R(i33{P=jeR5gp_SFgYj z7OqbRUWY9GRKZ(@_N+x>_)-(KNu+Zf)OF2EmsEm7LQ0y#LCR?zk28p6AV6^6e(Z+l z9e8*==w-1euJ~R@Rg3>7%j-iP7+cQsGH^pbmYr88m~ndsxI;U^^t#Qqqqw&iefsU& zXm8G2_f*?6i69?2H8pln-D)U6rB1kcSJj{xhJtn`)zIkg96KF_^SRv%-5s(MrU|O3 zPco+zyk%r%ZM;9bAsXw^d!j&R=hLCO|42Z++Knt@cZ)eHSK)>cwW5G0juS}hsH@|Y zBgsmkI65J_i8fufIvYh;Sdehhljm{^$Hvh=)n8wqf~47NFTp5&qk6L(&XrKUmbSKh zYin!q$adqs4>$6rHFST%GTLTYti754IiHtW*|{GlFKiTxmJ$*Y5xUwGAPrR!xh4YW nZRqF6)ziC{m58K<%0o$ya@0(}$KkNx$pZ+Oy-oeUz2g4?Un2D9 diff --git a/pkgs/games/cards/hicolor/card-1-3@2x.png b/pkgs/games/cards/hicolor/card-1-3@2x.png deleted file mode 100644 index dda3d1574cfd38467da1c3d872fa20f137e67076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4731 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 by|@%_ZAS`k6`dp>DgpHF8S7xQ9wYw;bHhwl diff --git a/pkgs/games/cards/hicolor/card-10-0.png b/pkgs/games/cards/hicolor/card-10-0.png deleted file mode 100644 index ce837448e5f52c93ea96fbec9bc284a5d52d2dcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4396 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 Z@?;{Qr|Ty30kqJ9NQ*0oRf`w~{12fnt~LMw diff --git a/pkgs/games/cards/hicolor/card-10-1.png b/pkgs/games/cards/hicolor/card-10-1.png deleted file mode 100644 index 20abd29a9a0768df211cedd8a4b0e925b5e54bdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3743 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 diff --git a/pkgs/games/cards/hicolor/card-10-2@2x.png b/pkgs/games/cards/hicolor/card-10-2@2x.png deleted file mode 100644 index a81ceb10748bdf0cacc4631562cabc4bcb34c7f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14568 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 F{|~>FU2*^b diff --git a/pkgs/games/cards/hicolor/card-11-0.png b/pkgs/games/cards/hicolor/card-11-0.png deleted file mode 100644 index d1b1865bc35e97c3b751bad6c72f41bcad793a5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5021 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 n`Y)VDeg7|00000NkvXXu0mjfm{!## diff --git a/pkgs/games/cards/hicolor/card-11-0@2x.png b/pkgs/games/cards/hicolor/card-11-0@2x.png deleted file mode 100644 index 8288c1834eb03a368e0758362291b0f113e5d819..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16651 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�=(Trk`^S;^&FIyAnSQ)Bzu&}OfyAY9`0>!|4=F^! z)_4I1{)b@MT$os`_ðoMNqXYWs;Z$CJMqrH^jfE|*QilAgywU1V(Q?<0z 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 diff --git a/pkgs/games/cards/hicolor/card-11-1.png b/pkgs/games/cards/hicolor/card-11-1.png deleted file mode 100644 index 28251860c9a45234750d1a3fe125a62f71c4c604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4418 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 IM6N<$f;V)2=Kufz diff --git a/pkgs/games/cards/hicolor/card-11-1@2x.png b/pkgs/games/cards/hicolor/card-11-1@2x.png deleted file mode 100644 index cebdb2e94d49352be3360ea1581cfc63b597e1c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16051 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]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 diff --git a/pkgs/games/cards/hicolor/card-11-2.png b/pkgs/games/cards/hicolor/card-11-2.png deleted file mode 100644 index ac75fd15df5834d10e0696dc34d6deb6e91a000e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4653 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 Ya~V4Sb9@5|sURRyV)CNZA_jr~3;AX01^@s6 diff --git a/pkgs/games/cards/hicolor/card-11-3.png b/pkgs/games/cards/hicolor/card-11-3.png deleted file mode 100644 index 12aa1f055b77189aebbb65c264aba10d83bc5679..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5020 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 QLI3~&07*qoM6N<$f=q3k#{d8T diff --git a/pkgs/games/cards/hicolor/card-12-0@2x.png b/pkgs/games/cards/hicolor/card-12-0@2x.png deleted file mode 100644 index a0eca7166e71448a64b4848cbd27b3f9e8ffa3dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14781 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 diff --git a/pkgs/games/cards/hicolor/card-12-1.png b/pkgs/games/cards/hicolor/card-12-1.png deleted file mode 100644 index a553db5c7371db6e48df5f9f029ade44e2de5c27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3885 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 diff --git a/pkgs/games/cards/hicolor/card-12-1@2x.png b/pkgs/games/cards/hicolor/card-12-1@2x.png deleted file mode 100644 index 8ddf43abd799bcde6bdb4ae8870b83900f16a1da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14160 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 Mkx&q?5H<4uANn}YwEzGB diff --git a/pkgs/games/cards/hicolor/card-12-2.png b/pkgs/games/cards/hicolor/card-12-2.png deleted file mode 100644 index d0cad81f7e98f6cb3e4a166ba3f4d8d3746a2310..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3875 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 diff --git a/pkgs/games/cards/hicolor/card-12-2@2x.png b/pkgs/games/cards/hicolor/card-12-2@2x.png deleted file mode 100644 index dd2f4bdd3130ff09d58b33de3a96eae8c72609bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13371 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

`Z( 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 IM6N<$f^;Qv@&Et; diff --git a/pkgs/games/cards/hicolor/card-12-3@2x.png b/pkgs/games/cards/hicolor/card-12-3@2x.png deleted file mode 100644 index 2c3a9a8678aa2c7bf1a2655a5941674fb815a279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14335 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 diff --git a/pkgs/games/cards/hicolor/card-2-0.png b/pkgs/games/cards/hicolor/card-2-0.png deleted file mode 100644 index 86b83ac4ad9af3f7d802fec10b3a867e1b230d22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2469 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 ZD(-zw74N!F4E*&4X{zd~U>@3p{uh&V;b{N> diff --git a/pkgs/games/cards/hicolor/card-2-1.png b/pkgs/games/cards/hicolor/card-2-1.png deleted file mode 100644 index 80666a454af2cca788013cf45621dcc2522eed20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1778 zcmV zdvFa`9LGO5qVcAhsdt2;Y3nidR_fI%+Nh`*OuT}4L@`K_Ad-o9YNSPjmXt_3quMgU zj2e`hL2GhLYl?cuvqm)@B@)T)A1AT7cXLyAUr%$c1EV)%$Ymb?K=QFeqaexl8}%<+O`b?5aL*r zjwOx;ia1XTV9Y!S35D8kLH%AZa4H->B{4m@_&+;(S^%dnLHGwyqZ(}A2ZxReaqQcm zZlJ_8<)DZYP!W!1fXyb#!}^O}^yo1hI|*U$NJ>#2%4KDMGO4&D|^&oNV=LfULLQJG{kJ5wm zOi2Af9Jg-?eY@%#uZ%eNoZ2-Zc@E5<1fAPJQY!R}fGaoj%iy=u5S^ryCnV?_&jXyr zsa6HX41!N0V0Q}ie;a=P3nnkrC;FWn7!dOsT0-i_@6ia0^_VBbb#qBdy&8xmp2 zO!cK)OqI%zwoKe4Bq48A-lq%9o#6ib>bVfo#JGG)LGB}q=+W?gcXj=wAuza)@%gym zUYvu+#e!4U=zg$n0W=Fz>N>W9#HsqmEhD9ilYJA$&WDJ3aQm*l8Puo->C44JH?S6L zS`05#)Hh}s@mJM6&V>fd91W4yiC;HWZDQA*jp)&`v`{gH83UfpuSt#Y>*NMXD^8<{E`_G z(lQ5XaX`#DGLpo6BfuPU4jGg#4!|po3{1nESg(UMu*A{85=R3|91SdSG_b_cz!FCT zOB@Z%BaTm4P-J0x3yLg!!h#|LpRu4Ajn7(8^v0(wC`RK078E(+cw#|0b5Zwn+#yGt zVhhUikZeJbBTlgeMa!jXSx_tsihF$4f?`N?U$meYiBDNjWMEPYiaEpqVL>q&@-HhB zV~L}IC5{G`I2u^uXkdw>fhCRxmN*(%;%H!rqk$!k2IX6vtGD37Rkx?jv+y*UC;7_z zv3(nyx2Gtg{PvvKWbwB3^aYr*sMOCX%cnS7_bBh?0k-dl)fuX0xcD+$iYrk<`L)6amYMqOsshmp<7#} z+`0vP7NdH}XpUR?joUCb4sxGBi(q&)Sl@X56=35+=rLN@?b4S+r2us^eX}S7dHFDU zF8q@t$|L5$fmEnoRo}REUJ|c?a`VJH`BIR7S;eh#-fr*Q6_}JL21vc>+(zuz;Rd^o*$KBXW>oQIEKRE*ez&>ap3M8=7o z=e*5;l1k;Jxu;AzA`C1M;<7Wpj+?Jb+W@Ah?0|VsG686BC4qVR$Gs z4}weAVgE76xetvLvy>chLYl&gSuk~pcDt#=A+)D=V=pZ-f{z~z%cGTghePF{mpA5& z{80S4qkDUZpX~j(*NQHkra{j2Hk)d{4!L)$Pou@`)RhKxAa#*Gn~QX4CH^1Ia=+_S z5pu<;6aZ;Uoz0U06(N0@@apKn+Bj(0TsT?>d@T0q*tA33BwUa`2@Gxk>*JO3$~o}n zYx>6fc{9u!14m9k;#%z2U)su=_Cl^fgp^;aOAj^c|i$p8QV07*qoM6N<$f?QNszyJUM diff --git a/pkgs/games/cards/hicolor/card-2-1@2x.png b/pkgs/games/cards/hicolor/card-2-1@2x.png deleted file mode 100644 index c49047cee95e773997e0863530e04caf2b1e0a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4562 zcmbVQ_g53l(hj|ZUKK)BS}01B&|)Y8QlkVAL_j)7B=imv2t_5JC@3{ifdB#up(wp5 zDD?%RFQJBBgosi!2z>E7_x=O-huJ-6XLfeB%(Ks#Ot`H%H>VgU007{=YGHbv-ec*~ z#m-7^$Lnqi0Ra5ZubLVmqKmeRW8xi1jr~b?N(+;flFtwE338OC^PjZfz}>;-aR0%=@_-;PgO zj4}>qHj2W6cZQwkPj@80_^qr)jn4T|8xLj6grKK?Ncx;W;Fr9-JR;%sYax$kQk2jS zFK_og`B83DXgJpz_2oLbC1gaRA1gsdI6Gfy+y)6A`@4YjBHnK})%NtD8=pRPn5_4) znu(l7T3A>Rkn_(JmlwJ=AOQF3 z6`=&xI?D{m%-jzosms$cA6PL1)?(rP%Ra-Q3N<~vXvof>}GvpQuRp}=ITQEzC`s4E+vlxrRM@s zLMIp#0J#xB)?yOK>a`5mf@bXg#Lq&QJx^RlM|ADib}u)bm+v|*EpvkAy8%{&lP?9a zsJij$CDJT!Jr(!-EIXFpioZ}QFwrZ5oaQAboC%FSB}d8yav%wofdG<{#E(oiT<}dU zUFbwLM?w>~C#5y=w`ff0PZ^B{nG$#Q-HpyW(}jc&e?aN%q4DyQIqtFI2?6g8X|^ix zNd8*9APlnxxMgf`i3#$|e%kGdT%JPz56bC*S{s6a9M)I0G4R65zt^3h^rZd)%Ey}d z!(z7d(2b;O+Euot-$QuU!SZvN(TOta4ahlR-I%dN{SW#F1C$%{%jY$)3R(DO<+uJ4 zeJ>(9#Dk`Q+Z#^j*5F(o&Jg0M{*wDrO>s>DmVIyP617I~Wn?up`B}3(qvQwHk3IkR zpxS5kv|e7AEi;;pFJ@_$?Mq%NiLuE^s(W_gH>nX3G^3v%N)>kz-6DBw8)9^F0j z^3wb&Z15R#(A1Vg1?&F7JC8G}aEfk=hCHK>XbSbbFmZmAd0Sru+V9C+S{+W@;`9G1 zvw-;k3)Dcgij+7kTk5R0PINWvrgb7n$FT!bb{JAXHT;U4sqdwnLaEp_U_Q>r8h!G~ zfZ(gtbR?q8+}w5(u^1yadz+6KA-uVY&9PE2`OrT_x%n^db-vN`L7@(+9^m<}&_Kim zBe}lmwHsWw4f+FSF21^88nMOoE>LW5)GeFlj(^t3wb(wYI*s3EgW0uvrkKCY+*L}) zC*Uvt%ND-(%Fp2PBWh-+QY*V&5{HEiI&c~UZf8N+SP@3HWw)D^`r=AWhFpA0+oNWW+0pslJ)0#o64x_d3ZI`s+M6E?G3Si7HJMI0F@AP&R z7K!gP><(d|VflF$UB~jRHK1(4dGcA(PPR;s#mRn}W)~HTesD_H4fs0A!g9@Wsw?8s z)T&)Y78`3`Pv18(7R6p4GaE)|+A_vCU_(wjaz+ok!eKM*z+!9IJ- zyw_}lYd6Pd6`i%G2g)GEVvc3c_Zv{P?%R#r8=1q1+$Ia z`@ELeY-0QCmTIg}`xouI`|g9o)Bl2V2b0XeftO3PzF2h`-?lfl2w~>Fk8vHQ*S`}TJl$z z02yH)YN`A^DC{}SBO@#=E8t~l*R7mU1Ml~j1&@Cffd;?z<4(5xWW*7(dM53wr!*b; zgWY32HFjFzDN}?Odz47?-OYEfalE-%QR*p67cFzl$u=cWvM<`bopCUX$&W935bq$i ze7_Rvn?B2_=El=LzMdtxC8o)`oz$Z58BxDe z5~R&}n@CFXG!CUVrdUbWrIE{|2Ib`<^(Orfrk7>d<~A>6CrAF_T1PM}kAEX{dfemS z#hV8?^_SCugD|;#v8At%an<YiF}|4rYMY%P;L_H3J zJn-b`XIChS>E8%03~CnNhM4^I7Fi?%8qvS2Kf=cYp|;FI%>E9#6`cd!`-z>-Xh>zE zD@Cz_JY95WU5|Pg=td48<-gjS-Ba^`zkxJhnCQ{vzCi)#wu~aS+C@Dho&cKQxLDj+5ZHQFPZpn?90WlQ}JH~B9|`QQ5`k9D{j+%>T30pIfbEt(jW5 z1x-+2r*_YO9qI|;+v|4Xn-CRu0<$0|RmN&fjHWy(5N2|m5Si-E{N%^%`gIm!x;#?_ zkcsR?fdIgYX_vxf=>UdWYI}hr*P}Keh-)1D%l6CZ(70@4@!igQd&l9Pl*y3wPg6LF z`LsFe%Q~6*`5(@sJ(ax~`FSR7r*=P&MgK_oPo;m1D6i3@yJW5M)SQP13z-Z#2TWlv zt*98xS>n&**$Lw7?78dbo zevVB$6gL_xGLnrW(E+ul(pgcM_(;Ge? zLHFw}Gx3dKnS5XRZ~6OfZUNUja7!Oj1q4uRWq0~$3cq%>tDLyTPG9`Ew#rPo%Fk&) z*XyBj^#l*$4%%vl&JX1Jyfp8n=o&@g_X}mp+a=5@deURx@Gh@+yRFcQ-oj;GNub(L z#BVw>(Br6q*L&eSaZ#~=~uO|oQ_iFj#cy@Ub?kh7$5&*U8+HQ{b{`|k4`CTi0M zM+m=o6WYz??wORJJuXL%-JA$54r>+^0Ld^$@1XKNZM>AvXh2E^Bp>EctsQ+qhaJ zOJD1~A_KUsBwwFzofn1)(Z5n##JWAFj!(CIrIYTO$NiK~N^&j8_+cR%IkBtSb#{U& zbd#MbG5RYKLbP-XCChF(0IPhE`E$WC-ngleL6l0&LDr)A@i{iwwY@k@jLOS?!~Htd>!0 zHsJ1TwQJIC?=JREsqedvA9^aye7VtLAP5oGaZzBiM3Vpe0BfXJ(Za(hqghmq&xA@* z^_crv;4co}$Gt};JX9&8Y!y%9SS8@`czuA#2nmsH_u>|?4jf^}J0NQI1#K^~{$%Ht z;|lA6WJ6E^=I1#?pvH`Hd5q(=3ln95k)1*;vj6&LF+IR{j*0MnEK zXSDp`E%APV;$_lqN5H;^awjRn0)qF5-Y~uychxF>iRfhuIeR$sm4IGr zkga5(XB~X|riu0)MlB@c`Hx4%RDcS|95&4h6W;^DV=0z+d1=3g=%MvHo3EIF6}9yI z$%-i}_Xp7Vx{>dJCNggg5&?R<<36{xXrHT^$?8FwOgI4TgC93XHU;Hj?7!-6OUzna z0)f0KlM!5w?E!}}3o|iRzRvV%blOkt30uQwJ)`_ANYsnu^gQ77Z{}rN5fyKuG*{_i zX;XH%*jY}Rryu>?S|n&V=Eq`P#}wBArEG?parEYkf-)FS3$V(_us1ew5rQ$>mnn?~g!Tc( z%5ULj3`WydE2#{!a2E}PWxd}tzMmT|F-_C%?+FnLQ6spA^Adkc@JUvkv44YlcCTf2 zZd5^pXG!#ylcM5x=;YeC7WezwC3-=j#dTFpz`MxE;ptj@`=Bt}qbE-s834Mv`jp6< z*<4uq2r{sn5_y+s|WLnN}qa53_t!BJ-ezA5)uNIEBh2|p@gw1 zbfYG1BIY(9KkhMADh^u#3mT|7feN$&;=$V5D<`c~$>#l2hOCHP(RkSSO?s^caP^9< KX|1sb`u_kJWwGx7 diff --git a/pkgs/games/cards/hicolor/card-2-2.png b/pkgs/games/cards/hicolor/card-2-2.png deleted file mode 100644 index 18b609a43702ed7f523c6245643d689e581a3e8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1903 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 T`@j_KLk2LsX{KMN>ze#OUS^qp diff --git a/pkgs/games/cards/hicolor/card-2-3.png b/pkgs/games/cards/hicolor/card-2-3.png deleted file mode 100644 index 84589886eeef9ef13b4bad2dd5df6685e857c97a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2298 zcmV zdr(x@9e}^Z2cYXCNR@{of}<-bCQ=zOL4s&hB!eh2_!t{y0EI%!7)=lnO?Gya8VfI=BqpXpCdt-DcL`Zr`U8340p1)@-VL_SL&z`ozwXtVSQ&Tg6feWdsx@^=qhNAUAZfQ|* z?b>Y;6aNH2c=!~?j2UUvBvMi~pj1{85s^Yu(^I3yG6W4dH*VaeU%&Tw_uWu-@BW@o zKaC(eJ4ItgiA_O4F`G8+1)!?xGAmbpX|z~|(j_R!Yn7*`SL=%|T^KaT0dH?lo;`cc zH{axwpI<~kz!>`W?In8fy1ECgyj78=HT2!djnw#@0S8f3?aNqz@ zgI>5$LuzW4-Z4M?P{!uX`$dgwD8f3Yva*JG^OiAjq7Q=yJ5f_}gPfd003;?xi55_; zR6;f*cnYM~)oXYV?4|kN;@U_+!V)C6it5fKrg01O}QN>0w_C=_luIrS$YVIHxuvqjJ0b?N$Y zLsL^T5fLkBY-}PjGKG?oo!Hs+5jALV@OXlQ#|y8|o~;I;y80@KiIJ3*?GiQKo1!&y zl9Sg{U3~?ByLaysAOA-~TU$3~}bzvD4^k9*r2a6m%n2ns~ z=Jvm;F*Rl(r^A$>NI{1vL6HJ;Evt;^Hzi+BR<7%i+T(CCW$>$>enC5)@<8 zp-NCpNk=I`F}WN=OHib|y-Y6WO-fLt!sK$^qy$AOBwy#Whgp`O7>f>Hf?`ZMbP0+n z=&&UyQedtnD3Z*amq|~LCp|r0>NK=4if9xQV7V3DH- ziyS>zdIytVcPVMwN3)h`aPE^!PY;A3H_Vw>?$E;a_!s|{a$Ju!R85zIV*|&au z61{r$6keN!oTjE`CQXWB)TmHWQZ^VpUPQ!nrcU+KXp4%P$&@L+8f|7F$HvAQe}8YT zUcF6N*d(LJlgVUk*svT&$6o=hzxB}d8MY*HT3S?OWPFXMX9&K&^Eh$hM-&P-02B&0 zGBdaH_S@4KJ9aLI4jnT}4t92Z*t|IvTU#5pZA-((##(EPByzH{cC&8X4sPD8<^1_e z%$@rgmo8lgVC&ZXtX{p5+qdhes=Ca_A186)LXA=K@b&egsOYbZ7~!t7UlKVlt|b7T zJo$w+Yc>N2XN9$)QmKqKdjN(Gb$MlqM zK)@IlEeaPsuD7=*07XR=?H*vFafqU+k;{9aPz+(;zQY>r_V#@_aA3X0K1VEkeMeDT ze1_s;B_$BwW9qK~&?yU#M>O4eI3MNl}pXlf?jkd48T4A&k-dtUsIdS4I zEM2;QlPAxTmX=LI!sk4E_&=?&lFI=|ON$d$sS6i|F?sU)MvJ9ZtBHw8BQtY5vu965 zsoY0>eF-iuj#^{QLXM4%HQTnO;pOE)YHFNOW0jVkWzU`h0M@QujGNm)tp{-%W+4Y! zcgFeo8+C2~#pK?-hr;!X2ga(^YOM#fS(LrCVTzNqeSF@**4Bo`#wNnUKOrO}fG1CW zAuq3p!ouwuCqJ3Z%rO-X4))~cZotoPG#4*kW7VoGa&itaY}jC}+smwGj;ZkW{x!L| z?SJCf>1K{0SV8Omt5|5|MHgK`iBbs=B3VM_hEkaVfUNZ|oPJ~Z3#XTeiK&qNAJ{(| U5+U+iC;$Ke07*qoM6N<$g6D)|o&W#< diff --git a/pkgs/games/cards/hicolor/card-2-3@2x.png b/pkgs/games/cards/hicolor/card-2-3@2x.png deleted file mode 100644 index b496008a42621aae4cd78cc2b1635e8e49657378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5227 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 Fe*xmUA}as@ diff --git a/pkgs/games/cards/hicolor/card-3-0@2x.png b/pkgs/games/cards/hicolor/card-3-0@2x.png deleted file mode 100644 index caff8018c60f07913ab6b6870c9c7ac4517151f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5011 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 Z`>EGH&t4o`0Gn+f4Ha$W3MH$M{{eM>vp)a; diff --git a/pkgs/games/cards/hicolor/card-3-1.png b/pkgs/games/cards/hicolor/card-3-1.png deleted file mode 100644 index dfc293c4292522fd56618f77ee40a4b17a9a17b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1574 zcmb`H`#%#37{E*~B{c$KG~eh}CZjQ25ngUunHO+e4P4E@>Mjtq&! z@%ivC)&i;x0F{4#&|Qh9b32(kKssU=Z26fK)ODg;o{&5iQP zn(M+Eg`yoY$XvU#@B7z`1cSE2PZB#fww_#e70gV|q&gA?#{nm|V2eI+F=s(tX!fXk zY)sI`@zo_zMQ!{OJ};|bC$JitiE-tXg1KWF!{KJ5O2ioobK=|{=e?JNv>R8LinMoc z0@Qu{*n?MIU~3w~8|pLlTd_HhYOcF6sm%1w5U-%Ql!8(F;%6Z1wTr@pA118lei(LW zC?ygdb@`E9uu#w0Yi;i0J=+mIvP+Ckn!;&mmN{_^VtWXa-k!1|F^F2>O6R=&-F`hi zwSV(=(%sJ*(Lt-J*bd-g|8F_Lku0byPE7lR%xIWoY>nnb@`r$g2Mt!eDeo@Vx2v7be| z9N?DhbV<73CxOfe_d>r%7q@||agl4`(Sh)8i*Q|)g-;Wm;(k`i1Mfb5J-A8uQXQ2y z5y%X6X;~cLQ=_wc@SN4UL(HY}Ht4xi zR}Fb2$C{=TWe2G)uCRIca@x*DqmJ$VFp>5f4zKh@fQM?b_t0SM;iY*1R}w2@(KRSo zPYd&8=pNJWxAF6;U9u;1{G{2olWKeaOt8#TQnQ_y(zV%+du9L%A*&pR8BA+9_~j+J zdET5hKLy~E056@Qf^{b->sRYQR>+JZV|dT4GOd8QNWtG(*&KM(NXkXw_U{oo$AQn|O!wr*86OnS3unT=1M232%svnj zF;m^JxWHpa#OV0@iS_~t_x9zlw8U{s9_omT5*H;DnV1=*}af-^=Gprk4^|R6}AB#?b+p}1xOGhBtJ{@BbhLO_@|8K ztEERwEEzSHe^X`1>mfCPx9LS2ACVXMKBU^sVF?i@I4JnY21bZ4OuK!t>5^47K#wBN z&HI!aMULNwvfAH^W~Y*0?rlmA7OoE&axMLK5JQW=FmV`u{lvFbdQ3Xd37nNl@Ea$s zw{1E*FkV>^T`1D%E?FESFLEP3GrnAZEnZ8lipzgv@fgwBSV<$R!6;ZnwjHkbjv_JZ zXeq=8d-;6o8OX<7qnh>SeYLlH`GpkDeHo0s20MTjO%94`hAVPQDjjw^f{Cj+0siJ>ZatUPZriXJ`es2j;alxc%Yru5crltwKhP^n``y- zE2^1i=jfL&(@T_*M8tEZC(CS znWD0TCGpjZ)`by#I9i9nzc~=*R*Die1G{C@f2^!T#wnz+stF0PQwSu5vt_OCar>A@ zRodyeIjPIk`ZD`ccJ+Hgv$QDamK0THJMt7RMY6t9S;k%9h1SSvtkEiW39gg#&0nC( zzy`3h`jny87nI0)N5;GXkV#91Z1!m^>A$L#XeL-qwO48D;^h4gK)It4wXXP#e*qSC B04D$d diff --git a/pkgs/games/cards/hicolor/card-3-1@2x.png b/pkgs/games/cards/hicolor/card-3-1@2x.png deleted file mode 100644 index 8fdfd4b7f286ade5d19b6d60330c3254bb41fdb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4072 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 B%9Q{B diff --git a/pkgs/games/cards/hicolor/card-3-2.png b/pkgs/games/cards/hicolor/card-3-2.png deleted file mode 100644 index 8bc0fa30ab954a40dda30302dbc91874f72f5595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1701 zcmb`I`9Ir-1IA;BNLWLOxSNK$t+jRYp^D&@)e%>zsxzwXh_DzX5-Or7aZah5Z|kV5 zNSzJhSSpUKOw%KpvSx7~T^%EsKjQnt^E|Kj^TYG&li`NL%0tzlAP`9Y%8&LQCy6~# z5CnYUuBwrFAP|^v#oqR6T-jQA1VPCGd9RXX^hDawL`lK1{;c9x`*u*U`-KOak}i)8 zWwjMxh-Wtc{$}%v#`K^$T#i67t856QMorNpYK6~A98hw~pZvA)5 zUEcdrE!N5ocd~#$?y&6I__VaTKJj5Kp=35p*D|3-IrTImKOcJ0#K`Cs^!zPnd~}!o z8S{irNM`7%Ahwia*0-z#>`bcw0zzS{bMn#bj?OYND$izGaSZ7^OHBJ4KZCx=#kn;yo^5@MEQzXO2pwBXJRSBotaRX_NPk zjuEU(Gu-^w`ul4XTa;}HyoAVxyfy*^@NTplnXlxBQ?Jzv?!AN@vI2VMftoH>J8-f} z8p2e6qT^D)4+hBZLA}4w0@|Y1YmRpIN4AsGI~jLs*=>ZqSPR~F#g^=Y{SHBx>Iq-& zQUm1f%ZGIbh~db~-NKO?6rihjN!ug#JNb4`RBeaI!m5|OEZv{e&B#g}xFys?2Rni3 zog@JQ0liVgmRu7na$ou!^@S?%WXx{$v<6<(-rxCh1Bnjl;Tjkwm-)98{S%pVk3Z)| z>6>S{q^ofH%D1-ghSN$&`1l3tGvE2ypYVy&H7gGVsbiTA@dt_K#YTeC+Kl55Id!NP z7b%PHH(5O)z$d@HCAeg6XMppU)v`-yat^gdl(D1mEI1G8(j{BO+b%qpEzF&1kuP@6 zMv)JD9Pb!ysBaRituMC5hX7N++PlGY6)PSkLZA7%2gB!dSL7B=(Q)qU&n@oKnKx5P zl+3%i@%n0{nUVQW4uLkgv_HKb&F26q2Xvc*YNmi-xnaibEIhKFWN8);5B2i;ZE%@xJT8xk>f&WSQ)tsYqX(u^4q*h}c-UMcirLMXJIATfLuzy6rXY zZYLeXS`ZoH8{)0eL744m?i)JP!W&*P31NAJs#-uJVD9dlO+uq%`J5t+vN1(C7N6k0t#v+OOq?y5~hWV&i$CVIVST_TWi1vF=r z%-5h;>5cHCUOTI^=c3gHr50A3;O2c02^a!qbDG~AUhQMt0J^iFSGMq{tNAS2puz1x YJ2KqB*>#fJadJPPD-JmO7EBQBKO(m{mH+?% diff --git a/pkgs/games/cards/hicolor/card-3-2@2x.png b/pkgs/games/cards/hicolor/card-3-2@2x.png deleted file mode 100644 index 5aceb86033fbf6822f8bd99b5f1f4141b99551b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4063 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 M$;-9lVnpHp0F;;Ji2wiq diff --git a/pkgs/games/cards/hicolor/card-3-3@2x.png b/pkgs/games/cards/hicolor/card-3-3@2x.png deleted file mode 100644 index 497f6258abe13a271a4f5d28a8acdc7806890960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4604 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 diff --git a/pkgs/games/cards/hicolor/card-4-0.png b/pkgs/games/cards/hicolor/card-4-0.png deleted file mode 100644 index bb4c96664186d29121d41bc009cf5ef2c19e4833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2359 zcmZuzc{CJk7awFWh3d8MiqR-#Y3xJ1BTE`WqZ!Ot3W@B7L5LC~vMUr>W;6*U%rr=r z!C0~r5@xj6v&<{xo$ve3_nq^e^ZoJMdw%EKbMNyz&%M9p0=2C1I77w!Rn=zWa!kzY#BP=#eC zKq7QVFqDd(dq2oWYfzIb(1Fu-&ep@AtPUO*L7$Y<7=Dq|0m&*-cviRqVGRG0ROGgu z20_y$(O)gtOM}mvsq$4bY)34n8DF)_#ybGxlE^BsNs<+`$~;HRF=#y;7axp31+4g-tZ>s?XC82He~EgljVnF|CK| z9mZc|i_6Ka*wN=guATQt|hXZw$#Uc?GJ3K*$w-WAcxqmD= zI{c$vx?UcJx5obhrpg-=h+bOHOZYZs6ZfxFI0y-%Rn`6oo|WG24g;4g&N%n) zY`hz%ML-0lsR7JROFKIxt)}=cccEo9w3O)oWwbI<=NbQK?VJj{eV)x*^*qx<$y{pulZ?&s@UvZjbWt~y^7 z@B%@sx2wmwXKyElK88E>`}dU;IoL)ezIX}^C24AwOZXsJ(mE@iT^XyCzc7Nn&mC$f*(1@WC}no(`Z$_mfOR6)s-vd|rLF>L;JK|_OEfg$B#Bs=+(8mx1) zGKM@N5!;%W=A>4T%O;GBSyWz)cOm~2KX)gSDOK^-r1bBwsARt&Q%lXyg4&ctpIp3j|aM+RncNq%|Hr8Y2N`C(^o$Nn*NaoNnu z>h^I7iOcSD;bLl5wWoC{wP%DnU5(b3XJXo3+-I+-wM{n)IMwZCGIFaX#mjooo(m~b zP=I)DF3!n!$(AgYk|xjCTHK`sxakxc?2gM9r=aiZsUQkez~H2}7Zsk2So7m!FHz@?n1a}L8kHpe7)jC%9O3h6}Ceh7r3h^~3@ zLr=&5^RH>1An>8!6DM~8AB*A+qfmtP?d|LI)R0-l+%%h8)Q|}C90itXL*?t&O(tZR z84qj!Ly7aJN)ZpC&}#*XxW&<=tK#&|-v2_Vd3UX-)1!8o3VTamv!Gz6g>sE(SFfcdN|DAQy^KO| zCilaK6n}@+DT>WAqxtbVKlzc75rB;T=3z<63A;prPS;eK3Z=Re6uqF*jPYdVLT9>_ z`{|7SN38#(x;a^=Y=C=p9&#E&5r{?LQc0vZCFN+i-JrQ$qUU}4m)&KY3jrq_S+3T~ zNon$@aT1=oX8nQ4|3l{=+=>zTnfXrFGYWp|hxQdD3Lmt##G6xat6VTVjq%DQ@!J%I zr>u;{WXYDi{z zUhX;U{HM2?@5kdg+EYr~JDUmaEql>D?ja->wNqH6e*=-P{TV!2c4nZ)BXV{eA{S

`t3z{I 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 diff --git a/pkgs/games/cards/hicolor/card-6-1@2x.png b/pkgs/games/cards/hicolor/card-6-1@2x.png deleted file mode 100644 index fdb2a29960790478b89a2612efb461516c62e121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4416 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 diff --git a/pkgs/games/cards/hicolor/card-6-2.png b/pkgs/games/cards/hicolor/card-6-2.png deleted file mode 100644 index ef445ed409a8f83af6c932c1caf4ed0be844a18a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1870 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 diff --git a/pkgs/games/cards/hicolor/card-6-3.png b/pkgs/games/cards/hicolor/card-6-3.png deleted file mode 100644 index da0555d3281f212529553ce2cc376a1e35eba9b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2199 zcmV;I2x#|-P) zdr(tX9>+gH5L9Xv5fH4S(ve38T|h@F)D^l_EVF1;R<^X;PKJkJ#BsV?Y7wEl>RKIk zhuVNrAJa0}YVEXjcYW;EN2}ZDmaLT`OjR7g7a%TM*GfQ={Ubw4NC7zmj`S z&iBW6F87|_$?u*>G#U++l^Ggb3_yuYRwt3j<>?xL=bulvcSH_BQ_~%k%1;0#Zs0Oz zAfchYL`5wJ(3<1II4*Nc;NJhDrR5g0XFoS&#}g;^5E&UJN>Gl1&K!65Q9SlofI)}$ z_D)o)UL+EUsDU{GI&%U8{iv`1M6dDItq!82f5Y6lvxtb8W%i&dRWF{N9>PUwCoPlL zoWjEG^z`&lQIW@}QRZEqy1P{@U7AH>;}t;yw5QgPf3ZSwf&KfBl97=@czCec0~Qo) zN2$DsR9ZlHcaI=J+Dpr*IemRC`4Wd@7k;#g=bEnIoEjzoIwzf{&BejE;fjL!GAJX1_m&C+4CQqJd)*zLYA9DQo zS)*-t?sSozU4mMzwk=XSXz7`wQuR_<`2he)Nxw8}fQE+46cx!$_WAsC1=ZCDtqjpV zS}@3*P!~$Ew1zb2^5vFcKb(}b(BKT)ym>tUufLvwxA$1Rwq?r_h8#)xL~ z-vmHY(^WQXNJpWl9X5!8Ins#}d+_oaJz`pxU~uN-=U33w)C_2sEOK(*M58hP%ZY;r z|IUmVL7Y5!&a7n6mK@1aElZKe<>{LK1@fS5Uwwdl;*x9>0=9se=f zNjs?$W=h_Vm^qTQ=*+ox?WW0&&CS;Z6BRp0vKE~=$;t6}cxZ24>FF!+^YbAuFH_fX z#fo1EB502s$y#)`@|c*})YTo}=FN5@Bg3h!{Tna8yqu?>j=|e|EFmG&1rf9+N7}eC zOAu{K(YuvTn>K}*m^m~zw~&^WM00a1(b3_883Xpok*vjF5(p3$7R=VIhPQNkV9$%P z=wAohBS*3p(ao_(j$|!H|E)$Ev2!GAafm95k zB`B8SR3#{u;wnKAke^KniaCh6w+P@MUJPn270@ttK*6ZhV=6v?q3FggPO+tc{nwr1h?LC&f zyg!qem`PMr3g^!KxQOp`=6w9|KXk84ORH#W>(o8h(bLn*r=K3zwL6_T)29ax(;lRI z?R4g3WUOM$7%!u3ettfrrY_aJcRF)|g8V5hU1zkdq9Tt+9vP>5KO&V~ix+1Q8M%^z zg6%>NFNl^@`W(+byHM{~M#d@<6XW!b32u&;mnVxB&Ex9T8>FNx7J7I=v?LM<+qZ9I z%9P1~_E`^OrM@n^y~r0|d`)QROaMYdXR>wc9-eq&8Bac$#-T$e z9Y)K?=TWMwix@M;i`~16@$&LC=wq`va``^CZQDz0>utXM_7Z7nuW{+pH2`+)I!IaB z4sP6Nqp|S{FTIpUL&If<(Ta$1JBP`7Lwp%uvGjLu2aPQuIHgB#5V8ez#>9wiV zYMaiUkSE0@3EL=F(qW+5(&2tznwOWm@Z!8lg#E_p~VbE@~ zIi@C6gNccm&HVYZ9Y(9A0_G z0l?RH0`c+l4cY~n=VWH4kdRpOwU$^x^txe`;W zy7~aUy${*AF^h5I#u)7*X!@{ZNi3O}DSF4=d1n*;{*#21v03Zx-TzWmwVye2LU`eY zUk}+&@Z74nc&%>6nU$5ok|nW1OW3US)?2%{cke!1w*21YZoMOtc<$a^OjJ}jMMZ0c z9^PiHhK9>jSAWFn)rrK!n7-AI$OEupVZj_eyhD@?qbr=CC-J5uNdYWbCh&>%F z)=t`%Xw}z$M_t`TJUu;l<{86MzoSQY5*X;Gd+!jBPK!nV-eW3NFRiV&4chx>%l$Z& zIgycJbag4r?(cMK$d=#++R{=NS_XRI4oZ|tfaP`z$k9+L3jmO4f5Iu+^%G8mkjd&K Z{|C@Ur8YB$ry~FW002ovPDHLkV1j22O>+PM diff --git a/pkgs/games/cards/hicolor/card-6-3@2x.png b/pkgs/games/cards/hicolor/card-6-3@2x.png deleted file mode 100644 index 3c97260028aece2fae2be0844b99c3cf78713bf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5011 zcmbtYcT`hLw+~7Yga}HnQbc+$p$nmiD4^1$2M`cMj6mq1bdXMH3MlQ;LkDT0C#bYY z@0SFm_l|(y!F$*H-rw)7bG=$5Irx~hR!#zv;Ufx*ZH=99PWJt{gel0N--F^#@NHP^A!(3S=t8q+%3 zp*5XC+LJ{4v@}^7lqS0C!7xRKXG_$@?qBuqRf^W03_Va+r+qx^#}Lmz{*LMAMf+|S z#O-HqhMe2D!@xypw`ui}oWsBoF1-4N!`AtXK+@Nc>1jjgw{Neu3Q?%lAA^IRNrQK& zP0Pq8Yxf%FiiUEBxVQN=)27&Yq z4L9>;7%2rn+xz=YBW;WexkKJpK+zb@3Nlz2UmBb-#~K5RQ2Xxrx#(-iUw`o~wcaa% zH&T&$Z!WU9f>b*?!DzOD!*u(uxAP(AmNmx+<1ISE*hQPAYMzcHhSl?Emn(%JXTdim&u_! zN*Ll@l_rSAwuVMTh!q6e#K$=j7M4C?qv*{3%=EKACV_{K^dv$;*WdrDeXj{=aC^^) zu;m%Jxp|yY%~KT#PZ8-;hwsp#&ep5_sp+K6t3ER>5GvpS7bi6nQ?Odo(1itvcJNIu zNjFgmiNkNFnW%eTk@zb{&NZbZj*hVLcBSCE3JX@}{c z;b7!OQ@;9&JZmE%FVFA&j~{F1&&rS5upD}cihRl$XxUnBB)+GMby+OzL0NKbu*`L2*S-wY~;dX}Y+uVdAVpqN1EosH$Cd8youU#zvzQ z#=N)mYzQW-no1i|HZnuUB(BJ4Jl_oLihp^lZX3QvL10t)|1Fp(MGFSoBhf_d&t!5uUTpoDQk^ z)q!>L>REPBH70_D<=Hina5d;v3!3*#U%$@b$1Bys%N5-IqAe==XhEF-am4M2$;3Q0 z@uHD+O)(p8^0A-8<&xajnc_S>t*K$-6KdvzspCIugiF6<#!k+Vg4CcKp4wvf_CTwp z&jdFD*ek-?t-FA#uq8(ixv>0k#fyyNV{tygUvb?7f485T)9X8}+H23|nEJx_@765; z9bD*P=+KXp_izqOLn2*w059Ni9Qle ze;v;iM?GH~{rwq*vfM?S02)zuF)n>{MZ2x4CdL&P`;ONN8vl==U@=;)XacQ-eeR+{ zDJ&mC{XFBN?DsPC96YSV*i~oJQb+d_`tPbbjxc&QHAr(s6BL7zy)6_nB|Whq+_E*56a^ zL`1U^*G~GWBobX!i_dJKeD{usPq?LhWbVu3uz>TRO5dY5`x`8Fh!~@i_Vo$dN?4~& z0sajwFgNG%>*;aFw&5b}!s14(udauOFt6?zt;$&ib5<7K*v-d#rP5{UiGlGL{&+_X z@I@*;r2}G8s#U7w;uDqmvlEry(=CV%u+M=HB@EWy(`ON!t94yp|22`a@@z!JHE8{- zxTx4}rb|OmCHS4Lj6vY|3~Oj;C_@4g8JU;2qD!{8F+-n_Fdq?Jqlh?Mf4;f*HL06X zrqo+0@j-sarLoC_*7yLU3F||xw*Kye`uNn9J?%AV4XC%^bqmYMd9t~;Lx|Oj=OW2p z`&+vI{MSL6q(dz(Kdy9hN!jJrL%GJSQR|yqH%GQiI!K%na z`23yh^FUQ6>V0_{)qZlSG5;$Po_pcok^xBlD?{t^Q>7dhi)#D3czjN#kA7X4W-cb2 z1MOl|fFyY-oUIyeNXRSLQiDQsmo)_iw_sx^4w_qgIm$-S6-mSLC5aPNt3@+ zmT{*%RKp}=tlGi2_hUh6xQglSXiw+}s@Tne!|%vK0DwCzF1G+C#Y{sd z&3cQs`3itGfFBX!R95Hbvo-APxh}h8DXGj~oRdbgGR3A#&Ly7d!HsS7WFirlzBj;xnB&x;RnO^t@q+tDRZa*zkCjGn>*OX zyK=jugB1Zf;+O>6nIu+kXUAu)`PT?NwN~{dd!vIjTVL#l3*Wsb`mFa!xr~)Ug`fY~ z_!l_G*3Nr|av;d#R+d7VJWJ-+rr4oj`%3`;>I3!JA_T|nRIsuBW1J$}A|~c%li1D; zY;377v)FCo@|MHq<*hf*XPM|w*dV9?_}zIARd>Qq^7kBlE)Zt z5cyixW%wSw{Z~m9L;lv-IVgWk9|?CHFK77-4F}Zf44472$w&BM=7Yn|8;RuI3r9=S zovyqUx5d;TgeZgf`CnMV;rK3g5Cy>F7TTgasYxWkP}*Jyn1+td@ESOPk~ElxMP?m} zK!`{&Q*m*f+H{0GzIJW9dQwCZ+zkLSm&C4;d9znci2|aOTIIs)3KLW0_R*2XM;RZ- zTIMbcukAqAr!RY8j(#l4qG7!0$jyBP?~JSCLiE^1aP#wD1vrcFs?GxxesjiYcz9T~ zU6m&gZR zc&^W$=RTWZai!F_fB$Hd{65c{m55mOFg@jG;orXbcHA{)i0?U+`W8OX&8=p6O&r$Jp5m-voxQi(v29Bkaz^g#mO2U?*0(me08;_ zgj+d)GRyDBj%+6o5s#O1$(yls&sp2f482WEsHK>@wL!N(firdA85fX@ z-XGp$H=b_w@jCt_D$pHW86T7(PYU+CQdyb1p&W>b<~utm*PBob?{Ubu#L8vd6$1kU zZXuy-G&C@Cn-w4ef7t`r)ROYYhrDOIIyAex{hWM-f*qZ|+NPSy)+_5nc-XEp=yqg7 z?~>H#vO~7Xg-oRkE0l7ghXw~D29&2l0D@-kYkIiB0@Q9$)6++zEEM1eEk4pJ4779> z9ll%sVP|K1)8YURr{T_0)zsvgtl2^85%&zwuM}w+jdDdZ?uZnZIG1G&q5T#7&JWa< z-8<@T7nghxgNYlVrkyHjR#%1?#C-O{As)rV7Z-uCqle4$aXP6eZUHCsgo?~yM)w}T zcd2hxUpqLUs_Oa;dg4J$N_tz#U)giaInuPO14!v`Exry-lUx|cTwow08ThQjw;7<{ zm>3-?-$$DpGhhNXFi633bJx;yc~Cnq&rX}UMEL&L4*vZBtUajp+3;On-S(b@fyo)L zIOgPZ?e{IkrJsFoqS>0_1+}yWWT$Sui<_RF%ZTcuL4LM9T(69XV(w3#^K&D{6WDZ& zANESdwxo9lp4UeF@>?~Cv>2<&h{HP}bGU^!t|C(`!yk~8S}I}Z*CNGrAN6sFI8RNg z^B8B-viY=-$-FY}^+(X!G!}=;9w*+EJMw*!7%O7or|~g?kE6;_+;$^{srw~}Dju3R@bH{Hsygh_<$q28Pa~+WwG3cYAwwI)Bp#j94dOS| zdBFM0kT(moXJ?ib$J#nmuswNvbS|#2(rM%+;M_QuLIZ(PQ)#o|U*tvlQDC&}D7U7f z?PaH{QUm>-`*dD9cmnn|7uUm%h^}m6HVutbq18tB9XfMP)jT-JdUKlb@%d@>z+t6) z#F%M3im*PRL+_#H$@12kuzbMY({o>as?HK&MIaDj%F(CeMVqQl_eUQC>0Qv3?{EnX z7BWy!a1*Dn3(8`t*g(MVWKnT;ouZ7qNFK4N7~y-g+PivoCU3pa^Sa$RQU(laKAhb1 z`h8wcJn&J;w-maky%46(HhPoF?|6O+F~b%q3kC_9Lzn>G>lN2}wrdR}+DLIOczhnA zey-ot{V6~#(;#r9#h73R#0kiG$3*YFel7dn7RaG(HcZ!sIJJX$*wWK~da}f5#?T4c zPqsYNqQMY>T(|1Rn@^s)FK;h_asX(MaXB5%CL0(HBWCm5obKM7QAr<>JMDNPjv@Lm zmlLqprv~gU@Yvb&;&-r3H3$>%(4;(&4oiJJp3T*I+X?0A>IK!LW<$xi@P-nqe7Tw(*!0suaiO>p5GC+E!04mL@>wmX`@J3KOCyMr(PQe{-4>T~LcyIR-_ zd8G#AT;{EonB=8irn>^Ur&rV9({BN~9iLK{DR_gCI!Mk9BR9e;30|CTF$;b%^yCYf zP0Q@nm6g3r_IuAU*%|4QDza-iH*ej|H7>_yyh>#Xw~>%MvYA73o1cgVuEf06`ge2i0n+(PM9>wOl2duxXEBsb@@hdm8d9A3VYUnFJlHEw0OX} z%<3;T+!g9BuGnI-X^kB+94zSmL}^t@(j*NwNpL5xW-fWXD~s@IEprU1W-g7x!05e_ zWDzFnU}a{Ot*f9KQ?}vR*?OfeoF2AhvOlv4ZDnCm zi7H;@)y8l#&w1dC>^R$dhs!mkKsmu%Qld zc~nzZ9>+h4ODn~w5mBsyM!?iT%3@v67PlxJdXy4u9i?t)D*`Sf_IMP;{Y=I2=%BQf zPT|z0t*u+znHB}bWgM&;tE~&DrBK8Tsv@8wCi6#5-WY=sNK81qeE!ONx$k~|=gZB@ zz2D>piB6~E!w;wFaPSBkqN7hpB&n%WbpYeWO|^GLje_&%OVMa{0UD&>Fy>K|N*4kG z!T|KEJF zw9tFCXU`D;Dl6{-;O*VbwpBF}j7HAl#WR>Q=L4dm63NdmZ=XE-raPP7fw$c*Jxpe7wii)lPpj0Z5$(;H0)8znMy;{o6o8@LZ3J!h+ z7nims=K}(I(Y^bNRx8++T7o&PT0JM6ymI9Rp#Mt%v~K+ZZQIIf?Le#5^4o8hkxHd} z`Q;iqb#f7&>(#3VpMAEH+qWwyF1{-C*HCP!1&^51rAtQ!4DbVB;=~24U%!=i-qF8H z#l?-MSu@j>MoGzaf`TIP^HZZxj9}NUY_@G%13-rk?MP2wK~mBN6pE4f_=FK2K8vcV zh7EgLY8jBErcTuvR^?@7w@6G(;fEg%Q(j&{_wHSoHZ6jwQ`JbNrshnUlE97~S@jZ3 zNSIE1{G@spYD+DBY_Z7rt-O8vwxp&e*13}d2aeZUI49@F1{G{eEdv&<%4=#K+TGLz?-LO*!sMF4gI{U%S_YcecJk=apE-Q^1igEEqf!lc z;*@;#>Ub(E@AAtp7x4FgiR9#X+}+&(kjvY!apPiqe7s0c-$_-~UEX+OFtcY*Xi%ZH z)G}anLk7ss&PA=BEgUB$&0x-)x{DMPT*lvDODE+ z71~itFz4jSb3{bUX49r`gtzne-=9KB$#q7Jimmq?qbVQ^k?81UoIn3702vv(09du^ zQ=wsQ?kR>0=}WtIwJ#%@BErZiDEQrM!|Lh>T)uqmnHSWU5X>1eq#pn+Tecu0V+F3R za(3@dK_+tsz}?*qFRyNPDbijDFRP4uSYkvCaJb{6| zc<#9t_N>+B2C^eBR09}3ynmfKYib#?$t19$)YLpgrJ8CI zUp}i0`B`c`aT3^2nskP2DNQ;$6r~ydz)%m-5f734O5n|#&iAp9{}X!9AnP6j2V9szPi%0XE&BFpV{cO3|Jg?>2x|uO0MJN)QZZ=D&BrO zo-=1I0??_G3!i_UjHjnNH*Va-!=rPp8%!FTmes;8iA2JSFLtDD+ty5&us|pl^!v2l zdh4%9BoY*gE*2SMYb~(iB=FZ?i_vJ#nw-CJ<0c0VSa<8St+cFWPV3e$Jn>sqPEM_? zC1X=9tC{2KDknB}oXL4VKP9ie8fYyUn`&7!Lw=m4OJnKZ-fe-I-QQ>6M35tuav2fvgLVHn}1E5x` zP^(p>r|)FWoDTr~kC|jU zt(LU3uj$usEG{ksQ7A?d6SJJMvRfu?MHjFqC#N%S-fCnrXOfa;;Nj7kEnB`LGIGAj zP8(4L>@_tH>DEm}MMV|)`Txe%RZdaS6?}c)1mNeNchR+LCvgVsw{G2`qM}OZ3&72- zgYf*_yZ4RSiz;B3%Vl)z*dBnWs6_7EsU$D20MPH7@6n^HQF~DZ>{6+el$3?EY}tZ? z2ahvs*c1{IQ-q)WdwjHsE?^%qB8c_t69CB1FJ%AzA6dM327UVc$)s(w(9nRzy?X~( zrRX6;`r_;BjYJ~B)wMlpwTiWC=i}t`yjA+QhSsrTzYrCb$e=+1j2-)DjvV=k%*_Ab z=GFl}KP3RArBz(HvR{0AAA*9$bN1{d&Yt~-&YfM^zI`uIQHiu`C!?T1zfu?N-iHep z3IT9-b^;LAR)(1LQA8JZ1qb&bD=U}C$oUK(-e35Y@bGYzNn6pGvvK1R5))JS{`*55 zKCHpbtphV>MzUbRG?TWXGe<6O!-fqBb!scRdrp0j!v6zh2gY7B2MrnxK$zVMYHVmU qivW=5|AkYa<6k&EMs)NE$^QTc77!Qe!3t2c0QN$Mvmbv{v_YrhGBND!+Nys~&q0C`KWehO}3sh@i&*3mjAyD)k5 zLw+FDXXtlhVV%Eh|HgqDH=UTp4F0aR_Q*(IU#u8m_&XvvJgseGyS29$+uh!N$Y8bj zj;QhDN6~%xz{8(u%GXxk--1)0VDj^+95E0gZ&f4>qH6{vYj{;8!06)1u<(5qlMkvzLBuGC^41cE^F@$6e$TLGYVg@t7k zt?;RY+FB0KyJkzWJ(afzK{(FqI*B8cI)6#3#KcUvHJ6>S!!|J-f?K5^Yg1W`7++$SKRv?+1Pxpux}Nl zk;$687;wxGyuXnDTGX5wJv8G8F%|HtuZ%q*ogK{=FnM zyD23P58gL!V8HxN`c*>D{dz6Ep_j?xCI?&-CFj-d+-r{@-eB4DW1sf3BRVhd%2)W% zz`)n5`)mC~v>eT3rlxZrzomz@|LG5DzKV*cg2*t^AsNq4dz5+U-}6dPKjxW)kBn?c zh6G$oO5)J&%bRZiy{kOrYrY6#Q@jX}{ZQ;`$i@fWPIS(|_26isjW28nm6SN;1H6cD zzZp!Hea^z<&vbFYc`Mq^qe6Q4_q*lWq%?L4t@(!NyF;MeAcm17+lQ3_lLx=I+o1|cY33;g@_fK zATX~PmwLL*&__K=bE((Qj;g{B~dQ2g~KcY;@av=v8;O`1r(JqC}gFA3vbx4av%aK0ZFt zQBm*5NHr2p+M_7x$}4YRk|~K*O%p0_tgbS0U*FWMuWR1gG97qZLI3$PONpYDnMy3R zq%A6nYUs$CbWXf zj}A6V>`dYtLmtlOZscLH&x|rJ$I`s-)XgGYL{l=_6r6xuYGtXXVu#b-7IrN`{tOXy za&?s~9m>NPuqWnX1f_AldvkP_mSWYh{VBVxC%c;0JR<*7>~vkwU7`YOatc=xH;d38>Q9=mxhZHIzOK!7t`^`UAM(X zKG-Ohl4*sGT%sIKmK@XKr~Zo#8N@3v}Z zjAT$XQ#blI;q-J=HLlcrI%;+G%FfL3t$a=$D=Q`ymHTvz(lr)LWJ$mSVPT11*S#Z8 z5|)FUVST9;8AaJ)Kj=)#$|(`0%EijMN%SlzsG;cn%XuDGcXxD^V_nUeoVbCn7N#C) zBDuXaoMTe2Bs2WeOKi7?^xA0;Y1p%8^dZONM)n=HR|MtWzI%)VR>GvlMK3*jqpW3b zX&{x&eL@j9llvIAx_&jM^3eWM#x|fL?h`WqTIEA$p3HBvu*6n*T&MikG&VUYTslU~ z!xMUN7C(RbWwJt8)wCt~!!>pAeN(&3?IU7RPEABQ(0Q;N{&VkB_RCj@rzLLWo-Olr z>X=O~E+0Ohr`$Zo)lP=$*@~VuaK(be+z3GwMj;f>8clUhETCtpa`!Hm!Tsz<`wL1- z-&n$YHarB`!*X&IqiOsdA54ynkXAV+yurHGRaCV8{Jt+CH_@xbx!-hJJBk!~#>jrh z+AibQFM1Kn##EVBa_MH>flRiE56-#P*5MQ}*MV(-HDe+JCB+PP!&1*S=jt)-K3L19 zcVEtxv_{&9HM;A41y%Og5bhE&XxjLuhz|ijI7cC3Mc)MBO{WPZ_{9M z@^j>`0H~N{V?<*kHxNN>Jv~H#2YPuq4P@z?;_=|2-rlG;Zzuuj@Yn6B#S|7~pe-~s>H zEk3^chp_Cjs22<|)+?RXC1^|yuw^(<9)^hMADS`LmHvFABO}qpuKuq{_!6qCMLsW{ z?pHm%873la0p`KMZ~3b`IlUX$hq>c(=kZrL<{kCsWh75Ilo29Kj~A)53lWJDIm=B)pce{AF8z zt_f{H8yn4OA&^)!d;9~|@=w9yI$-8k`M2EEzWNQXHSY~42sww~e@IR>|8{*{ z-IZg>IM_2?wUOL+_bS8>eR$HULM@Fe3Q9JH^oPk#fxF<`FSYhuVZ$HaASO$Vh9@WO z$BspdnO-BRa+qU!aMqpA!@X$$1YtC{_|(zeO}O|}Nz=oEfdP?vMkFiEHdEqqyhT!- z%x5F#ccZ;-aZn>L5CZVm(#A%FWs{wMM483;3mtkIuX36+nkY%asB8gOp=mP;N`#17kD8kTA~arCnIBW>&y%^h9-uKhldG(nCP4w4pQo!@ek^O z&>hXa(9VGYVq7;>L9(G?ld85hPAfo1r@*eL?ephSi!4VM7nkopk<AQZh2FJJY!D(~hs~3({=a@;05m z+a32LQ~}INWMRSHN9Jj!sxzu?;0qFYNGOt!k)euW{{FuGSD=Ol9v&LRfIr6UGxU)H z0Vn(h)E|+Y7niq5+Yy9IO!9rn$Zlie4mC&;yA(&P47H#(6F}6AMr<*EyE#!5#}g?p zzjM7mmGQ5$=fBQ~E88f<-${F)8TxRn@>!r_DPE`ge&5J$QMog)h}CY;ilq)L&)s1+|2Kn#`ffKD-#6}m z;s{#(do6>B^?$A<$Fg`|`+J(PjTQIrbd0_}`tPG~&^P1&VC|TJvTfA0JD5C#Mp#v)V%u2nDEOh|1wZ%Oq|Y z#53yn218l6NypTb^5OJ&O*$(^pM&1lDH$0c&tYzE`KLD&@3cTeotT5bpopaR^7%9t z_Cnk=zxtJLv22WBM0RHU=$)PQzOQr%!{H{jhjyHee=caX9l(IwCgF8q_xl0=WDr=P z1xT^Xa=dk7f_}ewI~)M#C_v;35nbi{;73lIiaT?GgsRr;yXPDVJ9O;q6q=fBojrv% zzkZ4nfM__N(EvM?nrnB?)mt0DrX^tekwjplj;~cTg&0Wr4e-*%?@I}IKE}xg8vW`c z;V{6|+b0zE{(VK>+}IfL#^8K=52yH>da2vmpMCD6RaaXi(Y?%#Aa{Y?wX~EpDl^Ks zRaRY1=sL0Udi9;8r1RYVqq9ScWZjNDeKTQYt=`fJurS!b_c8!p#5aXAiGN@jkAHE- zc6QbUVy)wuYf&QA%U+j~JL!9^))?}6N4`%vmbw6lFB(ood-FOV)gU0q0fn`<--wLb zwGF}EGl@xu&5Hdulz_c_y>u+HvaSxIf9d>3X&Ly0FuKu7`rA8UriZ z=bD0oM*Vfa4Tl#>SmW}vc_eJRP5$d%6u7Aw)1{MLEfEX3SG6VRxZ5x_HIcS@pV>SP zS4YPeot;Ee4adR(!JkHF<}253?@S*l1jt*acP;)1;oW>hC>#w6jK72 zZQX=~Lf`tA%}zh8bV)J44^UwAaW~R`zw6^(7(py7(wOO=LWLZD=4ECPyqKJ_ge@-2m39B*ELc!j9fpB^YRzu6cs@i7D~PS1tx%MfrMj! zij&(6V-%3jX{Q3t^yK1<&BQGIQXeX5oE#j)3iPaA3=DLy!Q?q;Lh+4J*-uPWANmPt z@MIz3rh_>M#|jS%-Y#j77mzRC$@oYN#IuByRCsDC`Qg!R35Pr7ozlv<66u@A>$N^ByC>NxDN%r2v~C=YyniJr<2IGBF_bS(EFvQEs=*TV$&gM< zL!;Er)#c%@)0UPTES6q1hc+;<%X{0hIU~%o1)|UY64}j_2v7>e_VX`EnHELm9*BtN zGDnG**A8Wg?!S2%Q@sYyK$3Nij$Zj%n4teKnDT0fmhjgiGYGjhQ~1dU9V?#vhLjH- zXSR;u}gaJ(LDZOk`f1^7-cG)CifR zq?s4~$4&Fb0JiDrp{3;!HlK~Vttp}-(zu^L1D5I*jaE(<#kmv}A?xdzOZ!T!Kn9av zTc+PlCt!j75JaLZ^-7Fzx7fBlGUu&?b{bP_uQGq5^v$pmXlz~_pjTbfRWQJP(+e2B&DA4+7@3ZC0eMVk z_d+ZF7(A9GpCl?LB6>>@`xOJOQoLp~_d!d$q4zPnrDdtN@$jN;iwsdPe`D> zh+Gb!pbAf`=VN}GGczG>^LU7x+p6O%E#~p1?d#w7MX})GXX|(*pI)ea{OB9e)CA$z zWknYoKh0^Z6;|CHg70Sfj!aHg<#XLoedP;mF6-a;p=3plM{SUQXz+je^FOM%qyGsB z^1j512=c8uF-rjp)N^?3^XHhN(kBX1i(UC_ghWcJEl=(;E6OK6#sWF5jcwg>d(n zyv|*KVJdZd@^6z*l`n(#7DBJrWdT3xSw!KA(w{&YpeB^$Ef$!UcJB>3H}?iHapb52 zp-?+Oa+(PjOijVJ2$zyHKT!E?7L`CAtq+V#e|?*p`e^LBI5BZZ7(ivi`L`WsDo9B9 z4o+!Q^z~E6Y9Ib3p$`a6uLB2O-aP$2#d9|bdIlP9IXOlkPv!y++S=d>?=|@uLouK@ zGTJc@o%qW(yCpnIEyMzMJN5e<2B9&4XAINJJG&myL4QfMcQB32yhzYf2TD{W8ON90 zV-vicctR`hn)0iz@?lkX+n4w(jlIE4aP^J<4u?oXiiq5SaKM~sLv!C&%PM34($uV3 zO!a3wmLk9JKAXI)0xWfYkP0!$95RCrj} zy*?;+_&e&O^%4XkLd&3_e#qD5pI%Y2~?nADE?*rq>_C+PNbyLC6Pzz!b z-L8#ny|y=29{G*UM*;FXb7!LbdM5<$!V%Qa5==wG)hfp_74tcZR6i8zhhP;g)s-LR z)*TxMr<|gKUq5nz(GxjkWpS5zXKF#{Hc$CHYf)e>z_sO$8liIKVK08XlrK&|TS9X%%_i)$nhv1(=r zKFLT5*&FHLsPowESnjaiT*y@Xd;yf0E-O=OYlb&wS5XMKzWzqJ|2}8ZP;Kp1IMRkl z&VP^0%1Y0?rJ2ntL^3`FdPAut(x!IZtDB1%SfB05{lerg>9Fw10b?Mog$S?PobK6I z;}Y1;eDb|O_HY`Gdki`apH6cX&Yv%%5E7$F5~9E_1q!_SeLyNyVcUbu zPz;SXP_)x}n(AI?}Hg|Kyre*xQxH9HHy|Hc$%c?#+Kb7)YQG*S;s1pD9mbuz0{?^+MX(W0B1 z#h&~LB~n#gZ=W-NLftB6A!pkWJ%j|Z@A^+Tg1M5d_|~Z@P#lvU;?WW>P#g>^)XV0A z)zNl!4OzRpQ)~8!dHGhiEwzQRh!d}(j!1I~3*#zm4W;w}Z$kd9wMUJOzi_e#(0tXv zN?cW+E_5oqEI&UAj}OYrHw+(|960*~-Ho_sLIhemsu^kP>} zd2AF_9LGP~7NH!40E!%zL#Q59kkgMD%SWJj0 zMlceD2x5d-SjAwtg2;`?Q7C6iyZ-TmOlPONJ@$3B?94Z5X6Mbz@B7QQJ3H@v_x;{F zTrL;OmydK|BM+QJM;~-JQd38`0Q&bI;qQz}1&$uQg46je;3NoaVe%p}vN|nV^a2oZ zY~&AH952v|bMHPRE`uh$pjta<*d4~rf@?SYl%9W~7bkWeEcyZ>>cX^Wh-?69TVYh9 zpVIR$LUdAWAt%?j z%t`^5UYw+{avYujDeE9687h{CPveRfHEtoyS*<8V|8ePWtD)~gt_xyQAbFLvt)338 znif7{+E!Tijl6Ez1iH0Xl&bk$`ghKOzhHVQbZHHZ>Pp*tGvUX5g^Tw45fSzgMkT@N z3u-d;1D7UFPA&|a3O8@TjB&7QEwpbg_jJrG$SvT$zLEh^ad1CdYrByNgC@hhETu`C z#ifaJ@+_RWD6bBzP{l**tpGyH2uS+iBqQrw0%)t51s-`zl4DgpHeXc zAlSo9W7}@&TM%MX;OO7JWosrEdBt%!WboJjE%@iW{D(3!Ate?*8sa%Z<3>=qQo&5& zHKESazGZ7B7w(VpYE>XLp=c56*M>DSpznv;ZRn2jp|D|&jG26anOvxvm3M6mQ$~5d zzGMnS)>lGhCYL(PB6cvm+0ocOrZ4pAs*J`=F3;lZPKW)6iV!IXR!oD2;aXd(rZ6MM zhxGi*mA^P=F3Ny#NIYD=R`_UP6(MadR0xIYRp9ek@I)C!shZCfVraR0527Y%2G{Te z*s>Txf(sWhvOcUxgs=)w>nVk)n$M*d$K`?#=D?rFwYI$nWfD3qy6{oo?yM#|KXd7C zt2JN4rtQXF3)X8MkASK^gckeJWyvuLtRMlA;8+hlwc z^z5RY5AO|qyP23$>4EWS<#5Op;@Bw}iYHGfdep3J2oCl7A%3)v>G_u{e{leweWrL31J*t-DJkw3%G$N5~g0!>|OY-HNCO&(%{- zVHTI#cTQHeEYrQ3Ar&`KlOXf9QVKJ<)QXd^7}5`G=O<3Xm>C6^29#1Rb>eK^0V}^U zwtv3|7Hm*PV7C&cJu%&l5Vfgv7B*sLbS2 z_q3W93(X>o?X_!2QCnfxF_$7Pb>fsO3mazZzpgD?M#_|`S5Zb|CYRblV7=O~GSBV> z3noGH=ao{J$)$d7)xCohuU)?h19~VAZzfmCd^Iz96y)TTNNA;8XD`Vd&BOY~k`X63 z$ed-izHr^o)|ScbTqEC{y1}|;*W`t==<>)(7&kNDvPf%+vuV4wL>FZDmn9nw-K;0h zk&{w3<&LCO!&W%f6X(n&DY$b-ZmxJjd0;(py0wQ1gN*I{-hdH(bWPSY*yBe-hZfp- zvk2KE$Zf5mH4XNVU|9PJbQ&zly61xv+XOwC)Gh+e3qHvM<@y3`1Az8SL{ugNgHHsczy}s9Q^_Y@*@} z^DAo^><@CZIn>4!>9;;v&iDNR=kzsP)-u>LGUe6;ZNOLaN$vXG`?~JdGT5tz$@m6j z1Cz|#QX&pA)^RhvtYxqV1;LVdDFgWV0K7U35|(J&{<)cE)-%{&ZwE`K%Io8&;iunZ zPu7-=4PC8gu%{oEGRH2hp>;EuyH@sr4i1LFJ#}5JXRyCNTRv-+#!E3t!*KchNm^!- zIHlQOe`IJqDs$}KL5^A3hOQ+ePH9G`mNLDFii6kMXx3`Bi diff --git a/pkgs/games/cards/hicolor/card-7-1@2x.png b/pkgs/games/cards/hicolor/card-7-1@2x.png deleted file mode 100644 index 37a407e7ce4771ae9a57de468fa5534c37f3d75d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5443 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 diff --git a/pkgs/games/cards/hicolor/card-7-2.png b/pkgs/games/cards/hicolor/card-7-2.png deleted file mode 100644 index e05555b66b3fdb0a82867ac0086a2fc760f7c476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2059 zcmV+m2=w=fP) zd2ka|9LGON0im`~3Iz*D6_8;-X0&BcE8>A513FTV87}1pi`0Xv1BJF=%VE`#3KSI( z|hB~oo?M)lbk#R zK*X`o#uCR5YH=#hK<;9=d6*%(6YI_cI*Tcy$Zh{hSV$N zOpFTQ9$;iFyu}%l22K}b7QoyWByZ_#=-spCBV-o9%D0sC``h57 zErP45k+Iw;;xxNJ9T33f9<0Y+2yxAQ-<_BseWE}~=`P0#1|ws+QN-!c7OuHMo{!3c zMX$g;?z>dR2>0ajIQ|z zcMpI8ssA4-tse~P8(M9RjD`2Dyj2_&W!LTqHXAI-fxe^Q&{6F&ojO3_bSWDOM#e&~ zQF*I4SUC@xH1>V1X%kpAUmEy&7E3?NBBeXbd)POB!8GX6MYk|U#!`z@S_aG3!DrP5 znje1!%hzk)%DowzCfB=%F=;S#kWN)KK9O2evHt ze>9s-KE1E^NY`LaXx;Zn$5O;OdR!3(An!RD=y@pKD`!tjjs8w`TExQhxo}}Ku|2{` zm}4p8#6-*Rz|%$d9;-BI9C!u#BvL-6&ybN*HOh_Zm+^P4% z)?(>#rVll^N_7WqaqM<@E(fBb{(p>O8V|WT?b-x(1k-rPwZ$|ZaxgS-4>>e({Q0^y z5e^So?^td^yR1y(AqRtLJmg?$z#ekw;&^=B_HAn}qqm1_L@X>1*)Nud><4}41U6U? zSq~blhpZP3(nHph2InDL_+W|S2TL43SmOA>62}jgIDW9i@q;CfAHpNfuJ2|3vJr$a zmi|5D(-klwR}AiLtE7t`F2Wp3|1&465Ptq0N{+zP0%b09I0$nreZ_h0U3h7ul3uqN zUVc;85Jtw*PnUu0Up@~yguAQIIQsx(G5y(vVNXK#$nmBD+Yfrz;91YVnHV?7e zp?!dpq9Pf~bBK`M-LwgeyGxzdHA$wN4I2#IJF8zCacl5hd?RDI34Lspmm%Lz@7OJi zX73*kP2Ec(HxzXK(Z(gP;mU4LQ$wxXi(F4OLxbM&~(C-j>CC>sprgz0;$`hd#? zQ}W@=IoSBD@3L^rY<4YqO*RwQS_}(TX%;c3INNtY_Ch6{|2%x*@F`|KasK=ZM$eEP z7(6(gFlL6dLDevyI5~?%Aa9PHfEk6VEOUudc^1}huKD#1Ta-P6Fq^?%Q7N8}hfCT+ zmySxh$_eHF{Fl^U9FOTeX|@a&!%1yp#l^~$IS*MAVdf+y-MzCcymO;}KgVNwgP7jS z9@k}Nr!KKZ4dpfmi!H|vUVcvX4U)k6-UeTzAi<^KY9~vtoRl%{!Vq? zjlJd13(H{lgJrP$!F&e0(+Nx0!c{||^|jFH7TK5Vc$rU8^BL?`AzF1Y_96tPs2@Uqt5wPzU*-o@w8yR+t z%a)xD4#@4_W3Zdc&jDp|eoVAH4(ub3)vXLS=KJ>H`d+Z*OX>98e6_Mm_#ORyikeTH z7iP;H>b=j!R8LHR2S!R8<%RjgiEjamX9iT%d~HrGu!FSD7D9C`8i50c10W1;T|LF& p$N|76KjD;O{e+Vj>FGOd{{j!(tw5h@?oI#z002ovPDHLkV1nqD^>zRN diff --git a/pkgs/games/cards/hicolor/card-7-2@2x.png b/pkgs/games/cards/hicolor/card-7-2@2x.png deleted file mode 100644 index 0c5164a209660c2e4da7e63732394237858f7fab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5438 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 wd)$B2Nx7$IV)861=S+E6 zdr(tn8peN#H?W8fpjL53!75;}E9!ukTBV9wW{}k~bwyVv0tyoA6kP$i3u?h}tw5+! zsjjHIV{O;k9hoXh6<54v-CY%01*+nO6)P(!7i+SAWQfMZaLFNDlIO3S^S$SN-aI); zzW2%bPDDzjlFZB?C1$(?IUymJL?W3iPzkVbVPJb#)FDt@T!~!%H$aXU%)-13XJ8TXY;7koV#I91!jk#rm;bd_eeDVjal*q>`Rud3 zj2!7eY-|Y5&W_~d93eP3uD$AOS9E`Q_Dn0E`?ttl0_c>gt&@XE{YhB?6V$eq0*j#K(sM zuxwcjDJj`Vr5mxb>dm%o5zS5*8=HS^1QE_fBe_ zITtTpB_TnEmzM``z2yMF%9TkRJ9f6ogcTJJ2@6Zo*tcWHLG@cyNEnMtEza}j3M7(f z9zU)jF)@t1yj@J5JeG!rXGo>VC=`mAX;lDU{?mx{Udiu1MFTVJy)rA_9s}UMAWLw*Q z$Ye3iKKO?pF1Cm)KmP*j*Dr6;G3~+C2%~o8LVZvgi|e)G+_-V8$%B1-rXm(=rr5M; zH2{&3L0DP!))<>R*Q+%(8l9^VI>otmt%P^q{R3yt{8R72Zf+yly*n9KS10W42NE5< z0*Pck0Ha0?WAEP0I6FHsc<=yLuU<@O=G=9iS8rdwTns>QaTyU2ffN?*H@L|5-~t_IPIUBkii=AD)qF=P-Kd`L zGzW(c9b@=#d-C(ow|V2))?6Z)EKu2Ku;=C$uwcO&t)Q)2|A<5~PjK>%3e_(Vu`kY? z$B%1}N|SX4M@Oe|_wIjcDyPW;8o#eSOpYk5Fh!F10wGo@2Ol=^(keJ4jAm zO-)TLOPBhQmzT}CbAQqJ3e|@$>md&vItWkCcPK5rML>WLrKPtSH_nw&qlPs*VOR2y zbo^F3s=?+mTDK#Co*gG}#OGb~L z%fyKR966HTX}CZDab&UsY}vA#+qds?<;rye0@iW;`b_|K?K(tq@(%9Ysi3H+ge6O& zxO(+Qr{Dqs#5sKUgvNGt^%FL2$^sxF;!hf53WdU;SJaqXAb>a`k;u>#9g+(K5NGPt z@hys;o=#)z$Iw=Fl*Lif`k1v_GM(mFmRx)kTgc)61=xcObo-tMfHAP zzTBT#vnC5oVKlBbX*{#D6LEKUB_Sb9==6eeojrS*wQIM$_G;8N@pD{UoH%-P2No8+ znhtIUuItxtB9~ud`0yd@-~V@)UTnGGW3;czH?4 z$@vZ|tKLLKZDaQAVBFpPIe-4eH9#ik1b+SXarNV*q|d3Sc&J|2(a`Wrqq#LXafS^W z+{C!O`mxE0qpv?3Fu;Zd3+AY|O->wp`++1St>`nf^z`)%8q^<9O$Rn?kZQ%5tif($)0eEQ1S~Br$j(mGIZrZa zgMG>rcTS)Fv$_R&6((=6j~FrZwPR+3T@OsoU{@#?Y&rIE$4llX&=0 zdx?_C8SJU4U$S=X7ObtUh>Huw!C^4__I<~qMG;zeUN9+x{nuZgla{s*fPMQ?kV*sC zvu7iqvMULw%3!ams-~vqDe&U+t8uOaP+MEC5pPlkyN!*t+D2WrEQadpC;a$h z8K7Dj?d0?uO)fzyrgIqVVzHRCwDt7t*@IK3F7p2S5@KS~)VKY6^`>nmXRv#FPa-`% z8i1dEy2;6t=ZTLGW&HTjTCpZ)uwS@vh4Ancyu3V!j0{37784$x%AP%kwPH=qVE_2z zO;lGuAw7LP>((tJD=Pt|Qb~M#hE}Y>ONw-%(eyTkkK9tO#$K#(@mixzp=)7nn}`D) z*I<9|z407BUdW(>U{A gIK6_9kV~Tf13nl^)N1R-=Kufz07*qoM6N<$f^y1!c>n+a diff --git a/pkgs/games/cards/hicolor/card-7-3@2x.png b/pkgs/games/cards/hicolor/card-7-3@2x.png deleted file mode 100644 index eaa3e0320abc1e0177d9af9de87863a2d7625e45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6162 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 diff --git a/pkgs/games/cards/hicolor/card-8-0@2x.png b/pkgs/games/cards/hicolor/card-8-0@2x.png deleted file mode 100644 index dcb28e26f06084dc54b31c472f49f0ea579b0ca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6544 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 diff --git a/pkgs/games/cards/hicolor/card-8-1.png b/pkgs/games/cards/hicolor/card-8-1.png deleted file mode 100644 index bc9685bd494c44948feb9ff7dd87d28a36ed0d03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1958 zcmV;X2U+-uP) zd2Ccg9LGP~77OJTB50+SLnxx4fJVSzJpeVJ2x^ER6$;g&7!j0~Qc93Qp$G_4t_qby zg9;eHgv-bgkOW!9s1y;QDp>L0QjQi_{}|S{+r8hLoww!fH)-C?yy<)=-@Idf-#0UB zb2uE#pFi9|6fUrnnYqtqD=Hf10C@Jx?xLM_N14*#BqR|{a_hbDE; zTxjAr9Pn0&NEeNV*N4E|9Ffmo1n17H@14oe#QFO)lpPo8+ggcZw>!o0?7y&MU+}F~ zRKn#elDcRfmnP1|3a!-UJleFf(j&pQnl%dw78~nX1aQUupK9C?;%mUgN;vQnbZ7&+ zzSe4<`6sv*SFDF6Yec&9?a-^6#O|u)(ypBAYC!*kc%w8@Y#!kdv7r3>r4#4Q? zT0UcCaOzC`(*g7?yBYTKSC~EEsj09 zK(nU4>rI>oJN>-PmaT)88+3HfT&_5`-1H@I^cb{BhA+Q^_1mCv1DNr;?-n*}gLmE! z%rtsBbh-^vTIlbsN-nBiIgJ{?w!JX1NQ`Tq>It8h_I()c zxu_~mdO!Gn9i03E%C%S)K=VXV&vi^x6$!OqSpn2ZFxFd@T*!*bdvt+u8NScY z9S14RrBJEll4n_rPJ_p~dzQcW4D|0IjYcJxZ*jKmg+2R2XekC3On_ENTG>5!z@(7| zx@RtzcX59H4Tg?~=X2o1-@&(5uMVu32DNL6w_HiS7S3b^7tO3q(^L1RUf4v?M; zYv({*Y;Y~6G=~LwP_H)Jbc4jMs^@YS$Keq1)Hgq9Wjpu5ltnNhGx%2fq{``?$z1NY zRq<+Awb8TI%=cjP?yz+tQsFL6t0eKTtBP7RA<6ils=C2li3je1JTJG;+u4SP;?)tJ zm&q%G;E4yde0o24rkBDlMGidQRyG?H<-)-uVkkakROqc%R6=Yl#47kK7Dg^laX^e6 zR!$e=hIk!ghpbu9s6OPpV6c1Ua(NdApk*_CEnbrzvJ70)9Bzaa2xQ z(Sh)Yvwg3aY#9uUh5?~)g$Vg0vjTI|yfduPZSA%#jMm%O)C;b>^z z+Os^d2`rf${5<9e;*uv$&3ITg)!nCwuK_CxL|7mbin!zs0+SPAVV;(sITr3}E0sbe zm;Bi3k^5lG^KkME4D2nvd6it@`81QA0hcd_rD>^Lzm$s@&By%5@Q4!|qh^||5w44s z+BCVX#lkYF0_*OdlRZm(Z9Q-pUY_iA8ystjvudL@MHgW0XE1lAM>Xq-bKtQ1HWW@w zEE1~|U0^+Nel8aa?yBO-72yfFzIS0*dzKG)6o&P8D>C0;H-jtZ1-P%HmT%u0 zW@mYPWQ+`hT{Tx+EWG)g!_TD4ED0)+Vd#m>3~$$GT3*2 zrKR^Dgp}UUw7b~x#mgp<)-u@3e$&$Vi^SE_G6~jf6>Bf5z*+{o>;9{A$H8l9FmJrb zuh{~Xm)xpb%V4itTT6Gnx?^wKmg0D!0#5uTZq2K(mci~iJJo56y4s@&?mlvOEQ{Ef z@NGwBgsXdJ%}C#Ub;sWCe-y{$L}*ygt-7_$t~v?Y+~<)~U`7eNlrQpL46yLrR*{Sm z1H_d!?*kEsHERlmV_>l7*vWe0*laNTDe)Ho*1D}iL=1@ESBXNvRf{;VW48nJHLXLD s2D^O%05D9JQoQ=A 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 diff --git a/pkgs/games/cards/hicolor/card-8-2@2x.png b/pkgs/games/cards/hicolor/card-8-2@2x.png deleted file mode 100644 index bb7df8981ebe2271271d7bba51a3229235fe4704..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5510 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 diff --git a/pkgs/games/cards/hicolor/card-8-3.png b/pkgs/games/cards/hicolor/card-8-3.png deleted file mode 100644 index e53bd22ca5c403e6933e6b887d26962e0d865613..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2417 zcmV-%36A!OP) zdr(y88ODFhDB>kXfqJ7cAWlItYK1tW5(a658XH7~iH#GrE1(eQpv49WpdcGH5No`w zq6C?0wb8;PnvOKy2nmWtS8XHEK~drr#Y?>|*zER??H*ZKU@wQW!1DaVp6`3l`@HjT z&e`)myXRY(R;y+6<|r*)Xap58F{foRr7}_r@b0^jwyvmMpt7e1oXPO3fvRKIOZru(N5>^X=J$g8{ zn5ee)4smgr24gund-?k7V`A1TDVM>!)#}xYnK9#6R8?JO%a+ecN?IVyz542qW|L?% z8e(EHsH?l*WG*%~gWB3Vq7^J9mw`Ba`}Se`b_F+YmQY#w6{AOc33C%Cj%hZ@=FOjT zU@5s;yhF~-Edb!nH^=kJD}#*2oIiho^mJv5B!>@|v29y{ zg(cdC3!q!$jgLRhePAm?=QyHwIA8pOO5WV)oNL?WDN}st>0^;rz;5y z3ufRz7mEs&l1mSRBge(1AH~Jrvtoskl9JPehlglZc)?c}i~X z-z+XvN-jMN#96RlCgtV(xOeY3H8lsx&CO``bOQM1n^R_y6&HVRS(OrV=^<%XF4l!o zDz0Y5xp3jfR(GB@Ef5C>!xXDlB>=E&SrmQx^fH*6K0Vly8YSn_!>BmrU!kzRGvOn6B(ICY3WX!onLM?L1^eCLPIAB+h@;K0=ix-DJhb&vRzgeX$vke za^$3>tf#V4*IV7Vahv$~kIXW=3JMP5;o(Mc@yRxCJlmQ}rc_31^#*%U(Ra+Ao!BI3 z?b<&gm(LWPyuCvA2}IiSBj>?`N5sb~j0UHqY~cF!Tap#mULc6Gd-nlu-@a!wNOw~u z&MkRIf*_9G1#Ax0)mPiRnDz!ioY2robnmWv^NNg|#ef0MBqv7;fiq|R+T^62&O`S1 zAI0g@dnqc)L7_l+b82goiISdbjK9+Kp6LF+&11yE);@F}MuoRMuV~aMxQb;b2E!qG}(e57%vE@Zsa&c_Y23QKo z#j!;jU@5F_A6|r7T~BCe9Jg=Z+?v<LQc-b{dGnGvfBr&;-~tiE`SQyn2HOuGK4#UbZ2%-C{mEcXqtRIPAC-~|L=dO( zGg)m7DY-xdaRLKhH!D6UXl#ez0ujWCiVCM^PbZUN{ryKVZrrF2!383SGiZ=2%a_Nr z8t3TPowaK}uIrV6Z^j33KRn?$UmE+;@b9U|eJD#3HDJ%OYSFheQh-)*mOTW5-6flQt z-@c=a9s3T!!E$!){E9w(dXb#Gjww^3@%4@1nmq<`!ye?+DLz zG&DRjXm0IJ9C!ETS60x?y9uxDPMntdvjGE~nLT@|ux)qZxVa4^GxPUG=hm-J=B1Z< z3)`ZLqgK}w5)#FjF|$ZZ+bDK=QMlyt8NBsYput#FR5(+n1Q?993xi#1E}2Zm#*H5` zc<|2v-R;22mGMpD+J(Vx3od8pm)W*0ot{0N$ji$xdY@$1275q&FW-LqXQ2go5q58| z4FG5U%-5RdM#4PIS?lW)RbUyubS&Mn>%3!alxz3?O zWkR0TU{?nFv18Adyg7I7-*|ifhCzb@k;_wzE)r>12767-4dJyyv6blP2s}N9QdoG% z=&5Q~27BZ6S2t`(X33IyY}%9pKw;rQo;~}oLA+fV?2S9_2@`ZH_UiXns~fm=%kVqT zc4e@8dwU44^$R97UO1^&ubu|+c4e>!2EI=3-Z}w}9n-DYTVAf~zuev3=-^d`Dx3Wuo{6}PG=kxyix&@UMFP_^Z-tL^h*x1=*WhLV1*d2u;hsTefkd>9l+_|Am zVnzR|ZF`4ICL<~;oT#YqR%7k%$T0^FpnEc{3pzB`q8q4CsQ|)kR#1C`N|gqHO!pH` je)jp3AT1y!=Ctg8bbhp!QgR~p00000NkvXXu0mjfF`=@~ diff --git a/pkgs/games/cards/hicolor/card-8-3@2x.png b/pkgs/games/cards/hicolor/card-8-3@2x.png deleted file mode 100644 index 7cc250d439fbc0ac9bcdc69d23e187b3e0d81cdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6258 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 Hwu|{6D0l&N diff --git a/pkgs/games/cards/hicolor/card-9-0.png b/pkgs/games/cards/hicolor/card-9-0.png deleted file mode 100644 index 7a04a343dc232bc9fc78fa17fde820ad6bfea0dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2873 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 XfaD);SutPv00000NkvXXu0mjfSPY?- diff --git a/pkgs/games/cards/hicolor/card-9-0@2x.png b/pkgs/games/cards/hicolor/card-9-0@2x.png deleted file mode 100644 index 2ab8c2ff94b5d0e9190f6f4d59cb54eb853c4eeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6593 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 Rflo6aO;uf$@<%q|{{=Up&u#z! diff --git a/pkgs/games/cards/hicolor/card-9-1.png b/pkgs/games/cards/hicolor/card-9-1.png deleted file mode 100644 index 968505b8ffa0a0203a2755e25fb14d8be1f3f754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2069 zcmV+w2 zd2AF_9LGP~f(S*Wwup+>7O*WSid7Lj5RC*C4+06%7C}ozYCNh{XsNY`9OVcIXqCe% zgqjfXh@c{ha>OfyRg6iCL=dgE)^aFNS_-Uxyj^E@=h)qu*_p-NPqKM4Z{E!J<(Jpl z-|x5Yy}CRe53j!Zu!lG@+!Pk>aJj0g3OoS0xdl%5C@QF{YsT$T&Q2vK zXC#0yP8@aO#?e7CPPakgQ~j=V^`osYC>K($7v;y>9O$BRXpfvvzlOXi(6k?(%@<|v zWZ3kLjoot=b>nzE@Z2I%PM!cI1u&&RoR@j)V*qvI)b4>@zlh@@S9{AGQP%B+U3-H+ z`FJ~=JY~Lz4r-_yXJ?&sd{GZk_Us|meP2gVN)|%pauZz(fe34KP_6yzpmdzn#lH-^ zuEy$h(u@6?%VGEpCc5aHhWg0qkSHCyyyYp`@O8P+;Fx)}MG|)0m zO0sm^(kjX$EmB=-GO9Emg0Usg)-KikeHg}-LhEspUA0lei@I?JWJ|~OjiUUmQFc8` zdC!TH@K722{-^TV&RsBhzKL$ys3Ak$IGL9~zuw|_>kd(F^Oo5ekd>jlXWA=L8#Pva z05$7Pbk!ye8S2JyxnSm#qMY+ORIY$|)#7}{lgf9_`pxk2Tfx!rAbph|QV9$093no! z$mj_xro))0wY}#qonciabnT*kJsLCuur4YeHW;Q()V{uCs(4>TyM_#FQx?VJ)koT- zF)(_V{=K1w0%kPAMB6x4uT?v<5Xq|>Z{6~(*14Wha!%tG(wjD5QS@=)B zdnnv|t$rJ`p+G1aCh#}Tig#em24$-SD`DeT)+*Z^3K+rPIDOK@3onq)XF{4aj@5tI z910l0-x9YBgo;9Ct3{=d-OD;v2SNcOD2K@tW8vOgrSl1+V9ao9RUHTgjG#1*%LP^C z;@cpnAIy5n*pu~~I$tQDmoy6{6mTSmoYWa==EBNZ(8-|x5X`BwA{1~WhYZmBV&hK@ zHNRUtUidj5ZS}7YB@}Qhhiry$^1DVu0Y`JlMls^lg&PVuouJcq19^yHAENyCe^#<3&6>v#^? z40hyq9m^qGferaxJ2WC=91u=jq=~Rbd>*n6apUL^H;xW*x@&k7oM1{eSPLq z_{`)ININuSSYw(Cj|Fo^X|V0uqjS|Ob; zm;zVz)oyRZp$k{TAc-SJiC!lXHc;+GPc5636#VgAC-TRzEY>9Z!Y2Zw<%K?YZkJ5!=(q-+>@YoE^Ws%Mp#{q}#Kh|vU-y`U~O|Ya! zwW)JyQkxw*K#Y{4N@e}DDzP##0B3W^Hac_w{MslM+XZs!l=y}Wz**zi=+FUTmitrV zl=b)B0R^KK)y^l_%{X*M66|GPA$?utx!sYG?IVRR(eZ@&?qc@Pf%19^8vM#D#k zL@^os=JCSMSv^OLV6~>9JuwXAu@Z<_>GNthD@p&pa2z_L8a{fYh}mGR$HmlK4WcK( z9*#q2MS^|Ml`vF)#(X@%u0uS*u0w1k*gxC?gY&#QX5R0=2(J2FX_rkev6Eom_>~AW z8=6Flqv?RyLG$x(H6Ill33k67GxMSJVX~?4b-7!;r8yx2o>~?4*%0^Ry%6cu0 zcTQwtDC0mxVWXd+O?-bd0Nrf3pl%*__T}0Nx zi0~a-gRvDdcEU5?=l6R(|2%)3bMDu5UuU_`b?(pmbM6FFV?8z&0TuuNz-FMYZB9F; z(zXsJM%w=Shr2ug08hGswuVJe-g^GSu=6_2J-9VBVW2F!)5+yFz4k&P=!&>B!V25- z>oKQ}ovxiJkl&1-A%*Mw1s+a4A3YmNp#OW{5l%BA@H|+<72Uy%u|D_ZQhK%PjTr^F zF=%z8&TnG%jdA`_WNk~uY`M~MP4jBRk*B6acjEcs{i~9a_I7vf1lxIfR)G?}Xp4{0 z558WuXm~if_Z~>6+pd)(gBuB)s>fN5kB?{I#l*<)JA>%`4Y$A27M7OHjrH}Zixf&> z;O1=Kw{Pb{ytvr^X$@9SOlsG1rFi}Rr_Q~m)_ZOi1z7p<%T7YTz(}*u$ZyS$7l5y= zZGFeZ9>)xDaaCaRbK*Mf@9P5rFt$RAvDGom5>RGtb0pX066_@-eX@QolTE-*3mu`7 zx{{hRSXdPy9}rW`=z7@DLAr$yrQpk17Aa30{1h>`u&BP{#EVXx>{l!3C8h%X;!3-J z8(CJyKAyvA>{&o(CjP)jm!1?%^OGtfLDZH;1xIGFYq;`0@L5#Ii3sC}HOWIl7elm8 z-;8t;((RNm>J)x+-V`1LBR-t(`JrICQ2;W(+bfqHb9*wT?m+(D9B^SM&x6Qm73DAk z$K<$rI1;$6YjT1!xlXI?7AB*mY+NTxJ#96Pmu?}BbNjZ6@=ax0x!_n!l%K+JZn7F+#+_S!PE1KQ2YCXiSeq*X}a0|<&<|73)cX&8i zYOkW()~}~R0rL0U6gM}c_#v6gkd8h^oe#r2os*5E&YEj?o|j0`9))EzZSH!iJJHYR zJ#zl1HIgvBv!Il875a$xxt&kU=fij9Yj_`(I)iVem*l$|i>c_HXY9i65i!&w@cS<; znHED`hio0coulR+rFl(^^>`S%uib0(@EV!k!t&N{M#~ieT)fX?HDNozwyZRMdWnL# zZTGxsk1j=3YoV4c;nA9DUgJ3V+A|JKCF5jN+k~HZAd1aH+F1Gl2UGgLxzL3)6ZVNO z9`0(ozO~K-LUgH?&|&r#q?L9`mza$gCpHBUjBM|b{UERum(LcX@bf46AY2HKI+E*i zbFTy^25PlYnDL4psy)J;i(~?w!pT7iM$aOY;qcH3J(?2EZw007LgpQ{-_LT?1Y=Xh zg8@>K#-|BA>s<| zKDUqQ%W+C)xS4Wt`YQ}kLW0F*uWMlrF5Np5KF%7I7;7neg59}xCmZ$c+6}Vcrr!0* z7F25|S~E@!58C5i`sd2+aW zLAgYRuwM!in(FrQB^eNN20^OD6>a^k?VtfdQ|0a2o>1=_*{j?3Np7Kb8r1kWSAL?R zO#RHuJr!>9$IYn9ztZzs(h_NQfMv>)Jr!2Ma(}&ZhJyN&SL3<2k%s!SJ#S|$F&0{;@l~C3r-Xf@*E?A}crq%j zh^{J?fpK?B3bmdEA>A0RJJ910g$Vu;h5|@CHTdvhKUL}VaZZvTx6q81A)^^ppI)g` zLzjt^*Nbi;1j;<9a4wX|{hbQwlcwDoph&iu0JMCyFJQSCiPwo857m~s{x?bth6|G_ zqrG%!9&4QW+kK;_${s~O-cmq>o1qwASY4~_0#7(8ydY2R_eDck4fgc%@~AKRw4TeQ z%kph;sqO5VA027m2s7GSyAStg+u?lr^00d`tLB|DgkjYp4hm?uNdR^D)ZN!|1pTAQ^2R-RG zb3M$4IL*s69Lj~P=by562#G%V)+NTpT1EwA3tsLHf0;TquF=#KHK>*z|G&wX1WaOK>YpH4swjAP}YP1=}Et= zqtbYRAUH2jz&B{FwF9Sw3BKYHyT z${q+`yY{vY2MSq9Hdf0a0zNPWSB5nH7JSR_;j+RzYoc&?p?bja$ogkKH0}Vr7X=KC zwjUM&j0tOn@B+{g5vLjX17dS%A$g&DcF4Y0xA4JL(ef=#vU+p`6Scng=20M0rzYM& zciz|x;d;!`e5CQSAv{44&X1xt6u#I8lIooV_VvYI(8iaTsL%f?GgF^mo%;Qzhy>uA zkZt4#GL}uVY>wktN2TRDv&L}*3^SFtIImqSeXh14@rL5Ncd^ttNX?Y83L$o{pS6EE z#|0K)ZoyNNSb29p5>S+1{_25dWSGl$y43}*oefAPr{NVvC5NAvwwW^DP9TrsKNB~b zQg6JC*zG35TN9evU&L=P>?P&$^@e;F$_OlkYK9h^JDNWzxlB2~`jgf(c?Pv&B3PZ# zhmZ{Ria&bOh0k*1eG;!S#J+I2M{RiizL%1Jpah^z`n%Wo3Hd48*pqxS>EVCWf};D! z^EY~za=)ZOQ@z>3PqVg?v@?&~WQ{Gw)D1*rsvRdo`V5BG*w^30IYkhRa6zx@%G!bH z(hm39t52p2PB%1HxV`H(+9MDZrUiB_>5rAzvV-ECh37P)@)}~no!RV8a)Xt1FU)V-6BsrB#WQVIsDv_hONpM z2vmjbfXc$R^c}alFqAkxYu>aSh+~p;$O=PFw@CP<_@X3-plH`EeH`-uhEmU$E7+9_ z#){?PQ!I~G3TbmtXN_;Dfa6g65}n2}S)u>MV_#00WXqLt&Z7fz>e0i|UR@YNZo9;z zKs#gVA1*IT==)?#gP`c9fiA5Bj#P17Ni%9S5Z=kzjS)43DgM+#a`gV&O8BXZLCn{Ljs?t7wo)V>oJ+R+Z?IVQ z@6fsb1g}5wCIjYq?0H1fLJs)Y5ym4rW>j=J6Zk)|Y)*EB?uZUL8P!N#n50PxPYDM6 zN6XAyw*qgli!wJxqN%!)4*C?7`I?1)43Bg(1`)fhe~YXS(qqx&&EmB=O?G@e68G#^k?xOvq<07`D~O3 zq=_~gxpEe;n+%S#+IM$@-<-akm?KBUQP*4!Vg`MLPaIA*WdV%}C3%4nqWM%g#p zb8?aI!17L7G%{l)pspKw2$}ZbX-6S-?!~WgyF5-oTA|oBVzewz0F*+$ELL;AXCc3` z5K{q7a$>wRxboUD$Nl{)IW|?`w|qD_dt&O9oBdbsEhQ7ax-Hr(iSh>Te5qa=ne_<#DK$v)E6mFAj ziCQ8vOw;;ywz>)(eG@{rU;>|EGR(#2t%8H-tvZ2gXT!>6df$C^+@+&WiA+61dMTDJ zr{>~yyejOUbzrbg99Ce6vOZPayW)Rkr4pQb+;X2VFAR|(8zTYesU_`l-&%|EwK4Xi zX%O+-Wh3X7hXfWm$Op1Ht$Vu#9ol{0v(@>va4VjJ;D57TL-m?1LuMQVD+vYQt?U5d z-`5iaK~d%C&=WJfo?HEA)OFj#S8*oTt5E!@?~vl!*_ufTsI8K33ZZtPDy+XtuaS>E zy>Y%#je2E84cy4UC@So-XbktJAb6+Nfru06hLWs`pT`APqa#S{78bI*x7f(| z(~2wGVuJ1E--~@0L!!2}Q5qMjTKk?dm^(20PZlS9_~n!?*9ipdtUwP_voz6n8?=Ko zgtwQ2K?=4_xnS0kdiH@qhK@Z|gyR|O8r`r;Y9TxS_c{Q8y1i{*P@qJVUXRY>#TUN^ z8mneVFw&gp+lgBM_U1nVhW=Oks2}kY_5#}#*G8}+5X&*y;bQEwfmDvgL!mXH}+~1t21FAICm{Zd>*FIq@a1chnHM z>Oy#QPNFI*WZ_b1U~AxusYkCZJAvPOF+Tt_W;ywuzwzCTW?TZ*xc4`LNX%e;Nbw!I z#ZRk6>oXQ}2N)pr^%~`<{*r ze4WoIA%F&w84P;Oa6xQHJLi9JA)P)oD^7S_$+RTB@AWr`rK!f!@tXMd9qgFk>vy71 zzSfQhAX(esbiL~<@sjAxrktksy)X7enN99pYeVMVilU?l!K%Mfuy^ODnZxhxz|~<# zSG6vtY5iNet>%>?M_tLeB)uz_sOa5nZjZpilTb}uh~wXC1LLpouq(|gO(R#{&Swn1 zzKDvH!+0gd+F~8(w`H(L)!tTF+2n~*?2n(h+`zCCn-$GF z$o*{LE)vLNzw-stZLpx0FqW>X)yYZbq^%HnbUS&zm5jLD4gacvSZAgs$O> z>!milJMJ>E5nnkFVpBmLn-S^VIJvIr^?5>yackUR{Nktl%p( zFMM;-*y_LV^bW=-_w_mo_I~o=Sm{rZdVlqm7CbVmknP_;odTBQg|V(GEWjsG`X~c@ z_^9noa}KO~-cV-Klcb@c_W08pO@{u3bis0s&ujm=e#@;9+hG%f;*}Wh1~}hs^369Jr?5L^Yl!T!fv*wN8`Njkl~?Z96ccMtIcH;6<48c5#B_v22QHtO(bOJUY_H zr#{bbSg=tiWQrQR|AG3gxEg8o-+qoJUgjsdnN;tqHEQBjL)9@;(9)U`EdA4hA423e z@+moH^1T$z(EW$R3TY>pUO~C`rFK?=j3b>*8*mXm2Nb0sUNOFU!J6mGvU77dnTM9 zi@M*CcjYX%MyrFjBVsf?V(CR!HSFz6Saij+fubrc{%imqzQ{N%GS%HEbA0T_9p~e{ zO(5XLjjDiWq>t|ErRC-G&j$u(tlQO&_W49J8Rg{UFvi9eznI?eNLrmz%I#YMWXdb0 zzJB+QFf1}W5at;`S6E&Rq%1Ajh4zasv>!rV#%UTRxH(;*El~mtbd0s%Yu zeQ*@z9mhX=!2p3sLK1_L%1a%S;vd$;vB*fKzA+>1OhN061gj9jORN+MmRF6{1cTI$ z(mILM1S(j?5rR6RjzDJsk-oqoQz=0$SQ`gIfMA?{Wn~pk_b4G~Zf?izegkmh zf|OzWDJsgPxOftP7$=3AlyO3!8z*b5eAYJUN8i~6W6L0CoRshGcA$&S5&X&7wil)@ zhLfk@SLITcErK0?v9Wv3qBf4l1COqja?uP}QUQxAWPiE0J_%48=kQTD^0{o6mUzoz zDVvYMkz?`iSpv{cS$nWq-!90Pa(KR8_fazxjn?-sT!e;AuJP`TzI?UV9hTZP7dJqhS+t zbw}1qJ2VuipPZa*efxYD49Z=zvEw?G#bvwQ!m2Bi-GlB-O$<&Bd!X+mv(3< zP#fp_Mf!Hj2^nAhbHeX%cLGcp*Sp%}+hJm9bUn30!-PKO zoK}Pd6HCJr(ln^Ag3<@!%T{%p(FL%2sqv|c1UocLSQnM&WWoAcNWU!b*no7{uo5mG zocJ1kSevpa83VPy46J`{30!wg-_h`5G*0_zXxI!p|E|~l`LEE}1RZC>yJGod`QH1O zJ{j(tXl!%gBGhk$8IQq=HO6bVb-)vKa;&ilE-Cz*a5OAHA9Fk&_{qa?=rh@0Ukjbz z!t7tm{;OMIdt>ic)HJz^fBP5)_J#0J4gvlWT zTy;hGSBciC^MwKnR~fIT3I!4-ha3s9=6Ayh1rjQU90{>Hb>V~p36(>R1S|5py@dh^ zl|zmMtDL%9is6Ru#aAOjVmD4w=8z-d|1^hejdAR7>Kt$!Q#s@iq;kk1uzpUU9r<0` zbI4XzJ?#x7{}v*d9`q~C3u^b6Yx-V^kah^8YZkU&eolJr-unPHy`Q)mCaf{e zv+Kie`^>uN?yMaeCajrdvHzdpw?FbZoM;cM59QEVr4b>q8|U;{b$wp8%rR79o(=DF z=w?45hKPqo6vS?v{9N@E+=bKRee?iD7YsK|jOxvyvqB>ZVmHo!beQo|W8JkQWa`(?lvop6RnL{bQ}6ubde<3JG+eUSd1JF*IcddU+R(9DE)9I!ES{^7ioe$ zD^sS-`Nq3tvmm{nj6onbB|pb-N_>ptiEaAdT`X&L1R*&R?1mLH z%VFtESvk|=f#tso+MmQpu*Xy5@KN~0`>JEZikaUT zCS`%&+cyV~C@+y13HEqv^txiEA{ZqR66|(pr1`Cw=~8&nLBJEikK~}P&iUbAJ-Sc-h%|=?)Iie z3r8B4FZLsTZ_OkUnkH)l-7_C*UxfA!_`~b!6*K)vjwc7;wjaPNtKfgWyQ=p zZw`7&ay&Uc?iw#273Fu!2cTIT$mDr)qQC|6=g$;^zb*QK8@C(4!c1Ks$L+2HK$Cyr kRFWM3$RPqMEB9;v1z?{)k>W4rSO5S307*qoM6N<$f+$By0{{R3 diff --git a/pkgs/games/cards/hicolor/card-9-2@2x.png b/pkgs/games/cards/hicolor/card-9-2@2x.png deleted file mode 100644 index b8e0e7501f57716ae97720aa20fa2b6e11ed155f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5403 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 jSy^(9KlaWh&bdE}dxUH|s~u6Ao&Y^ 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 diff --git a/pkgs/games/cards/hicolor/card-9-3@2x.png b/pkgs/games/cards/hicolor/card-9-3@2x.png deleted file mode 100644 index f54461ff0cc380a0f481beb801ed61fc84fb083a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5982 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 A?*IS* diff --git a/pkgs/games/cards/info.rkt b/pkgs/games/cards/info.rkt deleted file mode 100644 index 8f95a307cc..0000000000 --- a/pkgs/games/cards/info.rkt +++ /dev/null @@ -1,3 +0,0 @@ -#lang info - -(define scribblings '(("cards.scrbl" () (gui-library)))) diff --git a/pkgs/games/cards/locolor/card-0-0.png b/pkgs/games/cards/locolor/card-0-0.png deleted file mode 100644 index ca96360eb199028140097f60ce1d8f4d4d7ebad4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmViCsnd92r9?zZDYe$ShjAq$@^SYVju6x8 zb9gTz?FD*TZnIK7A~9#+n-w~ro<&xAM{y&Oi=n^(ThA$YKWX-wNE`$t?X0JyvnW^Hx4x`o3!Gc@XTM_MiERoPb2`WE(=a8RuVhC3~Y p)d1Ma*og#LuLi(b8N{@T$ro^kuD?r=k81z`002ovPDHLkV1m^`;)4JH diff --git a/pkgs/games/cards/locolor/card-0-1.png b/pkgs/games/cards/locolor/card-0-1.png deleted file mode 100644 index 96d81d08062ded6989c4470c987bd058b6ddfd09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^?m(Qt!2~1^RR1`}z`$7T>EaktG3V_Z$G$@b0xY(x z_kRAL{*3jRK#FBt^#!GzVCU3Sr{%kuf%_K$vN-lTsw^if=PHUINJ z1MB!ZCr%g52)(E*RLmN;=EBb_C7ZO;MZ!1jXS%pp>1x=Wlz*4ft}bB-m5p0}!DdsJ zV(^ZXtFd+Ml6e&s;fZs69LtqtQjRW6E}e0ay*4|v=0eiFxg6ndvd^t%h*>l1EK7O* zN7l%tTJm`Tp1&Q0Ha$|%=7SO&PGl8|FIp3qT6@^|ZkG39-1QGPIE;0FG(ario}Z{QkU8m}q<ho@Q XajkxWRgOO}HW)lz{an^LB{Ts5!~n)N diff --git a/pkgs/games/cards/locolor/card-0-2.png b/pkgs/games/cards/locolor/card-0-2.png deleted file mode 100644 index 8b8375a41b3fcc6f85ff4b3f80bf3a3a1eb30be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmeAS@N?(olHy`uVBq!ia0vp^?m(Qt!2~1^RR1`}z`)q&>EaktG3V_Z@4UkXJgi3- zRp0+V!>)0c$3m?wD$1@I=^f^)BeePF?dy3PWR$dYO4RGS+dul9dGq>RHHYHztJ`n z7qE1bMQ6cOuWN-%YZcfd3nz%eh>oqd&c^J0a6`!P%DZcKcdh>Lr8i&w?Ypvoi>lk$~oxv^tLtV`tH6H2`=n8I?x%0vAQS3l658r-}3e^IS%M5rI%rbi0e$iy$3 zw9x8pS9vysdcTwqzxwJ2dr*Dn7OB3a`vfyfyVltCuf3LN>NnLGsOP}uS#SUTDw}t; z`KvSI3Cn_oTdvN^<;%&w?&?30#qf6ugVE~C;uj`{Iah^lyP9)rLDX9NLylXEc1)ah t=Yqr3H6?8r&LRR^V!j+U;Aaqwjr4?>6H9RYp5~yl(yn^PF)fzIH zLsnw*3n9RD9@;1jCzIJ%A~<}L6?&H_Smmy7dNF2jt5OD6>nVrEvan&ZFays|wgHdZDz z8HyQL8CGMptGBd3TSl$SI|-8=4p}+%d*i#^E%1oz05!PtofQt9Rukq&BOkG|!eLwC z&}nsj9iV&lXk@9uH!HES2`eN0R<6Yj?tCaK{j-%5tQ4naynFU87F?Bk3gETI@Q?5kA>S<`-oK4{-z|%%P7E(Ar2*$L5HhP%@T^)b ztK5!fMUoiX0%>&$s#O_I9UZC_Rrj2h09#SJ=fJjVv8~=gb4FWi$FoZ46Mus%{K@2R zN)$2FtVD8`h?iAK>n8&svpW3;bVw@^_&Ix~)nTAo=|94OYQ@;sSMNso5^0g~iUFLJ d!kSiV@&}0_tRAc`U&jCd002ovPDHLkV1jtw44nV~ diff --git a/pkgs/games/cards/locolor/card-1-0.png b/pkgs/games/cards/locolor/card-1-0.png deleted file mode 100644 index b095ca4207a59147b2f5f5eb3c72643e5b6f2181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^?m(Qt!2~1^RR1`}z`%IX)5S5QV$R#yw>LEz@VE*e z|NsB#uYl#tr>PaYU3#Eby|=@Hse76D43`x55En1a@OU?sRlj!plA7kAEi><{b7;H# z0_)qGbH7ThTD59N(tD00qBAz7@AulYN^x$n-pk*i^{hhTllS_(nJ9Z~o0s*+AiFi+ z0w&$dl2*+Od%f#Z!R(@Uw=AN*RHd&=u<+wg^&9e3cCT^;X{7{j?XtH0i#BQ|^ejK15?PsZH!yC$rdTdMfjdf7k09p`4u zG`ETd+WsZ_A;^FpCRZ z>`@Pa{=qKzwK`&^{*5rP$v(T}pUe<&yjTAzCN#JelaE>FK&)%&j%F5H%U@^$#68Gm}sH~nYdBO07~ z>rHmJPnfMo)Lf5aI(v56GRbC@8??_Rz0 zOq;&nv!i8q-dFXWeq;1lwEDb5T%%_7y44D+&6XzL(h6RE&F1SInY995-!)o!ueXba zWL9xLx~}DL^5=)hxE<4!4j(>X81p^$AS=%ovHj2MT5I=3`8vIDI5>a(vc3E_IKR(n zELfeGlGLa3S@`m1$Dd}L)~&r4mDDylOD=Xj^^&b|5i7rZnC3^WgZ2`uCkeI+z9=t~ zOF7!SrUK}`O^+PIY)*8sM}Ab$#v}M(Th!9yg3*>I{~rnCTN74yNq+Uz{x$nJ?O*oq zSars;zx#wG_ql++6PDiV_TS=M6B-sOSrGek@Bhb4v+wP>TYNj_+{UnXj_0BZC%=se zX*4N1#wB?FclD+4slMLnJ72F4yLv#-SYXP}_aYXXk2&m5la^qvZhCDTar{)e{OY>v sO6%$(|2Fr}6pUVb)M5DU-7z1RC;8>_J_|(o+^crF ztm5~3l4AX7chF;@oh}7O-wAeTFL-3UK4B{=G_6@A4bd{;9Wq zvkFi8$+1S}+L?{_K5IQcuu_(9Q<0&_#K$+YHkRqe-Kp(!cptVqEs^`*(X7)tIgYkW zn>p77eV7&gXTB_Z)I$etnT%HEwFN-eZaLH#W^sWFkKl&2QB!$tgy}Y{Et)d#q0`nX zv8z+sCxm6`P3@f!Ccp41gWJ)R^qyCJ`$enIdCh0N&A0RUoA6)38w8(SofU6(?x?|f zpV#ZHSd;TUpVA7u&$Bu5b7JVFM_OS|%USZ5hH>j|%DT(Kb4ja#sV{W-vTWC_XBJPif6KfF%1Q^qbYt#DPr1gTe~DWM4f)imEn diff --git a/pkgs/games/cards/locolor/card-1-3.png b/pkgs/games/cards/locolor/card-1-3.png deleted file mode 100644 index 03d4d08a2411d7a7c330bd45858af58684bebd74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmV+v0_**WP)5GU|-++GDu6$H#h=_>biajzAS3t$-xoR`q6c4MUiPdua3#`%yj;}ya_kk^lVrTXi zFRQ8+k4y8H^Hwd?)f18KU-*cRQ%0%mxFO1%UM)_7RyfcK2U_7kD;#Kr1FdkN6%Mq* zfmS%s3I|%@Kr0+*g#)c{pcM|Z!r@FSk2ijd$e+izA7lf^YVg`2q*dB-)H@A``x*x? zf+P{{Yy28|nN?oLvkEufeRZnrgDPx+Q>>Q1{9O*^ykkr?C0o^59EeB91r8>>6rjm2E>8K`cZHMcU|uhiQO z>=CPRck^!s8=O%yaJ*+5wYweT7pwidH4!OSE!6)9rX{|&%A;C^VM?EqfhDved-(<9 W^3Thcsc{4V0000~Mj diff --git a/pkgs/games/cards/locolor/card-10-0.png b/pkgs/games/cards/locolor/card-10-0.png deleted file mode 100644 index 5c5ba2ca1e194b424226971fd8505b6833f3a335..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 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�@Dm( zeNv>TU8jp(X%!_AoqJ2xIra@ej<)&yYBN{A^~~KUDM}2oWf;AM|Nc>pHL=mL zTmO|R0JubCm^F0kvMVm=sV!e1&yH_jlQ51z{~b)OWm_(DLDIr%eU);#T)F-zEAJSx zSNsnvySfG4*oB#yAijrJ$*JZ-GpEYV_wd|+ENIiR1Of^0ukxyEs=+q!ETJDg08fMi0Pp?T z%jgN`+>f)@Fa*zJ^^>%nbGUg^<=n}NP)hdP0&iB4fZss+Z-f^sOetQwFR`5l@?G?V zef1bTlNGh>0=~Zfj9W(yK0f|d-nnDtoRcj?{kS!7&Q)$(=iu}6cm2pO4di5!#;_w) zl(Y+Y%gTEnC=IpacyKaLa^(g}Kr}ECBRyC%a|^ARyKbD~FlA6{p>kRK7hm8;C~=0N zS+AJ_PO$7z_~8q=>b=K(-dlFWp{ydGAeQjOZHTwE6FZa@4w^|Pp~s1-kYL4Mp0G-x zNye-hEz$!Ug6bS|u#?}8N@MTXxOLyN>?<3PM6R_12~Yfhq; zNjdMK(XGLs1~kPM2cSr-n0nV>_`br*vu=L{V#y+xy&BUU+p?C}Gr=6b2#Z8y7Tjs6 zoM}-Ee4TRu3tkxjgr@x7x2uT<>tSIPvveT=)2^d0)U1R&st$|%gmcjTMs%#OlyVZ= zeAJvDW^oR3pDse~Y%QuIQSH)afMM2xlyZr0A(4bAE*0kCF*^=$@OLhyPQ=udphW|N z+@jF<+`qi{DX*o0g%ULGt7s~clmOs+V>_9I7KfbxJ~a<^hyw*m_@3|yO1q*S;ZneK zaCDnfJlIoexn!UOEvzm}30mU7%TfY!9C&3)V2cAUP6@P@9aEb27ldbUD?TnzYKM;1 zo|46}2FK+~Qff@{Ene763AP85YK#>R2QCJv_f;FEh=pj{w69p;6B$EUO2?`brGPgv zLJ6M($w_w(S`Exml5#|O#CD6v(WM?Zdk?vfOqf&RiMC;bwX>QlYDT(%J$DpVkJC;M z003YXj>6(GzF}OgtY+S6aQf5^b(PaF$MM9}(JihkCC>K&V5l{4ZBFShgkw_t!!5a=_Z+Q(Q{H#uX6`$`KY4WsE3+_#g{ol48WT&2 z2tD{5$d=3sz}|v41DfJMJRFx#W9>m+1|Y%mDGVp5@1cu7i6EWC|K{?jn*2)Mcv@M# z{^DGdYHptu@;-Vb^vXoSn1YT~O03fK@rlS= zQ?tVRicLxG9Gh;DZH$T8y>RKyA(WENmm6V4CGiUX1uc}c@RqaJM^8Z|t7~QWz3`va zWstP&xOp>H$?8DD7{aZrML^QsW5PF+RR9;mkcjDc$oh3lSrze2R?oygU)8gEDinEF P00000NkvXXu0mjf{fSe~ diff --git a/pkgs/games/cards/locolor/card-11-1.png b/pkgs/games/cards/locolor/card-11-1.png deleted file mode 100644 index 2bf80461e5abfc815892b1dffe98ada1472832e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1292 zcmV+n1@roeP)2$@ zDWykeW26xA$D{KwMbAm~Gu!_}l)Ep-ESxJ_Wk}VOL+I`;7=Z0lrW`_dZ&3v(@s6TZ z2`p`LEGw~|(+55$RqojpeSG|$mk*2H-u@VmTv2@@>K?*=U5gOWSZxvE{r#8y%3mc= z_vSNvh6~9Xsorh%k`f_J_2Vcmp53RK^8gYUJ-g2NiD-Nfh?v?!%sIo#y~VsHi;!Bo zu!K1FlBuZIv$K`#%euW?kvg^1T8rFs}|GZ=)LtYE!T z+`ZlsaLviUII#r2+6u5#+*?$0zuCCSW*0hEu7F(rfhQFU&JbQ6;g413tjF4IuC1i2xEAfK;?1Rd3{q5p~asK`n;#MhK= z4T~*p)VY0`3l05MKSPY{^A=>EloElJF4!EQd$WE9nCUIJ;PIFq|CB`%s<~V`cl8>L zq7WvlU5xa)7;g}m8wtXmT^2k7lSl=Ma6OeY*YsoE0sBY~G{jT8w(so|pQ-0%)I z5D8-SDvShQCtldjvSgl$-c4-i1_D%lNUR*J6*5*srU4Uy*&T`fU}b0 zR2xAs%4@50xoa3Rs-CDJk-}|PWHhF{tKz0a!@UBV_eu@|C9w2YWny*!53jQVFGXGI z?KQUM60l+~c01)B)JM7y#T zrV=dP3U3`b1xZ>-`8$M-5hAJYunL;%RrxFbgq!1D-%UoU|2_QU=#W&K{{(X|s_LH~ zl+N&A-hx!^P2Q0X>Mb^x)gRJUx{hkAO+6>obLuZdNnwn&Ak97i0000UP)Vh#LNJ0Wh&N%IVd3iRL9lk*bAv*xi2n2wX z(xcUw2}Jz%XdRZ|Iaz&I`yYsM_vM(*d1os{sVF%FZqb4XuzhmLA#jTpMFKg!qu|a1 zbDJE?N{r`>fzQcGM|K0hfB#&kM-P7e`qSC+j@1XE9U=O!+XF=G?6!#T_V%Oy%AX!+ zNAndi!$rxPsore$k`hr`8plywT>VZ_^8h92jO<08ABakxOEMKP)q$vahM}WH&yXcm z=dQ>?+Q`o$O0`|sQk;IzH1L4Pj)+8wHq=ovn%ITBO%oGXH64$^e8?=DTm4-U#9Y!eZW@wTA~H;x&^LoAEXi zgV2x_WMx>xHWc?9MT~_x;cK4*OWar$wef1-^gTK3f>2k<6|T9+gq2%(`;WIfYwhZRf$@~EQ*IGPlNirdMt)^^zmm>#-M$TCGIP&`omj|fQ|rQ#6P#(oP*RY& zNMWRM=0ZMuttfYqngIaq+V_1sS~#&EZd=KjT&)9alpY43t(X$oDO4)C*k>TZ_#K%a z1Gh2iTyJur(qHj2#mGJn0P)b9Xf@G@nuf{Z=MrJS#^eo zkxBjuAf@D5=^XOFBBj?>&Sp1IM^B-tSDcj!4^k(knccuR8lwbZR(ZrDxeOH~&n@$g zC>zvH4^x70c3X^iQqptOXfQ$v0<7$am%~0P&g$GzGx8 z)dK(kIM>vb!ElG{_MGo_)QpNJRw)sTW#T3x)fl-;8%CHC1NR-VbxU#(@W4D?aSWiOG?DwYr^n&Ncj1 ztYST||FKZJy_;2d#kvXgJn{(k_P~ju!ng}dSOpg0^GD-H+6QKh8Yn;#4*i|;+1gtG z;r2dO#qm_G`Y5?P>Qb?J$VPBo80wj>gc9yB{t~>l`urBpFb~BmZ~swvNvZf8Uof{I zV&q-@)4N%QYCak3t=)p~K%KMK=q(!G3b1+uLKR?KW;lZK>p_nM%C>=CfG;@(d+RDaJZPmncvU*PZ1;K%VH7BNOh5!Hn M07*qoM6N<$f}G2Fz5oCK diff --git a/pkgs/games/cards/locolor/card-11-3.png b/pkgs/games/cards/locolor/card-11-3.png deleted file mode 100644 index 3d615bcdc0c29cfc4a0e686ccd7a341ed63eebfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1310 zcmV+(1>yRMP)A4PV5g4wlvK41Wvj}~TgRpYa?lvdLdcT9Gh@H}HwPPI&<7z2nE|*W5&-0! zpDo5nq?EorTZTh$O;+F8eM*Vmo>VzEbHyl$C8xm3su0KvSow)?XGJNMXXhoh(ZG5Y zU142a2G?Z8ExUq`k6*{hVZr5sjf2IcKB! z%z31xUFRz2jO}_`r!!mwn-!ne{fJ{4z(xZLF;=3;T?WD>2X>;o;%$(DTZ;#{tkx2u zOqLlAcHL#!>BP45mZ_gesi*^9^oWFTSoT_!x`aurQ>s@HUi1@_S#_#4X@uT#p<7+_ za}zYsVhI&}D;F(FY)=sAWfz>4ajEQzf}RR1GDORaP*Txe!~pI(W@=O*{@9f`d}U$7W-0Thmf2 zYTlxhQxh667>BTOnf2kX!-F$tmK{_-CFtB=?JfhRJVnhEVujKzELoV9C0((IHM6$> zKp73fcP7P?OT35%rj!6?{Iy2?b{A{j7SEtkB2R@E?QpYNC_&CYu)hW|pB!W1V?|Wx zM@pXyF_-0?^|~oR|A_clkreMI5@Y4C8Zl)h%(zV!e?unOZ7mjOIxm!_miJWQ6@3Eu zX|Elz7CC2t34b(VU;%;GaJ4acJy_5S(>+-6t*q}s#N3piC$?aoO6+?f7UmYA1VdtW zeJ$amTZkBqGk$ws>}6#%4?UqB2L7(Ea$T%kk?7ktr1)#|aIpkIS9EKn^d?D#g*vxz z&LbY(>Xbw#h(l)y5n*MSB@{iTb_OM<1mEPVBaR?^=_=VPZZF97G8*-N*msL ziG7~*+Q1eiZI7t8c&j#@C4-RCCuR`5#D?Spr<|en(+NwI0J<^=03%pUhMbW#V7Fut zEO_pzM}h6K(FQStV1##FO?C1yB}>*)c=4;@%4yc%VbSe6z{Qy=YEP7Et+X3qbe_&~ zv#JHs1A=m>#G8uh2{L-u)ozSKee1)}#i}!GJMKfcPXlq(>wp0EzJ=0tGUN-Dj$z-0 zU+S~>lfQN|xD2{dd88K}b?U-6?MmfG&sFOb8eY^3RTP>%s%u70XZ3ust)U+jR1WvC zJs7PyQUhInNi^%qxj`2OWTeYA4Io%Kd#lG&wZ^VX1M9ZLRa*-CDOt|9v69GK)uXk0 zP%v%&SD;yfA$Y|8ibfSk1h>f+Zmp-Ze3-v7dPxMMv^?E86S~{WQT|FC?3VLsQR+df zkuFyBP*PcJqP^awWL&F842Ug=g2{1!ahCcw_62cPY!lvcsblRN(+esLz3tUN#qkID z?4~Pn52jda00Jg@LCXv_8_9UZw0 zhmqAa|A+sd)yqKHAR|u3O5BwS#t=?rEfD%%_^j6AkiGCLK-aHR&ebli$?BT;2N~{k Ul0&YHW&i*H07*qoM6N<$f(lAzyZ`_I diff --git a/pkgs/games/cards/locolor/card-12-0.png b/pkgs/games/cards/locolor/card-12-0.png deleted file mode 100644 index 03b915732460764fa44298a3362c7638ae0d4f1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcmV;11bO?3P)yhIi3>G(OAg$arlNPq3Z6VEEEh&NfLCnf}U?hZn@ZdLW4`z$YRBK+gH< zX+$EW^y}(5Ou=Wex|RP@qNZ3Ru%>;=x>}kNh^$tp1P#AhmlAMR+`(4Fj#ah2)o~Cl z7R3#JD2As|`u_fN#*B1)ef{mc^TtIv=af=PiF;T7bHia;(^hUVXouSHD0u@itE#1N zVkxDZZF0wZkN2y?=N5BS9v~gh`DPM80`^)}GVG$XIHD_z{Pc z@JCI433j@|tB#cr^)k&|+h***kFLn7Yf2bFF-u@+bQMOe;AjlQvosAM4x_2g2Z2?4 zqS{o*{nu90KYk@8JIBO&NiRDw(XVReC2nh#GfrXoR_V)b=SGXhN)xI* zxAkK#E4m{>~&%@BbL<@ zds;!x`M$r2cvrZhV8(t`?G3K0Bf~B5Sv2$7OpbTdilc_}DN?wiU}_BHaiU^&JPc>`z^8^-IRu;ILAaveg#GHir*z*-UH|}( z@R!E2dZ3sFIlujfcVmii)@T_{?2I0h2-0egMWC)8xG2<0DH118f*+}_)6Rv}csK)5 z7Wg35JI~GA2V&c|G4b$JziOw2M@_Qd{V%dwplJP6Q3dTr1xS@ONHw)qSvO$QRiK@O zHZ~~C(SpS*SyA<7y-{)cNlzQZ0qP~6YkD6s?>@r(y350=-FV?WXVVixV79*>FM$(2=slNGTp-`IKZ=N4K|lizu! z?G*%POoKDF_S>{IntRe?9TKI+%c{l#G3t=74&_{OR diff --git a/pkgs/games/cards/locolor/card-12-1.png b/pkgs/games/cards/locolor/card-12-1.png deleted file mode 100644 index 43ef07a2209daf07392a51404e956877380ebbd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1186 zcmV;T1YP@yP)NtoN7sV~!35Hjr^!@$s6%y6)_4U88=Phr#d;jCyk8`NSI*eLzGIF_qhbli11FieN|BgB33ZK$SI zxa#&K=A?kquNeE3=7SK#^X(q!qeXj)a}nCl-!q^0#43@=YV4T!NwI^iy1Mcee-}cD zK)bJ;OHEmkWQ~fd^-m}r!d6}7@s;QlC!FLMICrZE4_4|L#flu4KN8VM|;MXm&rJ8Z;rv`PO+Md+jiDJznrHX*(OQ^V*m<`$g+ z{d@wXy5g@o16bK8M@mD)%1T89+i0;&0Cr-0;93FawhyovQo?{NyiAx^UxOWgCBBm0a(ZY_hjjUZ;oYEHBg z7khjSwYwj0ihtWhG4ZRJC{ejUimHu1;-S~H^(;KaqZW}s{kocClgrD9eDpDTc#m#Y zb3B4b1g(ue4*5juEtJfq78slUgA!vT-uuKXbr0!8km+i-pCzHh9Kz4TQPtjiqfTt zO#j#ED(1{kD(*_r%c@ab@q@X}D+cg)LC;DN9%@0td||Tj6I4aqXQWpXJ68;B2fs8? zTw9QbAPWG+ZRR||8pDfGQZeEK^QC;6ipeB@wh%d7d06Xk3JWxU_oj5^Xt>NRJNsn%qvgs5GC+N@b9?x$9gX57M7v@N)q)Z(`la1XR-h(7@!Xp5S|#)e4=qXEIM0-O;JfcO5> zZdk%O_vh0-48b{BUBW*<&H=cRPz;vDI19>JO-%_!Rp!#PB{yBY|8efexx97puWJs`Gi{A6I^)n)s$1C` zD6@(xnGr6qkepMXlGOuE*vVjY*Fe9QEEOE=uhp zykpG1I@)XJqmToo;IzG(i&8rir=DLS8>*X(+&?u$DMa9IM1^j;T>!w^;-7z|p7qo{ zX9Ox)HNvv-lOy2R)p)TIby+u(((b366HWY_bZl0 zVDxP2>2PnhIObC*&#y$6(D50%3~n%DlA_pbY)QU@RpK#|Ko8I1y|5yoMLz0eIGj~6 zWph5DL#~0WVviKZ4Pjh|O_znt;^{aeRuN%fyNYAeVsD$w>gkvxkyoME*lf{w()p~u zb_KjQWI*o*_ylB;gd0*|NpZoJ0Sj}T+tV*vm>0Mb#>mnhS-a zwJR$avs%b(f+<&2*szPYVs+C+k$LO|SZcM9oCcm;v7+r*%!HLvsBtjUiV8(nBbaj8 zqMy~_go2e;iBKR*5zJ%=+)O+P=v<947plSSFaIi1tqOO|g$me}D|}vFBdia7LXZ7=biu`Vy*H$0m?Jj85*2+&m-%~A80iuIgi|f1F@2# z@f3Pl)lxR?vP3Qxze>wn?lmGi@<&G%d>0!=W_g<&SWA7Jl-TxOcl2xGcGZAbD;jCK zu}`e)_s&{lPp;YvW4ig3qEd>U?7e$3_M8#e#j5tarS^!c_a-M@^{m3Yuy)FYZyy0= zW{*={zkN|kYNySe9!ze$wp@FGg;vpMl`KdUXZ0L=L>_pJP~^Ows9}}&t@Mlm)2_I0 z#4a)2df-4i6YZoTYgZqC5t^d$Ui0hF!;Huy@anyr{r`=r#o^qnA`*IYv#ND#6SFez xua1EBE3#9v+I{PH?#y1q^qIYebFw-oegUO67S(h@or3@X002ovPDHLkV1jSQCV>C| diff --git a/pkgs/games/cards/locolor/card-12-3.png b/pkgs/games/cards/locolor/card-12-3.png deleted file mode 100644 index e36334f294e778ae6dd662c82b184f089fe39b3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmV;31b6$1P)03n34 z)$jx&ew?kt5Zsg1XZ(lAr(%@Aobyw+)zp+gWi>k`$gHb*DS>1q7uby0u}X7qb{y;$ zlj4(ph!fAE^!@$&9U9sA`ubDY@>7aJ2#AP?a&?vW>yD~1&BYd-^U%88OP+zwDp{$d z$4nb}2@yl6lOHM|aqO@1{l=?S8>VPfy+K}!kHkT)qOhT*<5wpy=Cr3;c@?^1b~dh7 zv#6+4u~uG=c2-quz*4bRUWos|3rCP?ZH`!G7v3jn-3m5=vl3g7LhNu?jCVzEp8nQq z)^qQzGyDj{IW`V+=4yJc))b&S6?)mKFkmU!Nb))*AIO5~B<#=bs%Id3B-JkuHXP}e zxOmjgoAF{rA0t0n3dtU?kVh-|mGv=y=?Y{L%o-% za!1?p>tQ(D3-|1A%@cb#E7i}IynzmL4P=!f4BU`hQ~4`6X*H`?duVv>SXMMqN8C+3h7fiQ0G_0WD`g^9nI(iE4Wm*5 z0Dz}kJ+Kz2!7pH_CRWEv)qb-8e@R&8vJI7>3Qg3mE3BTuMC*E+zkaI{M8BoTP5(UmF7MJpAP^4SOHd0>=q^K{#f1DP%vg){UZi@ zZi&x2;E@a?BBmvUf02Ns@gPC1yP;s{9vA{Vj7#g_61=;u7FuLaR-*K%0Y?}L-r%nu z+k8u}2O+rv04(kg^<}ltB6A2K@u6VcMi6^PjY&nMI%st{+G?RmVJ4NLAOXIoxqjln z92S(@T8cC&yF&L=Qvd&hH0Zz(6MxgDi zky=bQ)YkZ*P%#KC>x$JbNr{|0+%1Pk`Vqz-;kB^JR36o`W>pU^sGfoHOaS)BIjqK# zuJ)e^l%v{K@=Sp8jPi_x-7*M`UYL%wJkrm+VfPL~BdeZ+!#AAvx5pN8Qpq-w!05Rb z;TAEu=vrmZOk?Mmy>rdTv&Oc@mxylFQKtn%wLSA3wB`Bvm1Wv-I8bUT%c zZ>W1^3Y9MvcH;?WjcRy7^>g=5*62`q@46~^hWjIAz{T2}zph50+E#SFwau<{FRk)g zjWcs0ISK>g%vAEs9Al9T%shpW#ONS7FLE^tdo~_o@rwd>;3J4yS!74h&q3D z`VXNgg8jQ@Gl!W1at21KKVJC4xK+$+zu!?|~M71QtR7VgRF ap7;x8Ay&wp_|OLc0000!%obH4qOi;sP|Q`CyB{-)pmpUXj@z}ZB=us#VpZCzT{7~gHD}_1rIe}- zSJ;!Xg&`t}Vjh4pTUgye@4cmzmM6sfU!VWr>a@rZR+4l)gfa6UTOrm*Q!-n8OLc)r zM{rTq3s}7#4-J{*K$D_r_1zeYNn4F&n-!6j%B0*hFK~mAqsBU3Xu%ykd@$r~D@6d7 z(VjHIkAJ+F^Umy}3|wK4@jybhQsqguLMK(>kg9M0qUCly1V7eK#)3BkhWbSjvo8DP>*P?9&*DnccF_0fMY} zxNi>@v+d!7cE5Gg;$_GvrnI19-)i{sTg;kG3+3J%*Y{@JQI)nthQ<<3U zx??r`o~@dMB~Y6d6U1Pf7EOr~KSmFtwBX^*DkZNFT%cAZBZU#D&(4Fac#stjvf@Ej zJjm(*!IK`<>R;j~J#ed(UWg_=KXTGZ4-T}jGVn*7&Ih_FqDc=AmzneoCx6m20qO@* zAuAqa#e=MPkQEQI;z3sDqu1yrwsKm+#8wWhR(_+K)yhX!XTon?5ziW()>TB0Dfk!4 z5j~~}r*c`$Ico&&EC1}rK3lkbH8X3UL1kevbFNFyRPG>O*Kkf+Xx8`-te?WpGw4B+ z9>i46e+Hd6155uhQO+8_C~4Nn1my}W?jQG<8LO3p_7xR#TFuE5@SDJFoT3dC00000 LNkvXXu0mjfGE33G diff --git a/pkgs/games/cards/locolor/card-2-2.png b/pkgs/games/cards/locolor/card-2-2.png deleted file mode 100644 index 4688afc91ce8ed428c5dfdf56083c5d49cc35129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmV^VS? zDjpu?#bQ=oK565vnJwN58HFiZP*GPk%Ka9zO|0%m5NzXW{m7e=s)@%Z8&%?J{UnDK z#evF!pDc=>tzz*1RNe8A!+W9M@68<(5b=mjhQ|6qlmqdb4HEnfzegX%EAc#*lJ1^M$mk};+2%5#+B;qJV+G} zQpJN*@gP+^NY#11rPDKt@9Ol#pi+%N;M@(1X)CEZ!`x1fY;}^3HPEFVb$TwLPR}qr zRQXp_+bpud~@tJeAZsk#9az3b`8q-z!DHsI2hyUT=Sb%ZWpZ$;nuGOd2&mK^)n03|# z<$;H8cE=A7?^O=u!AVtX6L9%ysk>icwN?KNy2okF(n_Gt3^?WC@iYQ8eMK{Ggc*=eq}UEVXtnx9vktBs`Rm{Vx&%OJC0en1{s)h zF51>7aUH=%Sk%BjG7F1AxHwfS1%scuwy>#Vg06vYsw|Zdk>24{uB#^rrg{cdRCO~h zo0f^dIi?k=hM^d3g}q}+jcr>z_Vwpx;p$_hVQ~E2tp@ftiMLpJ**0;0RXG|QaZY!) zT`lHI^X71l2~kgBkb(AvSe!v+#|=^C^lEVup$dmkg+r*q;gdQ&ve;X&$iRQGOQ%PW z==4bPd7YjWd^^-o*|gKM&UT$1DK_f#Xb_zq8RCA0L#Vcb|~xn75#ACxjwkh{c1S%x>Hct71JL6HE2qQgRFtKc)Hug;=!z|LiOzY zf)B+EY<>(r-887y)VQVsyZ&YLbKk5Bj$D_HYpP!t-%RMjht>L1U{;4NV z?&FWQHR$Y~>1cae(9}(QKC5v3*+}1GZ{*hV8okF8<0ed5v(gTvFI%wEyZX{fHR{ zzpi=b|Ete)9@C)-M{Cd7Zw_MF;8cC-x5MYv7rxFhu3p!u{cVPv#|ceN|5IGD+YcRF zTTq}abBBwaFmspu)~Wh8!c2FC3+t=L+f4h(4zDPS+wYuUd_lIv2 zZoTqpo?5c{Tl`Dy%=EQqit}_<=&V@QI5YOWB-?fs0dn@Q1E pcWK|7ZR{vtcO&v@fp)rXzK5#*x{{5Lc!7z5!PC{xWt~$(699Hk2}u9| diff --git a/pkgs/games/cards/locolor/card-3-1.png b/pkgs/games/cards/locolor/card-3-1.png deleted file mode 100644 index 5382b0426b08a5caec1f00d97bbbb82091130f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^?m(Qt!2~1^RR1`}z`(f7)5S5QV$R#y7bi6t@VH7J zFaQ7F_%GA9gI5pUO1u6fsrt3;V`Ub;Mu9n7rig9~I<+l#u|IR?%(-s!4=bMNYTtJC z>YJ=@4}%#mZCLbeXJEAMf{(F1=4m4vygS%pHsg>7_c{cdaWAXEP7 zT9;7vbKQ*0|GqWu6|g;DzWu*&f`hTOdHJ_s_VxchG(70b6nbd-`@n0)CggkKmoKy&o--w9}W&zj3PZ z>M8kO$y+~7yz2AAxju4r`yCwiuXw??hgsgFjol{saIM>p>uc@Jmc@i_tN(wm?kb!1n*CL=hO<|ReO|Ml z>3ieh%xm9sw$4~6r!;@HJJ))tZwET#c4&50#e}I6r}=s0E_5WCA8Q3h9D}E; KpUXO@geCwXrRCoM diff --git a/pkgs/games/cards/locolor/card-3-2.png b/pkgs/games/cards/locolor/card-3-2.png deleted file mode 100644 index fe5ed6f77b4da3fa34ce3c81d79d26ca49ece506..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^?m(Qt!2~1^RR1`}z`%Ik)5S5QV$R#yr~3{o@VLGW z{QmR*`7`1vVm%s+&O!yJV@l31d*$3Foa~_`5Gg1+@v%i(`C;MEzccT)_d96IaOh+D)UW%jOaHeVFZY?g%71-pwL|1ryA7Xz zt_r(+xA~f3!vD`xZ{F~b{l)f1zAclQI|mK@q8G*S9y#Voz=4U^_xb6HpxFD=e| zLU2ajE_3lmfva!5`ggYB=|i;>F;i2-lU{5|lgj>Ja^rHt$J?LMmj|atED5Vzbm2X7 y_GG(lQ$yM`wuP>J74Ui$V@>SU1)?)g>qm1xdA;oZYC&KOGkCiCxvXEaktG3V`U$Fjo;JT8H8 z@9R@{J!rL3ND=5tT=8$+N@D{K?l%hr{92qi43AyCyP>5cZuRdEqIX33_Gl|9Eo$GL z#POKxmj9xX(uSo6j%8_FoZa8l`JjDu;L(!33k|go8il2=IZ?l^r14Vi_uEbDS9{ej zconApJ5l?GGKZkxi*oP0+72puIxP0|W=lrct?mvDlzo{`Xy$E=`q~KSCpM}^x3sP3qu)w`V%(4^7wH-K;7zgwZnz$s|DpOp6i9ruU>QS#KIYx z4I70_P8^+V8^E#cncTN`->R<7(|vt;_pRk|E92HIPg2c~o+qNC*EXjy{6;lTX?b-0 z(=Nv~V%Mf^ouv4O$L6_g@G{ZRE8FLM(mC1}%3c0+%~SCe@;b|`M9x;Ah4spOXH-!)o@~y!@R!Nw?LA-@G(--3v_#X`4|YMXd5aZ#k_c$F$nddc zj4+pApR2gN+Rt6xVi)uja$uOjMXg!`!~bA*L6gTSPD+glioLL6u5J@i(3F@~xBe+0 zOj-7)jAdN0A`D;!?M?fE?5ogvuFRg>z%}-o5onO3<2a_+i+MZZZq>xw1(^-nb`u^6%kBGSMl>=v2L8L+1al(^$O;hBfWz|+266;G r0$E!;CVh?7&+s_+&Wx41Qugu>JN;9q05lM500000NkvXXu0mjfsqh>! diff --git a/pkgs/games/cards/locolor/card-4-1.png b/pkgs/games/cards/locolor/card-4-1.png deleted file mode 100644 index 6ead57e72d1e4c6061d18bc2057f812c2fa8f30e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i`mP)#i z!r^cK@e-+ieqvs^AMn)*sDJj%=_{|Qm&oUBOgGqwz|AObD7I^hgTnTQ8gc|72D`Pz z5sOuv_`@d9pz&Tcm-Or-)}TdIYP zDg%;r3hcAvKvg(U6%JH|16AQbRSv=*gmmaDE1Q=tbJuWHDZP-fs=^wAps2jW0gI8YT1RD}ao;XqY5P!$f? zs(OuXU{y*>7+948sw%zFjjBqAs_ul|x&odmQ(9N99uwI7)!7|4H}{Ri-X^{rr`ZW4!NI=4n-@ z!AjC3IdGHF^q5!GP0~ZfoD~yf1b(fg=JXZc@Nu9jlFL7Up67KO51WYq0000RWFe&3ClAJ4Sub{nH4n@)z4h{VhwkL`6_(G zc)rx@0ijfj5W*4TMM>_;T@12X;GnBI!$8f^ZsLwEckTv5EjB)1)pFYWUpN}H zKVR8`^D%?=YLQ*?e#AN&+_MIL^6DMghjv(_Q7vuUHz*>CstmYd$ZiZ2A64$fdLj9f zNaGNQJObZJa3zIZ^NM|T9H^pht3evxnBD4`>#J2g#_18bq{qm-vhsZAl>I;)s0s(F!hx!Apeh`w z3J0pf0b5nAzm2V`2C%BPmr8e`sw%fy(nCm9YA&TGAysvuDh>C&!y$v|Tvf`g9+Ue7 zhKoV=mkci07>@m0ys(AQ4 zeh`u3XVP2lANVRm>YpRMzB&i(8w_@-$|C>@Lm8|@;BJ&R6zjExMOZPT{ZoK4cv)NA zT093yXV_p3u9?|eR9($t^X$S6)>UP5)i~6z)G!XX!K747ya_NBsvt^41Un-Q2A|zm zmUwtH0=U7NZ5z^i`+|=JEktHAKUz;@=to0000Oz*SPWap(;wk6_apy;4+eE)wtSKox`aMAq4f<`v`ZhV~J#MEQbtwuN5J472f{A zPJ@D_<7zSNsuUia4H>^A7!u~S#U*c6e59+Kx+pOxq--a0Nz|S{8rNY?7&$*|wMJn< zi)RZRqHPT=Y(?0o>O5cVb=R`Y2_u*sm?D_vs!gE&fz1i2wADE&H6|$Y!pf|=Wl2F( zVqV?GT|f$1^IgW*aM(%^fMv8d-48Us3Vk0(W-n#n3VV$Q60(&d-efCuxGEgDDjc{f z9JneDkM8v7rq4ckZl`ArxGEgzRiSozSm1Sfx>g`#Zl}lN3J2clf$sFQuVZB5`v}P- zt}r@1=x96n1mLMk zZkFA;Iq!Xe_rkTOGY$5_v$}HfleD9%%L>)nKSnY{&g6;px`koxWcRjz>L+dBy3bN97_r9<6=#Fd`yS3p5{8Fl)& z64KWc!t?jn%ob~^g3N)JCv!$?cJpIR3c_qieg;*6S=FsPaLu@aSH=Dd707HsSI5v% kRmtH8?}02_m18dc0OqZak=GU&oB#j-07*qoM6N<$g1zJza{vGU diff --git a/pkgs/games/cards/locolor/card-5-1.png b/pkgs/games/cards/locolor/card-5-1.png deleted file mode 100644 index f2f0efc30e8437377e816de7dbd7bb98fedbfeca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522 zcmV+l0`>igP)_uT)OoWNO-5aJjWWD)x-|4kR|Oe6Dfq<~bKQbZ)BlymNV7@mm8t@klp z09rbc$KT{MzdR#;g|QJ8;T*`AP>i zaQy|Z?eYp}&#PkLb}`3*Myu+QEyv*-@L_c-g?!7y6#=!qGE|E}gkLpq%6VH=aSLEF z-(T&WLi4$B3~0ZDy}kiMUojadPGox?ItHv*9lsJ=7xpSGUIEK$5#TzotQPJU zLA_wLz~Rlxy{z@(2lgsmP^`PaK06My!hu#e&AjYy?}d32;94!MU)3iou_g(&IbJVo$0(+9fh~5oHeRT4mFi)onN{Cr-g$7tEsiT zN<_-%@KM-me;P)ZH5S_o{CTAVZ&l4h)V$K~St8_B0rLuqm{u{l1CGrRGL$*+0RR91 M07*qoM6N<$f`#Dql>h($ diff --git a/pkgs/games/cards/locolor/card-5-2.png b/pkgs/games/cards/locolor/card-5-2.png deleted file mode 100644 index 5cdeb81e16327bf74b1830adbd6375358e5e16db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmV+%0^|LOP)NUB!T)ke0cbduAW1qt{*`v64*)9+412jB)nYutY>&v%kYv zper2y)b=W}e_mkY?c{2+gllH!n1OCA1+Q`Sag~PC9aa%_O1@{J;O8k^Jij;_)sfpV z#ho`X7c4x5ml(IdTp9?S*`H$W+(giIw(ybAcWPr*wA%Fl^ahy=hBU607}I15J$jw* zS64CJeJ>0J``@qnCg;xt`*WbW^vuCwDnS2)lW4s?YBUEx4i2^f{0N0(1GF)BSiV5J8K zx(XqHRC+j8|5R>X-x`j&AS*r9OS01Qb%tD-FNsMAdwq??egim{aLgml$}u1XA+7zYLSrYgnI8k2d$s)-=i zm@?|Qb*^B44gcoODS|z5RlitAJoE`(1tD-;ts<4i(#Nivv!bK*_~`-7Q&7h$hrgIw zTs__A3XcA7%oJ2(Y0gl$W_nWxyTL{TRRi3qs|*+AANYAy2i{e2qC#ei(0XU_5LXJu e6%;;Q`Q#07iYwY7w#p*_0000cA3nQ{3R764uZ+8O;RsFo(hg;yPc<{5k zR@L;HcfM^@MM=D368=4K8A)QFSGmVR03rNXxZ;t z86dnCEqeR`GDU|8Bd)31H4rZ?mVpyS)KxWxFg00id!R#bLMbyQ$&#@n#`1mR=)wv2 zwz`zI&}6rl0FVAC!i}xq+1*>%uZ2r63R^n6l_J8n1McK#WlW5EA}SsTkJrzm64`l8 zl(2fVSP8C*2d;_-u8IdsS9&Zxm~buZ9=L^9dY&e95B!3=(lgM~B$Xcbz&^}yU-n85 zd!?tRA7quD{(czSzK?Lt>~@{qa|ynimU zlaT|2@dya)epQXF=}lBwq=)cG@W|*+{02tc%$ z@N5}<46Nq$tn;e00000NkvXXu0mjf|F|RP diff --git a/pkgs/games/cards/locolor/card-6-0.png b/pkgs/games/cards/locolor/card-6-0.png deleted file mode 100644 index 422d458bc5caa21b1a7731637132eca2d552e29e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmV-+0*U>JP)EYvCY+}<&0M7@Vlg2+5egw(*LAuZmJrd;={_vMt-|4x zu864o8g$A%-B-*lRo9_V_f<3rbohn&5lBR~UNsS{_(bWbvh7LVS_!^p6-J*?kr()? z%TesHdG{I$e(oRnCZE&Sb)_GI-9IQ8@)(#@1POi2RrbSNFlsh)3us;tEqaOWHFUC- zV4qcad#&rPZkY>4Dlt$F8?6T9hJ`g_Oi-qtTa?!V@?&|ns?1#Hvs><~e4)_%TIP|{ zM3CneM3kni`7UD{e^%w=r2L4*^7YC*UDQyCfpP4yOstm`*7=$mJE zywbB4w+e@GtGv>)RWS6%K$J?4&nq0f(gR)T(f4Df;dO$+WL}wX-A`t>{}zwzP`Fh% zxK%i~RXDg+IJi~+k5(RxZB>g+RXIb-!(-(gU|+HGRyn{{3E)|kh8g?oCg1x4?}b~Z zGY$5_r>b)DN!nSfPMuH{{$>mF)r0C+Gt~pVpwLR6ub8h}!$3bK%>^R{^J<{g)q;4D zT?1am#Hh}_@#;Zntbpam4T3z(bajGZe&BgPuzUk$Y84j3*EYe{OEu4o7Qj{sZ$ANB zB`}+_k7Y^of`X&I-a#D$;QcEUZr?!%&MjEzAI~jNfb`Yv+OKx{xRc>jzj)k_b{v?t9{gVG5_{bUSRfxfcDt1RDr?1MQqTGct zSgX=Isv6iY3~12ktLBiNd0-8`sZu%$9`xY`!MpGxg8x-fZ@U%7^VQiBnD+yqLHqft zIhbdQ!y4Q(yS1yT7Sf-K01dV?CS~L(18X(|jZM8lnL1j$jtxu&N9LAww16i;m7QUm zNB3yaX{BWPs)DDBO5Rjq!`j4TWzK%pTX3xk6OP{qS#Iz1b3jZTkY29SAR4PKzrY9PNB3Txo(+f-J{6&ghfu{ssNx}1@erzb2vzHGR=y@yB@}vzRSB@FlFQeu zs$@ddO2`E%;$EXrkaE?S;I|$_47zGe8+PRuXU|@v<+_pwGh7cIgXOp7Yx~r00g)Yk zn;+aD*jIxEpFMsOy+(1!@m)FLIiWqfa;z~>exU2td{@t!@sQG2U!T15`f4IoM)E3> j(pO)J9zGADDwxYJUcDVJ&!xWY00000NkvXXu0mjf*6{#< diff --git a/pkgs/games/cards/locolor/card-6-2.png b/pkgs/games/cards/locolor/card-6-2.png deleted file mode 100644 index 23055414ea25c87d9c61e8b2ad91fab4d33a56f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 568 zcmV-80>}M{P)i0=E|{WCOS=D*#)VG5=S zhnM^GW{w|Um?3w%uL8FuU57&2S072B-H(QQ;F~#cW_)L(!Ne$Bc2v;P=WEHEji?(u zb`*XE*S!&?o>Wu}p6RQHD)iLn==N1rbMH%0H%PuJ=wUZtaDA0~1;f2p(cpMyPc|kA zNL_>DIWTBao?{dZo|)OdapijUmAcH)GQIMjRtFFH=)%kiRRLoSsL$@&`I&j(Bo+^b zUtg&w>y12mpn9_2MHp93iBQsv*8yWPSt4;RRFWt2a+6o^BQ-y=6!ogJGV5)F1RXCU`9I#d8cCE2h4& zC1c6I38|`zsY)R%F$xV{_nq90674bh&8uvlsTj09rigNG-D_~XhTnK|i@}k&DmOL| z4-$j%8Hsb^Dp207s@f}hyN$X*LLY^5M`f^8<&dh%jqVE!7S1%C=_}D`&938Ox&{kR zAE(N&D64|(fz^Jo=v3JZ3jZO5^i>tqxGI1eS5-`vv6p|cu0ADoKIN(a0000d41=BC|H|w~X0wEcF(5-st*XS*c}EE-us{3F^Ira>A~l| z^4{lPD}Cio_bRcaXq^_6y}BfEnjc&|gm9__UJ(F=p$H4A_(r`J<6gxz3b6}Fn5tqL zm6tjh2bS>6p8cU}*eLpb6L7+AujrBn;(!ynSe5EwH^INE@P|ppH;l`DEs#?{SG~Xq zFZ8KO3b;Pb*b67TK;?mS9L2J00l^7r6uR;|0%ms09|=%|O@?xAkzdz-&v~pXAPC{7 z{YV|XQpThMp904HRkJql|aodvVojn(wXE#eEh!)-z$yW`{0TNKAcji}D> zrK?kvztFR@b-_?n%b1MnR?Jp&Oy;;@~bHbzw0PR|BHXDyJ6H;l`+)1!T-hZ6^C>MpSs zFfwa|Pu<~!XJ)tRk1XY|)5NM^s`S8A>4B-z15>33XR2DU(<21p(3fJbh$*H@Ro?q# zp*NYl=$nZ&4^Y}nA7#BwnaFE)#LNTcU?g+%UeKr?06-T-NKU71qxdygOCGdJe3V+g}8bu#*FI-m3V>e!Eu+2V6hCW%fi>E0d3u4zo=ewFpC z`_-1}wltCV!sKA>h4uc0wGPxRai#~lD#u>@0fJTCqgOnY!2kdN07*qoM6N<$f~$)j AcmMzZ diff --git a/pkgs/games/cards/locolor/card-7-1.png b/pkgs/games/cards/locolor/card-7-1.png deleted file mode 100644 index 8a04ede3d463a4cb0e417815217886dffa1b4a05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_@5P);dG5br+#fOQ1&)&LN%I$&G*9$1qnEn3? xaI#+M@TrP&1Sa*&A|kA+6vVuuf=^XG@dr4(Al1E@Q2D*y`7Y{L5uNJ&J)sD>?sHv)Ytn0>6Kf?`5o>yCpuMp0Z z_2)Brebvh8#r+CmaQ^ygE;#?q;C!_xhFp(Wph258@RL_Xoj6%G7LR{d7z`m)R29$_ zL+{2=@lgdY);DtS6}(vAMHzuf39lrvnpaEbz-RU?4*S*6@Ckyxg&8WHvmu!J7VNkx z5h3YYxUc?D7H@99f*bU{g*v47EiPwC75spYGU#`a@ZhR=a8*3GDjr-F53Z_4{sTD# zh`}XQX?T<{ltGWcBgJyAy9;P=QdM=xm3d$d&Ztrbo0|vRpy!o{oLIck)rA`r_Z1VX zs?sg}C?E!H`pSP7CV{>m*gD{It7<{4O1W%dRiz*BDOGh3_>`);xT+fWc4Jz{tEF8S z{=h24ApI`f!n-lOA)nKYnaL}Cu!($_GuTQ(;=J0Qxoka#PT7s=eudRnI>f3Jk5P7G zx{Ux~m5%2X6*g7bi+{8Lp%U4^>5HE0Kx(9Rar;U|4L@MsphXBSRbQ)POrK2nDra6(BdrVzrG(}g?; zcXc2{iK=2}q=WFs4G@2hcm_@wVXLZ4;Wnf>c85W5LMiuGk`!Y{ zjOF#g*@YA4zPePlEL+_gzG??N`=bbr>b8D`0(o^?f>GGpclcR`ttZ^Yk?)1G?Qr8J zABY?K7LDvonVm7@GW2H)j=n{=1rR%)=v%Pk|Me|8Mp~qA;Stz|71m|%Td?;nTI?X} zTeRCTIQD&nL)l{4>ekQ3@W55^z*X_URq^1Rs)oKENKyx&mU0N;sIO2}HkPo{SLTd1 zp6Pmk5Y~;^E}~i&LxggDG8W$vdv$vS)4!~`ufC|y+(_#JMcC=9_M;e62t5M#Sh>?Q zZ?=mscNZ0_*6;5dhOj9 z3$xa%dKE(4jfwvPV&3KM#vBRuZVV4bbD)W5x-qGTvjD5)(EVFuNxClDVJ3BmOAhO i)IIUe2y|7Bx%dS>N$HfG=emmk0000i diff --git a/pkgs/games/cards/locolor/card-8-0.png b/pkgs/games/cards/locolor/card-8-0.png deleted file mode 100644 index 52798b24bc55c0bfffff1e67fbf4a7ede8dc034e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 660 zcmV;F0&D$=P)SX(fm53b25%nZ_j5t+YWv~l-XI_n}5)o`jA%wbGG!3t=2MY|4upBGijEXo_ zr3%3=DX2H_8gXiER<*ESYxQ(|)dmultA!CLwXCJI&X>D~fD;C_6S*aN{#rhq2b?f+ zR`ZG)-dkjdu?0pLMcAh5I$rI%X-O9%p6GW$+4nr*F}359DJ5eTxyo|5Pnr09W-1 zKHtIspKsAL0~>pN3(qSaxNk9FGt~N^b-sm-R-57W`^^g9q61&(Tl9aGi-7M|AcS56 zy8v&jo?!G1tYJnU)G+!C_8EOp)99X8JXoP>y%je_)ucY?IYw(>?GQ_M9|SpOGa4)S zjuR5V(H(yAQIieaM`)uhR_gz*eZqUbUcm_?0FHFWsIv)uz2ZUt4*&WSaxwuz7%{Xs zz#DJ~;ZS#Ll&|fCo>x40r>fCb5`K_ooKPSQ@&y_Xnuz{Rz@F8 ztjYkND%C3%TSwv=SX%=CHE`ECCVQv6&W*tm8irh0=Elq*G)8eZramoqV^)B#V@fa* zlGTk#yNw9_v}qDW>e|3l35$D>^oY`pxgE>%>idwAN=1)Y6|A>Vq;@m5ks!cG!CN+vP^jv1$(DU!2_>qG9OD^)tA!E4Q3Ky# znu)B>zzM^*@Pk3VMU89F*SDyL8{eV_274hRrdt&+q^~OYU{#5ZsuV3Moyy)@aP+I2 zfX_ko=o>5eU{#6u28y8KoQ{aqc#kpsz`_nvIA>!BqXvH9S$?2wA8^9>2EGArJ8(j9 ztc(Z_KagG0`hWZg_F>IAo3jSSQ)Tv0GP)hBVg`K2su*}x#UER|s^SreuW(JOWq6 zgYW3`TXlPQF+1DER&Ui;2%DZ=9wQD_XBq6m*7Pf*s<&!n$@I-c!fsXP#jXmD)QNa6*Y@U>b-?VccJpjA@RPN=FGRT1bGL$AhA;ZOx% ztS91PEBInP3-JuxmGDZERsCux4@~!CgLxo?@Di`On%|MFv2}F?PPlBmiYwB+_?vZ$ zHErdpM1-Vn;kNokW$>JR z6ruao73s!luq!}9`~ASims1EWsw$1y`T-|&zY>v#!Gqs0gx%$2hpWnAztxWdgm6t; z`MEF&=+A{q^=)odB@nBsY+G1W)f0S5RksN~rK(%FsvO{Fhh2oF^lB&y!+(JRA*7GO zC3rRFuF1bsjj{Muy)lD7*a%Bb2sp!^h59~)xEfQL6qIY=?Le^3K&b{d?rKcwA08-Y z;0B~$oyRi!V7Q@*B^0w?r7aE4Lo6Zj46J}sRk}h%h9#~CmVQs_RZc3nD#u*>01h>f U#bhQ*+yDRo07*qoM6N<$f*|oFRsaA1 diff --git a/pkgs/games/cards/locolor/card-8-3.png b/pkgs/games/cards/locolor/card-8-3.png deleted file mode 100644 index f9f136ec75144c55e6a10f0c62c9c9db8096d10d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmV;t0z>_YP)|?zR#uJ>bhOkjdFvJfGDFMyM|BGU z9WsO52R)=)+=5THFhSFdP7y+U&&E{k^X{Ja*%&(}3L#!zdGtYg>3Vvhdgp4M=nr=ow3p%#h604Gw>U4R+@%lRXjug5-Ga|6O&7xFRZy(gj%v(ALe}+4 z?n0hWW1I+6O09$3+-gkots~(#lM%}MJwUkZdNo=Dt9V9@5#FnE@#+D{g@jm*5&nx( zjk&EZtQi=@dBv^994GFJ=n<1mp_J47^r|Vj%d`m;-^a?xu-JuTqhh7T`oA0LVFidl;HXDgAtV3?>Mv{NQzc zq*O1ks|9?ny8c{YA&Yp9Kx*J6lE;aHu2k*hxSK8oYmrjY5?hPvB^*R`y{xf{RB)Q-MXHMS zMSaa_RB_?oSc@qrhKq_+(^BDHsq6N(8w#yaanP}Wx0%&c`#2Pu?ShGVuG&FxpcvGf zM7P*iFn=&bYpF%`F;|!NmsP8nVr&L0lNbJk!a!l6J5hc$rY_ftp%4>fbSvqyn)Y%_ zwX5TAu1*S?&a7MXrQ+uiSi7hJaa5W~#e_+8YZnSJVPyl2LLnyhWgbTtdaJzfEN=^_Ory?ui*H4@ zl`>PhZRLgSfY1F=X3%9d=GK*) zS7UO{oa4isr`^}OU)fZRp@zF0E{^4oY7Bv>#%zK=%MQenD`%jJekp3+t6c?*23 zRCwNkPlf+S(0yT3HAai7ZMX8m4@5}i2O_DaV!UlspyIC{xYy`R1DStjaVFJ;+i=mJ qR5+?26P&>_r-<``u5hMQXW|!JZYA7pTmM%80000hzo2_yCc_dQ4#*It)}@`aBM=aqC`ROo2qN9NAM(A=xoWbMyaihk^+I)INBcM$9`Faa>bS|n@tEqJiV zw^&If^K-@FTRZ^1yQPAw;(@E;fve(ytKxyzF;)7JeYpdbSN!ncYwDPW`_cW$n(BbB zzy!b-P!{j9@N;zs!HfLBc6z;+AE>muH0hPhIn$?CpmX-j7-;JUVqdo@Ve1E4q}Pn3 z#>2V-+Y!i6)y6X9J##fFxEoh(Rl(D%66SNYtd1?kiWLY2)oa-6m~5%| zVxR`Ed5SxjwHe6fN^|a9=u|~?&z@0aQwWcm(8<;s5{u07*qo IM6N<$f?8NH)&Kwi diff --git a/pkgs/games/cards/locolor/card-9-2.png b/pkgs/games/cards/locolor/card-9-2.png deleted file mode 100644 index b976164f83325c840908c6d902c396588c347853..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 661 zcmV;G0&4w)B^424mrd*A<#7cpxp3)6ix*Mhw!X4nDxq@cD`@QdbY4RAOihED9c}2T&@^9@*ikkdWVgRXkA1pRd?KrKmdlP*W>I z#wQ|Ta*N)32^=I*QhYZWpuOO3kn{D47tXQ`=VidM0)MULVw^%%)?%4u0uB@(G zSV!p!IK$4EtbN_$uHgT&Zt)bOu7Ei{P|A0a*uh=d!Cl$GUD?51*}+|10DRGgk{WeY zZ$A12DQ|%l^*i5BkP3tQ1BDk?N+p!88b$Wj1}Jsn{p!u_E$rIMiIU3kSPigdOUwzt z)e&QRRY*R)-bxACvjzHl;eN2&8HLPU51cW*79v+Vd-khYt|m>d^}n+^CS!G*;M;R0 zN$?lBLQSti?8QpLtksx2IP3>DbY1CUBmSeaaAW7yQ&Rp`j>A`D7D*+P{i%H6 diff --git a/pkgs/games/cards/locolor/card-9-3.png b/pkgs/games/cards/locolor/card-9-3.png deleted file mode 100644 index 49fb89ed3ada0fef82c9ab5d9697a056be10cc23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 750 zcmVI&Rbidd*bW_2$PUoK!VQB=L%Vvhq74Upb7`1kAk~3tt(cAkZ1hfh2Ax%@Dk5&gmbfKT zDC7iEm7MBs@$i&(sI$5ZBb19|0yZiMIL%(eF)$fHtzq(s38{p5-CsI_U`Qq1UkD)8 zforX_%B3ku<%B?WOVmmQeqKo_RQn2W3;C!OT#wDdnH5~Qct{~3ywvTm+h-DIR+lEr z_uPl$qgFZRGKb5*HP|NJpqu5Wx-r55$Pe43kgso%-!PNO~vs3d`n@GXEBjC90gniVEQ;612$5m{;#)whTam#n6rCoJEB8m4E59qn5P zqv2>Y)mMutm0s06$dM;IOsh+NYH2QP*i|g0kt-Y z%3dpSUTw$zK&lQc0-sQY%~)m4tAd8^fferQ!+Ga$_O^&;v=hx-m^xG+wRB=)szOt{crW<3R5?+2GS77s*yLefZs-k)yz`Pd} gU#rV;=6oiK;C-Nb(>3OrsA$%owfkgRz#;BC3HKQ&XH=pqXn>U_Cfji0pIF4iWW&Ea` zbC1>6Fh%#Q>KT7wUfcfJOTZuBUK@b&3k#{^>*qPDua!U1Rq;^ccVKmPNvKLy zVa2QS(K^mUVR)^W7YePa$S?Yo%BwO~+z=a;cnkM-*>-8~s^QBFRM^>_b9q(eG?eoZ zKc=Vm&!16oRh2t1Tg~`mIPd=1{SO=E^~nD0`S88!FqwF$dR5hPWe3YH!A8OES3C~r zDs{OFGhFnkPO9Q*te2>!w;(rrh6#kdR?DY+n7aI2Fy*4_6#+v3O8=6-}@fl z>M*M)uZp|P7m`pC#4`K+1#h{4r2L`5nk__IkFE-hRbq_Qv~_A#&fOJTMh= zJ60Z;j>k+X4{VE#QXWWP_6$UMAeq^-sd`oXX0L~W^1vy>&!C_@5MVNUj`zGaqshHcb^1yUFW=eTrTWpl_KmxO8Aj$*D z%$`lvtKv6%JrtA&P8og%1?7PNli3@8zgj-!!<6zsGP7q$d0<-%l=8szqzq=SXA4mt z7>V3BDGyA=+>Vt8rsFYF$^+YCqm%~{m^}kg9!O^PY^q)rzuD`dpgeHO@G~eV4+NOZ lp8bBM{|NSfbkC~psc*T3ZEB#>0-OK<002ovPDHLkV1khZAjALw diff --git a/pkgs/games/cards/main.rkt b/pkgs/games/cards/main.rkt deleted file mode 100644 index ee64e21956..0000000000 --- a/pkgs/games/cards/main.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang racket - -(require "cards.rkt") -(provide (all-from-out "cards.rkt")) diff --git a/pkgs/games/cards/make-cards.rkt b/pkgs/games/cards/make-cards.rkt deleted file mode 100644 index 63e1adc2a4..0000000000 --- a/pkgs/games/cards/make-cards.rkt +++ /dev/null @@ -1,103 +0,0 @@ -(module make-cards racket - (require racket/class - (prefix-in mred: racket/gui) - (prefix-in card-class: "card-class.rkt")) - - (provide back deck-of-cards - (contract-out - [make-card (->i ([front-bm (back-bm) - (and/c (is-a?/c mred:bitmap%) - (same-size back-bm))] - [back-bm (or/c #f (is-a?/c mred:bitmap%))] - [suit-id any/c] - [value any/c]) - [result (is-a?/c card-class:card%)])])) - - (define (same-size given-bitmap) - (cond - [given-bitmap - (define w (send given-bitmap get-width)) - (define h (send given-bitmap get-height)) - (define (check bmp) - (and (= w (send bmp get-width)) - (= h (send bmp get-height)))) - (procedure-rename check - (string->symbol (format "~ax~a-bitmap?" w h)))] - [else any/c])) - - (define (get-bitmap file) - (mred:read-bitmap file - #:try-@2x? ((mred:get-display-backing-scale) . > . 1))) - - (define (make-dim bm-in) - (let ([w (send bm-in get-width)] - [h (send bm-in get-height)] - [s (inexact->exact (round (send bm-in get-backing-scale)))]) - (let* ([bm (mred:make-bitmap w h #:backing-scale s)] - [mdc (make-object mred:bitmap-dc% bm)]) - (send mdc draw-bitmap bm-in 0 0) - (let* ([len (* w h 4 s s)] - [b (make-bytes len)]) - (send bm get-argb-pixels 0 0 (* w s) (* h s) b #:unscaled? #t) - (let loop ([i 0]) - (unless (= i len) - (when (positive? (modulo i 4)) - (bytes-set! b i (quotient (* 3 (bytes-ref b i)) 4))) - (loop (add1 i)))) - (send bm set-argb-pixels 0 0 (* w s) (* h s) b #:unscaled? #t)) - (send mdc set-bitmap #f) - bm))) - - (define here - (let ([cp (collection-path "games" "cards")]) - (lambda (file) - (build-path cp - (if ((mred:get-display-depth) . <= . 8) - "locolor" - "hicolor") - file)))) - - (define back (get-bitmap (here "card-back.png"))) - - (define dim-back - (make-dim back)) - - (define deck-of-cards - (let* ([w (send back get-width)] - [h (send back get-height)]) - (let sloop ([suit 4]) - (if (zero? suit) - null - (let vloop ([value 13]) - (sleep) - (if (zero? value) - (sloop (sub1 suit)) - (let ([front (get-bitmap - (here - (format "card-~a-~a.png" - (sub1 value) - (sub1 suit))))]) - (cons (make-object card-class:card% - suit - value - w h - front back - (lambda () (make-dim front)) - (lambda () dim-back) - (make-hash)) - (vloop (sub1 value)))))))))) - - (define (make-card front-bm back-bm suit-id value) - (let ([w (send back get-width)] - [h (send back get-height)]) - (make-object card-class:card% - suit-id - value - w h - front-bm (or back-bm back) - (lambda () (make-dim front-bm)) - (lambda () - (if back-bm - (make-dim back) - dim-back)) - (make-hash))))) diff --git a/pkgs/games/cards/region.rkt b/pkgs/games/cards/region.rkt deleted file mode 100644 index d75d34bf85..0000000000 --- a/pkgs/games/cards/region.rkt +++ /dev/null @@ -1,75 +0,0 @@ - -(module region racket - (provide region - struct:region make-region - region? region-x region-y region-w region-h - region-label region-callback - - make-button-region make-background-region - - region-interactive-callback - region-paint-callback - region-button? region-hilite? region-decided-start? region-can-select? - set-region-hilite?! set-region-decided-start?! set-region-can-select?! - set-region-callback! - set-region-interactive-callback!) - - (define-syntax region - (list #'struct:region - #'make-region - #'region? - (list - #'region-callback #'region-label - #'region-h #'region-w - #'region-y #'region-x - #f) - (list #f) - #t)) - - (define-values (struct:region make-region region? region-get region-set!) - (make-struct-type 'region #f 6 6 #f)) - - (define region-x (make-struct-field-accessor region-get 0)) - (define region-y (make-struct-field-accessor region-get 1)) - (define region-w (make-struct-field-accessor region-get 2)) - (define region-h (make-struct-field-accessor region-get 3)) - (define region-label (make-struct-field-accessor region-get 4)) - (define region-callback (make-struct-field-accessor region-get 5)) - - (define set-region-callback! (make-struct-field-mutator region-set! 5)) - - (define region-interactive-callback (make-struct-field-accessor region-get 6)) - (define region-paint-callback (make-struct-field-accessor region-get 7)) - (define region-button? (make-struct-field-accessor region-get 8)) - (define region-hilite? (make-struct-field-accessor region-get 9)) - (define region-decided-start? (make-struct-field-accessor region-get 10)) - (define region-can-select? (make-struct-field-accessor region-get 11)) - - (define set-region-interactive-callback! (make-struct-field-mutator region-set! 6)) - (define set-region-paint-callback! (make-struct-field-mutator region-set! 7)) - (define set-region-button?! (make-struct-field-mutator region-set! 8)) - (define set-region-hilite?! (make-struct-field-mutator region-set! 9)) - (define set-region-decided-start?! (make-struct-field-mutator region-set! 10)) - (define set-region-can-select?! (make-struct-field-mutator region-set! 11)) - - (define create-region - (lambda (x y w h label callback) - (unless (not (or (negative? w) (negative? h))) - (error 'make-region "bad region size: ~a x ~a" w h)) - (make-region x y w h label callback #f #f #f #f #f #f))) - - (define make-background-region - (lambda (x y w h paint-callback) - (unless (not (or (negative? w) (negative? h))) - (error 'make-background-region "bad region size: ~a x ~a" w h)) - (let ([r (make-region x y w h #f #f)]) - (set-region-paint-callback! r paint-callback) - r))) - - (define make-button-region - (lambda (x y w h label callback) - (unless (not (or (negative? w) (negative? h))) - (error 'make-button-region "bad region size: ~a x ~a" w h)) - (let ([r (make-region x y w h label callback)]) - (set-region-button?! r #t) - r)))) diff --git a/pkgs/games/cards/snipclass.rkt b/pkgs/games/cards/snipclass.rkt deleted file mode 100644 index dd52988f08..0000000000 --- a/pkgs/games/cards/snipclass.rkt +++ /dev/null @@ -1,10 +0,0 @@ - -(module snipclass racket - (require racket/gui - racket/class) - (provide sc) - - (define sc (make-object snip-class%)) - (send sc set-classname "card") - (send (get-the-snip-class-list) add sc)) - diff --git a/pkgs/games/cards/utils.rkt b/pkgs/games/cards/utils.rkt deleted file mode 100644 index a00d7e92b1..0000000000 --- a/pkgs/games/cards/utils.rkt +++ /dev/null @@ -1,26 +0,0 @@ - -(module utils racket - (provide shuffle-list) - - (define shuffle-list - (lambda (l c) - (if (zero? c) - l - (let-values ([(a b) - (let ([half (floor (/ (length l) 2))]) - (values - (let loop ([l l][n half]) - (if (zero? n) - null - (cons (car l) (loop (cdr l) (sub1 n))))) - (list-tail l half)))]) - (shuffle-list - (let loop ([a a][b b][l null]) - (cond - [(null? a) (append (reverse b) l)] - [(null? b) (append (reverse a) l)] - [(zero? (random 2)) - (loop (cdr a) b (cons (car a) l))] - [else - (loop a (cdr b) (cons (car b) l))])) - (sub1 c))))))) diff --git a/pkgs/games/chat-noir/3x3-empty-board.png b/pkgs/games/chat-noir/3x3-empty-board.png deleted file mode 100644 index ff10bb3fc8b2d0cc051c76bfbf3398d71c896e70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2525 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 BZB+mO diff --git a/pkgs/games/chat-noir/cat-distance-example.png b/pkgs/games/chat-noir/cat-distance-example.png deleted file mode 100644 index a4c90eb07d627e3e1a1126cd8086fc978d32d1cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13329 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 diff --git a/pkgs/games/chat-noir/chat-noir-literate.rkt b/pkgs/games/chat-noir/chat-noir-literate.rkt deleted file mode 100644 index ebd6f0f8ed..0000000000 --- a/pkgs/games/chat-noir/chat-noir-literate.rkt +++ /dev/null @@ -1,2387 +0,0 @@ -#lang scribble/lp - -@(require (for-label racket/math) ;; for 'pi' below - racket/math - games/scribblings/common) - -@gametitle*["Chat Noir" "chat-noir" "Puzzle Game" #:style '(toc)] - -@author[(link "http://www.eecs.northwestern.edu/~robby" "Robby Findler") - (link "http://www.barzilay.org/" "Eli Barzilay") - (link "http://www.cs.utah.edu/~mflatt/" "Matthew Flatt")] - -The goal of Chat Noir is to stop the cat from escaping the board. Each -turn you click on a circle, which prevents the cat from stepping on -that space, and the cat responds by taking a step. If the cat is -completely boxed in and thus unable reach the border, you win. If the -cat does reach the border, you lose. - -To start a new game, hit the ``n'' key (but only after losing or -winning a game). - -@play-margin-note["Chat Noir"] - -To get some insight into the cat's behavior, press the ``h'' -key. It will show you the cells that are on the cat's shortest path to -the edge, assuming that the cell underneath the mouse has been -blocked, so you can experiment to see how the shortest paths change -by moving your mouse around. Note that this slows down the game -considerably, so you can turn it back off by pressing ``h'' again. - -The game was inspired by the one at -@link["http://www.gamedesign.jp/flash/chatnoir/chatnoir.html"]{Game -Design} and has essentially the same rules. It also inspired the final -project for the introductory programming course at the University of -Chicago in the fall of 2008. - -The remainder of this document explains the implementation of -the Chat Noir game in a -@link["http://www.literateprogramming.com/"]{Literate Programming} style. - -@local-table-of-contents[] - -@section{Overview} - -Chat Noir is implemented using @link["http://www.htdp.org/"]{HtDP}'s universe -library: @racketmodname[2htdp/universe] -(although it only uses the ``world'' portions of that library). -The program is divided up into -six parts: the world data definition, an implementation of breadth-first search, -code that handles drawing of the world, code that handles user input, -and some code that builds an initial world and starts the game. - -@chunk[

- (require racket/list racket/math - (for-syntax racket/base)) - (require 2htdp/universe htdp/image lang/posn racket/contract) - - - graph> - - - - - - - ] - -Each section also comes with a series of test cases that are collected into the -@racket[] -chunk at the end of the program. - -@chunk[ - - - graph-tests> - - - - ] - -Each test case uses either @racket[test], a simple form that accepts two -arguments and compares them with @racket[equal?], or @racket[test/set] -which accepts two lists and compares them as if they were sets. - -In general, most of the test cases are left to the end of the document, organized -in a series of chunks that match the functions being tested. Some of the test cases, -however, provide nice illustrations of the behavior of the function and so are -included in the function's description. - -@section{The World} - -The main data structure for Chat Noir is @tt{world}. It comes with a few functions that -construct empty worlds and test cases for them. - -@chunk[ - - ] - -@chunk[ - ] - -The main structure definition is the @racket[world] struct. - -@chunk[ -(define-struct/contract world ([board (listof cell?)] - [cat posn?] - [state (or/c 'playing - 'cat-won - 'cat-lost)] - [size (and/c natural-number/c - odd? - (>=/c 3))] - [mouse-posn (or/c #f posn?)] - [help? boolean?]) - #:transparent) -] - -It consists of a structure with six fields: -@itemize[ - -@item{@tt{board}: representing the state of the board as a list of - @tt{cell}s, one for each circle on the game. - } - -@item{@tt{cat}: a @racket[posn] indicating the position of the cat - (interpreting the @racket[posn] in the way that they are interpreted - for the @tt{board} field),} - -@item{@tt{state}: the state of the game, which can be one of - @itemize[ - @item{@racket['playing], indicating that the game is still going; this is the - initial state.} - @item{@racket['cat-won], indicating that the game is over and the - cat won, or} - @item{@racket['cat-lost], indicating that the game is over and the - cat lost.}]} - -@item{@tt{size}: an odd natural number indicating the size of the board} - -@item{@tt{mouse-posn}: a @racket[posn] for the location of the - mouse (or @racket[#f] if the mouse is not in the window), and} - -@item{@tt{help?}: a boolean indicating if help should be shown.} -] - -A @racket[cell] is a structure with two fields: - -@chunk[ - (define-struct/contract cell ([p posn?] - [blocked? boolean?]) - #:transparent)] - -The coordinates of -the @racket[posn] in the first field -indicate a position on the hexagonal grid. -This program reprsents the hexagon grid as a series of rows that -are offset from each other by 1/2 the size of the each cell. -The @tt{y} field -of the @racket[posn] refers to the row of the cell, and the @tt{x} -coordinate the position in the row. This means that, for example, -@racket[(make-posn 1 0)] is centered above @racket[(make-posn 1 0)] -and @racket[(make-posn 1 1)]. - -The boolean in the @tt{blocked?} field indicates if the cell has been -clicked on, thus blocking the cat from stepping there. - -The @racket[empty-board] function builds a list of @racket[cell]s -that correspond to an empty board. For example, here's what an empty -7x7 board looks like, as a list of cells. - -@image["chat-noir/7x7-empty-board.png"] - -It contains 7 rows and, with the exception of the first and last rows, -each row contains 7 cells. Notice how the even and odd rows are offset -from each other by 1/2 of the size of the cell. -The first and last row are missing their left-most cells -because those cells are useless, from the perspective of the gameplay, -Specifically, all of the neighbors of the missing cells -are also on the boundary and thus -the cat would win if it ever steps on one of those neighboring cells, -ending the game. - -The 3x3 board also has the same property that it consists of three -rows, each with three cells, but where the first and last row are missing -their left-most cells. - -@image["chat-noir/3x3-empty-board.png"] - -And here is how that board looks as a list of cells. - -@chunk[ - - (test (empty-board 3) - (list - (make-cell (make-posn 0 1) #f) - (make-cell (make-posn 1 0) #f) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 1 2) #f) - (make-cell (make-posn 2 0) #f) - (make-cell (make-posn 2 1) #f) - (make-cell (make-posn 2 2) #f)))] - -The @racket[empty-board] function consists -of two (nested) calls to @racket[build-list] -that build a list of lists of cells, one for -each pair of coordinates between @racket[0] -and @racket[board-size]. Then, @racket[append] -flattens the nested lists and the -@racket[filter] expression removes the corners. - -@chunk[ - (define/contract (empty-board board-size) - (-> (and/c natural-number/c odd? (>=/c 3)) - (listof cell?)) - (filter - (not-corner? board-size) - (apply - append - (build-list - board-size - (lambda (i) - (build-list - board-size - (lambda (j) - (make-cell (make-posn i j) - #f)))))))) - - (define/contract ((not-corner? board-size) c) - (-> (and/c natural-number/c odd? (>=/c 3)) - (-> cell? - boolean?)) - (not (and (= 0 (posn-x (cell-p c))) - (or (= 0 (posn-y (cell-p c))) - (= (- board-size 1) - (posn-y (cell-p c)))))))] - -Building an empty world is simply -a matter of building an empty board, finding -the initial position of the cat and filling -in all of the fields of the @racket[world] struct. -For example, this is the empty world of size @racket[3]. -It puts the cat at @racket[(make-posn 1 1)], -sets the state to @racket['playing], records the -size @racket[3], and sets the current mouse position -to @racket[#f] and the state of the ``h'' key to -@racket[#f]. - -@chunk[ - - (test (empty-world 3) - (make-world (empty-board 3) - (make-posn 1 1) - 'playing - 3 - #f - #f))] - - -The @racket[empty-world] function -generalizes the example by computing the -cats initial position as the center spot on the board. - -@chunk[ - - (define/contract (empty-world board-size) - (-> (and/c natural-number/c odd? (>=/c 3)) - world?) - (make-world (empty-board board-size) - (make-posn (quotient board-size 2) - (quotient board-size 2)) - 'playing - board-size - #f - #f))] - -The @racket[add-n-random-blocked-cells] function accepts a list of cells -and returns a new list of cells where @racket[n] of the unblocked cells -in @racket[all-cells] are now blocked. - -If @racket[n] is zero, of course, no more cells should be blocked, -so the result is just @racket[all-cells]. Otherwise, -the function computes @racket[unblocked-cells], a list of all -of the unblocked cells (except the cat's initial location), -and then randomly picks a cell from it, -calling @racket[block-cell] to actually block that cell. - -@chunk[ - (define/contract (add-n-random-blocked-cells n all-cells board-size) - (-> natural-number/c (listof cell?) (and/c natural-number/c odd? (>=/c 3)) - (listof cell?)) - (cond - [(zero? n) all-cells] - [else - (let* ([unblocked-cells - (filter (lambda (x) - (let ([cat-cell? (and (= (posn-x (cell-p x)) - (quotient board-size 2)) - (= (posn-y (cell-p x)) - (quotient board-size 2)))]) - - (and (not (cell-blocked? x)) - (not cat-cell?)))) - all-cells)] - [to-block (list-ref unblocked-cells - (random (length unblocked-cells)))]) - (add-n-random-blocked-cells - (sub1 n) - (block-cell (cell-p to-block) all-cells) - board-size))]))] - - -The @racket[block-cell] function accepts a @racket[posn] -and a list of @racket[cell] structs and updates the -relevant cell, setting its @tt{blocked?} field to @racket[#t]. - -@chunk[ - (define/contract (block-cell to-block board) - (-> posn? (listof cell?) (listof cell?)) - (map (lambda (c) (if (equal? to-block (cell-p c)) - (make-cell to-block #t) - c)) - board))] - -@section{Breadth-first Search} - -The cat's move decision is based on a breadth-first search of a graph. -The graph's nodes are the cells on the board plus a special -node called @racket['boundary] that is adjacent to every cell -on the boundary of the graph. In addition to the boundary edges, -there are edges -between each pair of adjacent cells, unless one of the cells is -blocked, in which case it has no edges at all (even to the boundary). - -This section describes the implementation of the breadth-first search, leaving -details of how the graph connectivity is computed from the board to the next section. - -@chunk[ - - - ] - -@chunk[ - - ] - -The breadth-first function constructs a @racket[distance-map], -which is a list of @racket[dist-cell] structs: - -@chunk[ - (define-struct/contract dist-cell ([p (or/c 'boundary posn?)] - [n natural-number/c]) - #:transparent)] - -Each @tt{p} field in the @racket[dist-cell] is a position on the board -and the @tt{n} field is a natural number, indicating -the distance of the shortest path from the node to some fixed point on -the board. - -The function @racket[lookup-in-table] returns the distance from the fixed -point to the given posn, returning @racket['∞] if the posn is not in the -table. - -@chunk[ - (define/contract (lookup-in-table t p) - (-> (listof dist-cell?) posn? - (or/c '∞ natural-number/c)) - (cond - [(empty? t) '∞] - [else (cond - [(equal? p (dist-cell-p (first t))) - (dist-cell-n (first t))] - [else - (lookup-in-table (rest t) p)])]))] - -The @racket[build-bfs-table] accepts a world and a cell -(indicating the fixed point) -and returns a distance map encoding the distance to that cell. -For example, here is the distance map for the distance to the boundary. - -@chunk[ - (test/set (build-bfs-table (empty-world 3) - 'boundary) - (list - (make-dist-cell 'boundary 0) - - (make-dist-cell (make-posn 1 0) 1) - (make-dist-cell (make-posn 2 0) 1) - - (make-dist-cell (make-posn 0 1) 1) - (make-dist-cell (make-posn 1 1) 2) - (make-dist-cell (make-posn 2 1) 1) - - (make-dist-cell (make-posn 1 2) 1) - (make-dist-cell (make-posn 2 2) 1)))] - -The boundary is zero steps away; each of the cells that are on the boundary -are one step away and the center is two steps away. - -The core of the breadth-first search is this function, -@racket[bst]. It accepts a queue of the pending nodes to visit -and a @racket[dist-table] that records the same information as a -@racket[distance-map], but in an immutable hash-table. The -@racket[dist-map] is an accumulator, recording the distances -to all of the nodes that have already been visited in the graph, -and is used here to speed up the computation. The queue is -represented as a list of vectors of length two. Each element -in the queue contains a @racket[posn], or the symbol @racket['boundary] -and that @racket[posn]'s distance. - -@chunk[ - - (define/contract (bfs queue dist-table) - (-> (listof (vector/c (or/c 'boundary posn?) natural-number/c)) - hash? - hash?) - #:freevar neighbors/w (-> (or/c 'boundary posn?) - (listof (or/c 'boundary posn?))) - (cond - [(empty? queue) dist-table] - [else - (let* ([p (vector-ref (first queue) 0)] - [dist (vector-ref (first queue) 1)]) - (cond - [(hash-ref dist-table p #f) - (bfs (rest queue) dist-table)] - [else - (bfs - (append (rest queue) - (map (λ (p) (vector p (+ dist 1))) - (neighbors/w p))) - (hash-set dist-table p dist))]))]))] - -If the @racket[queue] is empty, then the accumulator contains -bindings for all of the (reachable) nodes in the graph, so -we just return it. If it isn't empty, then we extract -the first element from the queue and name its consituents -@racket[p] and @racket[dist]. -Next we check to see if the node at the head of the queue -is in @racket[dist-table]. If it is, we just move on to the -next element in the queue. If that node is not in the @racket[dist-table], -then we add all of the neighbors to the queue, in the @racket[append] -expression, and update the @racket[dist-table] with the distance to -this node. Because we always add the new children to the end of the queue -and always look at the front of the queue, we are guaranteed that -the first time we see a node, it will be with the shortest distance. - -The @racket[build-bfs-table] function packages up @racket[bfs] -function. It accepts a @racket[world] and an initial position -and returns a @racket[distance-table]. - -@chunk[ - - (define/contract (build-bfs-table world init-point) - (-> world? (or/c 'boundary posn?) - (listof dist-cell?)) - (define neighbors/w (neighbors world)) - - - (hash-map - (bfs (list (vector init-point 0)) - (make-immutable-hash '())) - make-dist-cell))] - -As you can see, the first thing it does is bind the free variable in @racket[bfs] -to the result of calling the @racket[neighbors] function (defined in the chunk -@racket[]) and then it has the @racket[] chunk. In the body -it calls the @racket[bfs] function -and then transforms the result, using -@racket[hash-map], into a list of @racket[cell]s. - -@section{Board to Graph} - -As far as the @racket[build-bfs-table] function goes, -all of the information specific to Chat Noir is -encoded in the neighbors function. -It accepts a world and returns a function -that computes the neighbors of the boundary -and of nodes. This section describes how -it is implemented. - -@chunk[graph> - - - - - ] - -@chunk[graph-tests> - - - - ] - -The neighbors functions accepts a @racket[world] and then -returns a function that computes the neighbors of a @racket[posn] -and of the @racket['boundary]. - -For example, @racket[(make-posn 1 0)] has four -neighbors: - -@chunk[ - (test ((neighbors (empty-world 7)) (make-posn 1 0)) - (list 'boundary - (make-posn 2 0) - (make-posn 0 1) - (make-posn 1 1)))] - -and @racket[(make-posn 0 1)] has four neighbors: - -@chunk[ - (test ((neighbors (empty-world 7)) (make-posn 0 1)) - (list 'boundary - (make-posn 1 0) - (make-posn 1 1) - (make-posn 0 2) - (make-posn 1 2)))] - -as you can see in the earlier pictures of the 7x7 empty board. -Also, there are 6 neighbors of the boundary in the 3x3 board: - -@chunk[ - (test ((neighbors (empty-world 3)) 'boundary) - (list (make-posn 0 1) - (make-posn 1 0) - (make-posn 1 2) - (make-posn 2 0) - (make-posn 2 1) - (make-posn 2 2)))] - -This is the neighbors function. After it accepts the @racket[world], -it builds a list of the blocked cells in the world and a -list of the cells that are on the boundary (and not blocked). Then it -returns a function that is specialized to those values. - -@chunk[ -(define/contract (neighbors w) - (-> world? - (-> (or/c 'boundary posn?) - (listof (or/c 'boundary posn?)))) - (define blocked - (map cell-p - (filter (lambda (c) - (or (cell-blocked? c) - (equal? (cell-p c) (world-mouse-posn w)))) - (world-board w)))) - (define boundary-cells - (filter (lambda (p) - (and (not (member p blocked)) - (on-boundary? p (world-size w)))) - (map cell-p (world-board w)))) - (λ (p) - (neighbors-blocked/boundary blocked - boundary-cells - (world-size w) - p)))] - -The @racket[neighbors-blocked/boundary] function is given next. -If @racket[p] is blocked, it returns the empty list. If it is -on the boundary, the function simply returns @racket[boundary-cells]. -Otherwise, @racket[neighbors-blocked/boundary] calls -@racket[adjacent] to compute the posns that are adjacent to @racket[p], -filtering out the blocked @racket[posn]s and binds that to @racket[adjacent-posns]. -It then filters out the @racket[posn]s that would be outside of the board. -If those two lists are the same, then @racket[p] is not on the boundary, -so we just return @racket[in-bounds]. If the lists are different, then -we know that @racket[p] must have been on the boundary, so we add -@racket['boundary] to the result list. - -@chunk[ -(define/contract (neighbors-blocked/boundary blocked - boundary-cells - size - p) - (-> (listof posn?) - (listof posn?) - natural-number/c - (or/c 'boundary posn?) - (listof (or/c 'boundary posn?))) - - (cond - [(member p blocked) - '()] - [(equal? p 'boundary) - boundary-cells] - [else - (let* ([x (posn-x p)] - [adjacent-posns - (filter (λ (x) (not (member x blocked))) - (adjacent p))] - [in-bounds - (filter (λ (x) (in-bounds? x size)) - adjacent-posns)]) - (cond - [(equal? in-bounds adjacent-posns) - in-bounds] - [else - (cons 'boundary in-bounds)]))]))] - - -There are the three functions that build the basic graph structure -from a board as used by @racket[neighbors]. - -The first function is @racket[adjacent]. It consumes a -@racket[posn] and returns six @racket[posn]s that -indicate what the neighbors are, without consideration -of the size of the board (or the missing corner pieces). - -For example, these are the @racket[posn]s that are adjacent -to @racket[(make-posn 0 1)]; note that the first and the third -are not on the board and do not show up in -@racket[neighbors] function example above. - -@chunk[ - (test (adjacent (make-posn 0 1)) - (list (make-posn 0 0) - (make-posn 1 0) - (make-posn -1 1) - (make-posn 1 1) - (make-posn 0 2) - (make-posn 1 2)))] - -The adjacent function has two main cases; first when the -@racket[y] coordinate of the @racket[posn] is even and -second when it is odd. In each case, it is just a matter -of looking at the board and calculating coordinate offsets. - -@chunk[ - (define/contract (adjacent p) - (-> posn? - (and/c (listof posn?) - (lambda (l) (= 6 (length l))))) - (let ([x (posn-x p)] - [y (posn-y p)]) - (cond - [(even? y) - (list (make-posn (- x 1) (- y 1)) - (make-posn x (- y 1)) - (make-posn (- x 1) y) - (make-posn (+ x 1) y) - (make-posn (- x 1) (+ y 1)) - (make-posn x (+ y 1)))] - [else - (list (make-posn x (- y 1)) - (make-posn (+ x 1) (- y 1)) - (make-posn (- x 1) y) - (make-posn (+ x 1) y) - (make-posn x (+ y 1)) - (make-posn (+ x 1) (+ y 1)))])))] - -The @racket[on-boundary?] function returns @racket[#t] when -the posn would be on the boundary of a board of size -@racket[board-size]. Note that this function does not -have to special case the missing @racket[posn]s from the corners. - -@chunk[ - (define/contract (on-boundary? p board-size) - (-> posn? natural-number/c - boolean?) - (or (= (posn-x p) 0) - (= (posn-y p) 0) - (= (posn-x p) (- board-size 1)) - (= (posn-y p) (- board-size 1))))] - -The @racket[in-bounds?] function returns @racket[#t] -when the @racket[posn] is actually on the board, meaning -that the coordinates of the @racket[posn] are within the -board's size, and that the @racket[posn] is not one -of the two corners that have been removed. - -@chunk[ - (define/contract (in-bounds? p board-size) - (-> posn? natural-number/c - boolean?) - (and (<= 0 (posn-x p) (- board-size 1)) - (<= 0 (posn-y p) (- board-size 1)) - (not (equal? p (make-posn 0 0))) - (not (equal? p (make-posn 0 (- board-size 1))))))] - -@section{The Cat's Path} - -Once we have a breadth-first search all sorted out, we can use it to build a function that -determines where the shortest paths from the cat's current position to the boundary are. - -@chunk[ - - <+/f>] - -@chunk[ - - <+/f-tests>] - -The function @racket[on-cats-path?] accepts a world and returns a predicate -on the @racket[posn]s in the world. The predicate indicates if the given -@racket[posn] is on the shortest path. - -For example, in a world of size @racket[7] with the cat at -@racket[(make-posn 2 2)], the circles with white centers -are on the shortest path to the boundary: - -@image["chat-noir/cat-distance-example.png"] - -So we can formulate two test cases using this world, one -in the white circles and one not: - -@chunk[ - (let ([on-the-path? - (on-cats-path? (make-world (empty-board 7) - (make-posn 2 2) - 'playing - 7 - #f - #t))]) - (test (on-the-path? (make-posn 1 0)) - #t) - (test (on-the-path? (make-posn 4 4)) - #f))] - -The computation of the shortest path to the boundary proceeds by computing -two distance maps; the distance map to the boundary and the distance map -to the cat. Then, a node is on one of the shortest paths if the distance -to the cat plus the distance to the boundary is equal to the distance from -the cat to the boundary. - -The code is essentially that, plus two other special cases. Specifically if the -``h'' key is not pressed down, then we just consider no cells to be on that shortest -path. And if the distance to the cat is @racket['∞], then again no nodes are on the -path. The second situation happens when the cat is completely boxed in and has -lost the game. - -@chunk[ - (define/contract (on-cats-path? w) - (-> world? (-> posn? boolean?)) - (cond - [(world-help? w) - (let () - (define edge-distance-map (build-bfs-table w 'boundary)) - (define cat-distance-map (build-bfs-table w (world-cat w))) - (define cat-distance - (lookup-in-table edge-distance-map (world-cat w))) - (cond - [(equal? cat-distance '∞) - (lambda (p) #f)] - [else - (lambda (p) - (equal? (+/f (lookup-in-table cat-distance-map p) - (lookup-in-table edge-distance-map p)) - cat-distance))]))] - [else - (lambda (p) #f)]))] - -Finally, the helper function @racket[+/f] is just like @racket[+], except that -it returns @racket['∞] if either argument is @racket['∞]. - -@chunk[<+/f> - (define (+/f x y) - (cond - [(or (equal? x '∞) (equal? y '∞)) - '∞] - [else - (+ x y)]))] - -@section{Drawing the Cat} - -This code is three large, similar constants, -bundled up into the @racket[cat] function. -The @racket[thinking-cat] is the one that -is visible when the game is being played. It -differs from the others in that it does not -have a mouth. The @racket[mad-cat] is the one -that you see when the cat loses. It differs -from the others in that its pinks turn pink. -Finally, the @racket[happy-cat] shows up when -the cat wins and it is just like the @racket[thinking-cat] -except it has a smile. - -@chunk[ - (define/contract (cat mode) - (-> (or/c 'mad 'happy 'thinking) image?) - (define face-width 36) - (define face-height 22) - - (define face-color - (cond - [(eq? mode 'mad) 'pink] - [else 'lightgray])) - - (define left-ear - (regular-polygon 3 8 'solid 'black (/ pi -3))) - (define right-ear - (regular-polygon 3 8 'solid 'black 0)) - (define ear-x-offset 14) - (define ear-y-offset 9) - - (define eye (overlay (ellipse 12 8 'solid 'black) - (ellipse 6 4 'solid 'limegreen))) - (define eye-x-offset 8) - (define eye-y-offset 3) - - (define nose - (regular-polygon 3 5 'solid 'black (/ pi 2))) - - (define mouth-happy - (overlay (ellipse 8 8 'solid face-color) - (ellipse 8 8 'outline 'black) - (move-pinhole - (rectangle 10 5 'solid face-color) - 0 - 4))) - (define mouth-no-expression - (overlay (ellipse 8 8 'solid face-color) - (ellipse 8 8 'outline face-color) - (rectangle 10 5 'solid face-color))) - - (define mouth - (cond - [(eq? mode 'happy) mouth-happy] - [else mouth-no-expression])) - (define mouth-x-offset 4) - (define mouth-y-offset -5) - - (define (whiskers img) - (add-line - (add-line - (add-line - (add-line - (add-line - (add-line - img - 6 4 30 12 'black) - 6 4 30 4 'black) - 6 4 30 -4 'black) - -6 4 -30 12 'black) - -6 4 -30 4 'black) - -6 4 -30 -4 'black)) - (whiskers - (overlay - (move-pinhole left-ear (- ear-x-offset) ear-y-offset) - (move-pinhole right-ear (- ear-x-offset 1) ear-y-offset) - (ellipse (+ face-width 4) (+ face-height 4) 'solid 'black) - (ellipse face-width face-height 'solid face-color) - (move-pinhole mouth (- mouth-x-offset) mouth-y-offset) - (move-pinhole mouth mouth-x-offset mouth-y-offset) - (move-pinhole eye (- eye-x-offset) eye-y-offset) - (move-pinhole eye eye-x-offset eye-y-offset) - (move-pinhole nose -1 -4)))) - - (define thinking-cat (cat 'thinking)) - (define happy-cat (cat 'happy)) - (define mad-cat (cat 'mad))] - - -@section{Drawing the World} - -@chunk[ - - - - - - - - - ] - -@chunk[ - - - - - - - ] - -There are a number of constants -that are given names to make the code -more readable. - -These first two constants give the radius -of the circles that are drawn on the board, -plus the radius of an invisible circle -that, if they were drawn on top of -the circles, would touch -each other. Accordingly, @racket[circle-spacing] -is used when computing the positions of the circles, -but the circles are drawn using @racket[circle-radius]. - -@chunk[ - (define circle-radius 20) - (define circle-spacing 22)] - -The other four constants specify the colors of the circles. - -@chunk[ - (define normal-color 'lightskyblue) - (define on-shortest-path-color 'white) - (define blocked-color 'black) - (define under-mouse-color 'black)] - -The main function for drawing a world is @racket[render-world]. -It is a fairly straightforward composition of helper functions. -First, it builds the image of a board, and then puts the cat on it. -Lastly, since the whiskers of the cat might now hang off of the edge -of the board (if the cat is on a leftmost or rightmost cell), -it trims them. This ensures that the image is always the same size -and that the pinhole is always in the upper-left corner of the window. - -@chunk[ - (define/contract (render-world w) - (-> world? image?) - (chop-whiskers - (overlay/xy (render-board (world-board w) - (world-size w) - (on-cats-path? w) - (world-mouse-posn w)) - (cell-center-x (world-cat w)) - (cell-center-y (world-cat w)) - (cond - [(equal? (world-state w) 'cat-won) happy-cat] - [(equal? (world-state w) 'cat-lost) mad-cat] - [else thinking-cat]))))] - -Trimming the cat's whiskers amounts to removing any extra -space in the image that appears to the left or above the pinhole. -For example, the @racket[rectangle] function returns -an image with a pinhole in the middle. So trimming 5x5 -rectangle results in a 3x3 rectangle with the pinhole -at (0,0). - -@chunk[ - (test (chop-whiskers (rectangle 5 5 'solid 'black)) - (put-pinhole (rectangle 3 3 'solid 'black) 0 0))] - -The function uses @racket[shrink] to remove all of the material above -and to the left of the pinhole. - -@chunk[ -(define/contract (chop-whiskers img) - (-> image? image?) - (shrink img - 0 - 0 - (- (image-width img) (pinhole-x img) 1) - (- (image-height img) (pinhole-y img) 1)))] - -The @racket[render-board] function uses @racket[for/fold] to iterate -over all of the @racket[cell]s in @racket[cs]. It starts with -an empty rectangle and, one by one, puts the cells on @racket[image]. - -@chunk[ - ;; render-board : board number (posn -> boolean) posn-or-#f -> image - (define/contract (render-board cs world-size on-cat-path? mouse) - (-> (listof cell?) - natural-number/c - (-> posn? boolean?) - (or/c #f posn?) - image?) - (for/fold ([image (nw:rectangle (world-width world-size) - (world-height world-size) - 'solid - 'white)]) - ([c cs]) - (overlay image - (render-cell c - (on-cat-path? (cell-p c)) - (and (posn? mouse) - (equal? mouse (cell-p c)))))))] - -The @racket[render-cell] function accepts a @racket[cell], -a boolean indicating if the cell is on the shortest path between -the cat and the boundary, and a second boolean indicating -if the cell is underneath the mouse. It returns an image -of the cell, with the pinhole placed in such a way that overlaying -the image on an empty image with pinhole in the upper-left corner -results in the cell being placed in the right place. - -@chunk[ - (define/contract (render-cell c on-short-path? under-mouse?) - (-> cell? boolean? boolean? image?) - (let ([x (cell-center-x (cell-p c))] - [y (cell-center-y (cell-p c))] - [main-circle - (cond - [(cell-blocked? c) - (circle circle-radius 'solid blocked-color)] - [else - (circle circle-radius 'solid normal-color)])]) - (move-pinhole - (cond - [under-mouse? - (overlay main-circle - (circle (quotient circle-radius 2) 'solid under-mouse-color))] - [on-short-path? - (overlay main-circle - (circle (quotient circle-radius 2) 'solid - on-shortest-path-color))] - [else - main-circle]) - (- x) - (- y))))] - -The @racket[world-width] function computes the width of the rendered world, -given the world's size by finding the center of the rightmost posn, -and then adding an additional radius. - -@chunk[ - (define/contract (world-width board-size) - (-> natural-number/c number?) - (let ([rightmost-posn - (make-posn (- board-size 1) (- board-size 2))]) - (+ (cell-center-x rightmost-posn) circle-radius)))] - -Similarly, the @racket[world-height] function computest the -height of the rendered world, given the world's size. - -@chunk[ - (define/contract (world-height board-size) - (-> natural-number/c number?) - (let ([bottommost-posn - (make-posn (- board-size 1) (- board-size 1))]) - (ceiling (+ (cell-center-y bottommost-posn) - circle-radius))))] - -The @racket[cell-center-x] function returns the -@tt{x} coordinate of the center of the cell specified -by @racket[p]. - -For example, the first cell in -the third row (counting from @racket[0]) is -flush with the edge of the screen, so its -center is just the radius of the circle that -is drawn. - -@chunk[ - (test (cell-center-x (make-posn 0 2)) - circle-radius)] - - -The first cell in the second row, in contrast -is offset from the third row by -@racket[circle-spacing]. - -@chunk[ - (test (cell-center-x (make-posn 0 1)) - (+ circle-spacing circle-radius))] - - -The definition of @racket[cell-center-x] -multiplies the @racket[x] coordinate of -@racket[p] by twice @racket[circle-spacing] -and then adds @racket[circle-radius] to move -over for the first circle. In addition -if the @racket[y] coordinate is odd, then -it adds @racket[circle-spacing], shifting -the entire line over. - -@chunk[ - (define/contract (cell-center-x p) - (-> posn? number?) - (let ([x (posn-x p)] - [y (posn-y p)]) - (+ circle-radius - (* x circle-spacing 2) - (if (odd? y) - circle-spacing - 0))))] - -The @racket[cell-center-y] function computes the -@racket[y] coordinate of a cell's location on -the screen. For example, the @racket[y] -coordinate of the first row is -the radius of a circle, ensuring that -the first row is flush against the top of -the screen. - -@chunk[ - (test (cell-center-y (make-posn 1 0)) - circle-radius)] - -Because the grid is hexagonal, the @racket[y] coordinates -of the rows do not have the same spacing as the @racket[x] -coordinates. In particular, they are off by -@tt{sin(pi/3)}. We approximate that by @racket[866/1000] -in order to keep the computations and test cases simple -and using exact numbers. -A more precise approximation would be -@(racket #,(sin (/ pi 3))), but it is not necessary at -the screen resolution. - -@chunk[ - (define/contract (cell-center-y p) - (-> posn? number?) - (+ circle-radius - (* (posn-y p) - circle-spacing 2 - 866/1000)))] - -@section{Handling Input} - -Input handling consists of handling two different kinds of events: key events, and mouse events, -plus various helper functions. - -@chunk[ - - - - - - - - - - ] - -@chunk[ - - - - - - - - ] - -The @racket[change] function handles keyboard input. If the input is @litchar{n} and the -game is over, then restart the game. If the input is @litchar{h} then turn on the help -and otherwise do nothing. - -@chunk[ - ;; change : world key-event -> world - (define (change w ke) - (cond - [(key=? ke "n") - (if (equal? (world-state w) 'playing) - w - (make-initial-world))] - [(key=? ke "h") - (make-world (world-board w) - (world-cat w) - (world-state w) - (world-size w) - (world-mouse-posn w) - (not (world-help? w)))] - [else w]))] - -The @racket[clack] function handles mouse input. It has three tasks and each corresponds -to a helper function: -@itemize[ -@item{block the clicked cell (@racket[block-cell/world]),} -@item{move the cat (@racket[move-cat]), and} -@item{update the black dot as the mouse moves around (@racket[update-world-posn]).}] -The helper functions are combined in the body of @racket[clack], -first checking to see if the mouse event corresponds to a -player's move (via the @racket[player-moved?] function. - -@chunk[ - (define/contract (clack world x y evt) - (-> world? integer? integer? any/c - world?) - (let ([moved-world - (cond - [(player-moved? world x y evt) - => - (λ (circle) - (move-cat - (block-cell/world circle world)))] - [else world])]) - (update-world-posn - moved-world - (and (eq? (world-state moved-world) 'playing) - (not (equal? evt "leave")) - (make-posn x y)))))] - -The @racket[player-moved?] predicate returns -a @racket[posn] indicating where the player chose -to move when the mouse event corresponds to a player move, -and returns @racket[#f]. It first checks to see if the -mouse event is a button up event and that the game -is not over, and then it just calls @racket[circle-at-point]. - -@chunk[ - (define/contract (player-moved? world x y evt) - (-> world? integer? integer? any/c - (or/c posn? #f)) - (and (equal? evt "button-up") - (equal? 'playing (world-state world)) - (circle-at-point (world-board world) x y)))] - -The @racket[circle-at-point] function returns a @racket[posn] when -the coordinate (@racket[x],@racket[y]) is inside an unblocked circle -on the given board. Instead of computing the nearest -circle to the coordinates, it simply iterates over the cells on the -board and returns the @racket[posn] of the matching cell. - -@chunk[ - (define/contract (circle-at-point board x y) - (-> (listof cell?) real? real? - (or/c posn? #f)) - (ormap (λ (cell) - (and (point-in-this-circle? (cell-p cell) x y) - (not (cell-blocked? cell)) - (cell-p cell))) - board))] - - -The @racket[point-in-this-circle?] function returns @racket[#t] -when the point (@racket[x],@racket[y]) on the screen -falls within the circle located at the @racket[posn] @racket[p]. - -This is precise about checking the circles. For example, -a point that is (14,14) away from the center of a circle -is still in the circle: - -@chunk[ - (test (point-in-this-circle? - (make-posn 1 0) - (+ (cell-center-x (make-posn 1 0)) 14) - (+ (cell-center-y (make-posn 1 0)) 14)) - #t)] - -but one that is (15,15) away is no longer in the circle, -since it crosses the boundary away from a circle of radius -20 at that point. - -@chunk[ - (test (point-in-this-circle? - (make-posn 1 0) - (+ (cell-center-x (make-posn 1 0)) 15) - (+ (cell-center-y (make-posn 1 0)) 15)) - #f)] - -The implementation of @racket[point-in-this-circle?] uses -complex numbers to represent both points on the screen -and directional vectors. In particular, the -variable @racket[center] is a complex number whose -real part is the @tt{x} coordinate of the center of -the cell at @racket[p], and its imaginary part is -@tt{y} coordinate. Similarly, @racket[mp] is bound -to a complex number corresponding to the position of -the mouse, at (@racket[x], @racket[y]). Then, the -function computes the vector between the two points -by subtracting the complex numbers from each -other and extracting the magnitude from that vector. - -@chunk[ - (define/contract (point-in-this-circle? p x y) - (-> posn? real? real? boolean?) - (let ([center (+ (cell-center-x p) - (* (sqrt -1) - (cell-center-y p)))] - [mp (+ x (* (sqrt -1) y))]) - (<= (magnitude (- center mp)) - circle-radius)))] - -In the event that @racket[player-moved?] returns a @racket[posn], -the @racket[clack] function blocks the clicked on cell using -@racket[block-cell/world], which simply calls @racket[block-cell]. - -@chunk[ - (define/contract (block-cell/world to-block w) - (-> posn? world? world?) - (make-world (block-cell to-block (world-board w)) - (world-cat w) - (world-state w) - (world-size w) - (world-mouse-posn w) - (world-help? w)))] - -The @racket[move-cat] function uses calls @racket[build-bfs-table] -to find the shortest distance from all of the cells to the boundary, -and then uses @racket[find-best-positions] to compute the -list of neighbors of the cat that have the shortest distance -to the boundary. If that list is empty, then @racket[next-cat-position] -is @racket[#f], and otherwise, it is a random element from that list. - -@chunk[ - (define/contract (move-cat world) - (-> world? world?) - (let* ([cat-position (world-cat world)] - [table (build-bfs-table world 'boundary)] - [neighbors (adjacent cat-position)] - [next-cat-positions - (find-best-positions neighbors - (map (lambda (p) (lookup-in-table table p)) - neighbors))] - [next-cat-position - (cond - [(boolean? next-cat-positions) #f] - [else - (list-ref next-cat-positions - (random (length next-cat-positions)))])]) - - ))] - -Once @racket[next-cat-position] has been computed, it is used to update -the @tt{cat} and @tt{state} fields of the world, recording the cat's new -position and whether or not the cat won. - -@chunk[ - (make-world (world-board world) - (cond - [(boolean? next-cat-position) - cat-position] - [else next-cat-position]) - (cond - [(boolean? next-cat-position) - 'cat-lost] - [(on-boundary? next-cat-position (world-size world)) - 'cat-won] - [else 'playing]) - (world-size world) - (world-mouse-posn world) - (world-help? world))] - - -The @racket[find-best-positions] function accepts -two parallel lists, one of @racket[posn]s, and one -of scores for those @racket[posn]s, and it -returns either a non-empty list of @racket[posn]s -that have tied for the best score, or it -returns @racket[#f], if the best score is -@racket['∞]. - -@chunk[ - (define/contract (find-best-positions posns scores) - (-> (cons/c posn? (listof posn?)) - (cons/c (or/c number? '∞) (listof (or/c number? '∞))) - (or/c (cons/c posn? (listof posn?)) #f)) - (let ([best-score - (foldl (lambda (x sofar) - (if (<=/f x sofar) - x - sofar)) - (first scores) - (rest scores))]) - (cond - [(symbol? best-score) #f] - [else - (map - second - (filter (lambda (x) (equal? (first x) best-score)) - (map list scores posns)))])))] - -This is a helper function that behaves like -@racket[<=], but is extended to deal properly with -@racket['∞]. - -@chunk[ - (define/contract (<=/f a b) - (-> (or/c number? '∞) - (or/c number? '∞) - boolean?) - (cond - [(equal? b '∞) #t] - [(equal? a '∞) #f] - [else (<= a b)]))] - - -Finally, to complete the mouse event handling, the @racket[update-world-posn] -function is called from @racket[clack]. It updates the @tt{mouse-down} -field of the @racket[world]. If the @racket[p] argument is a @racket[posn], -it corresponds to the location of the mouse, in graphical coordinates. -So, the function converts it to a cell position on the board and uses that. -Otherwise, when @racket[p] is @racket[#f], the @tt{mouse-down} field -is just updated to @racket[#f]. - -@chunk[ - (define/contract (update-world-posn w p) - (-> world? (or/c #f posn?) - world?) - (cond - [(posn? p) - (let ([mouse-spot - (circle-at-point (world-board w) - (posn-x p) - (posn-y p))]) - (make-world (world-board w) - (world-cat w) - (world-state w) - (world-size w) - (cond - [(equal? mouse-spot (world-cat w)) - #f] - [else - mouse-spot]) - (world-help? w)))] - [else - (make-world (world-board w) - (world-cat w) - (world-state w) - (world-size w) - #f - (world-help? w))]))] - - -@section{Tests} - -This section consists of some infrastructure for -maintaining tests, plus a pile of additional tests -for the other functions in this document. - -The @racket[test] and @racket[test/set] macros -package up their arguments into thunks and then -simply call @racket[test/proc], supplying -information about the source location of the test -case. The @racket[test/proc] function runs the tests -and reports the results. - -@chunk[ - -(define-syntax (test stx) - (syntax-case stx () - [(_ actual expected) - (with-syntax ([line (syntax-line stx)] - [pos (syntax-position stx)]) - #'(test/proc (λ () actual) - (λ () expected) - equal? - line - 'actual))])) - -(define-syntax (test/set stx) - (syntax-case stx () - [(_ actual expected) - (with-syntax ([line (syntax-line stx)] - [pos (syntax-position stx)]) - #'(test/proc (λ () actual) - (λ () expected) - (λ (x y) (same-sets? x y)) - line - 'actual))])) - -(define test-count 0) - -(define (test/proc actual-thunk expected-thunk cmp line sexp) - (set! test-count (+ test-count 1)) - (let ([actual (actual-thunk)] - [expected (expected-thunk)]) - (unless (cmp actual expected) - (error 'check-expect "test #~a~a\n ~s\n ~s\n" - test-count - (if line - (format " on line ~a failed:" line) - (format " failed: ~s" sexp)) - actual - expected)))) - - -(define (same-sets? l1 l2) - (and (andmap (lambda (e1) (member e1 l2)) l1) - (andmap (lambda (e2) (member e2 l1)) l2) - #t)) - -(test (same-sets? (list) (list)) #t) -(test (same-sets? (list) (list 1)) #f) -(test (same-sets? (list 1) (list)) #f) -(test (same-sets? (list 1 2) (list 2 1)) #t)] - -@chunk[ - (test (lookup-in-table empty (make-posn 1 2)) '∞) - (test (lookup-in-table (list (make-dist-cell (make-posn 1 2) 3)) - (make-posn 1 2)) - 3) - (test (lookup-in-table (list (make-dist-cell (make-posn 2 1) 3)) - (make-posn 1 2)) - '∞)] - -@chunk[ - (test/set (build-bfs-table - (make-world (empty-board 3) (make-posn 1 1) - 'playing 3 (make-posn 0 0) #f) - (make-posn 1 1)) - (list - (make-dist-cell 'boundary 2) - - (make-dist-cell (make-posn 1 0) 1) - (make-dist-cell (make-posn 2 0) 1) - - (make-dist-cell (make-posn 0 1) 1) - (make-dist-cell (make-posn 1 1) 0) - (make-dist-cell (make-posn 2 1) 1) - - (make-dist-cell (make-posn 1 2) 1) - (make-dist-cell (make-posn 2 2) 1))) - - (test/set (build-bfs-table - (make-world - (list - (make-cell (make-posn 0 1) #t) - (make-cell (make-posn 1 0) #t) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 0) #t) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 2 2) #t)) - (make-posn 1 1) - 'playing - 3 - (make-posn 0 0) - #f) - 'boundary) - (list - (make-dist-cell 'boundary 0))) - - (test/set (build-bfs-table - (make-world (empty-board 5) - (make-posn 2 2) - 'playing - 5 - (make-posn 0 0) - #f) - 'boundary) - (list - (make-dist-cell 'boundary 0) - - (make-dist-cell (make-posn 1 0) 1) - (make-dist-cell (make-posn 2 0) 1) - (make-dist-cell (make-posn 3 0) 1) - (make-dist-cell (make-posn 4 0) 1) - - (make-dist-cell (make-posn 0 1) 1) - (make-dist-cell (make-posn 1 1) 2) - (make-dist-cell (make-posn 2 1) 2) - (make-dist-cell (make-posn 3 1) 2) - (make-dist-cell (make-posn 4 1) 1) - - (make-dist-cell (make-posn 0 2) 1) - (make-dist-cell (make-posn 1 2) 2) - (make-dist-cell (make-posn 2 2) 3) - (make-dist-cell (make-posn 3 2) 2) - (make-dist-cell (make-posn 4 2) 1) - - (make-dist-cell (make-posn 0 3) 1) - (make-dist-cell (make-posn 1 3) 2) - (make-dist-cell (make-posn 2 3) 2) - (make-dist-cell (make-posn 3 3) 2) - (make-dist-cell (make-posn 4 3) 1) - - (make-dist-cell (make-posn 1 4) 1) - (make-dist-cell (make-posn 2 4) 1) - (make-dist-cell (make-posn 3 4) 1) - (make-dist-cell (make-posn 4 4) 1))) - - (test/set (build-bfs-table - (make-world (block-cell - (make-posn 4 2) - (empty-board 5)) - (make-posn 2 2) - 'playing - 5 - (make-posn 0 0) - #f) - 'boundary) - (list - (make-dist-cell 'boundary 0) - - (make-dist-cell (make-posn 1 0) 1) - (make-dist-cell (make-posn 2 0) 1) - (make-dist-cell (make-posn 3 0) 1) - (make-dist-cell (make-posn 4 0) 1) - - (make-dist-cell (make-posn 0 1) 1) - (make-dist-cell (make-posn 1 1) 2) - (make-dist-cell (make-posn 2 1) 2) - (make-dist-cell (make-posn 3 1) 2) - (make-dist-cell (make-posn 4 1) 1) - - (make-dist-cell (make-posn 0 2) 1) - (make-dist-cell (make-posn 1 2) 2) - (make-dist-cell (make-posn 2 2) 3) - (make-dist-cell (make-posn 3 2) 3) - - (make-dist-cell (make-posn 0 3) 1) - (make-dist-cell (make-posn 1 3) 2) - (make-dist-cell (make-posn 2 3) 2) - (make-dist-cell (make-posn 3 3) 2) - (make-dist-cell (make-posn 4 3) 1) - - (make-dist-cell (make-posn 1 4) 1) - (make-dist-cell (make-posn 2 4) 1) - (make-dist-cell (make-posn 3 4) 1) - (make-dist-cell (make-posn 4 4) 1))) - - (test/set (build-bfs-table - (make-world (empty-board 5) - (make-posn 2 2) - 'playing - 5 - (make-posn 0 0) - #f) - (make-posn 2 2)) - (list - (make-dist-cell 'boundary 3) - - (make-dist-cell (make-posn 1 0) 2) - (make-dist-cell (make-posn 2 0) 2) - (make-dist-cell (make-posn 3 0) 2) - (make-dist-cell (make-posn 4 0) 3) - - (make-dist-cell (make-posn 0 1) 2) - (make-dist-cell (make-posn 1 1) 1) - (make-dist-cell (make-posn 2 1) 1) - (make-dist-cell (make-posn 3 1) 2) - (make-dist-cell (make-posn 4 1) 3) - - (make-dist-cell (make-posn 0 2) 2) - (make-dist-cell (make-posn 1 2) 1) - (make-dist-cell (make-posn 2 2) 0) - (make-dist-cell (make-posn 3 2) 1) - (make-dist-cell (make-posn 4 2) 2) - - (make-dist-cell (make-posn 0 3) 2) - (make-dist-cell (make-posn 1 3) 1) - (make-dist-cell (make-posn 2 3) 1) - (make-dist-cell (make-posn 3 3) 2) - (make-dist-cell (make-posn 4 3) 3) - - (make-dist-cell (make-posn 1 4) 2) - (make-dist-cell (make-posn 2 4) 2) - (make-dist-cell (make-posn 3 4) 2) - (make-dist-cell (make-posn 4 4) 3))) - - (test (lookup-in-table - (build-bfs-table (make-world (empty-board 5) - (make-posn 2 2) - 'playing - 5 - (make-posn 0 0) - #f) - (make-posn 2 2)) - (make-posn 1 4)) - 2)] - -@chunk[ - (test ((neighbors (empty-world 11)) (make-posn 1 1)) - (adjacent (make-posn 1 1))) - (test ((neighbors (empty-world 11)) (make-posn 2 2)) - (adjacent (make-posn 2 2))) - (test ((neighbors (empty-world 3)) 'boundary) - (list (make-posn 0 1) - (make-posn 1 0) - (make-posn 1 2) - (make-posn 2 0) - (make-posn 2 1) - (make-posn 2 2))) - (test ((neighbors (make-world (list - (make-cell (make-posn 0 1) #f) - (make-cell (make-posn 1 0) #f) - (make-cell (make-posn 1 1) #t) - (make-cell (make-posn 1 2) #f) - (make-cell (make-posn 2 0) #f) - (make-cell (make-posn 2 1) #f) - (make-cell (make-posn 2 2) #f)) - (make-posn 1 1) - 'playing - 3 - (make-posn 0 0) - #f)) - (make-posn 1 1)) - '()) - (test ((neighbors (make-world (list - (make-cell (make-posn 0 1) #f) - (make-cell (make-posn 1 0) #f) - (make-cell (make-posn 1 1) #t) - (make-cell (make-posn 1 2) #f) - (make-cell (make-posn 2 0) #f) - (make-cell (make-posn 2 1) #f) - (make-cell (make-posn 2 2) #f)) - (make-posn 1 1) - 'playing - 3 - (make-posn 0 0) - #f)) - (make-posn 1 0)) - (list 'boundary (make-posn 2 0) (make-posn 0 1)))] - -@chunk[ - (test (adjacent (make-posn 1 1)) - (list (make-posn 1 0) - (make-posn 2 0) - (make-posn 0 1) - (make-posn 2 1) - (make-posn 1 2) - (make-posn 2 2))) - (test (adjacent (make-posn 2 2)) - (list (make-posn 1 1) - (make-posn 2 1) - (make-posn 1 2) - (make-posn 3 2) - (make-posn 1 3) - (make-posn 2 3)))] - - -@chunk[ - (test (on-boundary? (make-posn 0 1) 13) #t) - (test (on-boundary? (make-posn 1 0) 13) #t) - (test (on-boundary? (make-posn 12 1) 13) #t) - (test (on-boundary? (make-posn 1 12) 13) #t) - (test (on-boundary? (make-posn 1 1) 13) #f) - (test (on-boundary? (make-posn 10 10) 13) #f)] - - -@chunk[ - (test (in-bounds? (make-posn 0 0) 11) #f) - (test (in-bounds? (make-posn 0 1) 11) #t) - (test (in-bounds? (make-posn 1 0) 11) #t) - (test (in-bounds? (make-posn 10 10) 11) #t) - (test (in-bounds? (make-posn 0 -1) 11) #f) - (test (in-bounds? (make-posn -1 0) 11) #f) - (test (in-bounds? (make-posn 0 11) 11) #f) - (test (in-bounds? (make-posn 11 0) 11) #f) - (test (in-bounds? (make-posn 10 0) 11) #t) - (test (in-bounds? (make-posn 0 10) 11) #f)] - -@chunk[ - (test ((on-cats-path? (make-world (empty-board 5) - (make-posn 1 1) - 'playing - 5 - (make-posn 0 0) - #t)) - (make-posn 1 0)) - #t) - (test ((on-cats-path? (make-world (empty-board 5) - (make-posn 1 1) - 'playing - 5 - (make-posn 0 0) - #f)) - (make-posn 1 0)) - #f) - - (test ((on-cats-path? (make-world (empty-board 5) (make-posn 1 1) - 'playing 5 (make-posn 0 0) #t)) - (make-posn 2 1)) - #f) - (test ((on-cats-path? - (make-world (list - (make-cell (make-posn 0 1) #t) - (make-cell (make-posn 1 0) #t) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 0) #t) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 2 2) #t)) - (make-posn 1 1) - 'cat-lost - 3 - (make-posn 0 0) - #t)) - (make-posn 0 1)) - #f)] - - -@chunk[<+/f-tests> - (test (+/f '∞ '∞) '∞) - (test (+/f '∞ 1) '∞) - (test (+/f 1 '∞) '∞) - (test (+/f 1 2) 3)] - -@chunk[ - - (test - (render-world - (make-world (list (make-cell (make-posn 0 1) #f)) - (make-posn 0 1) - 'playing - 3 - (make-posn 0 0) - #f)) - (overlay - (render-board (list (make-cell (make-posn 0 1) #f)) - 3 - (lambda (x) #t) - #f) - (move-pinhole thinking-cat - (- (cell-center-x (make-posn 0 1))) - (- (cell-center-y (make-posn 0 1)))))) - - (test - (render-world - (make-world (list (make-cell (make-posn 0 1) #f)) - (make-posn 0 1) - 'cat-won - 3 - #f - #f)) - (overlay - (render-board (list (make-cell (make-posn 0 1) #f)) - 3 - (lambda (x) #t) - #f) - (move-pinhole happy-cat - (- (cell-center-x (make-posn 0 1))) - (- (cell-center-y (make-posn 0 1)))))) - - (test - (render-world - (make-world (list (make-cell (make-posn 0 1) #f)) - (make-posn 0 1) - 'cat-lost - 3 - #f - #f)) - (overlay - (render-board (list (make-cell (make-posn 0 1) #f)) - 3 - (lambda (x) #t) - #f) - (move-pinhole mad-cat - (- (cell-center-x (make-posn 0 1))) - (- (cell-center-y (make-posn 0 1)))))) - - (test - (render-world - (make-world (list - (make-cell (make-posn 0 1) #t) - (make-cell (make-posn 1 0) #t) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 0) #t) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 2 2) #t)) - (make-posn 1 1) - 'cat-lost - 3 - #f - #f)) - (overlay - (render-board (list - (make-cell (make-posn 0 1) #t) - (make-cell (make-posn 1 0) #t) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 0) #t) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 2 2) #t)) - 3 - (lambda (x) #f) - #f) - (move-pinhole mad-cat - (- (cell-center-x (make-posn 1 1))) - (- (cell-center-y (make-posn 1 1)))))) - - (test - (render-world - (make-world (list - (make-cell (make-posn 0 1) #f) - (make-cell (make-posn 1 0) #f) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 1 2) #f) - (make-cell (make-posn 2 0) #f) - (make-cell (make-posn 2 1) #f) - (make-cell (make-posn 2 2) #f)) - (make-posn 1 1) - 'cat-lost - 3 - (make-posn (cell-center-x (make-posn 0 1)) - (cell-center-y (make-posn 0 1))) - #t)) - - (overlay - (render-board (list - (make-cell (make-posn 0 1) #f) - (make-cell (make-posn 1 0) #f) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 1 2) #f) - (make-cell (make-posn 2 0) #f) - (make-cell (make-posn 2 1) #f) - (make-cell (make-posn 2 2) #f)) - 3 - (lambda (x) #t) - (make-posn (cell-center-x (make-posn 0 1)) - (cell-center-y (make-posn 0 1)))) - (move-pinhole mad-cat - (- (cell-center-x (make-posn 1 1))) - (- (cell-center-y (make-posn 1 1))))))] - -@chunk[ - (test (chop-whiskers (rectangle 6 6 'solid 'black)) - (put-pinhole (rectangle 3 3 'solid 'black) 0 0)) - - (test - (pinhole-x - (render-world - (make-world - (empty-board 3) - (make-posn 0 0) - 'playing - 3 - (make-posn 0 0) - #f))) - 0) - (test - (pinhole-x - (render-world - (make-world - (empty-board 3) - (make-posn 0 1) - 'playing - 3 - (make-posn 0 0) - #f))) - 0)] - -@chunk[ - (test (render-board (list (make-cell (make-posn 0 0) #f)) - 3 - (lambda (x) #f) - #f) - (overlay - (nw:rectangle (world-width 3) - (world-height 3) - 'solid - 'white) - (render-cell (make-cell (make-posn 0 0) #f) - #f - #f))) - - (test (render-board (list (make-cell (make-posn 0 0) #f)) - 3 - (lambda (x) #t) - #f) - (overlay - (nw:rectangle (world-width 3) - (world-height 3) - 'solid - 'white) - (render-cell (make-cell (make-posn 0 0) #f) - #t - #f))) - - - (test (render-board (list (make-cell (make-posn 0 0) #f)) - 3 - (lambda (x) #f) - #f) - (overlay - (nw:rectangle (world-width 3) - (world-height 3) - 'solid - 'white) - (render-cell (make-cell (make-posn 0 0) #f) - #f - #f))) - - (test (render-board (list (make-cell (make-posn 0 0) #f) - (make-cell (make-posn 0 1) #f)) - 3 - (lambda (x) (equal? x (make-posn 0 1))) - #f) - (overlay - (nw:rectangle (world-width 3) - (world-height 3) - 'solid - 'white) - (render-cell (make-cell (make-posn 0 0) #f) - #f - #f) - (render-cell (make-cell (make-posn 0 1) #f) - #t - #f))) - - (test (render-board (list (make-cell (make-posn 0 0) #f) - (make-cell (make-posn 0 1) #f)) - 3 - (lambda (x) (equal? x (make-posn 0 1))) - (make-posn 0 0)) - (overlay - (nw:rectangle (world-width 3) - (world-height 3) - 'solid - 'white) - (render-cell (make-cell (make-posn 0 0) #f) - #f - #t) - (render-cell (make-cell (make-posn 0 1) #f) - #t - #f)))] - - -@chunk[ - (test (render-cell (make-cell (make-posn 0 0) #f) #f #f) - (move-pinhole (circle circle-radius 'solid normal-color) - (- circle-radius) - (- circle-radius))) - (test (render-cell (make-cell (make-posn 0 0) #t) #f #f) - (move-pinhole (circle circle-radius 'solid 'black) - (- circle-radius) - (- circle-radius))) - (test (render-cell (make-cell (make-posn 0 0) #f) #t #f) - (move-pinhole (overlay (circle circle-radius 'solid normal-color) - (circle (quotient circle-radius 2) 'solid - on-shortest-path-color)) - (- circle-radius) - (- circle-radius))) - (test (render-cell (make-cell (make-posn 0 0) #f) #t #t) - (move-pinhole (overlay (circle circle-radius 'solid normal-color) - (circle (quotient circle-radius 2) 'solid - under-mouse-color)) - (- circle-radius) - (- circle-radius)))] - - -@chunk[ - (test (world-width 3) 150) - (test (world-height 3) 117)] - -@chunk[ - (test (cell-center-x (make-posn 0 0)) - circle-radius) - (test (cell-center-x (make-posn 1 0)) - (+ (* 2 circle-spacing) circle-radius)) - (test (cell-center-x (make-posn 1 1)) - (+ (* 3 circle-spacing) circle-radius))] - -@chunk[ - (test (cell-center-y (make-posn 1 1)) - (+ circle-radius (* 2 circle-spacing 866/1000)))] - - -@chunk[ - (test (clack - (make-world '() (make-posn 0 0) 'playing 3 #f #f) - 1 1 "button-down") - (make-world '() (make-posn 0 0) 'playing 3 #f #f)) - (test (clack - (make-world '() (make-posn 0 0) 'playing 3 #f #f) - 1 1 'drag) - (make-world '() (make-posn 0 0) 'playing 3 #f #f)) - (test (clack - (make-world (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 1) - 'playing - 3 - #f - #f) - (cell-center-x (make-posn 0 0)) - (cell-center-y (make-posn 0 0)) - 'move) - (make-world - (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 1) - 'playing - 3 - (make-posn 0 0) - #f)) - (test (clack - (make-world (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 1) - 'playing - 3 - #f - #f) - (cell-center-x (make-posn 0 0)) - (cell-center-y (make-posn 0 0)) - 'enter) - (make-world - (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 1) - 'playing - 3 - (make-posn 0 0) - #f)) - (test (clack - (make-world '() (make-posn 0 0) - 'playing 3 (make-posn 0 0) #f) - 1 1 'leave) - (make-world '() (make-posn 0 0) 'playing 3 #f #f)) - - (test (clack (make-world '() (make-posn 0 0) - 'playing 3 (make-posn 0 0) #f) - 10 - 10 - "button-down") - (make-world '() (make-posn 0 0) 'playing 3 #f #f)) - - (test (clack (make-world (list (make-cell (make-posn 0 0) #f) - (make-cell (make-posn 1 1) #f)) - (make-posn 1 1) - 'playing - 3 - (make-posn 0 0) - #f) - (cell-center-x (make-posn 0 0)) - (cell-center-y (make-posn 0 0)) - "button-up") - (make-world (list (make-cell (make-posn 0 0) #t) - (make-cell (make-posn 1 1) #f)) - (make-posn 1 1) - 'cat-lost - 3 - #f - #f)) - - - (test (clack (make-world '() (make-posn 0 0) - 'cat-lost 3 (make-posn 0 0) #f) - 10 - 10 - "button-up") - (make-world '() (make-posn 0 0) - 'cat-lost 3 #f #f)) - (test (clack - (make-world - (list (make-cell (make-posn 1 0) #f) - (make-cell (make-posn 2 0) #t) - (make-cell (make-posn 0 1) #t) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 2) #t)) - (make-posn 1 1) - 'playing - 3 - #f - #f) - (cell-center-x (make-posn 1 0)) - (cell-center-y (make-posn 1 0)) - "button-up") - (make-world - (list (make-cell (make-posn 1 0) #t) - (make-cell (make-posn 2 0) #t) - (make-cell (make-posn 0 1) #t) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 2) #t)) - (make-posn 1 1) - 'cat-lost - 3 - #f - #f)) - - (test (clack - (make-world - (list (make-cell (make-posn 1 0) #f) - (make-cell (make-posn 2 0) #f) - (make-cell (make-posn 0 1) #t) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 2) #t)) - (make-posn 1 1) - 'playing - 3 - #f - #f) - (cell-center-x (make-posn 1 0)) - (cell-center-y (make-posn 1 0)) - "button-up") - (make-world - (list (make-cell (make-posn 1 0) #t) - (make-cell (make-posn 2 0) #f) - (make-cell (make-posn 0 1) #t) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 2) #t)) - (make-posn 2 0) - 'cat-won - 3 - #f - #f))] - -@chunk[ - - (test (update-world-posn - (make-world (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 1) 'playing 3 #f #f) - (make-posn (cell-center-x (make-posn 0 0)) - (cell-center-y (make-posn 0 0)))) - (make-world (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 1) 'playing 3 (make-posn 0 0) #f)) - - (test (update-world-posn - (make-world (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 0) 'playing 3 #f #f) - (make-posn (cell-center-x (make-posn 0 0)) - (cell-center-y (make-posn 0 0)))) - (make-world (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 0) 'playing 3 #f #f)) - - (test (update-world-posn - (make-world (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 1) 'playing 3 (make-posn 0 0) #f) - (make-posn 0 0)) - (make-world (list (make-cell (make-posn 0 0) #f)) - (make-posn 0 1) 'playing 3 #f #f))] - -@chunk[ - (test - (move-cat - (make-world (list (make-cell (make-posn 1 0) #f) - (make-cell (make-posn 2 0) #f) - (make-cell (make-posn 3 0) #f) - (make-cell (make-posn 4 0) #f) - - (make-cell (make-posn 0 1) #f) - (make-cell (make-posn 1 1) #t) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 3 1) #f) - (make-cell (make-posn 4 1) #f) - - (make-cell (make-posn 0 2) #f) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 2) #f) - (make-cell (make-posn 3 2) #t) - (make-cell (make-posn 4 2) #f) - - (make-cell (make-posn 0 3) #f) - (make-cell (make-posn 1 3) #t) - (make-cell (make-posn 2 3) #f) - (make-cell (make-posn 3 3) #f) - (make-cell (make-posn 4 3) #f) - - (make-cell (make-posn 1 4) #f) - (make-cell (make-posn 2 4) #f) - (make-cell (make-posn 3 4) #f) - (make-cell (make-posn 4 4) #f)) - (make-posn 2 2) - 'playing - 5 - (make-posn 0 0) - #f)) - (make-world (list (make-cell (make-posn 1 0) #f) - (make-cell (make-posn 2 0) #f) - (make-cell (make-posn 3 0) #f) - (make-cell (make-posn 4 0) #f) - - (make-cell (make-posn 0 1) #f) - (make-cell (make-posn 1 1) #t) - (make-cell (make-posn 2 1) #t) - (make-cell (make-posn 3 1) #f) - (make-cell (make-posn 4 1) #f) - - (make-cell (make-posn 0 2) #f) - (make-cell (make-posn 1 2) #t) - (make-cell (make-posn 2 2) #f) - (make-cell (make-posn 3 2) #t) - (make-cell (make-posn 4 2) #f) - - (make-cell (make-posn 0 3) #f) - (make-cell (make-posn 1 3) #t) - (make-cell (make-posn 2 3) #f) - (make-cell (make-posn 3 3) #f) - (make-cell (make-posn 4 3) #f) - - (make-cell (make-posn 1 4) #f) - (make-cell (make-posn 2 4) #f) - (make-cell (make-posn 3 4) #f) - (make-cell (make-posn 4 4) #f)) - (make-posn 2 3) - 'playing - 5 - (make-posn 0 0) - #f))] - -@chunk[ - (test (change (make-world '() (make-posn 1 1) - 'playing 3 (make-posn 0 0) #f) - "h") - (make-world '() (make-posn 1 1) - 'playing 3 (make-posn 0 0) #t)) - (test (change (make-world '() (make-posn 1 1) - 'playing 3 (make-posn 0 0) #t) - "h") - (make-world '() (make-posn 1 1) - 'playing 3 (make-posn 0 0) #f)) - (test (change (make-world '() (make-posn 1 1) - 'playing 3 (make-posn 0 0) #f) - "n") - (make-world '() (make-posn 1 1) - 'playing 3 (make-posn 0 0) #f)) - (test (world-state (change (make-world '() (make-posn 1 1) - 'cat-lost 3 (make-posn 0 0) #f) - "n")) - 'playing)] - - -@chunk[ - (test (point-in-this-circle? (make-posn 0 0) - (cell-center-x (make-posn 0 0)) - (cell-center-y (make-posn 0 0))) - #t) - (test (point-in-this-circle? (make-posn 0 0) 0 0) - #f)] - -@chunk[ - (test (find-best-positions (list (make-posn 0 0)) (list 1)) - (list (make-posn 0 0))) - (test (find-best-positions (list (make-posn 0 0)) (list '∞)) - #f) - (test (find-best-positions (list (make-posn 0 0) - (make-posn 1 1)) - (list 1 2)) - (list (make-posn 0 0))) - (test (find-best-positions (list (make-posn 0 0) - (make-posn 1 1)) - (list 1 1)) - (list (make-posn 0 0) - (make-posn 1 1))) - (test (find-best-positions (list (make-posn 0 0) - (make-posn 1 1)) - (list '∞ 2)) - (list (make-posn 1 1))) - (test (find-best-positions (list (make-posn 0 0) - (make-posn 1 1)) - (list '∞ '∞)) - #f)] - -@chunk[ - (test (<=/f 1 2) #t) - (test (<=/f 2 1) #f) - (test (<=/f '∞ 1) #f) - (test (<=/f 1 '∞) #t) - (test (<=/f '∞ '∞) #t)] - -@chunk[ - (test (circle-at-point empty 0 0) #f) - (test (circle-at-point (list (make-cell (make-posn 0 0) #f)) - (cell-center-x (make-posn 0 0)) - (cell-center-y (make-posn 0 0))) - (make-posn 0 0)) - (test (circle-at-point (list (make-cell (make-posn 0 0) #f) - (make-cell (make-posn 0 1) #f)) - (cell-center-x (make-posn 0 1)) - (cell-center-y (make-posn 0 1))) - (make-posn 0 1)) - (test (circle-at-point (list (make-cell (make-posn 0 0) #f)) - 0 0) - #f)] - -@chunk[ - (test (block-cell (make-posn 1 1) - (list (make-cell (make-posn 0 0) #f) - (make-cell (make-posn 1 1) #f) - (make-cell (make-posn 2 2) #f))) - (list (make-cell (make-posn 0 0) #f) - (make-cell (make-posn 1 1) #t) - (make-cell (make-posn 2 2) #f))) - - (test (add-n-random-blocked-cells 0 (list (make-cell (make-posn 0 0) - #t)) - 3) - (list (make-cell (make-posn 0 0) #t))) - (test (add-n-random-blocked-cells 1 (list (make-cell (make-posn 0 0) - #f)) - 3) - (list (make-cell (make-posn 0 0) #t)))] - -@section{Run, program, run} - -This section contains expressions that start -the Chat Noir game going. - -First, here is a function to compute state of the world at the start of a game. - -@chunk[ - (define board-size 11) - (define (make-initial-world) - (define initial-board - (add-n-random-blocked-cells - 6 - (empty-board board-size) - board-size)) - (make-world initial-board - (make-posn (quotient board-size 2) - (quotient board-size 2)) - 'playing - board-size - #f - #f))] - -Finally, we can define and provide a function to start the game -by calling @racket[big-bang] with the appropriate arguments. - -@chunk[ - (provide main) - (define (main) - (void - (big-bang (make-initial-world) - (on-draw render-world - (world-width board-size) - (world-height board-size)) - (on-key change) - (on-mouse clack) - (name "Chat Noir"))))] diff --git a/pkgs/games/chat-noir/chat-noir-unit.rkt b/pkgs/games/chat-noir/chat-noir-unit.rkt deleted file mode 100644 index 078eb08446..0000000000 --- a/pkgs/games/chat-noir/chat-noir-unit.rkt +++ /dev/null @@ -1,71 +0,0 @@ -#lang racket/base -(require racket/unit - racket/runtime-path - racket/gui/base - racket/class - "../show-scribbling.rkt" - string-constants/string-constant - (prefix-in x: lang/htdp-intermediate-lambda) - (prefix-in y: htdp/world)) - -(provide game@) -(define orig-namespace (current-namespace)) -(define-runtime-path chat-noir "chat-noir-literate.rkt") - -(define-unit game@ - (import) - (export) - - (define sub-custodian (make-custodian)) - (define main-custodian (current-custodian)) - - (define (find-windows) - (let loop ([cust sub-custodian]) - (let o-loop ([objs (custodian-managed-list cust main-custodian)]) - (cond - [(null? objs) null] - [else - (let ([obj (car objs)]) - (cond - [(custodian? obj) - (append (loop obj) - (o-loop (cdr objs)))] - [(eventspace? obj) - (append (parameterize ([current-eventspace obj]) - (get-top-level-windows)) - (o-loop (cdr objs)))] - [else - (o-loop (cdr objs))]))])))) - - ;; a hack. - ;; this adds a help button to the world.rkt window - (thread - (λ () - (let loop ([n 0]) - (cond - [(n . < . 100) - (sleep 1/10) - (let ([fs (find-windows)]) - (cond - [(null? fs) - (loop (+ n 1))] - [else - (let ([f (car fs)] - [show-help - (show-scribbling - '(lib "games/scribblings/games.scrbl") - "chat-noir")]) - (new button% - [parent f] - [callback (λ (x y) (show-help))] - [label (string-constant help)]))]))] - [else (eprintf "never found a window\n")])))) - - - ;; start up the game - - (parameterize ([current-custodian sub-custodian]) - (parameterize ([current-namespace (make-base-namespace)]) - (namespace-attach-module orig-namespace 'racket/gui) - (namespace-attach-module orig-namespace 'racket/class) - ((dynamic-require chat-noir 'main))))) diff --git a/pkgs/games/chat-noir/chat-noir.png b/pkgs/games/chat-noir/chat-noir.png deleted file mode 100644 index cb5d82358c266d5503f317f0d170581dd70a77a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1479 zcmV;&1vvVNP)ZX>A1hL>YT%GT*3K@LRLIu!w6e;wImaSICP> z1r-dEOY>1=p2s0C&jgSUNhT>FbwrE~B5#nnWPlqzzD*0qYEtBz_xnb_!+Z>!sUVS) zv*cHDpF{))2Rp*T!tmtD6HcFs!C-*LQ!`gbv@f($iwq~h2-EZBB4Y= zLIU#h^HE$}jQIF?ZJ-$P`0-=eekNid4MRjk1dK)_Mn*=^-rkP=`}d=}yLlpCCJRogm|N(yaJvn4-6&)oLik(zka$Sreu>c z8_ddXx2ua6FRI?&Ud11vcI?=pY{52#5U8NngOoMRs$hg-YN*494=Z|6g@lAik$pi- z&olB{9w;VuVw-W;#xOPI<>jfqzCKk}Rwh4Jg=dE=N3TOU{&c96-&0grdYE3XsHjjk zZro6pFJIPkW2jLruV1bl*BxqY|5}xJFj223B_-)|`}XZqEHGJ1n(@u)M=3_J=W_}1 zC&WqKC1XSqs-C=Rv)MLORaJqCbWU*%uG=oSN8B)lnBW=nz;#z=0nBEz&dGp)0PsDG zyT;)fav?A#kUtBU7@CmRA^UE(8{4*RlQ5&czP^&nZxd-ln@KE*B+}Zx5(DK6wLX?| z6!J-y1m-#M(KBG0Bjpo{Ei)#gZjUbb5&ArTW6(w1_mNEH5HAGjXFo!?4@J;M&2Z%vw%nyCle`_ z9|`MSw>u91{YUW*=W_QZ$Off~h?4s<@kuntG7`x)u~n|MEnBu|k4lbBUv-iKaz`IJ zbVwV@Q17`3&cxiN;oGgNgyD!Zh-wF+8@w44&x>#fIL9FLlbK~{|6M3FJtc!mpJkXUm%g&t7 Z$YA+T!E~8W*DIij44$rjF6*2UngDwyD$f7_ diff --git a/pkgs/games/checkers/checkers.rkt b/pkgs/games/checkers/checkers.rkt deleted file mode 100644 index ba3003eed8..0000000000 --- a/pkgs/games/checkers/checkers.rkt +++ /dev/null @@ -1,466 +0,0 @@ -#lang racket - -(require games/gl-board-game/gl-board - racket/gui - racket/unit - sgl/gl-vectors - sgl - sgl/gl - srfi/25/array - "honu-bitmaps.rkt") -(provide game@) - -(define-struct image (width height rgba)) - -(define (argb->rgba argb) - (let* ([length (bytes-length argb)] - [rgba (make-gl-ubyte-vector length)]) - (let loop ((i 0)) - (when (< i length) - (gl-vector-set! rgba (+ i 0) (bytes-ref argb (+ i 1))) - (gl-vector-set! rgba (+ i 1) (bytes-ref argb (+ i 2))) - (gl-vector-set! rgba (+ i 2) (bytes-ref argb (+ i 3))) - (gl-vector-set! rgba (+ i 3) (bytes-ref argb (+ i 0))) - (loop (+ i 4)))) - rgba)) - -(define (bitmap->argb bmp) - (let* ([width (send bmp get-width)] - [height (send bmp get-height)] - [argb (make-bytes (* 4 width height) 255)] - [dc (make-object bitmap-dc% bmp)]) - (send dc get-argb-pixels 0 0 width height argb #f) - (when (send bmp get-loaded-mask) - (send dc set-bitmap (send bmp get-loaded-mask)) - (send dc get-argb-pixels 0 0 width height argb #t)) - (send dc set-bitmap #f) - argb)) - -(define (bitmap->image bmp) - (make-image (send bmp get-width) (send bmp get-height) - (argb->rgba (bitmap->argb bmp)))) - -#;(define light-square-img (bitmap->image (include-bitmap "light.jpg"))) -(define light-square-img (bitmap->image (make-object bitmap% (build-path (collection-file-path "light.jpg" "games" "checkers"))))) -(define light-square-color (gl-float-vector .7216 .6471 .5176 1)) -(define dark-square-img (bitmap->image (make-object bitmap% (build-path (collection-file-path "dark.jpg" "games" "checkers"))))) -(define dark-square-color (gl-float-vector .4745 .3569 .2627 1)) - -(define (color-name->vector name darken?) - (let ([color (send the-color-database find-color name)] - [adj (if darken? sqr values)]) - (unless color - (error 'color-name->vector "could not find ~e" name)) - (gl-float-vector (adj (/ (send color red) 255)) - (adj (/ (send color green) 255)) - (adj (/ (send color blue) 255)) - 1.0))) - -(define light-checker-img (bitmap->image honu-down-bitmap)) -(define dark-checker-img (bitmap->image honu-bitmap)) - -(define-struct space-info (x y light?)) -(define-struct piece-info (x y color king?) #:inspector (make-inspector)) -(define-struct moves (list forced-jump?)) - -(define-signature model^ - (move)) -(define-signature view^ - (add-space add-piece remove-piece move-piece set-turn show)) - -(define-unit view@ - (import model^) - (export view^) - - (define (get-space-draw-fn space) - (let* ([list-id (get-square-dl (space-info-light? space) - (send texture-box get-value))] - [sx (space-info-x space)] - [sy (space-info-y space)]) - (lambda () - (gl-push-matrix) - (gl-translate sx sy 0) - (gl-call-list list-id) - (gl-pop-matrix)))) - - (define (add-space space) - (send board add-space (get-space-draw-fn space) space)) - - (define (get-piece-draw-fn piece glow?) - (let ([list-id (get-checker-dl (eq? 'red (piece-info-color piece)) - (piece-info-king? piece) - (send texture-box get-value))]) - (if glow? - (lambda (for-shadow?) - (gl-material-v 'front 'emission (gl-float-vector 0.15 0.15 0.15 1.0)) - (gl-call-list ((if for-shadow? cdr car) list-id)) - (gl-material-v 'front 'emission (gl-float-vector 0.0 0.0 0.0 1.0))) - (lambda (for-shadow?) - (gl-call-list ((if for-shadow? cdr car) list-id)))))) - - (define add-piece - (case-lambda - [(piece) (add-piece piece #f)] - [(piece glow?) - (send board add-piece - (+ .5 (piece-info-x piece)) (+ .5 (piece-info-y piece)) 0.0 - (get-piece-draw-fn piece glow?) - piece)])) - - (define (move-piece from to-x to-y) - (remove-piece from) - (add-piece (make-piece-info to-x to-y - (piece-info-color from) - (piece-info-king? from)))) - - (define (remove-piece p) - (send board remove-piece p)) - - (define (internal-move old move-to) - (when (piece-info? old) (move old move-to))) - - (define (set-turn turn moves) - (let ([pieces (send board get-pieces)]) - (for-each (lambda (p) - (send board set-piece-draw p (get-piece-draw-fn p #f)) - (send board enable-piece p #f)) - pieces) - (for-each (lambda (p) - (send board set-piece-draw p (get-piece-draw-fn p #t)) - (send board enable-piece p #t)) - (moves-list moves))) - (send msg set-label - (if (null? (moves-list moves)) - (format "~a wins!" (if (eq? turn 'red) "Black" "Red")) - (format "~a's turn~a" - (if (eq? turn 'red) "Red" "Black") - (if (moves-forced-jump? moves) " - must take jump" ""))))) - - (define f (new frame% (label "Checkers") (width 800) (height 600))) - (define board - (new gl-board% (parent f) (who "Checkers") - (min-x 0.0) (max-x 8.0) (min-y 0.0) (max-y 8.0) - (lift .35) - (move internal-move))) - (define hp (new horizontal-pane% (parent f) (stretchable-height #f))) - (define msg - (new message% (label "") (parent hp) (stretchable-width #t))) - (define texture-box - (new check-box% (label "Textured") (parent hp) - (callback - (lambda (box _) - (for-each - (lambda (s) - (send board set-space-draw s (get-space-draw-fn s))) - (send board get-spaces)) - (for-each - (lambda (p) - (send board set-piece-draw p - (get-piece-draw-fn p (send board enabled? p)))) - (send board get-pieces)) - (send board refresh))))) - (new grow-box-spacer-pane% [parent hp]) - (send texture-box set-value #t) - - (define q - (send board with-gl-context (lambda () (gl-new-quadric)))) - - (define-values (dark-tex light-tex dark-checker-tex light-checker-tex) - (send board with-gl-context - (lambda () - (let ((x (glGenTextures 4))) - (values (gl-vector-ref x 0) - (gl-vector-ref x 1) - (gl-vector-ref x 2) - (gl-vector-ref x 3)))))) - - (define (init-tex tex img) - (send board with-gl-context - (lambda () - (glBindTexture GL_TEXTURE_2D tex) - (glTexParameteri GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR) - (glTexParameteri GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR) - (glTexParameteri GL_TEXTURE_2D GL_TEXTURE_WRAP_S GL_CLAMP) - (glTexParameteri GL_TEXTURE_2D GL_TEXTURE_WRAP_T GL_CLAMP) - (glTexImage2D GL_TEXTURE_2D 0 GL_RGBA - (image-width img) (image-height img) 0 - GL_RGBA GL_UNSIGNED_BYTE (image-rgba img))))) - - (init-tex light-tex light-square-img) - (init-tex dark-tex dark-square-img) - (init-tex dark-checker-tex dark-checker-img) - (init-tex light-checker-tex light-checker-img) - - (define (make-piece-dl color height tex shadow?) - (send board with-gl-context - (lambda () - (let ([list-id (gl-gen-lists 1)]) - (gl-quadric-draw-style q 'fill) - (gl-quadric-normals q 'smooth) - (gl-new-list list-id 'compile) - - (when shadow? (gl-disable 'lighting)) - (gl-material-v 'front 'specular (gl-float-vector 1.0 1.0 1.0 1.0)) - (gl-material 'front 'shininess 120.0) - - (gl-material-v 'front 'ambient-and-diffuse color) - (gl-cylinder q .35 .35 height 25 1) - (gl-push-matrix) - (gl-translate 0.0 0.0 height) - - (when (and tex (not shadow?)) - (gl-enable 'texture-2d) - (glBindTexture GL_TEXTURE_2D tex) - (glTexEnvf GL_TEXTURE_ENV GL_TEXTURE_ENV_MODE GL_DECAL) - (gl-quadric-texture q #t)) - - (gl-disk q 0.0 .35 25 1) - - (when (and tex (not shadow?)) - (gl-quadric-texture q #f) - (glTexEnvf GL_TEXTURE_ENV GL_TEXTURE_ENV_MODE GL_MODULATE) - (gl-disable 'texture-2d)) - - (gl-pop-matrix) - - (when shadow? (gl-enable 'lighting)) - (gl-end-list) - list-id)))) - - (define (make-tex-square-dl tex) - (send board with-gl-context - (lambda () - (let ([list-id (gl-gen-lists 1)]) - (gl-new-list list-id 'compile) - (gl-enable 'texture-2d) - (glBindTexture GL_TEXTURE_2D tex) - (gl-material-v 'front 'ambient-and-diffuse - (gl-float-vector 1 1 1 1)) - (gl-begin 'polygon) - (gl-tex-coord 0.0 0.0) - (gl-vertex 0.0 0.0 0.0) - (gl-tex-coord 1.0 0.0) - (gl-vertex 1.0 0.0 0.0) - (gl-tex-coord 1.0 1.0) - (gl-vertex 1.0 1.0 0.0) - (gl-tex-coord 0.0 1.0) - (gl-vertex 0.0 1.0 0.0) - (gl-end) - (gl-disable 'texture-2d) - (gl-end-list) - list-id)))) - - (define (make-square-dl color) - (send board with-gl-context - (lambda () - (let ([list-id (gl-gen-lists 1)]) - (gl-new-list list-id 'compile) - (gl-material-v 'front 'ambient-and-diffuse color) - (gl-begin 'polygon) - (gl-vertex 0.0 0.0 0.0) - (gl-vertex 1.0 0.0 0.0) - (gl-vertex 1.0 1.0 0.0) - (gl-vertex 0.0 1.0 0.0) - (gl-end) - (gl-end-list) - list-id)))) - - (define checkers - (map (lambda (x) - (let ([color (if (car x) - (color-name->vector "firebrick" #t) - (gl-float-vector 0.15 0.15 0.15 1.0))] - [height (if (cadr x) .4 .2)] - [tex (if (caddr x) - (if (car x) light-checker-tex dark-checker-tex) - #f)]) - (cons x (cons (make-piece-dl color height tex #f) - (make-piece-dl color height tex #t))))) - '((#f #f #f) - (#f #f #t) - (#f #t #f) - (#f #t #t) - (#t #f #f) - (#t #f #t) - (#t #t #f) - (#t #t #t)))) - (define (get-checker-dl light? king? tex?) - (cdr (assoc (list light? king? tex?) checkers))) - - (define dark-square (cons (make-tex-square-dl dark-tex) - (make-square-dl dark-square-color))) - (define light-square (cons (make-tex-square-dl light-tex) - (make-square-dl light-square-color))) - (define (get-square-dl light? tex?) - (let ((getter (if tex? car cdr))) - (getter (if light? light-square dark-square)))) - - (define (show) (send f show #t))) - -(define-unit model@ - (import view^) - (export model^) - - (define turn 'red) - (define board (make-array (shape 0 8 0 8) #f)) - - (let loop ([i 0] [j 0]) - (cond - [(and (< j 8) (< i 8)) - (cond - [(even? (+ i j)) - (add-space (make-space-info j i #f)) - (cond [(< i 3) - (array-set! board j i (cons 'red #f)) - (add-piece (make-piece-info j i 'red #f))] - [(> i 4) - (array-set! board j i (cons 'black #f)) - (add-piece (make-piece-info j i 'black #f))])] - [else (add-space (make-space-info j i #t))]) - (loop i (add1 j))] - [(< i 8) (loop (add1 i) 0)])) - - (define (other-color c) - (if (eq? c 'red) 'black 'red)) - - (define (single-move-ok? direction from-x from-y to-x to-y) - (and (= to-y (+ direction from-y)) - (= 1 (abs (- from-x to-x))))) - - (define (can-move? direction from-x from-y) - (and (<= 0 (+ from-y direction) 7) - (or (and (<= 0 (+ from-x 1) 7) - (not (array-ref board (+ from-x 1) (+ from-y direction)))) - (and (<= 0 (+ from-x -1) 7) - (not (array-ref board (+ from-x -1) (+ from-y direction))))))) - - (define (get-jumped-piece color direction from-x from-y to-x to-y) - (and (= to-y (+ direction direction from-y)) - (= 2 (abs (- from-x to-x))) - (let* ([jumped-x (+ from-x (/ (- to-x from-x) 2))] - [jumped-y (+ from-y direction)] - [jumped-piece (array-ref board jumped-x jumped-y)]) - (and jumped-piece - (eq? (other-color color) (car jumped-piece)) - (make-piece-info jumped-x jumped-y - (car jumped-piece) (cdr jumped-piece)))))) - - (define (can-jump? direction from-color from-x from-y) - (let ([to-y (+ direction direction from-y)] - [to-x1 (+ from-x 2)] - [to-x2 (- from-x 2)]) - (and (<= 0 to-y 7) - (or (and (<= 0 to-x1 7) - (not (array-ref board to-x1 to-y)) - (get-jumped-piece from-color direction - from-x from-y - to-x1 to-y)) - (and (<= 0 to-x2) - (not (array-ref board to-x2 to-y)) - (get-jumped-piece from-color direction - from-x from-y - to-x2 to-y)))))) - - (define (fold-board f v) - (let iloop ([i 0] [v v]) - (if (= i 8) - v - (let jloop ([j 0] [v v]) - (if (= j 8) - (iloop (add1 i) v) - (jloop (add1 j) (if (even? (+ i j)) (f i j v) v))))))) - - (define (get-jump-moves) - (let ([direction (if (eq? turn 'red) 1 -1)]) - (fold-board - (lambda (i j l) - (let ([p (array-ref board i j)]) - (if (and p - (eq? (car p) turn) - (or (can-jump? direction turn i j) - (and (cdr p) - (can-jump? (- direction) turn i j)))) - (cons (make-piece-info i j turn (cdr p)) l) - l))) - null))) - - (define (get-moves) - (let ([jumps (get-jump-moves)]) - (if (pair? jumps) - (make-moves jumps #t) - (make-moves - (let ([direction (if (eq? turn 'red) 1 -1)]) - (fold-board - (lambda (i j l) - (let ([p (array-ref board i j)]) - (if (and p - (eq? (car p) turn) - (or (can-move? direction i j) - (and (cdr p) (can-move? (- direction) i j)))) - (cons (make-piece-info i j turn (cdr p)) l) - l))) - null)) - #f)))) - - (define (move from to) - (let* ([to-x (inexact->exact (floor (gl-vector-ref to 0)))] - [to-y (inexact->exact (floor (gl-vector-ref to 1)))] - [from-x (piece-info-x from)] - [from-y (piece-info-y from)] - [from-color (piece-info-color from)] - [from-king? (piece-info-king? from)] - [to-king? (or from-king? (= to-y (if (eq? 'red from-color) 7 0)))] - [direction (if (eq? turn 'red) 1 -1)]) - (when (and (eq? turn from-color) - (<= 0 to-x 7) - (<= 0 to-y 7) - (not (array-ref board to-x to-y))) - (cond [(and (null? (get-jump-moves)) - (or (single-move-ok? direction from-x from-y to-x to-y) - (and from-king? - (single-move-ok? (- direction) from-x from-y - to-x to-y)))) - (move-piece from to-x to-y) - (set! turn (other-color from-color)) - (array-set! board to-x to-y (cons from-color to-king?)) - (array-set! board from-x from-y #f) - (when (and to-king? (not from-king?)) - (remove-piece (make-piece-info to-x to-y from-color from-king?)) - (add-piece (make-piece-info to-x to-y from-color to-king?))) - (set-turn turn (get-moves))] - [(or (get-jumped-piece from-color direction from-x from-y - to-x to-y) - (and from-king? - (get-jumped-piece from-color (- direction) from-x from-y to-x to-y))) - => - (lambda (j) - (remove-piece j) - (move-piece from to-x to-y) - (array-set! board (piece-info-x j) (piece-info-y j) #f) - (array-set! board from-x from-y #f) - (array-set! board to-x to-y (cons from-color to-king?)) - (when (and to-king? (not from-king?)) - (remove-piece (make-piece-info to-x to-y from-color from-king?)) - (add-piece (make-piece-info to-x to-y from-color to-king?))) - (cond - [(or (can-jump? direction from-color to-x to-y) - (and from-king? - (can-jump? (- direction) from-color to-x to-y))) - (set-turn turn - (make-moves (list (make-piece-info - to-x to-y from-color to-king?)) - #t))] - [else - (set! turn (other-color from-color)) - (set-turn turn (get-moves))]))])))) - - (set-turn turn (get-moves)) - ) - -(define-unit show@ - (import view^) - (export) - (show)) - -(define game@ - (compound-unit/infer (import) (export) (link view@ model@ show@))) diff --git a/pkgs/games/checkers/dark.jpg b/pkgs/games/checkers/dark.jpg deleted file mode 100644 index c8712293164a33f43b18f12d8db1b46dedf18a85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24888 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 uwSDx{pS4!s7;{!4hljI<)uj-E&uzxiKOGycf{ diff --git a/pkgs/games/checkers/honu-bitmaps.rkt b/pkgs/games/checkers/honu-bitmaps.rkt deleted file mode 100644 index 64146a8ae0..0000000000 --- a/pkgs/games/checkers/honu-bitmaps.rkt +++ /dev/null @@ -1,426 +0,0 @@ -(module honu-bitmaps racket - (require racket/math - racket/gui - racket/class) - - (provide honu-bitmap honu-down-bitmap - honu-rotation honu-down-rotation) - - (define body-path (make-object dc-path%)) - - (define (find-arc-spot x y w h end) - (let ([ce (cos end)] - [se (- (sin end))]) - (values (+ x (* w 1/2) (* w 1/2 ce)) - (+ y (* h 1/2) (* h 1/2 se))))) - - (define weighted-arc - (lambda (path x y w h start end ccw? [dx1 0.0] [dy1 0.2] [dx2 dx1] [dy2 (- dy1)]) - (let ([sweep (let loop ([s (if ccw? (- end start) (- start end))]) - (if (< s 0) - (loop (+ s (* 2 pi))) - s))]) - (if (> sweep pi) - (let ([halfway ((if ccw? + -) start (/ sweep 2))]) - (weighted-arc path x y w h start halfway ccw? dx1 dy1 dx2 dy2) - (weighted-arc path x y w h halfway end ccw? dx2 (- dy2) dx1 (- dy1))) - (let ([p (new dc-path%)]) - ;; Set p to be the arc for a unit circle, - ;; centered on the X-axis: - (let* ([x0 (cos (/ sweep 2))] - [y0 (sin (/ sweep 2))] - [x1 (/ (- 4 x0) 3)] - [y1 (/ (* (- 1 x0) (- 3 x0)) (* 3 y0))] - [x2 x1] - [y2 (- y1)] - [x3 x0] - [y3 (- y0)] - [sw (/ w 2)] - [sh (/ h 2)]) - (send p move-to x0 y0) - (send p curve-to - (+ x1 dx1) (+ y1 dy1) - (+ x2 dx2) (+ y2 dy2) - x3 y3) - ;; Rotate to match start: - (send p rotate (+ (if ccw? start end) (/ sweep 2))) - ;; Scale to match width and height: - (send p scale (/ w 2) (/ h 2)) - ;; Translate to match x and y - (send p translate (+ x (/ w 2)) (+ y (/ h 2))) - (unless ccw? - (send p reverse))) - (send path append p)))))) - - (define body-width 100) - (define body-height 110) - (define body-thickness 12) - (define angle-offset (* pi 1/10)) - - (define big-fin-curve-top-offset 0) - (define big-fin-curve-bottom-offset 4) - (define big-fin-top-angle (* pi 3/12)) - (define big-fin-bottom-angle (* pi 2/12)) - (define big-fin-size 60) - (define big-fin-right-edge (+ body-width big-fin-size)) - - (define little-fin-top-angle (- (* pi (/ 3.5 12)))) - (define little-fin-bottom-angle (- (* pi (/ 4.5 12)))) - (define little-fin-size 20) - (define little-fin-far-y (+ body-height little-fin-size)) - - (define pointy-tip-offset 8) - - (define head-angle-span (* pi 1/6)) - - (define head-cx (/ body-width 2)) - (define head-cy -8) - - (define head-width 30) - (define head-height 40) - - (define acos-arg - (* (/ 2 head-width) (- (* (cos (- (/ pi 2) (/ head-angle-span 2))) - (/ body-width 2))))) - - (define head-theta-start (- (acos acos-arg))) - (define head-theta-end (- pi head-theta-start)) - - (define-values (head-attach-left-x head-attach-left-y) - (find-arc-spot 0 0 body-width body-height (+ (/ pi 2) (/ head-angle-span 2)))) - (define-values (head-attach-right-x head-attach-right-y) - (find-arc-spot 0 0 body-width body-height (- (/ pi 2) (/ head-angle-span 2)))) - - (define right-edge-of-center-line (+ (/ body-width 2) (/ body-thickness 2))) - (define left-edge-of-center-line (- (/ body-width 2) (/ body-thickness 2))) - - (define-values (big-fin-top-x big-fin-top-y) - (find-arc-spot 0 0 body-width body-height big-fin-top-angle)) - (define-values (big-fin-bottom-x big-fin-bottom-y) - (find-arc-spot 0 0 body-width body-height big-fin-bottom-angle)) - - (define-values (left-little-fin-top-x left-little-fin-top-y) - (find-arc-spot 0 0 body-width body-height (- pi little-fin-top-angle))) - (define-values (left-little-fin-bottom-x left-little-fin-bottom-y) - (find-arc-spot 0 0 body-width body-height (- pi little-fin-bottom-angle))) - - (define-values (little-fin-top-x little-fin-top-y) - (find-arc-spot 0 0 body-width body-height little-fin-top-angle)) - (define-values (little-fin-bottom-x little-fin-bottom-y) - (find-arc-spot 0 0 body-width body-height little-fin-bottom-angle)) - - (define-values (inner-right-arc-top-x inner-right-arc-top-y) - (find-arc-spot - body-thickness - body-thickness - (- body-width body-thickness body-thickness) - (- body-height body-thickness body-thickness) - (- (* pi 1/2) angle-offset))) - - (define-values (inner-right-arc-bottom-x inner-right-arc-bottom-y) - (find-arc-spot - body-thickness - body-thickness - (- body-width body-thickness body-thickness) - (- body-height body-thickness body-thickness) - (+ (* pi 3/2) angle-offset))) - - (define (add-big-fin-top add) - (let ([fin-width (- big-fin-right-edge big-fin-top-x)]) - (add big-fin-top-x - big-fin-top-y - - (+ big-fin-top-x (* 1/3 fin-width)) - big-fin-curve-top-offset - - (+ big-fin-top-x (* 2/3 fin-width)) - big-fin-curve-top-offset - - big-fin-right-edge - (+ big-fin-bottom-y 10)))) - - (define (add-big-fin-bottom add) - (let ([fin-width (- big-fin-right-edge big-fin-bottom-x)]) - (add - (+ big-fin-bottom-x fin-width) - (+ big-fin-bottom-y 10) - - (+ big-fin-bottom-x (* 1/3 fin-width)) - (- (/ (+ big-fin-bottom-y big-fin-top-y) 2) - big-fin-curve-bottom-offset) - - (+ big-fin-bottom-x (* 1/5 fin-width)) - (/ (+ big-fin-bottom-y big-fin-top-y) 2) - - big-fin-bottom-x - big-fin-bottom-y))) - - (define (add-little-fin-top add) - (add - little-fin-top-x - little-fin-top-y - - (+ little-fin-top-x (* (- little-fin-top-x little-fin-bottom-x) 2/3)) - (+ little-fin-top-y (* (- little-fin-far-y little-fin-top-y) 1/3)) - - (+ little-fin-top-x (* (- little-fin-top-x little-fin-bottom-x) 1/3)) - (+ little-fin-top-y (* (- little-fin-far-y little-fin-top-y) 2/3)) - - little-fin-top-x - little-fin-far-y)) - - (define (add-little-fin-bottom add) - (add - little-fin-top-x - little-fin-far-y - - (+ little-fin-top-x (* (- little-fin-bottom-x little-fin-top-x) 2/3)) - (+ little-fin-top-y (* (- little-fin-far-y little-fin-top-y) 1/3)) - - (+ little-fin-top-x (* (- little-fin-bottom-x little-fin-top-x) 2/3)) - (+ little-fin-top-y (* (- little-fin-far-y little-fin-top-y) 1/3)) - - little-fin-bottom-x - little-fin-bottom-y)) - - (define (add-dot path x y) - (let ([p (new dc-path%)]) - (send p ellipse (- x 2) (- y 2) 4 4) - (send path append p))) - - (define (same-side-add x1 y1 x2 y2 x3 y3 x4 y4) - (send body-path curve-to x2 y2 x3 y3 x4 y4)) - - (define (same-side-add/dot x1 y1 x2 y2 x3 y3 x4 y4) - (send body-path line-to x1 y1) - (add-dot body-path x1 y1) - (send body-path line-to x2 y2) - (add-dot body-path x2 y2) - (send body-path line-to x3 y3) - (add-dot body-path x3 y3)) - - (define (opposite-side-add x1 y1 x2 y2 x3 y3 x4 y4) - (let ([conv (lambda (x y) (values (+ (- x) body-width) y))]) - (let-values ([(cx1 cy1) (conv x1 y1)] - [(cx2 cy2) (conv x2 y2)] - [(cx3 cy3) (conv x3 y3)]) - (send body-path curve-to cx3 cy3 cx2 cy2 cx1 cy1)))) - - (define (opposite-side-add/dot x1 y1 x2 y2 x3 y3 x4 y4) - (let ([conv (lambda (x y) (values (+ (- x) body-width) y))]) - (let-values ([(cx1 cy1) (conv x1 y1)] - [(cx2 cy2) (conv x2 y2)] - [(cx3 cy3) (conv x3 y3)]) - (send body-path line-to cx3 cy3) - (add-dot body-path cx3 cy3) - (send body-path line-to cx2 cy2) - (add-dot body-path cx2 cy2) - (send body-path line-to cx1 cy1) - (add-dot body-path cx1 cy1)))) - - (define side-perturb-y 0.0) - (define side-perturb-x -0.1) - - (weighted-arc body-path 0 0 body-width body-height big-fin-bottom-angle little-fin-top-angle #f - side-perturb-x side-perturb-y) - (add-little-fin-top same-side-add) - (add-little-fin-bottom same-side-add) - - (send body-path line-to - little-fin-bottom-x - little-fin-bottom-y) - - (send body-path line-to - (/ body-width 2) - (+ body-height pointy-tip-offset)) - - (send body-path line-to - left-little-fin-bottom-x - left-little-fin-bottom-y) - - (add-little-fin-bottom opposite-side-add) - (add-little-fin-top opposite-side-add) - - (weighted-arc body-path 0 0 body-width body-height - (- pi little-fin-top-angle) - (- pi big-fin-bottom-angle) - #f - side-perturb-x side-perturb-y) - - (add-big-fin-bottom opposite-side-add) - (add-big-fin-top opposite-side-add) - - (weighted-arc body-path 0 0 body-width body-height (- pi big-fin-top-angle) (+ (/ pi 2) (/ head-angle-span 2)) #f 0 0) - - - (weighted-arc body-path - (- head-cx (/ head-width 2)) - (- head-cy (/ head-height 2)) - head-width - head-height - head-theta-start - head-theta-end - #f 0 0 0 -0.2) - - (weighted-arc body-path 0 0 body-width body-height (- (/ pi 2) (/ head-angle-span 2)) big-fin-top-angle #f 0 0) - - (add-big-fin-top same-side-add) - (add-big-fin-bottom same-side-add) - (send body-path close) - - (define (make-right-hole-path) - (let ([right-hole-path (make-object dc-path%)]) - - (define arc/end - (lambda (x y w h start end [cc? #t] [dx1 0] [dy1 0.2] [dx2 0] [dy2 -0.2]) - (weighted-arc right-hole-path x y w h start end cc? dx1 dy1 dx2 dy2) - (find-arc-spot x y w h end))) - - (define-values (arc1x arc1y) - (arc/end body-thickness - body-thickness - (- body-width body-thickness body-thickness) - (- body-height body-thickness body-thickness) - (- (* pi 1/2) angle-offset) - (+ (* pi 3/2) angle-offset) - #f -0.2 0.2 0 -0.2)) - - (define little-arc-size (* 2 (- inner-right-arc-bottom-x right-edge-of-center-line))) - - (define-values (arc2x arc2y) - (arc/end - right-edge-of-center-line - (- inner-right-arc-bottom-y little-arc-size) - little-arc-size - little-arc-size - (* 3/2 pi) - pi - #f - 0 0 0 0)) - - (let ([arc2y (- body-height arc2y)]) - (send right-hole-path curve-to - - (+ (/ (+ (* 2 arc1x) (* 1 arc2x)) 3) -4) - (/ (+ (* 2 arc1y) (* 1 arc2y)) 3) - - (+ (/ (+ (* 1 arc1x) (* 2 arc2x)) 3) -4) - (/ (+ (* 1 arc1y) (* 2 arc2y)) 3) - - arc2x arc2y)) - - (weighted-arc right-hole-path - right-edge-of-center-line - inner-right-arc-top-y - little-arc-size - little-arc-size - pi - (* 1/2 pi) - #f - 0 0 0 0) - - (send right-hole-path close) - - right-hole-path)) - - (define (make-left-hole-path) - (let ([left-hole-path (make-right-hole-path)]) - (send left-hole-path scale -1 1) - (send left-hole-path translate - (+ right-edge-of-center-line left-edge-of-center-line) 0) - left-hole-path)) - - (define right-hole-path (make-right-hole-path)) - (define left-hole-path (make-left-hole-path)) - - (define (adjust-path path) - (send path translate (+ (- big-fin-right-edge body-width) 1) (+ (- head-cy) (/ head-height 2) 2))) - - (adjust-path body-path) - (adjust-path left-hole-path) - (adjust-path right-hole-path) - - (define pale-red-color (make-object color% 242 183 183)) - (define pale-blue-color (make-object color% 183 202 242)) - (define pale-background-color (make-object color% 209 220 248)) - - (define bitmap-size 128) - - (define (make-honu-bitmap main-color left-color right-color rot) - (let ([main-bm (make-single-bitmap main-color main-color left-color right-color rot)]) - (send main-bm set-loaded-mask (make-single-bitmap "white" "black" "black" "black" rot)) - main-bm)) - - (define (make-single-bitmap bgcolor main-color left-color right-color rot) - (let* ([bitmap (make-object bitmap% bitmap-size bitmap-size)] - [dc (make-object bitmap-dc% bitmap)] - [path (rotate-path body-path rot)] - [left-hole-path (rotate-path left-hole-path rot)] - [right-hole-path (rotate-path right-hole-path rot)] - [scale 1/2]) - (send dc set-smoothing 'aligned) - (send dc set-pen "white" 1 'transparent) - (send dc set-brush bgcolor 'solid) - (send dc draw-rectangle 0 0 bitmap-size bitmap-size) - (send dc set-scale scale scale) - - (let-values ([(x y w h) (send path get-bounding-box)]) - (let ([dx (- (/ (/ bitmap-size scale) 2) (/ w 2))] - [dy (- (/ (/ bitmap-size scale) 2) (/ h 2))]) - (send path translate (- x) (- y)) - (send left-hole-path translate (- x) (- y)) - (send right-hole-path translate (- x) (- y)) - - (send dc set-brush main-color 'solid) - (send dc set-pen main-color 1 'solid) - (send dc draw-path path dx dy) - - (send dc set-pen left-color 1 'solid) - (send dc set-brush left-color 'solid) - (send dc draw-path left-hole-path dx dy) - - (send dc set-brush right-color 'solid) - (send dc set-pen right-color 1 'solid) - (send dc draw-path right-hole-path dx dy))) - - (send dc set-bitmap #f) - bitmap)) - - (define (rotate-path path rot) - (let ([pth (new dc-path%)]) - (send pth append path) - (send pth rotate rot) - pth)) - - (define honu-rotation (* pi 1/4)) - (define honu-down-rotation (* pi (+ 1 1/4))) - - (define honu-bitmap (make-honu-bitmap (make-object color% 150 150 150) "red" "blue" honu-rotation)) - (define honu-down-bitmap (make-honu-bitmap "black" "orangered" "blue" honu-down-rotation)) -#| - (define dx 0) - (define dy 0) - (define f (new frame% (label ""))) - (define c (new canvas% - (parent f) - (paint-callback - (lambda (c dc) - (send dc draw-bitmap honu-bitmap dx dy) - (send dc draw-line - (/ bitmap-size 2) - (/ bitmap-size 2) - (+ (/ bitmap-size 2) (* 100 (cos (+ (/ pi 2) honu-down-rotation)))) - (+ (/ bitmap-size 2) (* 100 (- (sin (+ (/ pi 2) honu-down-rotation)))))))))) - (send c min-width bitmap-size) - (send c min-height bitmap-size) - (define b+ (new button% - (label "+1") - (parent f) - (callback (lambda (x y) (set! dy (+ dy 1)) (send c refresh))))) - (define b- (new button% - (label "-1") - (parent f) - (callback (lambda (x y) (set! dy (- dy 1)) (send c refresh))))) - (send f show #t) -|# - ) diff --git a/pkgs/games/checkers/info.rkt b/pkgs/games/checkers/info.rkt deleted file mode 100644 index 5fb281d081..0000000000 --- a/pkgs/games/checkers/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game "checkers.rkt") -(define game-set "Board Games") diff --git a/pkgs/games/checkers/light.jpg b/pkgs/games/checkers/light.jpg deleted file mode 100644 index 52f5a5cf4387d67cf9804ee25f1b74bce6774dd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23937 zcmeHv2Ut@{*YHhG=v_gC&;*eVp-GjFBE6_6h9p2JNlZb+RS*#sQHp|!1wlGCY^b|7 zM6pv8R4j`ki&(K>0VV(3gzBoh?)$#q^ZoC~<+=BsIdkUBnKS3k40BF~f1BS9NqM?@ zxIzdd0&)j`5dR@A*(HG<0YM%fx)2_MAQ4CsfrPLCN&~kPfaSnD1KctQ6ode8_*Oz- z1n*q{o-_!T16XH}1_@wePAfIahmPL;6p|3^@_&f&qMic}&kr_;e@JaMx zE~c^lqnKQxqa_IzRzNxQcBC@HX+$58&E!NeSwxpuS{#kR8kEi0$Oy4(M0dztLftt464WSIqDUyiQJ_!BLHHDarHX`QVU`m{!O(7;Kz=|1 zA&P}G0ECdEVALQC_dU8;$o~Q;fE`5xmx1$jz-5pa+02vcigQ@A6(g@bhgm#qXh z5!~5>Z}5U(xrWj>AUqL9j$c9zRH;MF0CIqopq=2|ju+mbXCTzzw+MgBL*J_kF!G`A zbqat-f3FCn(4Gtc9ythm!paBN&{sF~=6`D}c>#$DzREBsF9^YZ2}uZ25H%SvK=AKE zsgM{Rk0;>82m~={Q4vvTc}X!bN%@JgvhuRB6Q#uj*WgQ-`1*+u7Znwk5SNmWkdl*- zkdT8P5^};K(tn2m{|qFJ2ikH#A=DwHGy)}!;NJ&dKAK;Lum@6N5P}N`3}4_|K%y~N z9G)N|iugJc0U=RCnNkn}jX)vMNDK~($DqVaL8decttMlPar7n2sxMk$f|biIte&Bv zDereS+|-Pn(&U8G%JJ`c_?p5YDHI)CImLNn0M(^-H`jbZbKoP|n?tGRZtyzZx@vDK zUUfLP?&jlnB}dM;boK^C#HZzz9=*`|$9oI6;K;?RH<#7a-|G4x4f+g7ix$X)!(vDR z5!8%j&_IGk>arM<71?sI1ZVx4dQ3ILAF@+&oc!e}9JAM2SXcnu6jE(75MuWPs!O0b zm-c8_gzrnBJt6|X4H82M>Xe4;p*E?V=+FKpT2`@@8PD8IHm;#Wwr?j%YA-HcsMX{Y z&y+EH?X!HnztUkm30#Dh$_$N@$^tB#+N9OF?q}_+H6LlB@5y@|*z1UM_tV_!wB)YT(uzx|n@ShG z@lN=n=u2HMl3U>LG}DIo0)7Tt3 zlVPiFY+$5Lq%kN=DxDE&s~#BOs&A=oZzp1-=IrehFvrJ*$cm+NxI~}88M8c`i0b-= zhK?*&ERE>IjAQY*G`69kbAU6^XO@S501+@VG<2D*PE?QLa#_}fhKm<3HXy^~1{7u- zOvo|xVKZ4YHh0M^z*QdYzShHDlxgSSp>uwG$!O#L$-50TzSISZq3jYv4nU zq`5NLaby5`xii`HL?(kvj`gE)Yz$#~P;9XHx65HzaU?xEHSUU?78$$sA z^ZlVjlvp}g>T%qF2>-}{{3+yEFh=~h8P8YE8Xk0j)r^lh!{f_8GnpVT z57L3z{1?tx-)P#f>5R`;|AzT$NWouypZ_g$)_0mWY(wM253Guz<;~w7emK1F0O6{a zMFy+zFghcG875rG{Jn{5%(B#x8qMQyX;c{LN281^EQhV|$BT)t7T!O(8vW6#?9WSY zg3ZvP5LVpKQW1v#@?VSZHWMyAiYrJ7rbHtHurwW+9RC7sVQTg*YLbQd81%@R1l0O% zp@&waUoY~1Qm;Se{^w;r(B|J+=l@XVZ!PpkR;XXC^heqKD8nCx{h2NWU%~$g)BU=g z-?3eNW6LpSH)zt|L0edS+jgzSqQ`Al@DHo--`(Lc`=@Ldbe{(ptHDNx4?J+sCdZBZ zr#&*7ebexVhK0X5+8VIp41Aazu0MrMXMrJoWUu3gU+}*^;{K?Ku(b{f!XWF%(zsyb zX^dz;9<=_n?=j5n>pi9KH~z;p{AgG-)i<&LJ0JnZ7S?7~z?Cs(`{Rd7{qeB)r+?i4 zRnrP&kpE|9^#27m_Jg*5XJ{Os*1xrV_b=G*ziC<@88=4vDZu^*=k@<(2K;qnzhlAQ znZ>_@9-rKSbKu7#@W0uDSuE=Rg$e$9%^Wq!2l^9djZgBhm*d|u$qz089eq5&z6$L3 z8~SH|cpYS9WMBfUd1SHoqopKpzr}-p`DQUGF(Zs3$gv!nA?(}wQBm#^)~JQ+x4lom zu{SuT2MG2mMu|1NV{1KOLG}30cjXx?lx`{&-f4$5c*+%)gi9;>4 zF%&pN?L-8=+irn7H$f28B8b2Ou@(=I4*Zw=mnbaK4;6{gL4Ahc5S^ji+ejTjXbctL z5D*FlM`R$9_yC3jW`?gQJfw)o5+sSk$UgxB8D0p`QiDMqa3mPa86ogHPZ8uvj1;s_ zhJ+qzaRCm*hCnI;O2x5h)LTKCAb5fYLRbn80)i8Ql(x{HEew|u;05yZ3TWIR!-xn# z84I3p$O>Fah$-BfKa4RE;OBzp5DiIy(I3GGczy(F2x5TB?zk; z)9WxXxJKg~KpMWsT%!qwG6n^NlMG&LEO^0YhYe@)7*vjTcr*p12Fv+TxW*tQ5IX<_ z+r=^&ksvL&X3-+Jqti3E%(%g{15Dr-88ws-r?H$^I)%mwik-y)Da4q1FoHaQmH{_T zknnIG#TysNX7X5LP*@Nx5J_jy7`!-8M$E+@<_`R%00+|IWFD94Mq|*}V3dPDASeI~ zTZ6~-F_609UI^h5&)_iR4%Oiu^2B-By9`^OOE9RkR!+7Bq%gc zj+Vgn;J62P%?f8SV_}B)A@mqxLKKso=om|n9MY7eu<;<+LWl+>aa39anHS3iAR!(& zw7x+OZ{`coW64FsBb}JBO!g?{N(=eVa2w75MWESC2CQoWm&x+xaXGXh!+`TdVu2z3 z2`d)Plc)&rfYswLc%Ko*D55-}i6Ay@JeqAh zn(dGG2;d~0hsD*OyAIe@EjAdhR49IZwxFD1*fy^?5qun47 zPRAm{ab(1B8kjw7wO{>uTAN6x+G+=ryo|h9PP8bxdm@|WpEx^!k{Cm=qH4p@b@l>Q z`hbmo1U(k)W^#x$4#ig8$xje`mtYNY;%Hnl5d`ZoIMxZa+JXYs0EW?q+C%{fH^x>w z#LI`s1;cm@oeQGaEe%ZcO-=QP5p1wUyqL+30YP~rZBQed8e#3{>^jI0q-?cE1?ep| zHDIzM4UMg=tPG7z3{6b*0fjzi2?&Ww&}VQoKz#y1=pn7e^??jfp{XILkVv#q)7K{gjJ1<+kDEy65J4~wnM0!z_4NS-aA|W+;I5Ifeqt7e~nl2Q#u}3*SNZVN&`PdJZ@d%>iQ`S{1oxHb&ad* zr!??W#N*aAuCAZbz)um6Ti3X{eo6yBMLcd@ceHNX;L;}B79D~dDbDKd7nKPG&yAJ$X1mIo+9xO72 z!}9WXg`F>uhl>-D1BhUFPz))UYOVFwtd#xa2B3JJ^1qQ+5SxDLQ;;(4$~ z3pESCY4LR0VgTO+ux2bTjt*eh0V)?qBZJ*kH0%P=nS) zE_^El)vN-W)NLa;&0XN&j8q6Z+Ayj;3b4J5+GnNHCUPyw5Ul{ll9B}T9BBTOofb&fBfp5VA znhuG_%GrhHnbS}1zG`4%UK6yLAg*qQ~(u270^EDAXEeW2Azd2 zKv$qfs0F$UwL_iIGpGl85A}m%CU6LGge*c4p^DH#OhcF;ED?4H7sM=tA7Tz-AtDmN zK=2U1AXXyQA#xD;h(bgKq8f1=aTak2(S*2zc!=mmyg~FKQAjbQ9C9*p3epg1iF8EH zL_tH+QIrBo4W*B=L^+|nQFBod zC^l+2Djk)FDnji;oj}#2ZlKyx&rzSyShOsfh}K6>N4ui~(G>I|^m23tIv-t*K8mhG z-#|Y^_n-$b;uvMjG>kRI0~3OY#4N_7Ve&Agm?N0;m=;VY<~oxf#m~hv z@G1B_d?o%Az8T+z?MT{KyAi|7H-i=q!jKZ(hR>54gtg^KaSHi(spoe{eu_Eub6 ze2Tb(_*`+W_y+L`@pIx2#6L>NN*G9ZNKhq`B(_N$m1vfDDM^sjl5~_@AektcCwWM+ zLGrm2L28PWlN4EMxzskP<5IVzdZlHhjitS%E9olvDlJypsdQfH`6RhX(S*D$tsiGCbK4Q zoqTTca}@;@2bE}*O)95Ux>aRW?NsTin^aG$J|)T%9f`5TEyOxvkD9WYyBbfeQ0=-} zzq+=1pn8h>e)anrA{v$&5gMB`YBhQ^RW-ddf6=VcY||oWS!zXTZPu#S`Y=U%O7N7` zQ);F>(VnR7p`EB*rF~CFT*qE#kxr4$&8gU_mQ!Pw?H0Ez>oL3I8Yr*9l9K+Iz~J0aeO($Xa;-6kr^MH zteuuQopDAvyE&&jUw4sl33SPKdElz<8tGc)+T%uYTk3Yk9pgUJJ=^`3$7BzRM}GiKL#L*5?V8@=!QX!|Vk`PCQe z>*Kr4_YXf~zhC_7{bl{b{44$62h0e_47eMp6UYm!4U!BB4XOzG5bPYB6WktR7_uzn z${eLR^f|}o;^qd;EuGst&t+cjyv|TkXj*9NeC_!O^Diw>S`fS7WSC?aIqc9v%);P> zl?y+Uy~#!7-f)lb?cqHXC(35ZGpYl16SbRWOUt2kMc78{1SbGoN#eD+d-+S9v#*AApp(=V?xT9>!(a|R{j@_OU-Th{Y8L~OX8 zX`Z<=3!BBrYR$IKF3*w9NzCck=(X|aCgP^_P49BUaxdkXyV_P-1 zW^MhPAC=#-ZN|3!+m*Mk-Tq+*bw~3~hn@QhCKs$L=-Wl#b-U25@MzJLqP*SM-SNBs zC=M#FFR?7CC{-$5SNf%lQPy7WS6)|PQBhH;T$x#gtm0L5?+M-0xYv2_v3>gc3im7Q zUv~gHz&r4?dSP|z!I=kZ4_O}CcUbH2_9L=K(vKpJE;-s$6IIiGY|gQ!g^|YV(+|ei*M_{n|u#*Fa5sM{k#Xt4~l-D z`uqNN^Y)VuogZF(R>w34V)KObpM~ zaw@FunPSEkQ9Rp3(thY~p7J`U$T@)H;%ebW(FqI+RytVQ{OApJC3j;gZTF#bH#(+T zM!e!xc;k)tYCUoY*}R9;TRq6SpQ(oL?6moI+9zFn0m*37nN1 zUAeHlfizx_Md~Vnz;CB2Z7MztpShJQJakLPEjYq*_}s0LL$};Rq7v3@DL;1c_LGlR z9&_kR)^4phe(6s4CtYjLxzUN~`IRRww>|9}dp6dgL`N_6Jv7XAE2RLasrtkQP3%Y1}b?5)~i0xsrO%yx6_Ksb-^Z3W`szg<{a-_U3FvO^0d$Wcil>E z?@q?cJ+i-<7#Cs!1(lVj>0H`T5?QnAQB9un8|<6V+tc^HJB@wt?uy}~GY{(;Z&g9b zId%chHh7k97IkQj*3y{k(K$ztN8hQ*=3!cA9I$`ZAHQUlFT&r^^V64OpLhxCvYs+q zNqoru?X$G#O@T9H2qBWk*I%tnue%WKbT1@Jy3s@hf$CF@^;FK{1xUX6)ca&j#(`Z8 z4V}%AX6w8*MBR5@5qjS_I?#E~SylhglbbkC%r+@UJ`~p0vet`~Pf>mPZeW>gXtz_TwRG1&L;vI?e&Zo! z;}wtN^^FdyiC%JVT&a?yxYlD{;I*}n=e>TVsIGfrO;)!ur}ngNui@1r1jqVMpWbyE zSYB?+@o+M1ox-w@l^{U#d~EKvrD!a~cl5t!LadH4Q)d*w|voPDJ0B#-rs-4ZNsPs`Lp9p&1MW|w9vX6Hg`m(Z#+m$_?h z&`)AiuY0#nZStx4>baiYtjcNk5+m=)akG59N=5RbZd|{nhDS$TQ43xeu(IgGK+XI6 z7i$_N(|BU}y-VG;oJ1&o?h`MsRO|2V%$QZuq#mwM$K2kVo-;3mGEjZ;)Xv5;jlWKi zo*b8H|8ZZc%<6fI6luERoW|_*HG8JG_hwZentx?~OVF7<$Kx#wdzGucp})qzUolY0 zRX$F;bvMVm^A^A9(DT?u&U3BqXP2a4=bha(4Ih#guF)%cfDb{ApZhNaW?CMc&7iPQp8&5O4o1~(AalMLNnyXsa1;iVxfSRht;AfvY?x*CXo7AO17aKfYrt9B) zQif@G^VZho{(-yVq1W`uSvPu`x({h=b2rO75G?-b^U}m8Zj+Cb%TFuc`21yQY&b(* ztg7@R@=&0EN4G-Z&Lj;R$2)6hoNw8^aPM+yrQchBzg0k|@S01Dj(n0xRh#QZ^-Z=+ zs%p4Zn1rtm^mBf5m^x9J6RgZON>?K)Iatq}+iE{=UfZ!>?;4Pn?Y{9P$kQt-1;RMo(~Z|39tL@=F`<%op$C=eX5amFk{*ImWl_Y z7V#TSb6V2!l(X;yyT7bHn&o<}qRUFI#8OhXtLgwNqY#7GuTuT;x4E6KtujJ$37Vwr zoBrw-)+@U2G!Jv>Y|rgwdv~jLyb8{G>bjO@?P2zg4+R$lRUeNkO<#CgT(avu569f= zoRFTN*w*9MT)cA5;|m$-Zkp?U?_0VYi@_E}LHjrNRo&W;VNer)anA0luee)+>#;g= zPXXtLVZOJPfRG-`KtD!Eg@;j}&JnX40Za?B>(4~&|{`>hi4z01F zYw2uv5sTQ)s@4_P%P_2+uPNr($HLusV1Nm^mxr=?8eT~2^Q`K+{@;oef{4pY3wo2PR(G{<50)liznrv4D^Dp+4{6&{OWCQW z=%bjK9$x#QW|vM)YwL%Yh2@#K%8NcFRqmL-hSjbmS#bH}^afk!D&NQ9B_Szohbro7w@3uC}1K=-Jth zbxA8T-ChJVm)V}$eWRpRWG;STiaB+vx7pLHyN=w3{Mx6AbUC8u-ujSG3MSThmQPAM zCm)fyi4MMEo5a6)NO{wyKZ}~swJI2&oxb3jdcvKcS63IULr=TNDVMO@p1HIrue`K+K=RIl-%J(JujL1p8F%Wc ztT1k_pQA)9&zZA!?d&zrv!ulG95iLKKlW{Wk*as_Xax(W+MD>UP{B(6N$SS#(1Gil zX8PJ>*IjQuFVp|+ z(}p!wYXWkkDz310Wud8v2+fqX*kx@`y5~sjgZx%*u)d#VXOh2U;Ck{Nu1OKD0Nc-?Jz==R)!F-`{cZzNGH|5x?7kKY2 zmW-HZb*$zl==RKn;(hZ(n#=kLru(dkMiL`J7Wu_5}eY(ua!ueoJ(IpBuXAuK&xG73!z*p#w$q zsai7*g;%F-7WL)AND^cZlp82 z)I+wJ5axCH9%#$6{ypo8OwI&k+28rxw~O_L8oqk=^9X3(WbMzjGnqN^Ue;>?raa6x9{3dm3&@q z-})iMGdIWtIoo((zv1TRPcAQu^U`&&+dbKS)`^GP6}2>8HmuL{QuWzYtwOp9k$cTg zA2Ce5dEG-h)4gfid?^w7z_KKMYqipesPK@EcSjHG%2OhBuhP7!sMP*+A(Q!Gf5N^V z411-HN5|vD{KEM5y6CdL)o;4@eA!OAjJ%BYuYZ3aU~ zrw;q)y){*JvLPz-Nv~dG{Ud1Y>5*h_y+HR+JuLY~4vJ zVfMYO?giH$U^`+pA1!)&-I`lV-FX_dE{|uiGhJ%_)%MM6mCS>Vo!;-d%WXneTa|}m zVd_PrbMkwW?6MiYdciddCOqVXif7^9 zJFxSXPUQMzv(F75?awvEW>jBW>9hQLb<3rFgxj8Sxy0(c;NS_Zj&^pI$BwtF(m$I% z%HKD2VD|tc*M;a)cC%|&8$COv0b0+S?fv46vb-cQzBgAXS@jX&Lx)VD=ZdQL{(aGPEyYAhVOFYMtD@)|k9Il18b6)%|mR;rrJ?!eYZ`qJ-lP@Y$TLuq7 Gcm5xK^D5^6 diff --git a/pkgs/games/crazy8s/crazy8s.png b/pkgs/games/crazy8s/crazy8s.png deleted file mode 100644 index 79e98a5f571dfa4d69a32801513f57a7220ac653..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1169 zcmV;C1aA9@P)6jvCApP8KnjRGr6#0nxb2yH+J1}dqkLQ`!;qM?Pt1*R!6EH%*^f6{6~ z!AqzSZ`gQ&CT#)>iPae8CrZ$kN~N~qb_o_XWb~9D0mA=(u7T5etudO0ZyFwis4}^ zot@u>ZSlWD1V~KWKu1Rp`T5z)6V1&ga&kVRuWwK_`O1}Eva>(LWa?BGaJxOs%*;_$ zRl==X0|5B_er9H7dGcf$r*jrr4t+&|fXv+7Jd=}8nVxnM2m}-bgoh7X4NOix#q0I4wB(_*bPtV<$Ac0LhI)E?e?*crh@!yOt!cEkpABLxmH{L| z0E6LUoZK7X^}%USs3N_1J87wAxSxKrowIvinkU&zs;l@t`@El-?0d6r$fKB1-MvT6nA z&V5Z`;iuHs8&w&_tvz@!LPA13iHY%eJYH-zdk8Z&Hcn)umV|`$=yXw7EMtlSg4x_E zCndce^e`){go%mYm&Zj#J85lg2x5wh57XcO%knrga|`|b-vluh%K(brs;(|0DryZ@ z>ja|s;zj;DDl3cGz58uuXP>in?Hc0ZbT3~4fZM&q(9k2cZ_iS7lF#So-aRw<`Pr&A zRqhU8)vCy#yGbb|NyCmEIseHh`!9^4D&Y4AxNxBZuh*xVEXy)2Ethe*7F8L=BRY8S zb8NOLl9M;m(a}v>S~5msZ4h(nR1;lY-;72#kn8EK4 zkeZql!g#$t=H?a{8hV5zNhBu5D^{R*L~U)27z|}NopYQ%U5(NBWeC&IaEykAV>q3& zl$U?NjT@o6R}~ONk@)zyzq&M9@iG$xfw;JJY}&Me*w`2}8s%@fY9G96+`j!2X7g{P zq$Cg>?N;xDR|#2`X>af1&YkTo ax bx))))))) - (send t add-region clean-button) - (define (remap v) - ;; So that black and red suits are interleaved - (case v [(2) 1][(1) 2][else v])) - (define (card< a b) - (cond - [(= 8 (send a get-value)) - (or (not (= 8 (send b get-value))) - (< (remap (send a get-suit-id)) (remap (send b get-suit-id))))] - [(= 8 (send b get-value)) - #f] - [(= (send a get-suit-id) (send b get-suit-id)) - (< (send a get-value) (send b get-value))] - [else - (< (remap (send a get-suit-id)) (remap (send b get-suit-id)))])) - (when drag-mode? - (send t add-region - (make-button-region (+ (region-x clean-button) PASS-W MARGIN) - (region-y clean-button) - PASS-W BUTTON-HEIGHT - "Sort" (lambda () (sort-hand! card<))))) - - ;; ========== Game engine ======================================== - - ;; Callbacks communicate back to the main loop - (define msg (make-async-channel)) - - ;; Utility: Determine whether a list of cards corresponds to a - ;; valid discard; return one card or #f - (define (get-discard-card cs) - (and (= 1 (length cs)) - (let ([c (car cs)]) - (and (memq c (player-hand you)) - (or (= (send (car discards) get-value) (send c get-value)) - (= (send (car discards) get-suit-id) (send c get-suit-id)) - (= (send c get-value) 8)) - c)))) - - ;; Utility: detect a stuck game - (define (stuck-game?) - (and (null? deck) - (not (ormap (lambda (p) - (and (pair? (player-hand p)) - (ormap (lambda (c) (get-discard-card (list c))) - (player-hand p)))) - players)))) - - ;; Auto-player strategy: Choose which valid card to discard - (define (pick-to-discard cards) - (let ([non-8s (filter (lambda (c) (not (= 8 (send c get-value)))) cards)]) - (car (if (null? non-8s) cards non-8s)))) - - ;; Auto-player: take a turn - (define (play-opponent p) - (let ([suit-id (send (car discards) get-suit-id)] - [value (send (car discards) get-value)]) - ;; Which cards can we discard? - (let ([matches (filter (lambda (c) - (or (= suit-id (send c get-suit-id)) - (= value (send c get-value)) - (= 8 (send c get-value)))) - (player-hand p))]) - (if (null? matches) - ;; Can't discard, so draw or pass - (if (pair? deck) - ;; Draw - (begin - (send t card-to-front (car deck)) - (set-player-hand! p (append (deal 1) (player-hand p))) - (send t move-cards-to-region (player-hand p) (player-hand-r p)) - (play-opponent p)) - ;; Pass - (begin - (send t hilite-region (player-r p)) - (send t pause 0.25) - (send t unhilite-region (player-r p)) - #t)) - ;; Discard - (let ([c (pick-to-discard matches)]) - (set-player-hand! p (remq c (player-hand p))) - (send t flip-card c) - (send t card-to-front c) - (send t move-cards-to-region (list c) discard-region) - (send t move-cards-to-region (player-hand p) (player-hand-r p)) - (set! discards (cons c discards)) - ;; Did we just discard an 8? (And we still have cards?) - (when (and (= 8 (send (car discards) get-value)) - (pair? (player-hand p))) - ;; Pick a suit based on our hand - (let ([counts - (map (lambda (v) - (cons v - (length - (filter - (lambda (c) - (and (= v (send c get-suit-id)) - (not (= 8 (send c get-value))))) - (player-hand p))))) - '(1 2 3 4))]) - (let ([suit-id - ;; Sort based on counts, then pick the first one: - (sub1 (caar (sort counts (lambda (a b) - (> (cdr a) (cdr b))))))]) - ;; Find the clonable 8 for the chosen suit, and - ;; reset the discard - (reset-8 - (list-ref - (list 8-clubs 8-diamonds 8-hearts 8-spades) - suit-id))))) - ;; Return #f if this player has just won: - (pair? (player-hand p))))))) - - ;; Utility: disables cards for "you" - (define (allow-cards on?) - (when (pair? deck) - (send (car deck) user-can-move (and drag-mode? on?))) - (for-each (lambda (c) (send c user-can-move (and drag-mode? on?))) - (player-hand you)) - (send t set-single-click-action - (cond [(and on? (not drag-mode?)) click-card] - [drag-mode? void] - [else (lambda (x) (bell))])) - (when (null? deck) - (if on? - (send t add-region pass-button) - (send t remove-region pass-button)))) - - ;; Utility: replaces the top discard, which is an 8, with an 8 - ;; of a particular suit (possibly the same). - (define (reset-8 got-8) - (unless (eq? (send (car discards) get-suit) (send got-8 get-suit)) - (let ([c (send got-8 copy)]) - (send c user-can-move #f) - (send t flip-card (car discards)) - (send t add-cards-to-region (list c) discard-region) - (send t card-to-front c) - (send t remove-card (car discards)) - (set! discards (cons c (cdr discards))) - (send t flip-card c)))) - - ;; Sub-game: the user just discarded an 8, so pick a suit: - (define (pick-suit) - (allow-cards #f) - (send t add-region hearts-region) - (send t add-region spades-region) - (send t add-region clubs-region) - (send t add-region diamonds-region) - (send t set-status PICK-A-SUIT) - ;; Clicking one of these regions returns a clonable 8 card: - (let ([got-8 (yield msg)]) (reset-8 got-8)) - (send t remove-region hearts-region) - (send t remove-region spades-region) - (send t remove-region clubs-region) - (send t remove-region diamonds-region) - (allow-cards #t)) - - ;; Install interactive callback for discard: accept the card - ;; (from the player's hand) and release it from its home: - (set-region-interactive-callback! - discard-target-region - (lambda (in? cs) - (let ([c (get-discard-card cs)]) - (when c - (send c home-region (if in? #f (player-r you))))))) - - ;; Install final callback for discard: perform the discard - (set-region-callback! - discard-target-region - (lambda (cs) - (let ([c (get-discard-card cs)]) - (when c (you-discard c))))) - - (define (you-discard c) - (send c home-region #f) - (set! discards (cons c discards)) - (set-player-hand! you (remq c (player-hand you))) - (send t card-to-front c) - (send t move-cards-to-region (list c) discard-region) - (send c user-can-move #f) - (async-channel-put msg 'discard)) - - ;; Install interactive callback for hand: accept the card - ;; (from the deck) and release it from its home: - (set-region-interactive-callback! - (player-r you) - (lambda (in? cs) - (send (car cs) home-region (if in? (player-r you) deck-region)))) - - ;; Install final callback for hand: draw the card: - (set-region-callback! - (player-r you) - (lambda (cs) (let ([c (car cs)]) (you-draw c)))) - - (define (you-draw c) - (send t flip-card c) - (send c home-region (player-r you)) - (set-player-hand! you (let loop ([l (player-hand you)]) - (cond [(null? l) (list c)] - [(card< c (car l)) (cons c l)] - [else (cons (car l) (loop (cdr l)))]))) - (deal 1) - (unless drag-mode? - (send t stack-cards (player-hand you)) - (send t move-cards-to-region (player-hand you) (player-hand-r you))) - (async-channel-put msg 'draw)) - - (define (click-card c) - (cond [(memq c deck) (you-draw c)] - [(memq c (player-hand you)) - (if (get-discard-card (list c)) (you-discard c) (bell))] - [else (bell)])) - - (unless drag-mode? - (send t set-single-click-action click-card)) - - ;; Run a loop for multiple games - (let gloop () - - ;; Card setup: Deal the cards - (for-each (lambda (player) - (set-player-hand! player (sort (deal init-hand-size) card<)) - (send t stack-cards (player-hand player)) - (send t move-cards-to-region - (player-hand player) - (player-hand-r player))) - players) - - ;; Opponents's cards and deck initially can't be moved - (for-each (lambda (card) (send card user-can-move #f)) - (append - (apply append - (map player-hand (if drag-mode? opponents players))) - deck)) - ;; Your cards stay home: - (for-each (lambda (c) - (send c home-region (player-r you)) - (send c user-can-move drag-mode?)) - (player-hand you)) - - ;; Initial discard - ;; If it's an eight, then shuffle and try again - (let loop () - (when (= 8 (send (car deck) get-value)) - (set! deck (shuffle-list deck 1)) - (send t stack-cards deck) - (loop))) - (set! discards (deal 1)) - (send t flip-cards discards) - (send t move-cards-to-region discards discard-region) - - ;; Show your cards - (send t flip-cards (player-hand you)) - - ;; Run a single-game loop - (let loop () - ;; Ready deck and/or pass button: - (when (pair? deck) - (when drag-mode? (send (car deck) user-can-move #t)) - (send (car deck) home-region deck-region)) - (when (null? deck) (send t add-region pass-button)) - ;; Tell the player what to do: - (send t set-status - (format YOUR-TURN-MESSAGE - (let ([v (send (car discards) get-value)] - [suit (case (send (car discards) get-suit) - [(hearts) "heart"] - [(spades) "spade"] - [(diamonds) "diamond"] - [(clubs) "club"])]) - (if (= v 8) - suit - (format "~a, ~a," - suit - (case v - [(1) "ace"] - [(11) "jack"] - [(12) "queen"] - [(13) "king"] - [else v])))) - (if (null? deck) "pass" "draw"))) - ;; What for something to happen: - (let ([what (yield msg)]) - ;; Discarded a crazy 8? (And not as our last card?) - (when (and (eq? what 'discard) - (= 8 (send (car discards) get-value)) - (pair? (player-hand you))) - ;; Yes, so pick suit before continuing - (pick-suit)) - ;; What did we do? - (case what - [(draw) - ;; Go again - (loop)] - [(discard pass) - ;; Hide pass button... - (when (null? deck) (send t remove-region pass-button)) - ;; ... and run opponents - (send t set-status "Opponent's turn...") - (unless (null? (player-hand you)) - (let oloop ([l opponents]) - (if (null? l) - ;; Check for a stuck game here: - (unless (stuck-game?) (loop)) - (when (play-opponent (car l)) (oloop (cdr l))))))]))) - - ;; Game over: disable player: - (allow-cards #f) - - ;; Report result: - (send t set-status (cond [(null? (player-hand you)) GAME-OVER-YOU-WIN] - [(stuck-game?) GAME-OVER-STUCK] - [else GAME-OVER])) - - (let ([button - (make-button-region - (+ (region-x discard-region) cw (* 2 MARGIN)) - (+ (region-y discard-region) (/ (- ch LABEL-H) 2)) - NEW-GAME-W LABEL-H - NEW-GAME (lambda () (async-channel-put msg 'new-game)))]) - (send t add-region button) - (yield msg) - (send t remove-region button)) - - (let ([all (send t all-cards)]) - ;; Gather up cards, with animation - (let ([flip (filter (lambda (c) (not (send c face-down?))) all)]) - (send t flip-cards flip) - (send t move-cards-to-region all deck-region)) - ;; Reset all cards (no animation) - (send t begin-card-sequence) - (send t remove-cards all) - (send t add-cards-to-region all-cards deck-region) - (set! deck (shuffle-list all-cards 7)) - (for-each (lambda (c) (unless (send c face-down?) (send c flip))) deck) - (send t stack-cards deck) - (send t end-card-sequence)) - - ;; Re-enable player: - (allow-cards #t) - - (gloop)))) diff --git a/pkgs/games/crazy8s/images/club.png b/pkgs/games/crazy8s/images/club.png deleted file mode 100644 index f9174bbf84c6046948c2395ccd041d0fe780c5ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmV;F0c-w=P)ICY41<;bJ2xG^x_65rRk>OTkWiL9no~^Up}Nb*g}!53~@pu@jLr z0XrAsx@ZyCVrJO~d)K*Pmo)RiEoScFd}r?57dbgO|A_+DafTXh@dGo1ln$YcdYATy zxj~7S0@6miN{h=xAwoR+LjNS*4MKdEA?7|JUuHhwukcXs4MN&rDW1M#8XT$4Zh+*`ZjC+0Xsq?i#0h^=5Ml)TrbK7@J6vMOL7KP4maR&pd>U^-C3RPN6KnXQp z^f4RR;1U+l84){-sTgofs;8x`+$Z#6>pS2wwo#n`hI6zlsP|W?J`xs9s%_$?C?F=) zZNe^97YRKSTB}kN6tlQaFdhl5VCXAoEErZX8xc2w;~2q|4Wt@t==)@RUSun!f}v5U zck?^{j?h96u|lbb#3crC_r`aDkrZeS81{u)!ZSv3mMT({0fuGaK)Aq0jzI1Wgz(YN nuTR$GTzmY++`oCt{F~qxnI=8FgR_&600000NkvXXu0mjfLxHR; diff --git a/pkgs/games/crazy8s/images/heart.png b/pkgs/games/crazy8s/images/heart.png deleted file mode 100644 index dcf7880b567dd43eeeae7f8bece86299a50d5f0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmV;e0aE^nP)TEsS~*1u=*z+>0VRJG&dg4dFh`?9Mqn|C!yHGgGN)j9MDRZGxNN#)2oXgClHW zG$rQ^wv(JKjKoYUk$pUkm6ZOsSWBK~vHT={hcT>|0k`59-6^pX^r8)i=t#*qz(6vH zRP&Gq0#JC4NpuFF(1#cJQ54*n5rZZ1HPTfEd=@cnkHq0;D3CSc16<@V59t`yGT>kM z@CV>kfrUkUJN4ijo)v_i;$_mNDz-SPm@f#0xh!ZNFucdd0?=g-#U-fNr>?65pV1%5 z`-0cFjv3}XBre_8o78w{@!_zi~ey{JJ}tC250YF-v7nx1*dn|-EDv?T?c`(4)Um?Bx0x;jOSRos8!CI;{1f9D6JDWMn)tSIsT O0000drawer) - - (define-struct door-game (board)) - - (define light-blue (gl-float-vector 0.5 0.5 1.0 0.5)) - (define light-red (gl-float-vector 1.0 0.5 0.5 0.5)) - - (define-struct room (data players things) #:mutable) - (define-struct wall (drawer) #:mutable) - (define-struct player (data drawer i j) #:mutable) - (define-struct thing (data drawer i j heads-up?) #:mutable) - - (define (bitmap->drawer bm game) - (let*-values ([(bm mask) - (cond - [(bm . is-a? . bitmap%) - (values bm (send bm get-loaded-mask))] - [(bm . is-a? . image-snip%) - (values (send bm get-bitmap) - (send bm get-bitmap-mask))] - [else (raise-type-error - 'bitmap->drawer - "bitmap% or image-snip% object" - bm)])] - [(dl) (bitmap->gl-list bm - #:with-gl (lambda (f) - (send game with-gl-context f)) - #:mask mask)]) - (lambda () - (gl-call-list dl)))) - - (define door-game% - (class object% - (init [(canvas-parent parent)] x-rooms y-rooms - [move-callback void]) - - (define rooms (build-vector - x-rooms - (lambda (i) - (build-vector - y-rooms - (lambda (j) - (make-room #f null null)))))) - - (define walls (build-vector - (add1 (* 2 (add1 x-rooms))) - (lambda (i) - (build-vector - (add1 (* 2 (add1 y-rooms))) - (lambda (j) - (make-wall #f)))))) - - (define board - (new gl-board% - (parent canvas-parent) - (min-x -1) (max-x (add1 x-rooms)) - (min-y -1) (max-y (add1 y-rooms)) - (lift 0.15) - (move (lambda (piece to) - (let ((to-i (inexact->exact (floor (gl-vector-ref to 0)))) - (to-j (inexact->exact (floor (gl-vector-ref to 1))))) - (when (and (< -1 to-i x-rooms) - (< -1 to-j y-rooms)) - (let ([room (vector-ref (vector-ref rooms to-i) to-j)]) - (move-callback (player-data piece) (room-data room) to-i to-j)))))) - (phi 30))) - - (define/private (make-wall-dl dir door?) - (send board with-gl-context - (lambda () - (let ((list-id (gl-gen-lists 1))) - (gl-new-list list-id 'compile) - (let ([one-wall - (lambda (color) - (gl-material-v 'front-and-back 'ambient-and-diffuse color) - (when door? - (gl-begin 'polygon) - (gl-vertex 0.0 0.0 0.0) - (gl-vertex 0.33 0.0 0.0) - (gl-vertex 0.33 0.0 0.35) - (gl-vertex 0.0 0.0 0.35) - (gl-end) - (gl-begin 'polygon) - (gl-vertex 0.66 0.0 0.0) - (gl-vertex 1.0 0.0 0.0) - (gl-vertex 1.0 0.0 0.35) - (gl-vertex 0.66 0.0 0.35) - (gl-end)) - (gl-begin 'polygon) - (gl-vertex 0.0 0.0 (if door? 0.35 0.0)) - (gl-vertex 1.0 0.0 (if door? 0.35 0.0)) - (gl-vertex 1.0 0.0 0.52) - (gl-vertex 0.0 0.0 0.52) - (gl-end))]) - (case dir - [(s) - (one-wall light-blue)] - [(n) - (gl-push-matrix) - (gl-translate 0.0 1.0 0.0) - (one-wall light-blue) - (gl-pop-matrix)] - [(w) - (gl-push-matrix) - (gl-rotate 90 0 0 1) - (one-wall light-red) - (gl-pop-matrix)] - [(e) - (gl-push-matrix) - (gl-rotate 90 0 0 1) - (gl-translate 0.0 -1.0 0.0) - (one-wall light-red) - (gl-pop-matrix)]) - (gl-end-list) - list-id))))) - - (define cache (make-hash)) - (define/private (make-wall-dl/cached dir door?) - (let ([key (list dir door?)]) - (hash-ref cache key - (lambda () - (let ([dl (make-wall-dl dir door?)]) - (hash-set! cache key dl) - dl))))) - - (define/private (make-wall-draw dx dy dir door) - (let ([space-dl (make-wall-dl/cached dir - (and door #t))]) - (lambda () - (gl-enable 'blend) - (gl-blend-func 'src-alpha 'one-minus-src-alpha) - (gl-push-matrix) - (gl-translate dx dy 0.0) - (gl-call-list space-dl) - (gl-pop-matrix) - (gl-blend-func 'one 'one) - (gl-disable 'blend) - (when door - (let ([a-door - (lambda (ddx ddy rot) - (gl-push-matrix) - (gl-translate dx dy 0.0) - (gl-translate ddx ddy 0.0) - (gl-rotate rot 0 0 1) - (gl-translate 0.33 0.0 0.35) - (gl-scale 0.33 1 0.35) - (gl-rotate -90 1 0 0) - (door) - (gl-pop-matrix))]) - (case dir - [(s) (a-door 0 0 0)] - [(e) (a-door 1.0 0 90)] - [(n) (a-door 0 1.0 0)] - [(w) (a-door 0 0 90)])))))) - - ;; Switch lighting to ambient - (send board with-gl-context - (lambda () - (gl-disable 'light0) - (gl-light-model-v 'light-model-ambient (gl-float-vector 1.0 1.0 1.0 0.0)))) - - (define/public (with-gl-context f) - (send board with-gl-context f)) - - (define/public (set-wall-image loc wall? door-image) - (let-values ([(ri rj dir) - (cond - [(and (list? loc) - (= 3 (length loc))) - (apply values loc)] - [(and (list? loc) - (= 2 (length loc))) - (let ([i (car loc)] - [j (cadr loc)]) - (if (= 1 (+ (if (integer? i) 1 0) - (if (integer? j) 1 0))) - (values (if (integer? i) - i - (add1 (floor (inexact->exact i)))) - (if (integer? j) - j - (add1 (floor (inexact->exact j)))) - (if (integer? i) 's 'w)) - (values 0 0 'bad)))] - [else (values 0 0 'bad)])]) - (case dir - [(n s e w) 'ok] - [else (raise-type-error - 'set-wall - "location" - loc)]) - (let* ([i (+ (* 2 ri) (case dir - [(w) 0] - [(n s) 1] - [(e) 2]))] - [j (+ (* 2 rj) (case dir - [(n) 2] - [(w e) 1] - [(s) 0]))] - [wall (vector-ref (vector-ref walls i) j)] - [door-image (if (or (door-image . is-a? . bitmap%) - (door-image . is-a? . image-snip%)) - (bitmap->drawer door-image this) - door-image)] - [drawer (if wall? - (make-wall-draw ri rj dir - (if (null? door-image) - void - door-image)) - void)]) - (if (wall-drawer wall) - (send board set-space-draw wall drawer) - (send board add-space drawer wall)) - (set-wall-drawer! wall drawer)) - (send board refresh))) - - (define/public (set-room-data loc data) - (let ([room (vector-ref (vector-ref rooms (car loc)) (cadr loc))]) - (set-room-data! room data))) - - (public [new-player make-player-icon]) - (define (new-player drawer data) - (make-player data drawer #f #f)) - - (define/public (move-player-icon player loc) - (let ([i (and loc (car loc))] - [j (and loc (cadr loc))]) - (let ([from-room (and (player-i player) - (vector-ref (vector-ref rooms (player-i player)) (player-j player)))] - [to-room (and loc (vector-ref (vector-ref rooms i) j))]) - (when from-room - (set-room-players! from-room (remq player (room-players from-room)))) - (when to-room - (set-room-players! to-room (cons player (room-players to-room)))) - (set-player-i! player i) - (set-player-j! player j) - (when from-room - (send board remove-piece player)) - (when to-room - (send board add-piece (+ i 0.5) (+ j 0.5) 0.0 (player-drawer player) player)) - (send board refresh)))) - - (public [new-thing make-thing-icon]) - (define (new-thing drawer data) - (make-thing data drawer #f #f #f)) - - (define/public (move-thing-icon thing loc) - (let ([i (and (pair? loc) (car loc))] - [j (and (pair? loc) (cadr loc))] - [hu? (eq? loc 'heads-up)]) - (let ([from-hu? (thing-heads-up? thing)] - [from-room (and (thing-i thing) - (vector-ref (vector-ref rooms (thing-i thing)) (thing-j thing)))] - [to-room (and i (vector-ref (vector-ref rooms i) j))]) - (when from-room - (set-room-things! from-room (remq thing (room-things from-room)))) - (when to-room - (set-room-things! to-room (cons thing (room-things to-room)))) - (set-thing-i! thing i) - (set-thing-j! thing j) - (set-thing-heads-up?! thing hu?) - (when from-room - (send board remove-piece thing)) - (when from-hu? - (send board remove-heads-up thing)) - (when to-room - (send board add-piece (+ i 0.5) (+ j 0.5) 0.0 (thing-drawer thing) thing) - (send board enable-piece thing #f)) - (when hu? - (send board add-heads-up 1.0 1.0 (thing-drawer thing) thing)) - (send board refresh)))) - - (super-new)))) diff --git a/pkgs/games/doors/graph.rkt b/pkgs/games/doors/graph.rkt deleted file mode 100644 index 13a3bc6fa7..0000000000 --- a/pkgs/games/doors/graph.rkt +++ /dev/null @@ -1,148 +0,0 @@ -(module graph racket - (require racket/class - "private/utils.rkt" - (for-syntax "private/utils.rkt")) - - - (provide node% edge% - grid-graph) - - (define node% - (class object% - (define edges null) - (define loc #f) - (define/public (set-location l) - (set! loc l)) - (define/public (get-location) - loc) - (define/public (connect e) - (set! edges (cons e edges))) - (define/public (get-edges) - edges) - (define/public (edge-to n) - (ormap (lambda (e) - (and (memq n (send e get-nodes)) - e)) - edges)) - (super-new))) - - (define edge% - (class object% - (define nodes null) - (define loc #f) - (define/public (set-location l) - (set! loc l)) - (define/public (get-location) - loc) - (define/public (connect n) - (set! nodes (cons n nodes))) - (define/public (get-nodes) - nodes) - (super-new))) - - (define (check <%> v) - (unless (v . is-a? . <%>) - (error 'maze - "not an instance of ~a: ~e" - <%> - v)) - v) - - (define (connect-all! connect-key layout) - (define-member-name connect connect-key) - (let loop ([layout layout] - [j (sub1 (quotient (length layout) 2))]) - (unless (null? (cdr layout)) - (let loop ([edges (car layout)] - [nodes (cadr layout)] - [next-edges (caddr layout)] - [i 0]) - (unless (null? (cdr nodes)) - (let ([n (car edges)] - [s (car next-edges)] - [e (caddr nodes)] - [w (car nodes)] - [r (cadr nodes)]) - (send r set-location (list i j)) - (send n set-location (list i (+ j 0.5))) - (send s set-location (list i (- j 0.5))) - (send e set-location (list (+ i 0.5) j)) - (send w set-location (list (- i 0.5) j)) - (send r connect n) - (send r connect s) - (send r connect e) - (send r connect w) - (send n connect r) - (send s connect r) - (send e connect r) - (send w connect r)) - (loop (cdr edges) - (cddr nodes) - (cdr next-edges) - (add1 i)))) - (loop (cddr layout) (sub1 j))))) - - (define-syntax grid-graph - (lambda (stx) - (syntax-case stx () - [(maze edge<%> node<%> (items ...) ...) - (let ([itemss (syntax->list #'((items ...) ...))]) - (unless (odd? (length itemss)) - (raise-syntax-error - #f - "need an odd number of rows" - stx)) - (let-values ([(edgess nodess) (alternates itemss)]) - (when (null? nodess) - (raise-syntax-error - #f - "no nodes supplied" - stx)) - (let ([first-edges-len - (length (syntax->list (car edgess)))]) - (for-each (lambda (edges) - (let ([len (length (syntax->list edges))]) - (unless (= len first-edges-len) - (raise-syntax-error - #f - "N/S edges sequence length doesn't match first edges sequence" - stx - edges)))) - edgess) - (for-each (lambda (nodes) - (let ([len (length (syntax->list nodes))]) - (unless (= len (add1 (* 2 first-edges-len))) - (raise-syntax-error - #f - "nodes with E/W edges sequence length doesn't match first edges sequence" - stx - nodes)))) - nodess)) - (with-syntax ([((items ...) ...) - (interleave - (map (lambda (edges) - (map (lambda (edge) - (quasisyntax/loc edge - (instance edge<%> #,edge))) - (syntax->list edges))) - edgess) - (map (lambda (nodes) - (let-values ([(edges nodes) - (alternates (syntax->list nodes))]) - (interleave - (map (lambda (edge) - (quasisyntax/loc edge - (instance edge<%> #,edge))) - edges) - (map (lambda (node) - (quasisyntax/loc node - (instance node<%> #,node))) - nodes)))) - nodess))]) - (syntax/loc stx - (connect-all! (member-name-key connect) (list (list items ...) ...))))))]))) - - (define-syntax instance - (syntax-rules () - [(instance <%> v) - (check <%> v)]))) diff --git a/pkgs/games/doors/private/utils.rkt b/pkgs/games/doors/private/utils.rkt deleted file mode 100644 index 1d0245cb4d..0000000000 --- a/pkgs/games/doors/private/utils.rkt +++ /dev/null @@ -1,21 +0,0 @@ - -(module utils racket - (provide alternates - interleave) - - (define (alternates l) - (let loop ([l l]) - (cond - [(null? l) (values null null)] - [(null? (cdr l)) (values l null)] - [else - (let-values ([(as bs) (loop (cddr l))]) - (values (cons (car l) as) - (cons (cadr l) bs)))]))) - - (define (interleave l1 l2) - (cond - [(null? l2) l1] - [else (list* (car l1) - (car l2) - (interleave (cdr l1) (cdr l2)))]))) diff --git a/pkgs/games/doors/utils.rkt b/pkgs/games/doors/utils.rkt deleted file mode 100644 index a4a3420551..0000000000 --- a/pkgs/games/doors/utils.rkt +++ /dev/null @@ -1,194 +0,0 @@ -(module utils racket - (require sgl/gl-vectors - sgl - racket/math - racket/gui - racket/class - "doors.rkt") - - (provide door-bm - magic-door-bm - locked-door-bm - - door-drawer - locked-door-drawer - magic-door-drawer - open-door-drawer - - make-i-player-icon - make-key-thing-icon) - - (define light-black (gl-float-vector 0.0 0.0 0.0 0.25)) - (define green (gl-float-vector 0.0 1.0 0.0 1.0)) - (define yellow (gl-float-vector 1.0 1.0 0.0 1.0)) - (define black (gl-float-vector 0.0 0.0 0.0 1.0)) - (define dark-gray (gl-float-vector 0.2 0.2 0.2 1.0)) - - (define door-bm - (make-object bitmap% - (build-path (collection-path "games" "checkers") "light.jpg"))) - - (define (door-drawer game) - (bitmap->drawer door-bm game)) - - (define (open-door-drawer game) - void) - - (define (add-to-door draw) - (let* ([w (send door-bm get-width)] - [h (send door-bm get-height)] - [bm (make-object bitmap% w h)] - [dc (make-object bitmap-dc% bm)]) - (send dc draw-bitmap door-bm 0 0) - (draw dc w h) - (send dc set-bitmap #f) - bm)) - - (define magic-door-bm - (add-to-door - (lambda (dc w h) - (send dc set-font (send the-font-list find-or-create-font 32 'default)) - (send dc set-text-foreground (make-object color% "yellow")) - (let-values ([(sw sh sd sa) (send dc get-text-extent "\u2605")]) - (send dc draw-text "\u2605" (/ (- w sw) 2) (/ (- h sh) 2)))))) - - (define (magic-door-drawer game) - (bitmap->drawer magic-door-bm game)) - - (define locked-door-bm - (add-to-door - (lambda (dc w h) - (send dc set-brush (send the-brush-list find-or-create-brush "black" 'solid)) - (send dc set-pen (send the-pen-list find-or-create-pen "black" 1 'solid)) - (send dc draw-ellipse (/ (- w (* 0.2 h)) 2) (* 0.2 h) - (* 0.2 h) (* 0.2 h)) - (send dc draw-rectangle (* w 0.45) (* 0.3 h) - (* 0.1 w) (* 0.3 h))))) - - (define (locked-door-drawer game) - (bitmap->drawer locked-door-bm game)) - - (define (q game) - (send game with-gl-context - (lambda () - (let ([q (gl-new-quadric)]) - (gl-quadric-draw-style q 'fill) - (gl-quadric-normals q 'smooth) - q)))) - - (define (sphere-dl game color) - (send game with-gl-context - (let ([q (q game)]) - (lambda () - (let ((list-id (gl-gen-lists 1))) - (gl-new-list list-id 'compile) - (gl-material-v 'front-and-back 'ambient-and-diffuse color) - (gl-sphere q 0.5 20 20) - (gl-end-list) - list-id))))) - - (define (make-cylinder-dl game color disk?) - (send game with-gl-context - (lambda () - (let ((list-id (gl-gen-lists 1)) - (q (q game))) - (gl-new-list list-id 'compile) - (gl-material-v 'front-and-back 'ambient-and-diffuse color) - (gl-cylinder q 0.5 0.5 1.0 20 1) - (when disk? - (gl-push-matrix) - (gl-translate 0 0 1.0) - (gl-disk q 0.0 0.5 25 1) - (gl-pop-matrix)) - (gl-end-list) - list-id)))) - - (define (make-i-player-icon game - #:optional - [data #f] - #:key - [color green] ) - (let ([shadow-cylinder-dl (make-cylinder-dl game dark-gray #t)] - [cylinder-dl (make-cylinder-dl game color #f)] - [sphere-dl (sphere-dl game color)]) - (send game make-player-icon - (lambda (just-shadow?) - (with-light - just-shadow? - (lambda () - (unless just-shadow? - (gl-push-matrix) - (gl-translate 0.0 0.0 0.30) - (gl-scale 0.25 0.25 0.25) - (gl-scale 0.5 0.5 0.5) - (gl-call-list sphere-dl) - (gl-pop-matrix)) - (gl-push-matrix) - (gl-scale 0.25 0.25 0.5) - (gl-scale 0.5 0.5 0.5) - (gl-call-list (if just-shadow? - shadow-cylinder-dl - cylinder-dl)) - (gl-pop-matrix)))) - data))) - - (define (make-key-dl game color) - (send game with-gl-context - (lambda () - (let ((list-id (gl-gen-lists 1)) - (q (q game))) - (gl-new-list list-id 'compile) - (gl-material-v 'front-and-back 'ambient-and-diffuse color) - (gl-push-matrix) - (gl-translate -0.25 0 0) - (gl-cylinder q 0.25 0.25 0.2 20 1) - (gl-cylinder q 0.1 0.1 0.2 20 1) - (gl-disk q 0.1 0.25 20 2) - (gl-translate 0 0 0.2) - (gl-disk q 0.1 0.25 20 2) - (gl-pop-matrix) - (gl-push-matrix) - (gl-translate -0.05 0 0.1) - (gl-rotate 90 0 1 0) - (gl-cylinder q 0.1 0.1 0.5 16 1) - (gl-push-matrix) - (gl-translate 0 0 0.5) - (gl-disk q 0 0.1 16 1) - (gl-pop-matrix) - (let ([tooth - (lambda () - (gl-push-matrix) - (gl-rotate 90 1 0 0) - (gl-cylinder q 0.05 0.05 0.25 16 1) - (gl-translate 0 0 0.25) - (gl-disk q 0 0.05 16 1) - (gl-pop-matrix))]) - (gl-translate 0 0 0.2) - (tooth) - (gl-translate 0 0 0.2) - (tooth)) - (gl-pop-matrix) - (gl-end-list) - list-id)))) - - (define (with-light just-shadow? thunk) - (unless just-shadow? - (gl-enable 'light0) - (gl-light-model-v 'light-model-ambient (gl-float-vector 0.5 0.5 0.5 0.0))) - (thunk) - (unless just-shadow? - (gl-light-model-v 'light-model-ambient (gl-float-vector 1.0 1.0 1.0 0.0)) - (gl-disable 'light0))) - - (define (make-key-thing-icon game - #:optional - [data #f] - #:key - [color yellow]) - (let ([dl (make-key-dl game color)]) - (send game make-thing-icon - (lambda (#:optional [just-shadow? #f]) - (with-light just-shadow? (lambda () - (gl-scale 0.5 0.5 0.5) - (gl-call-list dl)))) - data)))) diff --git a/pkgs/games/gcalc/gcalc-examples.rktd b/pkgs/games/gcalc/gcalc-examples.rktd deleted file mode 100644 index c333f52ee2..0000000000 --- a/pkgs/games/gcalc/gcalc-examples.rktd +++ /dev/null @@ -1,9 +0,0 @@ -"GCALC" -#t -18 -8 -#f -#f -#f -(#f . #f) -((#f . #f) ("cons" lambda (var green) (lambda (var red) (lambda (var blue) (apply (apply (var blue) (var green)) (var red))))) ("zero" lambda (var green) (lambda (var red) (var red) #f) #f) ("zero?" lambda (var blue) (apply (apply (var blue) (lambda (var red) (lambda (var green) (lambda (var red) (var red))))) (lambda (var green) (lambda (var red) (var green))))) ("sub1" lambda (var dk-green) (apply (apply (apply (var dk-green) (lambda (var magenta) (lambda (var blue) (apply (apply (var blue) (apply (var magenta) (lambda (var green) (lambda (var red) (var red))))) (lambda (var green) (lambda (var red) (apply (var green) (apply (apply (apply (var magenta) (lambda (var green) (lambda (var red) (var red)))) (var green)) (var red))))))))) (lambda (var blue) (apply (apply (var blue) (lambda (var green) (lambda (var red) (var red)))) (lambda (var green) (lambda (var red) (var red)))))) (lambda (var green) (lambda (var red) (var green))))) ("false" lambda (var green) (lambda (var red) (var red) #f) #f) ("car" lambda (var blue) (apply (var blue) (lambda (var green) (lambda (var red) (var green))))) ("one" lambda (var green) (lambda (var red) (apply (var green) (var red)))) ("add1" lambda (var blue) (lambda (var green) (lambda (var red) (apply (var green) (apply (apply (var blue) (var green)) (var red)))))) ("minus" lambda (var green) (lambda (var red) (apply (apply (var red) (lambda (var dk-green) (apply (apply (apply (var dk-green) (lambda (var magenta) (lambda (var blue) (apply (apply (var blue) (apply (var magenta) (lambda (var green) (lambda (var red) (var red))))) (lambda (var green) (lambda (var red) (apply (var green) (apply (apply (apply (var magenta) (lambda (var green) (lambda (var red) (var red)))) (var green)) (var red))))))))) (lambda (var blue) (apply (apply (var blue) (lambda (var green) (lambda (var red) (var red)))) (lambda (var green) (lambda (var red) (var red)))))) (lambda (var green) (lambda (var red) (var green)))))) (var green)))) ("if" lambda (var dk-gray) (lambda (var gray) (lambda (var lt-gray) (apply (apply (var dk-gray) (var gray)) (var lt-gray))))) ("cdr" lambda (var blue) (apply (var blue) (lambda (var green) (lambda (var red) (var red))))) ("two" lambda (var green) (lambda (var red) (apply (var green) (apply (apply (lambda (var green) (lambda (var red) (apply (var green) (apply (apply (lambda (var green) (lambda (var red) (var red) #f) #f) (var green)) (var red))))) (var green)) (var red))))) ("plus" lambda (var green) (lambda (var red) (apply (apply (var green) (lambda (var blue) (lambda (var green) (lambda (var red) (apply (var green) (apply (apply (var blue) (var green)) (var red))))))) (var red)))) (#f . #f) ("and" lambda (var green) (lambda (var red) (apply (apply (var green) (var red)) (var green) #t) #t) #t) ("null" lambda (var green) (lambda (var green) (lambda (var red) (var green)))) ("three" lambda (var green) (lambda (var red) (apply (var green) (apply (apply (lambda (var green) (lambda (var red) (apply (var green) (apply (apply (lambda (var green) (lambda (var red) (apply (var green) (apply (apply (lambda (var green) (lambda (var red) (var red) #f) #f) (var green)) (var red))))) (var green)) (var red))))) (var green)) (var red))))) ("times" lambda (var green) (lambda (var red) (lambda (var blue) (apply (var green) (apply (var red) (var blue)))))) (#f . #f) ("or" lambda (var green) (lambda (var red) (apply (apply (var green) (var green)) (var red)))) ("null?" lambda (var green) (apply (var green) (lambda (var green) (lambda (var red) (lambda (var green) (lambda (var red) (var red))))))) ("Y-comb" lambda (var red) (apply (var red) (apply (lambda (var green) (apply (var red) (apply (var green) (var green)))) (lambda (var green) (apply (var red) (apply (var green) (var green))))) #t) #t) (#f . #f) (#f . #f) ("id" lambda (var white) (var white) #f) ("hole" lambda (var white) transparent #t) ("slicer" \| (\| (\| (\| (lambda (var white) (var white) #f) (lambda (var white) transparent #t)) (\| (lambda (var white) (var white) #f) (lambda (var white) transparent #t))) (\| (\| (lambda (var white) (var white) #f) (lambda (var white) transparent #t)) (\| (lambda (var white) (var white) #f) (lambda (var white) transparent #t)))) (\| (\| (\| (lambda (var white) (var white) #f) (lambda (var white) transparent #t)) (\| (lambda (var white) (var white) #f) (lambda (var white) transparent #t))) (\| (\| (lambda (var white) (var white) #f) (lambda (var white) transparent #t)) (\| (lambda (var white) (var white) #f) (lambda (var white) transparent #t))))) (#f . #f) (#f . #f) ("\\x.x1" lambda (var gray) (/ (- (\| red (var gray) #f) (\| (var gray) green #f) #f) (- (\| (var gray) yellow #f) (\| blue (var gray) #f) #f) #f) #f) ("x1" / (- (\| red gray) (\| gray green)) (- (\| gray yellow) (\| blue gray))) ("x2" / (- (\| green red) (\| red green)) (- (\| red green) (\| green red))) ("numtest (\\n.n(\\x.x1)trn)" lambda (var black) (apply (apply (var black) (lambda (var gray) (/ (- (\| red (var gray) #f) (\| (var gray) green #f) #f) (- (\| (var gray) yellow #f) (\| blue (var gray)))))) transparent)) (#f . #f) (#f . #f) (#f . #f) (#f . #f) (#f . #f) (#f . #f)) diff --git a/pkgs/games/gcalc/gcalc.png b/pkgs/games/gcalc/gcalc.png deleted file mode 100644 index aae39cd02365d77c6e436cf8bb119946d916e053..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 zcmV;`11kK9P)~1#M-PuURv}(Fhq13>}LWI6V#DaoKA+%ZweXvx0=mqjnLE?GFBUM7-eKll$b zbH4MP-#Op8$=kn#fJ^B1;5vl5DcxrvgY#WpU z(}X~vrkr5V_t~~>$0rPL^9|M+w$)V}nsoFd1Lnq1vpeUjbXvlk{e9Phim|DY+Rv-I04_iIfg zVjC`Ae9i_bAD&0bV*=gd@YFCQI)K_7@?%^MJU9~iV^4a|=OUsjra%B2NVyHvj0ik- z1HRu4Ew?=kf~n1u@sl5&51j8^N~=*Va2QB?gyJ1@P->1rrS4itMbHbNl}CMe5RLMvEXs%y zm3ihxqeT#*%3KzYTCVM_f*68eW0NF_uAA+(H>310h!7!7x-kF%78XH*ERtyq0Duo4 z<}*REo9ZvUdjcQ`O)JVrtIeF3Yi}D~1)@*F{>c**!o$e;|UpfoyPhs|Ha6I0fau=S59j|+HRt2nUA76X1 zsjunR)|uA!iV%JXKMO4_-eLxR?|@%+Qtxu$;$rXse~t}|?as7hQmf0}+L$3Cs4eQ! zl{c;&$oulSbq4?t5pq4bGh_S5-d3VKoak!|;6mv1OX)AJ_spDN{Wij~ozN6#;h`OU zlao*Wq}Smjf><79AiDlist color)])) - (define (mix rgb1 rgb2) - (cond [(equal? rgb1 rgb2) (list->vector rgb1)] - [(or (null-expr? rgb1) (null-expr? rgb2)) null-expr] - [(or (eq? rgb1 'transparent) (eq? rgb2 'transparent)) 'transparent] - [else (for/vector ([c1 (in-list rgb1)] [c2 (in-list rgb2)]) - (inexact->exact (round (/ (+ c1 c2) 2))))])) - (define rgb (get-rgb color)) - (let loop ([expr expr]) - (cond [(or (var-expr? expr) (null-expr? expr)) expr] - [(simple-expr? expr) (mix rgb (get-rgb expr))] - [else (make-expr (expr-op expr) - (loop (expr-1st expr)) - (loop (expr-2nd expr)))]))) - -(define (reduce-application expr . level) - (define (reduce expr level) - (if (and level (<= level 0)) - expr - (let ([1st (let ([e (expr-1st expr)]) - (if (application-expr? e) - (reduce-application e (and level (sub1 level))) - e))] - [2nd (expr-2nd expr)]) - (cond [(and COLOR-OPS (simple-expr? 1st) (not (var-expr? 1st))) - (recolor-expr 1st 2nd)] - [(or (simple-expr? 1st) (application-expr? 1st)) expr] - [(abstraction-expr? 1st) - (substitute 2nd (expr-1st 1st) (expr-2nd 1st))] - [else (let ([2nd (split-expr 2nd (expr-op 1st))]) - (make-expr (expr-op 1st) - (make-application1 (expr-1st 1st) - (expr-1st 2nd)) - (make-application1 (expr-2nd 1st) - (expr-2nd 2nd))))])))) - (let* ([level (if (null? level) EVAL-DEPTH (car level))] - [new (reduce expr level)]) - (if (and (application-expr? new) (not (equal? new expr)) - (or (not level) (> level 0))) - (reduce-application new (and level (if (> level 0) (sub1 level) 0))) - new))) - -#; ;; No need for this now -(define (eval-expr expr) - (define (eval-expr expr level) - (cond [(zero? level) null-expr] - [(or (simple-expr? expr) (abstraction-expr? expr)) expr] - [(application-expr? expr) - (define 1st (eval-expr (expr-1st expr) (sub1 level))) - (define 2nd (eval-expr (expr-2nd expr) (sub1 level))) - (cond [(and COLOR-OPS (simple-expr? 1st) (not (var-expr? 1st))) - (recolor-expr 1st 2nd)] - [(or (simple-expr? 1st) (application-expr? 1st)) expr] - [(abstraction-expr? 1st) - (eval-expr (substitute 2nd (expr-1st 1st) (expr-2nd 1st)) - (sub1 level))] - [else (define 2nd (split-expr (eval-expr 2nd (sub1 level)) - (expr-op 1st))) - (make-expr (expr-op 1st) - (eval-expr (make-application (expr-1st 1st) - (expr-1st 2nd)) - (sub1 level)) - (eval-expr (make-application (expr-2nd 1st) - (expr-2nd 2nd)) - (sub1 level)))])] - [else (make-expr (expr-op expr) - (eval-expr (expr-1st expr) (sub1 level)) - (eval-expr (expr-2nd expr) (sub1 level)))])) - (dynamic-wind - begin-busy-cursor - (λ() (eval-expr expr (or EVAL-DEPTH -1))) - end-busy-cursor)) - -(define (split-expr expr op) - (cond - [(or (simple-expr? expr) (abstraction-expr? expr)) - (make-expr op expr expr)] - [(eq? (expr-op expr) op) expr] - [else (define e1 (split-expr (expr-1st expr) op)) - (define e2 (split-expr (expr-2nd expr) op)) - (define e11 (expr-1st e1)) - (define e12 (expr-2nd e1)) - (define e21 (expr-1st e2)) - (define e22 (expr-2nd e2)) - (define e-op (expr-op expr)) - (make-expr op (make-expr e-op e11 e21) (make-expr e-op e12 e22))])) - -(define (substitute new old expr) - (cond - [(composite-expr? expr) - (if (and (abstraction-expr? expr) (equal? (expr-1st expr) old)) - expr - (let-values ([(new1 new2) (if SPLIT-ARGS - (let ([x (split-expr new (expr-op expr))]) - (values (expr-1st x) (expr-2nd x))) - (values new new))]) - (make-expr (expr-op expr) - (substitute new1 old (expr-1st expr)) - (substitute new2 old (expr-2nd expr)))))] - [(equal? expr old) new] - [else expr])) - -(define (valid-expr? obj) - (cond [(null-expr? obj) #t] - [(list? obj) (case (length obj) - [(2) (and (eq? (1st obj) 'var) - (not (list? (2nd obj))) - (valid-expr? (2nd obj)))] - [(3 4) (case (car obj) - [(\| - / apply lambda) - (and (valid-expr? (expr-1st obj)) - (valid-expr? (expr-2nd obj)))] - [else #f])])] - [(symbol? obj) (and (assq obj COLORS) #t)] - [(vector? obj) (and (= (vector-length obj) 3) - (let ([ok? (λ(x) (and (integer? x) (<= 0 x 255)))]) - (and (ok? (vector-ref obj 0)) - (ok? (vector-ref obj 1)) - (ok? (vector-ref obj 2)))))] - [else #f])) -(define (valid-contents? obj) - (and (pair? obj) - (or (not (car obj)) (string? (car obj))) - (valid-expr? (cdr obj)))) -(define (validate-contents obj) - (if (valid-contents? obj) - obj - (begin (eprintf "~s is not a valid contents.\n" obj) - (error 'validate-contents "~s is not a valid contents." obj)))) - -;;;============================================================================ -;;; GCalc drawing - -(define transparent?-cache (make-weak-hash)) - -(define (expr-contains-transparent? expr) - (if (simple-expr? expr) - (or (null-expr? expr) (eq? expr 'transparent) - (and (var-expr? expr) (eq? (var-val expr) 'transparent))) - (let ([v (hash-ref transparent?-cache expr 'unknown)]) - (if (eq? v 'unknown) - (let ([v (cond [(abstraction-expr? expr) - (expr-contains-transparent? (expr-2nd expr))] - [(application-expr? expr) - #t] - [else (or (expr-contains-transparent? (expr-1st expr)) - (expr-contains-transparent? (expr-2nd expr)))])]) - (hash-set! transparent?-cache expr v) - v) - v)))) - -;; Draw an exprression - the smart way. -(define (draw-expr dc expr name . r) - (define size - (let-values ([(sx sy) (send dc get-size)]) (inexact->exact (min sx sy)))) - (define eval? (if (null? r) #f (car r))) - (define (avg x y) (/ (+ x y) 2)) - (define (rnd x) (inexact->exact (round x))) - (define dc-ofs 3D-OFFSET) - (define dc-size (- size dc-ofs dc-ofs)) - (define draw-polygon ; efficient (could be more if it was global) - (let* ([p1 (instantiate point% [])] [p2 (instantiate point% [])] - [p3 (instantiate point% [])] [p4 (instantiate point% [])] - [points (list p1 p2 p3 p4)]) - (λ(x1 y1 x2 y2 x3 y3 x4 y4) - (send* p1 (set-x x1) (set-y y1)) (send* p2 (set-x x2) (set-y y2)) - (send* p3 (set-x x3) (set-y y3)) (send* p4 (set-x x4) (set-y y4)) - (send dc draw-polygon points)))) - (define tmp-color (instantiate color% [])) ; reused for drawing colors - (define (draw expr level left? top? front? x1 y1 z1 x2 y2 z2 abstr) - (define eval? (or (not level) (> level 0))) - (define lev1 (and level (if (> level 0) (sub1 level) 0))) - (when (and eval? (application-expr? expr)) - (set! expr (reduce-application expr level))) - (cond - [(null-expr? expr) expr] - [(composite-expr? expr) - (define 1st (expr-1st expr)) - (define 2nd (expr-2nd expr)) - (cond - [(left-right-expr? expr) - (define cut? (and DRAW-CUTOFF (< (* (- x2 x1) size) DRAW-CUTOFF))) - (define x12 (avg x1 x2)) - (define t? (expr-contains-transparent? 1st)) - (make-right-left - (if (and (not cut?) (or top? front? t?)) - (draw 2nd lev1 t? top? front? x12 y1 z1 x2 y2 z2 .0) - 2nd) - (if cut? - (draw 1st lev1 left? top? front? x1 y1 z1 x2 y2 z2 abstr) - (draw 1st lev1 left? top? front? x1 y1 z1 x12 y2 z2 .0)))] - [(top-bottom-expr? expr) - (define cut? (and DRAW-CUTOFF (< (* (- y2 y1) size) DRAW-CUTOFF))) - (define y12 (avg y1 y2)) - (define t? (expr-contains-transparent? 1st)) - (make-bottom-top - (if (and (not cut?) (or left? front? t?)) - (draw 2nd lev1 left? t? front? x1 y12 z1 x2 y2 z2 .0) - 2nd) - (if cut? - (draw 1st lev1 left? top? front? x1 y1 z1 x2 y2 z2 abstr) - (draw 1st lev1 left? top? front? x1 y1 z1 x2 y12 z2 .0)))] - [(front-back-expr? expr) - (define cut? (and DRAW-CUTOFF (< (* (- z2 z1) size) DRAW-CUTOFF))) - (define z12 (avg z1 z2)) - (define t? (expr-contains-transparent? 1st)) - (make-back-front - (if (and (not cut?) (or left? top? t?)) - (draw 2nd lev1 left? top? t? x1 y1 z1 x2 y2 z12 .0) - 2nd) - (if cut? - (draw 1st lev1 left? top? front? x1 y1 z1 x2 y2 z2 abstr) - (draw 1st lev1 left? top? front? x1 y1 z12 x2 y2 z2 .0)))] - [(abstraction-expr? expr) - (draw 2nd 0 left? top? front? x1 y1 z1 x2 y2 z2 (+ abstr ABSTR-GAP)) - (set-pen/brush dc (cdr (assq (var-val 1st) COLORS))) - (define xx (+ (rnd (* (+ x1 (* (- x2 x1) abstr) (* 3D-DX z2)) - (/ dc-size (+ 1 3D-DX)))) - dc-ofs)) - (define yy (+ (rnd (* (+ y1 (* 3D-DY z2)) (/ dc-size (+ 1 3D-DY)))) - dc-ofs)) - (define dx (rnd (* ABSTR-SIZE (- x2 x1) (/ dc-size (+ 1 3D-DX))))) - (define dy (rnd (* ABSTR-SIZE (- y2 y1) (/ dc-size (+ 1 3D-DY))))) - (send dc draw-ellipse xx yy dx dy) - expr] - [(application-expr? expr) - (define x12 (avg x1 x2)) - (define y12 (avg y1 y2)) - (define dx (* (- x2 x1) 1/2 APPLY-SIZE)) - (define dy (* (- y2 y1) 1/2 APPLY-SIZE)) - (define xx1 (- x12 dx)) - (define yy1 (- y12 dy)) - (define xx2 (+ x12 dx)) - (define yy2 (+ y12 dy)) - (define zz (* (- z2 z1) APPLY-SIZE)) - (define z11 (+ z1 zz)) - (define z22 (- z2 zz)) - (make-application1 - (draw 1st lev1 left? top? front? xx1 yy1 z1 xx2 yy2 z11 .0) - (draw 2nd lev1 left? top? front? xx1 yy1 z22 xx2 yy2 z2 .0))] - [else (error 'draw-expr "Unknown composite expr -- ~s." expr)])] - [(simple-expr? expr) - (unless (eq? 'transparent (if (var-expr? expr) (var-val expr) expr)) - (let* (;; - ;; Calculate points: - ;; - ;; xx0xx1 xx2 xx3 - ;; | | | | - ;; P---------P -- yy0 - ;; |\ \ - ;; | \ \ - ;; | P---------P-- yy1 - ;; | | | - ;; P | |-- yy2 - ;; \ | | - ;; \| | - ;; P---------P-- yy3 - ;; - ;; (xx1 - x1) = (x2 - xx2) = (3D-DX * (x2 - x1)) - ;; and the same for y values - ;; - [dx (* 3D-DX (- z2 z1))] - [xx0 (+ x1 (* z1 3D-DX))] - [xx1 (+ xx0 dx)] - [xx2 (+ x2 (* z1 3D-DX))] - [xx3 (+ xx2 dx)] - [dy (* 3D-DY (- z2 z1))] - [yy0 (+ y1 (* z1 3D-DY))] - [yy1 (+ yy0 dy)] - [yy2 (+ y2 (* z1 3D-DY))] - [yy3 (+ yy2 dy)] - [xx00 (+ (rnd (* (/ xx0 (+ 1 3D-DX)) dc-size)) dc-ofs)] - [xx11 (+ (rnd (* (/ xx1 (+ 1 3D-DX)) dc-size)) dc-ofs)] - [xx22 (+ (rnd (* (/ xx2 (+ 1 3D-DX)) dc-size)) dc-ofs)] - [xx33 (+ (rnd (* (/ xx3 (+ 1 3D-DX)) dc-size)) dc-ofs)] - [yy00 (+ (rnd (* (/ yy0 (+ 1 3D-DY)) dc-size)) dc-ofs)] - [yy11 (+ (rnd (* (/ yy1 (+ 1 3D-DY)) dc-size)) dc-ofs)] - [yy22 (+ (rnd (* (/ yy2 (+ 1 3D-DY)) dc-size)) dc-ofs)] - [yy33 (+ (rnd (* (/ yy3 (+ 1 3D-DY)) dc-size)) dc-ofs)]) - (set-pen/brush - dc - (cond - [(var-expr? expr) (cdr (assq (var-val expr) COLORS))] - [(symbol? expr) (cdr (assq expr COLORS))] - [else ; explicit color - (send tmp-color set - (vector-ref expr 0) (vector-ref expr 1) (vector-ref expr 2)) - (list DK-PEN (send the-brush-list find-or-create-brush - tmp-color 'solid))])) - (draw-polygon xx11 yy11 xx00 yy00 xx22 yy00 xx33 yy11) - (draw-polygon xx11 yy11 xx00 yy00 xx00 yy22 xx11 yy33) - (draw-polygon xx11 yy11 xx33 yy11 xx33 yy33 xx11 yy33))) - expr] - [else (error 'draw-expr "Unknown expr -- ~s." expr)])) - (dynamic-wind - begin-busy-cursor - (λ() (send dc clear) - (set-pen/brush dc (BG-PEN/BRUSH)) - (send dc draw-rectangle 1 1 size size) - (begin0 (draw expr (if eval? EVAL-DEPTH 0) - #t #t #t .0 .0 .0 1.0 1.0 1.0 .0) - (when name - (define-values [tw th d a] (send dc get-text-extent name)) - (define tw* (min tw (- size 6))) - (set-pen/brush dc (BG-PEN/BRUSH)) - (send dc draw-rectangle (- size tw* 3) 1 (+ 3 tw*) (+ 2 th)) - (send dc draw-text name (max 0 (- size tw* 1)) 2)))) - end-busy-cursor)) - -;;;============================================================================ -;;; GUI - -(define gcalc-frame - (instantiate - (class frame% - (define/augment (on-close) (maybe-save-and-exit)) - (define/public (open-file file) (open file)) - (super-instantiate ["GCalc"] [style '(no-resize-border)]) - (send this stretchable-width #f) - (send this stretchable-height #f)) - [])) - -(define main-pane - (instantiate horizontal-pane% [gcalc-frame])) - -(define help - (show-scribbling - '(lib "games/scribblings/games.scrbl") - "gcalc")) - -(define file-name #f) -(define modified? #f) -(define (set-file-name! name) - (set! file-name name) - (send gcalc-frame set-label (string-append "GCalc: " name))) -(define (save) - (if file-name - (begin - (when (file-exists? file-name) (delete-file file-name)) - (with-output-to-file file-name - (λ() (dynamic-wind - begin-busy-cursor - (λ() (define (out x) (write x) (newline)) - (out "GCALC") - (for ([c (in-list customs)]) (out ((custom-getter c)))) - (out (send main-cell get-contents)) - (out (get-storage-contents)) - (set! modified? #f)) - end-busy-cursor) - (message-box "Save" (format "~s saved." file-name) - gcalc-frame '(ok))))) - (save-as))) -(define (open-examples) - (open (path->string (collection-file-path "gcalc-examples.rktd" - "games" "gcalc")))) - -(define (open [file (void)]) - (maybe-save) - (define f - (if (not (void? file)) - file - (cond [(get-file "Open" gcalc-frame) => path->string] [else #f]))) - (when f - (if (file-exists? f) - (with-input-from-file f - (λ() (dynamic-wind - begin-busy-cursor - (λ() (with-handlers - ([exn:fail? - (λ(x) (message-box - "Open" (format "~s is not a GCalc file." f) - gcalc-frame '(ok)))]) - (or (equal? "GCALC" (read)) (error "gcalc")) - (set-file-name! f) - (for ([c (in-list customs)]) ((custom-setter c) (read))) - (send main-cell set-contents! (validate-contents (read))) - (set-storage-contents! (map validate-contents (read))) - (set! modified? #f))) - end-busy-cursor))) - (message-box "Open" (format "~s does not exists." f) - gcalc-frame '(ok))))) -(define (save-as) - (define f (get-file "Save-as" gcalc-frame)) - (when f - (if (directory-exists? f) - (message-box "Save-as" (format "\"~a\" is a directory." f) - gcalc-frame '(ok)) - (when (or (not (file-exists? f)) - (eq? 'yes (message-box "Save-as" - (format "\"~a\" exists, overwrite?" f) - gcalc-frame '(yes-no)))) - (set-file-name! (path->string f)) - (save))))) -(define (maybe-save) - (when (and modified? - (begin (bell) - (eq? 'yes (message-box "GCalc" "Save modifications?" - gcalc-frame '(yes-no))))) - (save))) -(define (maybe-save-and-exit) - (maybe-save) - (set! modified? #f) ; can appear again from drracket - (send gcalc-frame show #f)) - -(define set-options - (let ([dlg (instantiate dialog% ["GCalc Expression" gcalc-frame])]) - (define ok? #f) - (define inits (λ() (set! ok? #f))) - (define finals (λ() (set! modified? #t))) - (define (add-init/final initializer finalizer) - (let ([c inits]) (set! inits (λ() (initializer) (c)))) - (let ([c finals]) (set! finals (λ() (finalizer) (c))))) - (define (new-row . a) - (define p (instantiate horizontal-pane% [dlg])) - (send p set-alignment (if (null? a) 'left (car a)) 'center) - p) - (define (make-check-box getter setter title) - (define cb (instantiate check-box% [title (new-row) void])) - (add-init/final (λ() (send cb set-value (getter))) - (λ() (setter (send cb get-value))))) - (define (make-check/slide getter setter title range) - (define row (new-row)) - (define toggle - (instantiate check-box% - [title row - (let ([saved 0]) - (λ(this e) - (if (send this get-value) - (send slider set-value saved) - (begin (set! saved (send slider get-value)) - (send slider set-value 0)))))])) - (define slider - (instantiate slider% - ["" 0 range row - (λ(this e) - (send toggle set-value (not (zero? (send this get-value)))))])) - (add-init/final (λ() (define val (getter)) - (send slider set-value (or val 0)) - (send toggle set-value (and val #t))) - (λ() (setter (and (send toggle get-value) - (send slider get-value)))))) - (define (make-ok-cancel) - (let ([row (new-row 'center)]) - (instantiate button% - ["&OK" row (λ(this e) (set! ok? #t) (send dlg show #f))] - [style '(border)]) - (instantiate button% - ["&Cancel" row (λ(this e) (send dlg show #f))]))) - ;; Dialog components - (for ([c (in-list customs)]) - (define type (custom-type c)) - (define getter (custom-getter c)) - (define setter (custom-setter c)) - (define desc (custom-description c)) - (cond [(eq? type 'bool) (make-check-box getter setter desc)] - [(and (pair? type) (eq? (1st type) 'int)) - (make-check/slide getter setter desc (2nd type))])) - (make-ok-cancel) - ;; Main - (λ() (inits) (send dlg show #t) (when ok? (finals))))) - -(define cell-menu-items `((#\x "C&ut" cut:) - (#\c "&Copy" copy:) - (#\v "Pas&te" paste:) - (#\r "Clea&r" clear:) - (#\e "&Eval" eval:) - (#\n "Re&name" rename:) - (#\space "Sho&w" show:) - (#\p "&Print" print:))) -(define global-menu-items `((#\h "&Help" ,help) - (#\o "&Open" ,open) - (#\m "Open-Exa&mples" ,open-examples) - (#\s "&Save" ,save) - (#\a "Save-&as" ,save-as) - (#\return "Pre&ferences" ,set-options) - (#\q "&Quit" ,maybe-save-and-exit))) - -(define popup-cell-menu - (let ([menu (instantiate popup-menu% ("GCalc"))] - [this #f] - [cell-items '()]) - (define (make-item mi) - (cons - (instantiate menu-item% - [(string-append "[" (case (1st mi) - [(#\space) "SPC"] [(#\return) "RET"] - [else (string (1st mi))]) - "] " (2nd mi)) - menu - (λ(i e) - (define f (3rd mi)) - ((if (symbol? f) (λ() ((send this get-cell-op f) e)) f)))]) - mi)) - (set! cell-items (map make-item cell-menu-items)) - (instantiate separator-menu-item% [menu]) - (for-each make-item global-menu-items) - (λ(cell e x y) - (set! this cell) - (define ok? (not (null-expr? (send this get-expr)))) - (for ([ci (in-list cell-items)]) - (send (1st ci) enable ((send cell get-cell-op (4th ci)) 'enabled? e))) - (send cell popup-menu menu x y)))) - -(define cells '()) -(define (find-cell x y) - (for/or ([c (in-list cells)]) - (define-values [x* y*] (send c screen->client x y)) - (and (< -1 x* (send c get-width)) (< -1 y* (send c get-height)) c))) - -(define current-cell #f) - -(define cell% - (class canvas% - (init-field name expr draggable? dropper alt-func size parent) - (inherit get-dc) - (define bitmap (instantiate bitmap% [size size])) - (define dc (instantiate bitmap-dc% [bitmap])) - ;; general operations - (define evaluate-next #f) - (define/private (draw-contents) - (unhighlight!) - (set! expr (draw-expr dc expr name evaluate-next)) - (set! evaluate-next #f) - (on-paint)) - (define/public (get-expr) expr) - (define/public (set-expr! e) (set-contents! (cons #f e))) - (define/public (get-contents) (cons name expr)) - (define/public (set-contents! n/e) - (cond [(eq? dropper 'copy) - (set! modified? #t) - (set! name (car n/e)) - (set! expr (cdr n/e)) - (draw-contents)] - [dropper (dropper n/e)] - [else #f])) - (define/public (eval-next-expr) (set! evaluate-next #t)) - (define/public (get-dropper) dropper) - ;; highlighting - (define highlighted? #f) - (define/public (highlight!) - (unless highlighted? (set! highlighted? #t) (on-paint))) - (define/public (unhighlight!) - (when highlighted? (set! highlighted? #f) (on-paint))) - ;; cell operations - (define (make-cell-op: op . enabled?) - (let ([enabled? - (cond [(null? enabled?) (λ(e) (not (null-expr? expr)))] - [(not (procedure? (car enabled?))) - (λ(e) (and (car enabled?) (not (null-expr? expr))))] - [else (car enabled?)])]) - (λ(e . more) - (let ([enabled? (enabled? (if (eq? e 'enabled?) (car more) e))]) - (cond [(eq? e 'enabled?) enabled?] [enabled? (op e)]))))) - (define cut: - (make-cell-op: (λ(e) (copy: e) (clear: e)) (and dropper #t))) - (define copy: - (make-cell-op: (λ(e) (send the-clipboard set-clipboard-string - (write-to-string (get-contents)) - (send e get-time-stamp))))) - (define paste: - (make-cell-op: (λ(e) (set-contents! - (read-from-string - (send the-clipboard get-clipboard-string - (send e get-time-stamp))))) - (λ(e) (and dropper - (valid-contents? - (read-from-string - (send the-clipboard get-clipboard-string - (send e get-time-stamp)))))))) - (define clear: - (make-cell-op: (λ(e) (set-contents! (cons #f null-expr))) - (and dropper #t))) - (define show: - (make-cell-op: (λ(e) (unhighlight!) (show-expr expr name)))) - (define print: - (make-cell-op: (λ(e) (unhighlight!) (print-expr expr name)))) - (define eval: - (make-cell-op: (λ(e) (eval-next-expr) (draw-contents)) - (and dropper #t))) - (define rename: - (make-cell-op: (λ(e) (define new (get-text-from-user - "GCalc" "Enter a new name" gcalc-frame - (or name ""))) - (when new - (set! modified? #t) - (set! name new) - (draw-contents))) - (and dropper #t))) - (define/public (get-cell-op msg) - (case msg - [(cut:) cut:] [(copy:) copy:] [(paste:) paste:] [(clear:) clear:] - [(show:) show:] [(print:) print:] [(eval:) eval:] [(rename:) rename:])) - ;; events - (define/override (on-paint) - (let ([dc (get-dc)]) - (send dc draw-bitmap bitmap 0 0) - (when highlighted? - (set-pen/brush dc HIGHLIGHT-PEN/BRUSH) - (let ([w1 (round (/ HIGHLIGHT-WIDTH 2))] - [w2 (- size HIGHLIGHT-WIDTH -1)]) - (send dc draw-rectangle w1 w1 w2 w2))))) - (define right-menu-thread #f) - (define dragging? #f) - (define drag-to #f) - (define last-click-time #f) - (define/override (on-event e) - (when (and right-menu-thread (not (send e get-right-down))) - (kill-thread right-menu-thread) - (set! right-menu-thread #f)) - (case (send e get-event-type) - [(enter) - (set! current-cell this) - (send this focus) - (when (and draggable? (not (null-expr? expr))) (highlight!))] - [(leave) - (unless dragging? (set! current-cell #f) (unhighlight!))] - [(left-down) - (let ([d? (and last-click-time - (< (- (current-milliseconds) last-click-time) - DOUBLE-MILISECS))]) - (set! last-click-time (if d? #f (current-milliseconds))) - (if d? - (show: e) - (begin (set! dragging? #t) (set! drag-to #f))))] - [(left-up) - (set! dragging? #f) - (when drag-to - (send drag-to set-contents! (get-contents)) - (when (and (not (send e get-shift-down)) - (not (eq? drag-to main-cell)) - (eq? 'copy (send drag-to get-dropper))) - (clear: e)))] - [(right-down) - (if alt-func - (set! right-menu-thread - (thread - (λ() (sleep 0.3) - (queue-callback - (λ() (popup-cell-menu this e - (send e get-x) (send e get-y)))) - (set! right-menu-thread #f)))) - (popup-cell-menu this e (send e get-x) (send e get-y)))] - [(right-up) - (when right-menu-thread - (kill-thread right-menu-thread) - (set! right-menu-thread #f)) - (when (and alt-func (not (null-expr? (send main-cell get-expr)))) - (alt-func this))] - [(middle-down) - (show: e)] - [(motion) - (when dragging? - (let*-values ([(x y) (send this client->screen - (send e get-x) (send e get-y))] - [(c) (find-cell x y)]) - (when (and c (let ([cdrop (send c get-dropper)]) - (or (eq? c this) (not cdrop) - (and (not (eq? cdrop 'copy)) - (null-expr? (send main-cell get-expr)))))) - (set! c #f)) - (unless (eq? c drag-to) - (when drag-to (send drag-to unhighlight!)) - (when c (send c highlight!)) - (set! drag-to c))))])) - (define/override (on-char e) - (let ([ch (send e get-key-code)]) - (when (eq? this current-cell) - (cond [(memq ch '(escape f10)) - (popup-cell-menu this e (send e get-x) (send e get-y))] - [(eq? ch 'f1) (help)] - [(assq ch cell-menu-items) - => (λ(mi) ((send this get-cell-op (3rd mi)) e))] - [(assq ch global-menu-items) - => (λ(mi) ((3rd mi)))])))) - ;; initialization - (set! cells (cons this cells)) - (when (and (not name) (symbol? expr)) (set! name (symbol->string expr))) - (super-instantiate [parent]) - (send* this (min-width size) (min-height size)) - (send dc set-text-mode 'solid) - (send dc set-font CELL-FONT) - (draw-contents))) - -(define show-expr - (let ([dlg (instantiate dialog% ["GCalc Expression" gcalc-frame] - [style '(no-caption)])]) - (define bmp (instantiate bitmap% [SHOW-CELL-SIZE SHOW-CELL-SIZE])) - (define dc (instantiate bitmap-dc% [bmp])) - (define cnv - (instantiate - (class canvas% - (inherit get-dc) - (define/override (on-event e) - (when (send e button-down?) (send dlg show #f))) - (define/override (on-char e) - (unless (memq (send e get-key-code) '(release #\nul control shift)) - (send dlg show #f))) - (define/override (on-paint) - (send (get-dc) draw-bitmap bmp 0 0)) - (super-instantiate [dlg]) - (send* this (min-width SHOW-CELL-SIZE) (min-height SHOW-CELL-SIZE))) - [])) - (define cdc (send cnv get-dc)) - (define last-expr #f) - (λ(expr name) - (send dc set-text-mode 'solid) - (send dc set-font SHOW-FONT) - (unless (eq? last-expr expr) - (draw-expr dc expr name) - (set! last-expr expr)) - (send cdc draw-bitmap bmp 0 0) - (send dlg show #t)))) - -(define (print-expr expr name) - (define dc (instantiate post-script-dc% [])) - (send dc start-doc "Printing...") - (send dc start-page) - (parameterize ([BG-PEN/BRUSH (list (instantiate pen% ["BLACK" 1 'solid]) - (instantiate brush% ["WHITE" 'solid]))]) - (if (or NOBMP-PRINT (< (expr-size expr) 5000)) - (draw-expr dc expr name) - (let* ([size (let-values ([(sx sy) (send dc get-size)]) - (inexact->exact (min sx sy)))] - [bmp (instantiate bitmap% [size size])] - [bmpdc (instantiate bitmap-dc% [bmp])]) - (message-box "Printing" "The expression, is too complex, using bitmap." - gcalc-frame '(ok)) - (draw-expr bmpdc expr name) - (send dc draw-bitmap bmp 0 0)))) - (send dc end-page) - (send dc end-doc)) - -(define tiled-panel% - (class vertical-panel% - (init-field width size) - (define current-pane #f) - (define left 0) - (define/public (add-cell name expr draggable? dropper . alt-func) - (set! alt-func (and (not (null? alt-func)) (car alt-func))) - (when (zero? left) - (set! current-pane (instantiate horizontal-pane% [this])) - (set! left width)) - (set! left (sub1 left)) - (instantiate cell% - [name expr draggable? dropper alt-func size current-pane])) - (super-instantiate [main-pane] [style '(border)]))) - -;; colors -(define colors-panel - (instantiate tiled-panel% [COLOR-CELL-ROW COLOR-CELL-SIZE])) -(for ([c (in-list COLORS)]) - (send colors-panel add-cell #f (car c) #t #f - (λ(this) - (send main-cell set-expr! - (make-abstraction (send this get-expr) - (send main-cell get-expr)))))) - -;; operators -(define operator-panel - (instantiate tiled-panel% [OPERS-CELL-ROW OPERS-CELL-SIZE])) -(define (make-dropper name maker op 1st?) - (send operator-panel add-cell (string-append " " name " ") #f #f - (λ(n/e) - (when (and EVAL-NOW (eq? op 'apply)) (send main-cell eval-next-expr)) - (send main-cell set-expr! - (maker (cdr n/e) (send main-cell get-expr)))) - (λ(this) - (send main-cell set-expr! - ((if 1st? expr-1st expr-2nd) - (split-expr (send main-cell get-expr) op)))))) -(make-dropper "Back" make-back-front '/ #t) -(make-dropper "Top" make-top-bottom '- #f) -(make-dropper "Apply (func)" make-application1 'apply #f) -(make-dropper "Left" make-left-right '\| #f) -(define main-cell (send operator-panel add-cell " Main " #f #t 'copy)) -(make-dropper "Right" make-right-left '\| #t) -(make-dropper "Apply (arg)" make-application2 'apply #t) -(make-dropper "Bottom" make-bottom-top '- #t) -(make-dropper "Front" make-front-back '/ #f) -(send main-cell focus) - -;; storage -(define store-panel - (instantiate tiled-panel% [STORE-CELL-ROW STORE-CELL-SIZE])) -(define storage-cells - (let loop ([n (* STORE-CELL-ROW STORE-CELL-COL)] [cells '()]) - (if (zero? n) - (reverse cells) - (loop (sub1 n) - (cons (send store-panel add-cell #f #f #t 'copy) cells))))) -(define (get-storage-contents) - (for/list ([c (in-list storage-cells)]) (send c get-contents))) -(define (set-storage-contents! names/exprs) - (for ([c (in-list storage-cells)] [n/e (in-list names/exprs)]) - (send c set-contents! n/e))) - -;; start the whole thing -(send gcalc-frame show #t) - -)) diff --git a/pkgs/games/gcalc/info.rkt b/pkgs/games/gcalc/info.rkt deleted file mode 100644 index cafbd2a7d1..0000000000 --- a/pkgs/games/gcalc/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define name "GCalc") -(define game "gcalc.rkt") diff --git a/pkgs/games/ginrummy/ginrummy.png b/pkgs/games/ginrummy/ginrummy.png deleted file mode 100644 index 9839d478092e99ab70215f1be5a2e56443dd25ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 zcmV-m1E2hfP))VS(Fq=$RIHrnp7epc99WCSqK(E7ongbK}jVg zgo#pOPzi#Gi6KNESKfFhB?^+J;%9y&_Jv3?;ft=MH+h8Mv@8r2v9UAbK67BtlIi-C=>4%|@Sq z217W#y{{E;?p6Z=^bdn5BFi%E?VZHM#bW(OZZ*u#!N3S8px5h2NlB!prV*>vLU;EU zpB&q}1=X>JP$T5$sQZ|nq`!X{Q4|3%$uj=VS7dw&tQR5u3bV6w3=E8*tnX<(-_}pA zSFzckZ^&b)>M$xC#-|7kHIkQ?g;p!CmH*`HQuQtHpbpw=VgGKoKoMDjsuFl!j?HGH zsOS+D74>S>E?=h_9EID}F!ck9D^<5{9RkEe0?^g=j^^g~NRmW;eh!2hq3|5oTo7Y- zLhc!O*#=j0H$RCDz%|9k@1voig5Y2S5fNr4CPtyI878Kotk7|`D8ilVkbD$Q9&-zG z0P1uy>FIV8SAW5qk1#n4Mfsr9I<63?gX}bqU=BbBNgAlW1@lYJVO!AVK!Ck5egUn^ zeae28??6R?p|NcQzG{P01@LWT8-RmjQ1V!9o0|_kYJA^-yCT(=kR`Z$*89fyS^*;5 zy8%fFka66jDZXcD(8Ku*kB9$kAU^^Tx|Ab4WaIG9xR{a26UV)Ym zuIoB2WTirOD#((LN2(}rw-%l@fh0lZ3FqTV3qTa$YZsdF@d06RaasWg3JUWMI5`6i zZ((H>sv6*QGH3!ejv4(9_v^rN7!sq3IZ2ac!!nr%8#9j&%>+Og05xw1O#^ qzJno~e>8tP-m;R^P0!4X3cmq(?D5V&>#=zN0000display-region r) - (define m MARGIN) - (make-region (+ m (region-x r)) (+ m (region-y r)) - (- (region-w r) (* 2 m)) (- (region-h r) (* 2 m)) - #f #f)) - -;; Place cards nicely -(define machine-display-region (region->display-region machine-region)) -(send t move-cards-to-region machine-hand machine-display-region) -(send t move-cards-to-region you-hand (region->display-region you-region)) - -;; All cards in your hand are movable, but must stay in your region -(for-each (lambda (card) - (send card home-region you-region) - (send card user-can-move #t)) - you-hand) - -;; More card setup: Show your cards -(send t cards-face-up you-hand) - -;; Start the discard pile -(define discards (deal 1)) -(send t card-face-up (car discards)) -(send t move-card (car discards) discard-x discard-y) - -;; ;;;;;;;;;;;;; Finding Rummy and The Machine Player Strategy ;;;;;;;; - -;; Check whether a group of (at least 3) cards forms a set (building -;; up to gin). -(define (set? cards) - (let ([values (map (lambda (c) (send c get-value)) cards)] - [suits (map (lambda (c) (send c get-suit-id)) cards)]) - ;; All same value? ... or - (or (apply = values) - ;; ... All same suit and a straight? - (and (apply = suits) - (let ([sorted (sort values <)] - [try (lambda (l) - (let loop ([l l]) - (or (null? (cdr l)) - (and (= (car l) (sub1 (cadr l))) - (loop (cdr l))))))]) - ;; Try with Ace at end and at beginning - (or (try sorted) - (and (= 1 (car sorted)) - (try (append (cdr sorted) (list 14)))))))))) - -;; Check how close a hand comes to winning by returning the maximum number of -;; cards that can be arranged into sets. This function is used both to detect -;; gin for the end-of-game condition, and also as part of the machine player's -;; strategy. -(define (gin-size cards) - (if (<= (length cards) 2) - 0 - (let* ([sort (lambda (get) - (sort cards (lambda (a b) (< (get a) (get b)))))] - - ;; It's not reasonable to test every combination of 10 cards, but we - ;; can cut down the search space a lot by starting with two - ;; different sorts on the card list. - - ;; We sort by value, to find 3-of-a-kind sets, and by - ;; suit-then-value, to find straights. Whatever the best allocation - ;; of cards to sets, one of the sets must show up as three cards - ;; together in one of the sorted lists. Also, if an extension to - ;; that set leads to an optimal allocation, the extended set - ;; corresponds to an extended section of the list. - [value-sorted (sort (lambda (c) (send c get-value)))] - [suit-sorted (sort (lambda (c) (+ (* 20 (send c get-suit-id)) (send c get-value))))] - - ;; Procedure to find a set allocation given one of the sorted - ;; lists. It picks each group of three consecutive items from the - ;; list and see how that choice works out. (We're still performing - ;; a lot of redundant work here, but it's fast enough.) - [find-set - (lambda (l) - ;; 3loop tries each group of three items - (let 3loop ([pre null] ; prefix we've tried already - [group (list (car l) (cadr l) (caddr l))] ; the group to try - [post (cdddr l)]) ; suffix we haven't tried yet - (max (if (set? group) - ;; We have a start; try to extend or not, and - ;; make gin with the rest, then try the next 3-set - (max (let exloop ([set group][post post]) - (cond - [(null? post) - ;; No more items? Can't extend the set. Does the - ;; set we found work out in the long run? - (+ (length set) - (if (null? pre) 0 (gin-size pre)))] - ;; Try to extend the set... - [(set? (cons (car post) set)) - ;; The set can be extended. Maybe this - ;; extension works in the long run... - (max (exloop (cons (car post) set) (cdr post)) - ;; or maybe without extension works in - ;; the long run... - (+ (length set) (gin-size (append pre post))))] - ;; Can't extend the set, so try without - ;; extension - [else (+ (length set) - (gin-size (append pre post)))]))) - 0) - ;; Try next three, if possible - (if (null? post) - 0 - ;; Rotate the group, pulling a new last item in from - ;; post and kicking the first item out to pre. - (3loop (cons (car group) pre) - (list (cadr group) (caddr group) (car post)) - (cdr post))))))]) - ;; Try the value-sorted list, the suit-sorted list, then... - (max (find-set value-sorted) - (find-set suit-sorted) - ;; the suit-sorted list with with Aces at the end instead of the - ;; beginning - (let ace-loop ([pre null][l suit-sorted]) - (cond - [(null? l) - ;; No more aces to find - (find-set (reverse pre))] - [(null? (cdr l)) - ;; No more aces to find - (find-set (reverse (cons (car l) pre)))] - ;; Is the front card an ace (before something else of the same - ;; suit)? - [(and (= 1 (send (car l) get-value)) - (= (send (car l) get-suit-id) (send (cadr l) get-suit-id))) - ;; Ace is at beginning; move it to the end - (let* ([ace (car l)] - [ace-suit (send ace get-suit-id)]) - (let loop ([pre (cons (cadr l) pre)][l (cddr l)]) - ;; At end of this suit? - (if (or (null? l) (> (send (car l) get-suit-id) ace-suit)) - ;; At the end; add Ace here - (ace-loop (cons ace pre) l) - ;; still looking for new spot for Ace - (loop (cons (car l) pre) (cdr l)))))] - [else - ;; Didn't find an ace; keep looking - (ace-loop (cons (car l) pre) (cdr l))])))))) - -;; A hand wins if the biggest gin configuration includes all the cards -(define (gin? cards) - (= (gin-size cards) (length cards))) - -;; This procedure is the second part of the machine's strategy. If the machine -;; sees two choices that are equally good according to gin-size, then it -;; computes a rating based on pairs, i.e., cards that might eventually go -;; together in a set. -(define (pair-rating cards gone-cards) - (let ([suits (map (lambda (card) (send card get-suit-id)) cards)] - [values (map (lambda (card) (send card get-value)) cards)]) - ;; Its O(n*n), but n is always 10 or 11 - (apply - + (map (lambda (suit value) - (apply - + (map (lambda (suit2 value2) - (cond [(= value value2) - (- 2 (count-gone value gone-cards))] - [(= suit suit2) - (rate-straight suit value value2 gone-cards)] - [else 0])) - suits values))) - suits values)))) - -;; count-gone checks how many of a given value are known to be permanently -;; discarded -(define (count-gone value gone-cards) - (cond [(null? gone-cards) 0] - [(= value (send (car gone-cards) get-value)) - (+ 1 (count-gone value (cdr gone-cards)))] - [else (count-gone value (cdr gone-cards))])) - -;; count-avail checks whether a given value/suit is -;; known to be discarded (returns 0) or not (returns 1) -(define (count-avail value suit gone-cards) - (cond [(null? gone-cards) 1] - [(and (= value (send (car gone-cards) get-value)) - (= suit (send (car gone-cards) get-suit-id))) - 0] - [else (count-avail value suit (cdr gone-cards))])) - -;; rates the possibility for forming a straight given two card values in a -;; particular suit, and taking into account cards known to be discarded; the -;; rating is the number of non-discarded cards that would form a straight with -;; the given values -(define (rate-straight suit value value2 gone-cards) - (let ([v1 (if (= value 1) - (if (value2 . > . 6) 14 1) - value)] - [v2 (if (= value2 1) - (if (value . > . 6) 14 1) - value2)]) - (let ([delta (abs (- v1 v2))]) - (cond [(= delta 1) - (cond [(or (= v1 1) (= v2 1)) - ;; Might get the 3? - (count-avail 3 suit gone-cards)] - [(or (= v1 14) (= v2 14)) - ;; Might get the queen? - (count-avail 12 suit gone-cards)] - [(or (= v1 13) (= v2 13)) - ;; Might get the jack or ace? - (+ (count-avail 11 suit gone-cards) - (count-avail 1 suit gone-cards))] - [else - ;; Might get top or bottom? - (+ (count-avail (sub1 (min v1 v2)) suit gone-cards) - (count-avail (add1 (max v1 v2)) suit gone-cards))])] - [(= delta 2) - ;; Might get the middle one? - (let ([middle (quotient (+ v1 v2) 2)]) - (count-avail middle suit gone-cards))] - [else 0])))) - -;; The procedure implements the machine's card-drawing choice -(define (machine-wants-card? machine-hand card gone-cards) - ;; Simple strategy: the machine wants the card if taking it will make the - ;; gin-size of its hand increase, or if taking it will not make the gin-size - ;; decrease but will increase the pair rating. - (let* ([orig-size (gin-size machine-hand)] - [new-hand (remq (machine-discard (cons card machine-hand) gone-cards) - (cons card machine-hand))] - [new-size (gin-size new-hand)]) - (or (> new-size orig-size) - (and (= new-size orig-size) - (> (pair-rating new-hand gone-cards) - (pair-rating machine-hand gone-cards)))))) - -;; The procedure implements the machine's discard choice -(define (machine-discard machine-hand gone-cards) - ;; Discard the card that leaves the hand with the largest gin-size. If - ;; multiple cards leave the same largest gin size, pick card leaving the best - ;; pair rating. - (let* ([gin-size-card-pairs - (map (lambda (card) (cons (gin-size (remq card machine-hand)) card)) - machine-hand)] - [most (apply max (map car gin-size-card-pairs))] - [best (filter (lambda (x) (= most (car x))) gin-size-card-pairs)] - [best-cards (map cdr best)] - [rating-card-pairs - (map (lambda (card) - (cons (pair-rating (remq card machine-hand) gone-cards) card)) - best-cards)] - [most (apply max (map car rating-card-pairs))] - [best (filter (lambda (x) (= most (car x))) rating-card-pairs)]) - (cdar best))) - -;; ;;;;;; Game Loop ;;;;;;;; - -;; This procedure finalizes the display when the game is over -(define (end-of-game why) - (send t set-status - (format - "~aGame over. ~a." - why - (cond [(and (gin? you-hand) (gin? machine-hand)) "Tie"] ; only on deal - [(gin? you-hand) "You win"] - [else "Opponent wins"]))) - (send t cards-face-up machine-hand)) - -;; Deck empty? Shuffle the discard pile (preserving the top discard) -(define (check-empty-deck) - (when (null? deck) - (set! deck (shuffle-list (cdr discards) 7)) - (set! discards (list (car discards))) - (send t cards-face-down deck) - (send t stack-cards deck) - (send t move-cards deck draw-x draw-y))) - -;; Check for starge start... -(if (or (gin? you-hand) (gin? machine-hand)) - ;; Someone was delt gin - game over - (end-of-game "Dealt gin. ") - - ;; This is the main game loop - (let loop () - (check-empty-deck) - - ;; Your turn; you can select the top card on the deck or on the discard - ;; pile - (send (car discards) user-can-move #t) - (send (car discards) snap-back-after-move #t) - (send (car deck) user-can-move #t) - (send (car deck) snap-back-after-move #t) - (send t set-status YOUR-TURN-MESSAGE) - (let ([something-happened (make-semaphore 0)]) - ;; Set callback in your region to receive the deck/discard card - (set-region-callback! - you-region - (lambda (cards) - (let ([card (car cards)]) - ;; Adjust the deck, discard pile, and your hand - (if (eq? card (car discards)) - (set! discards (cdr discards)) - (set! deck (cdr deck))) - (set! you-hand (cons card you-hand)) - (send t card-face-up card)) - - ;; Action done - clean up and move on - (semaphore-post something-happened) - (unless (null? deck) - (send (car deck) user-can-move #f) - (send (car deck) home-region #f)) - (unless (null? discards) - (send (car discards) user-can-move #f) - (send (car discards) home-region #f)) - (set-region-callback! you-region #f) - (set-region-interactive-callback! you-region #f))) - ;; Interactive callback: change home of card if region is hilited. As a - ;; result, the card snaps to where you put it instead of back to its - ;; original position. - (set-region-interactive-callback! - you-region - (lambda (on? cards) - (send (car cards) snap-back-after-move (not on?)) - (send (car cards) home-region (and on? you-region)))) - ;; Wait for action (the action itself is handled by the callback - ;; for you-region) - (yield something-happened)) - - ;; Time for you to discard something - (send t set-status DISCARD-MESSAGE) - (let ([something-happened (make-semaphore 0)]) - ;; This time, the discard pile is the active region - (set-region-callback! - discard-region - (lambda (cards) - (let ([card (car cards)]) - ;; Adjust the discard pile and your hand - (set! you-hand (remq card you-hand)) - (set! discards (cons card discards)) - (send t card-to-front card) - (send t move-card card discard-x discard-y) - - ;; Discarded card is now relatively immobile - (send card user-can-move #t) - (send card home-region #f)) - - ;; Action done - clean up and move on - (semaphore-post something-happened) - (set-region-callback! discard-region #f) - (set-region-interactive-callback! discard-region #f))) - ;; Interactive callback: change home of card if region is hilited, - ;; so the card you drag snaps to the discard pile. - (set-region-interactive-callback! - discard-region - (lambda (on? cards) - (send (car cards) home-region (if on? discard-region you-region)))) - ;; Wait for action - (yield something-happened)) - - (if (gin? you-hand) - ;; Game over - (end-of-game "") - - ;; Keep going; machine's turn - (begin - (check-empty-deck) - ;; Machine picks a card - (if (machine-wants-card? machine-hand (car discards) (cdr discards)) - (let ([card (car discards)]) - (set! discards (cdr discards)) - (send t card-face-down card) - (send card user-can-move #f) - (set! machine-hand (cons card machine-hand))) - (let ([card (car deck)]) - (send t card-to-front card) - (set! deck (cdr deck)) - (send card user-can-move #f) - (set! machine-hand (cons card machine-hand)))) - (send t move-cards-to-region machine-hand machine-display-region) - - ;; Machine discards - (let ([card (machine-discard machine-hand discards)]) - (send t card-face-up card) - (send t card-to-front card) - (send t move-card card discard-x discard-y) - (set! discards (cons card discards)) - (set! machine-hand (remq card machine-hand)) - (send t move-cards-to-region machine-hand machine-display-region)) - - (if (gin? machine-hand) - ;; Game over - (end-of-game "") - - ;; Next turn - (loop)))))) - -)) diff --git a/pkgs/games/ginrummy/info.rkt b/pkgs/games/ginrummy/info.rkt deleted file mode 100644 index 4df966ddb1..0000000000 --- a/pkgs/games/ginrummy/info.rkt +++ /dev/null @@ -1,5 +0,0 @@ -#lang info - -(define name "Rummy") -(define game "ginrummy.rkt") -(define game-set "Card Games") diff --git a/pkgs/games/gl-board-game.rkt b/pkgs/games/gl-board-game.rkt deleted file mode 100644 index 3b4fc4e7fc..0000000000 --- a/pkgs/games/gl-board-game.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang racket/base - -(require "gl-board-game/gl-board.rkt") -(provide (all-from-out "gl-board-game/gl-board.rkt")) diff --git a/pkgs/games/gl-board-game/gl-board-game.scrbl b/pkgs/games/gl-board-game/gl-board-game.scrbl deleted file mode 100644 index 0605dffcc2..0000000000 --- a/pkgs/games/gl-board-game/gl-board-game.scrbl +++ /dev/null @@ -1,111 +0,0 @@ -#lang scribble/doc -@(require scribble/manual - (for-label racket/base - racket/contract - games/gl-board-game - racket/gui/base - sgl)) - -@title{GL Board Game: 3-D Game Support} - -@defmodule[games/gl-board-game] - -@defclass[gl-board% canvas% ()]{ - - -@defconstructor/auto-super[([min-x real?] - [max-x real?] - [min-y real?] - [max-y real?] - [lift real?] - [move (any/c gl-vector? . -> . any) void] - [who string? "this game"])]{ - -The @racket[min-x], @racket[max-x], @racket[min-y], and @racket[max-y] -arguments specify the dimensions of the board plane to be visible in -the window by default. - -The @racket[lift] argument specifies how many units a piece moves -vertically when the user clicks on it. - -The @racket[move] function is called when a piece is moved to a space -(possibly it's current space), when a space is clicked on, and when a -space is dragged to another space. The @racket[move] function is -given the information of the piece or space selected and the -coordinates to which it is moved. - -The @racket[who] argument is used for reporting an error to the user -when GL is unavailable at run time.} - - -@defmethod[(add-space [draw (-> any)] [info any/c]) void?]{ - -Adds a space to the board. The @racket[draw] thunk should draw the -space (using GL commands) when called. The @racket[info] value is -given to the @racket[_move] function (supplied to the constructor) -when the space is selected.} - - -@defmethod[(add-piece [x real?][y real?][z real?] - [draw ([shadow? boolean?] . -> . any)] [info any/c]) void?]{ - -Adds a piece to the board. The @racket[draw] thunk should draw the -piece (using GL commands) when called. The @racket[info] argument is -given to the @racket[_move] function (supplied to the constructor) -when the piece is moved. The piece is translated by @racket[x], -@racket[y], and @racket[z] before drawing.} - - -@defmethod[(remove-piece [info any/c]) void?]{ - -Removes all pieces previously added with representative @racket[info].} - - -@defmethod[(add-heads-up [w real?] [h real?] [draw (-> any)] [info any/c]) void?]{ - -Add a ``heads-up'' display element whose size is @racket[w] by -@racket[h] units with the given @racket[draw] thunk and @racket[info] -reprsentative.} - - -@defmethod[(remove-heads-up [info any/c]) void?]{ - -Removes all ``heads-up'' displays elements previous added with -representative @racket[info].} - - -@defmethod[(set-space-draw [info any/c] [draw (-> any)]) void?]{ - -Sets the drawing function of all spaces added with -representative @racket[info].} - - -@defmethod[(set-piece-draw [info any/c] - [draw ([shadow? boolean?] . -> . any)]) void?]{ - -Sets the drawing function of all pieces added with -representative @racket[info].} - - -@defmethod[(enable-piece [info any/c][can-move? any/c]) void?]{ - -Enables or disables moving of all pieces added with -representative @racket[info].} - - -@defmethod[(enabled? [info any/c]) boolean?]{ - -reports whether the first piece with representative @racket[info] is enabled.} - - - - -@defmethod*[([(get-pieces) list?] - [(get-spaces) list?] - [(get-heads-up) list?])]{ - -Returns values for various kinds of content currently on the -board. The result corresponds to @racket[_info] values given to -@racket[add-piece], etc.} - -} diff --git a/pkgs/games/gl-board-game/gl-board.rkt b/pkgs/games/gl-board-game/gl-board.rkt deleted file mode 100644 index 6cfb6e8b7c..0000000000 --- a/pkgs/games/gl-board-game/gl-board.rkt +++ /dev/null @@ -1,461 +0,0 @@ -(module gl-board racket - (require sgl - sgl/gl - sgl/gl-vectors - racket/class - racket/list - racket/gui) - - (provide gl-board%) - - (define-struct space (draw info) #:mutable) - (define-struct piece (x y z draw info enabled?) #:mutable) - (define-struct heads-up (w h draw info) #:mutable) - - (define (get-info x) - (cond - ((piece? x) (piece-info x)) - ((space? x) (space-info x)) - (else #f))) - - ;; interpolate : real gl-double-vector gl-double-vector -> gl-double-vector - ;; returns the point on the p1-p2 line with the given z coordinate. - (define (interpolate z p1 p2) - (let* ((v (gl-double-vector- p2 p1)) - (c (/ (- z (gl-vector-ref p1 2)) - (gl-vector-ref v 2)))) - (gl-double-vector+ p1 (gl-double-vector* c v)))) - - (define (get-viewport) - (glGetIntegerv GL_VIEWPORT 4)) - - (define (get-projection) - (glGetDoublev GL_PROJECTION_MATRIX 16)) - - (define (get-modelview) - (glGetDoublev GL_MODELVIEW_MATRIX 16)) - - (define gl-board% - (class canvas% - (inherit with-gl-context swap-gl-buffers refresh get-width get-height get-dc focus) - - ;; min-x, max-x, min-y, max-y, lift: real - ;; move: info gl-double-vector -> - ;; min-x, max-x, min-y and max-y specify the dimensions of the board. - ;; lift specifies how far a piece is picked up when being moved. - ;; move is called when a piece is moved to a space (possibly it's current space), - ;; when a space is clicked on, and when a space is dragged to another space. - ;; move is given the info of the piece or space selected, and coordinates - ;; it is moved to. - (init-field min-x max-x min-y max-y lift (move void) (who "this game")) - - (define spaces null) - (define pieces null) - (define heads-ups null) - - (define/public (get-pieces) (map piece-info pieces)) - (define/public (get-spaces) (map space-info spaces)) - (define/public (get-heads-ups) (map heads-up-info heads-ups)) - - ;; add-space: (->) info -> - ;; Adds a space to this board. The draw thunk should draw the space - ;; when called. The value of the info argument will be given to - ;; the move function when the space is selected. - (define/public (add-space draw info) - (set! spaces (cons (make-space draw info) spaces))) - - ;; add-piece: real real real (->) info -> - ;; Adds a piece to this board. The draw thunk should draw the piece - ;; when called. The value of the info argument will be given to - ;; the move function when the piece is selected. The piece is translated - ;; by the x, y and z arguments before drawing. - (define/public (add-piece x y z draw info) - (set! pieces (cons (make-piece x y z draw info #t) pieces))) - - ;; set-space-draw: info (->) -> - ;; Sets the drawing method of all spaces whose info is equal to space to d. - (define/public (set-space-draw space d) - (for-each - (lambda (s) - (when (equal? (space-info s) space) - (set-space-draw! s d))) - spaces)) - - ;; set-piece-draw: info (boolean ->) -> - ;; Sets the drawing method of all pieces whose info is equal to piece to d. - (define/public (set-piece-draw piece d) - (for-each - (lambda (p) - (when (equal? (piece-info p) piece) - (set-piece-draw! p d))) - pieces)) - - ;; set-heads-up-draw: info (->) -> - ;; Sets the drawing method of all heads-up objects whose info is equal to piece to d. - (define/public (set-heads-up-draw piece d) - (for-each - (lambda (p) - (when (equal? (heads-up-info p) piece) - (set-heads-up-draw! p d))) - heads-ups)) - - ;; enabled/disables dragging of a piece - (define/public (enable-piece info on?) - (let ([p (ormap (lambda (p) - (and (equal? info (piece-info p)) p)) - pieces)]) - (if p - (set-piece-enabled?! p (and on? #t)) - (raise-mismatch-error 'enable-piece "no matching piece: " info)))) - - ;; enabled?: info -> boolean - (define/public (enabled? info) - (let ((p (ormap (lambda (p) - (and (equal? info (piece-info p)) p)) - pieces))) - (if p - (piece-enabled? p) - (raise-mismatch-error 'enabled? "no matching piece: " info)))) - - ;; remove-piece: info -> - ;; Removes all pieces whose info is equal? to p-i from this board. - (define/public (remove-piece p-i) - (set! pieces (filter - (lambda (x) - (not (equal? p-i (piece-info x)))) - pieces))) - - (define/public (add-heads-up w h draw info) - (set! heads-ups (append heads-ups - (list (make-heads-up w h draw info))))) - - (define/public (remove-heads-up info) - (set! heads-ups (filter - (lambda (x) - (not (equal? info (heads-up-info x)))) - heads-ups))) - - ;; How far the light is from the board's center - (define light-distance (* 4.0 (max (- max-x min-x) (- max-y min-y)))) - ;; The board's center - (define center-x (/ (+ max-x min-x) 2)) - (define center-y (/ (+ max-y min-y) 2)) - - (define eye-distance (* 2.0 (max (- max-x min-x) (- max-y min-y)))) - (define delta-eye-distance (/ eye-distance 30.0)) - (define fov 30) - (init-field [theta 45]) - (init-field [phi 0] - [delta-x 0] - [delta-y 0]) - - ;; Transformation used to draw shadows. - (define shadow-projection - (let ((ld light-distance)) - (gl-double-vector ld 0 0 0 - 0 ld 0 0 - 0 0 ld (- 1) - 0 0 0 0))) - - ;; Either #f or the currently selected piece. - (define mouse-state #f) - - ;; dragging-correction : (union #f 3-element-gl-double-vector) - (define dragging-correction #f) - - ;; dragging : (union #f 3-element-gl-double-vector) - ;; The mouse's location while dragging - (define dragging #f) - - ;; draw-spaces : bool -> - ;; Draws the board. If select? is true, then names are loaded for selection - ;; with each space named after its index in the spaces list. - (define/private (draw-spaces select?) - (gl-normal 0.0 0.0 1.0) - (let loop ((i 0) - (s spaces)) - (unless (null? s) - (when select? - (gl-load-name i)) - ((space-draw (car s))) - (loop (add1 i) - (cdr s))))) - - ;; draw-pieces : bool -> - ;; Draws the pieces. If select? is true, then names are loaded for selection - ;; with each piece named after its index plus the number of spaces. - (define/private (draw-pieces select? shadow?) - (let loop ((i (length spaces)) - (ps (if (and (piece? mouse-state) - dragging) - (cons (make-piece (gl-vector-ref dragging 0) - (gl-vector-ref dragging 1) - (gl-vector-ref dragging 2) - (piece-draw mouse-state) - (piece-info mouse-state) - #f) - pieces) - pieces))) - (unless (null? ps) - (let ((p (car ps))) - (unless (and dragging (eq? mouse-state p)) ;; Don't draw the dragged piece - ;; in its home location. - (when select? - (gl-load-name i)) - (gl-push-matrix) - (gl-translate (piece-x p) (piece-y p) (piece-z p)) - ((piece-draw p) shadow?) - (gl-pop-matrix)) - (loop (add1 i) - (cdr ps)))))) - - (inherit get-client-size) - - (define/private (draw-heads-up sh) - (let-values ([(w) (apply + (map heads-up-w heads-ups))] - [(h) (apply max 0 (map heads-up-h heads-ups))]) - (let ([dy sh] - [x (/ (- w) 2)]) - (let loop ([heads-ups heads-ups] - [x x]) - (unless (null? heads-ups) - (let ([hu (car heads-ups)]) - (gl-push-matrix) - (gl-translate (+ x (/ (heads-up-w hu) 2)) - dy - 0) - ((heads-up-draw hu)) - (gl-pop-matrix) - (loop (cdr heads-ups) - (+ x (heads-up-w hu))))))))) - - (define/override (on-paint) - (with-gl-context - (lambda () - (gl-clear 'color-buffer-bit 'depth-buffer-bit 'stencil-buffer-bit) - - (draw-spaces #f) - - ;; draw the board, putting 1 in the stencil buffer for each exposed - ;; pixel of a piece. - (gl-enable 'stencil-test) - (gl-stencil-func 'always 1 1) - (gl-stencil-op 'keep 'keep 'replace) - (draw-pieces #f #f) - (gl-disable 'stencil-test) - - ;; Very simple shadowing on the board, only blending the shadow - ;; with pixels stenciled to 0, i.e. avoid the pieces. - (gl-enable 'stencil-test) - (gl-stencil-func 'equal 0 1) - ;; Once a pixel has been shadows, use saturating incr to set its - ;; value to 1, preventing multi-shadowing. - (gl-stencil-op 'keep 'keep 'incr) - (gl-disable 'depth-test) - (gl-enable 'blend) - (gl-blend-func 'dst-color 'zero) - (gl-color 0.5 0.5 0.5) - (gl-push-matrix) - (gl-translate center-x center-y light-distance) - (gl-mult-matrix shadow-projection) - (gl-translate (- center-x) (- center-y) (- light-distance)) - (draw-pieces #f #t) - (gl-enable 'depth-test) - (gl-disable 'blend) - (gl-disable 'stencil-test) - (gl-pop-matrix) - - (gl-clear 'depth-buffer-bit 'stencil-buffer-bit) - (gl-matrix-mode 'projection) - (gl-push-matrix) - (gl-load-identity) - (gl-perspective 45 (/ (get-width) (get-height)) 5 10) - (gl-matrix-mode 'modelview) - (gl-push-matrix) - (gl-load-identity) - (gl-translate 0 0 (- 10)) - (draw-heads-up -3.5) - (gl-pop-matrix) - (gl-matrix-mode 'projection) - (gl-pop-matrix) - (gl-matrix-mode 'modelview) - - (gl-flush) - (swap-gl-buffers)))) - - (define/override (on-size w h) - (with-gl-context - (lambda () - (gl-viewport 0 0 w h) - (setup-view/proj))) - (refresh)) - - (define/private (setup-view/proj) - (gl-matrix-mode 'projection) - (gl-load-identity) - (gl-perspective fov (/ (get-width) (get-height)) - (/ eye-distance 2) (* 2 eye-distance)) - (gl-matrix-mode 'modelview) - (gl-load-identity) - (gl-translate delta-x delta-y (- eye-distance)) - (gl-rotate (- theta) 1 0 0) - (gl-rotate phi 0 0 1) - (gl-translate (- center-x) (- center-y) 0)) - - ;; pick: real real -> (union piece space #f) - ;; Returns the piece or space at screen coordinates x y and #f is there - ;; is no such object. - (define/private (pick x y) - (let ((vp (get-viewport)) - (proj (get-projection)) - (selection (glSelectBuffer 512))) - (gl-render-mode 'select) - (gl-matrix-mode 'projection) - (gl-push-matrix) - (gl-load-identity) - (gl-pick-matrix x (- (gl-vector-ref vp 3) y 1) 1.0 1.0 vp) - (gl-mult-matrix proj) - (gl-matrix-mode 'modelview) - (gl-init-names) - (gl-push-name 0) - (draw-spaces #t) - (draw-pieces #t #f) - (gl-matrix-mode 'projection) - (gl-pop-matrix) - (gl-matrix-mode 'modelview) - (gl-flush) - (let* ((hits (gl-render-mode 'render)) - (results (sort (gl-process-selection (select-buffer->gl-uint-vector selection) - hits) - (lambda (a b) - (< (gl-selection-record-min-z a) - (gl-selection-record-min-z b)))))) - (cond - ((null? results) #f) - (else - (let ((index (car (gl-selection-record-stack (car results))))) - (cond - ((< index (length spaces)) - (list-ref spaces index)) - (else - (list-ref pieces (- index (length spaces))))))))))) - - - ;; screen-world: real real real -> gl-double-vector - ;; Given a screen x and y, return the world x, y, z - ;; corresponding to the given world z. - (define/private (screen->world x y z) - (let* ((v (get-viewport)) - (m (get-modelview)) - (p (get-projection)) - (real-y (- (gl-vector-ref v 3) y 1))) - (interpolate z - (gl-un-project x real-y 0.0 m p v) - (gl-un-project x real-y 1.0 m p v)))) - - (define/private (drag x y) - (with-gl-context - (lambda () - (set! dragging - (gl-double-vector- (screen->world x y lift) - dragging-correction)))) - (refresh)) - - (define/private (start-dragging x y) - (with-gl-context - (lambda () - (let ((v (pick x y))) - (when (and (piece? v) (piece-enabled? v)) - (set! mouse-state v) - (set! dragging-correction - (gl-double-vector- - (screen->world x y lift) - (gl-double-vector (piece-x v) (piece-y v) lift))) - (drag x y)))))) - - (define/private (stop-dragging x y) - (move (get-info mouse-state) dragging) - (set! mouse-state #f) - (set! dragging-correction #f) - (set! dragging #f) - (refresh)) - - (define/override (on-event e) - (cond - ((send e button-down? 'left) - (start-dragging (send e get-x) (send e get-y))) - ((and mouse-state - (or (send e button-up? 'left) - (and (send e moving?) - (not (and (send e dragging?) (send e get-left-down)))))) - (stop-dragging (send e get-x) (send e get-y))) - ((and (send e dragging?) (send e get-left-down)) - (unless dragging - (start-dragging (send e get-x) (send e get-y))) - (when dragging - (drag (send e get-x) (send e get-y)))))) - - (define/override (on-char e) - (case (send e get-key-code) - ((left) - (if (send e get-meta-down) - (set! delta-x (- delta-x 0.1)) - (set! phi (+ phi 3)))) - ((right) - (if (send e get-meta-down) - (set! delta-x (+ delta-x 0.1)) - (set! phi (- phi 3)))) - ((up) - (if (send e get-meta-down) - (set! delta-y (+ delta-y 0.1)) - (set! theta (- theta 3)))) - ((down) - (if (send e get-meta-down) - (set! delta-y (- delta-y 0.1)) - (set! theta (+ theta 3)))) - ((#\+) (unless (< fov 4) - (set! fov (- fov 2)))) - ((#\=) (set! eye-distance (- eye-distance delta-eye-distance))) - ((#\_) (unless (> fov 176) - (set! fov (+ fov 2)))) - ((#\-) (set! eye-distance (+ eye-distance delta-eye-distance)))) - (with-gl-context - (lambda () - (setup-view/proj))) - (refresh)) - - (let ([cfg (new gl-config%)]) - (send cfg set-multisample-size 4) - (send cfg set-stencil-size 1) - (super-new (style '(gl no-autoclear)) (gl-config cfg))) - - (unless (send (get-dc) get-gl-context) - (message-box "Error" - (format (string-append - "~a requires OpenGL, but there was an error initializing" - " the OpenGL context. Maybe OpenGL is not supported by" - " the current display.") - who) - #f - '(ok stop)) - (exit)) - - ;; initial setup - (with-gl-context - (lambda () - (gl-shade-model 'smooth) - (when (>= (gl-get-gl-version-number) 13) - (gl-enable 'multisample)) - (gl-enable 'lighting) - (gl-enable 'light0) - (gl-enable 'depth-test) - ;(gl-light-model 'light-model-local-viewer 1.0) - ;(gl-light-model-v 'light-model-ambient (gl-float-vector 0.0 0.0 0.0 0.0)) - (gl-light-v 'light0 'position (gl-float-vector center-x center-y light-distance 1.0)) - ;(gl-light-v 'light0 'ambient (gl-float-vector 0.7 0.7 0.7 1.0)) - ;(gl-light-v 'light0 'diffuse (gl-float-vector 0.9 0.9 0.9 1.0)) - ;(gl-light-v 'light0 'specular (gl-float-vector 0.0 0.0 0.0 1.0)) - (gl-clear-color 1.0 1.0 1.0 1.0) - (setup-view/proj))) - (focus))) - ) diff --git a/pkgs/games/gl-board-game/info.rkt b/pkgs/games/gl-board-game/info.rkt deleted file mode 100644 index 55cb4fc8c1..0000000000 --- a/pkgs/games/gl-board-game/info.rkt +++ /dev/null @@ -1,3 +0,0 @@ -#lang info - -(define scribblings '(("gl-board-game.scrbl" () (gui-library)))) diff --git a/pkgs/games/gl-board-game/main.rkt b/pkgs/games/gl-board-game/main.rkt deleted file mode 100644 index aca4655b06..0000000000 --- a/pkgs/games/gl-board-game/main.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang racket/base - -(require "gl-board.rkt") -(provide (all-from-out "gl-board.rkt")) diff --git a/pkgs/games/gobblet/check.rkt b/pkgs/games/gobblet/check.rkt deleted file mode 100644 index 547ce8e9fd..0000000000 --- a/pkgs/games/gobblet/check.rkt +++ /dev/null @@ -1,82 +0,0 @@ -#lang racket -;; Checks that all paths in a tree of games leads to the expected -;; winner. It also generates information for known plays to be used to -;; speed up future games (i.e., converts learned strategy to a compact -;; form). - -(require racket/unit - "sig.rkt" - (only-in "model.rkt" model-unit@) - (only-in "explore.rkt" explore-unit@) - (only-in "heuristics.rkt" heuristics-unit@)) - -(define board-size 3) -(define cannon-size +inf.0) - -(define-unit board-config@ - (import) - (export config^) - (define BOARD-SIZE board-size)) - -(define-unit robot-unit@ - (import config^ explore^ model^ heuristics^) - (export) - (define (mv b p fi fj ti tj k) - (move b p fi fj ti tj k void)) - - (define big (sub1 BOARD-SIZE)) - (define med (- BOARD-SIZE 2)) - - (define 3x3-one-step-win - ;; One-step win - (mv empty-board (list-ref red-pieces big) #f #f 0 0 - (lambda (board) - (mv board (list-ref red-pieces big) #f #f 1 1 - values)))) - - (define 3x3-two-step-win - (mv empty-board (list-ref red-pieces big) #f #f 0 0 - (lambda (board) - (mv board (list-ref yellow-pieces big) #f #f 1 0 - (lambda (board) - (mv board (list-ref red-pieces big) #f #f 1 1 - (lambda (board) - (mv board (list-ref yellow-pieces big) 1 0 2 2 - (lambda (board) - (mv board (list-ref red-pieces med) #f #f 1 0 - (lambda (board) - (mv board (list-ref yellow-pieces big) #f #f 1 0 - values)))))))))))) - - (define (test-search depth board who history) - ((make-search (if (= BOARD-SIZE 3) - make-3x3-rate-board - make-4x4-rate-board) - (if (= BOARD-SIZE 3) - make-3x3-no-canned-moves - make-4x4-canned-moves)) - +inf.0 1 - depth ; depth - who board history)) - - (when (= BOARD-SIZE 3) - (test-search 1 3x3-one-step-win 'red null) - (test-search 3 3x3-one-step-win 'red null) - (test-search 3 3x3-two-step-win 'red null)) - - ;; Time test - (let ([start (current-inexact-milliseconds)] - [m (test-search 5 empty-board 'red null)]) - (printf "[~a secs]\n" (/ (- (current-inexact-milliseconds) start) - 1000.0)))) - -(invoke-unit - (compound-unit/infer - (import) - (export) - (link - [((CONFIG : config^)) board-config@] - [((MODEL : model^)) model-unit@] - [((HEURISTICS : heuristics^)) heuristics-unit@] - [((EXPLORE : explore^)) explore-unit@] - [() robot-unit@]))) diff --git a/pkgs/games/gobblet/explore.rkt b/pkgs/games/gobblet/explore.rkt deleted file mode 100644 index 53e7374a6a..0000000000 --- a/pkgs/games/gobblet/explore.rkt +++ /dev/null @@ -1,637 +0,0 @@ -#lang racket -;; This is the main search engine for auto-play. -;; See `make-search' for the main entry point. - -(require "sig.rkt" - "test.rkt") - -(provide explore-unit@) - -;; Debugging: -(define-syntax (log-printf stx) - (syntax-case stx () - [(_ n i arg ...) - (<= (syntax-e #'n) 0) ; adjust this number for print levels - #'(begin - (when (i . < . 100) - (printf arg ...)) - (void))] - [(_ n i arg ...) - #'(void)])) - -(define-unit explore-unit@ - (import config^ model^) - (export explore^) - (define-struct config (max-depth memory canonicalize rate-board canned-moves)) - - ;; make-search : (canonicalize-proc -> (board sym num num -> num)) - ;; (canonicalize-proc hash-table -> (board sym compact xform -> plan)) - ;; -> search-proc - ;; where canonicalize-proc = (board sym -> (cons compact xform)) - ;; and search-proc is below. - ;; Returns a search procedure that embeds a canonicalization table and - ;; a memory of canned moves from the `make-canned-moves' procedure. - ;; The `make-canned-moves' proc can add to the given hash table, mapping - ;; canonical compact boards to (listof (cons num plan)), where the - ;; num for a plan is a rating for how good the plan is; +inf.0 means - ;; forced win, and -inf.0 means forced loss. A plan is created - ;; with `make-plan', described below. - (define (make-search make-rate-board make-canned-moves) - ;; Long-term memory (i.e., spans searches) - (define init-memory (make-hash)) - (define canonicalize (make-canonicalize)) - (define rate-board (make-rate-board canonicalize)) - (define canned-moves (make-canned-moves canonicalize init-memory)) - (when learn? - (load-memory init-memory canonicalize)) - ;; search-proc : num num num sym board (listof board) -> play - ;; Finds a move given search parameters, whose turn it is, - ;; the current board, and a list of past boards (not - ;; including the current one, used to avoid cycles in the game). - ;; The result is a play, which can be applied to a board with - ;; `apply-play'. - (lambda (timeout max-steps one-step-depth - me board history) - (let* ([result #f] - [once-sema (make-semaphore)] - [result-sema (make-semaphore)] - ;; Short-term memory (i.e., discarded after this search) - [memory (make-hash)]) - ;; Record game-history boards as loop ties - (let loop ([history history][me (other me)]) - (unless (null? history) - (let ([key+xform (canonicalize (car history) me)]) - (hash-set! memory (car key+xform) LOOP-TIE)) - (loop (cdr history) (other me)))) - ;; Copy canned and learned info into short-term memory: - (hash-for-each init-memory (lambda (k v) (hash-set! memory k v))) - ;; Search in a background thread: - (let ([t (thread - (lambda () - ;; Try just one chunk of lookaheads, then loop - ;; for more ambitious searches (if there's time) - (let loop ([steps (if (= timeout +inf.0) - max-steps - 1)] - [max-depth (if (= timeout +inf.0) - one-step-depth - 2)]) - (set! result - ;; ======== Here's where we get a move ============ - (let ([v (multi-step-minmax - steps - 3 ; span - (make-config - (min max-depth one-step-depth) - memory canonicalize rate-board canned-moves) - 0 ; indent - init-memory - me board)]) - (log-printf 1 0 "> ~a/~a Result: ~a\n" - steps (min max-depth one-step-depth) - (play->string v)) - v)) - ;; We have at least one result, now. - (semaphore-post once-sema) - ;; If we could learn more by searching deeper, then - ;; do so. - (unless (or (and (= steps max-steps) - (one-step-depth . <= . max-depth)) - ((car result) . = . +inf.0) - ((car result) . = . -inf.0) - ((cdr result) . eq? . 'loop!)) - (if (one-step-depth . <= . max-depth) - (loop (add1 steps) 2) - (loop steps (add1 max-depth))))) - (semaphore-post result-sema)))]) - ;; Sync with the background thread and return the result: - (sync/timeout timeout result-sema) - (semaphore-wait once-sema) - (kill-thread t) - (when (null? (cdr result)) - (error 'search "didn't find a move!?")) - (cdr result))))) - - ;; `make-plan' takes a piece size, the source position (#f and #f for off - ;; the board), the destination position, a xform inidcating how to - ;; transform the positions into canonical positions, and a number - ;; that estimates how many more steps until the end of game. - (define-struct plan (size from-i from-j to-i to-j xform turns) #:mutable) - - ;; apply-play : board play -> board - ;; A play is (list piece from-i from-j to-i to-j turns) - ;; where turns is an estimate of how many moves remain in - ;; the game; the turns part is not used here (it can be left - ;; out), but it is returned by a search-proc. - (define (apply-play board m) - (move board - (list-ref m 0) - (list-ref m 1) - (list-ref m 2) - (list-ref m 3) - (list-ref m 4) - (lambda (new-board) - new-board) - (lambda () - (error 'apply-play "bad move: ~a" m)))) - - ;; ------------------------------------------------------------ - ;; Checking and combining move plans - - (define delay-loss? #t) - - ;; Discourage loops: - (define LOOP-TIE `((-1000.0 loop!))) - - ;; Translates a plan into the given coordinate xform - (define (xlate m xform) - (let-values ([(from-i from-j) - (if (plan-from-i m) - (unapply-xform xform (apply-xform (plan-xform m) - (plan-from-i m) - (plan-from-j m))) - (values #f #f))] - [(to-i to-j) - (unapply-xform xform (apply-xform (plan-xform m) - (plan-to-i m) - (plan-to-j m)))]) - (make-plan (plan-size m) from-i from-j to-i to-j xform (plan-turns m)))) - - (define (found-win? v) - (and (pair? v) - (= (caar v) +inf.0))) - - (define (immediate? v) - (and (pair? v) (zero? (get-depth (car v))))) - - (define (found-lose? v) - (and (pair? v) - (= (caar v) -inf.0))) - - (define (get-depth a) - (if (plan? (cdr a)) - (plan-turns (cdr a)) - 0)) - - ;; Keeps the best move --- up to `span' of them --- in `a' and `b'. - ;; The two lists are sorted, and the result should keep them sorted. - ;; For -inf.0 ratings, prefer the move farthest from the end of the - ;; game, otherwise prefer the move closest. - (define (best span a b) - (cond - ;; First, cases where span, a, or b goes to zero/null: - [(zero? span) null] - [(null? a) - (if (null? b) - null - (cons (car b) (best (sub1 span) null (cdr b))))] - [(null? b) - (cons (car a) (best (sub1 span) null (cdr a)))] - ;; Pick best from first of a and first of b: - ;; - Case 1: a is rated better - [(> (caar a) (caar b)) - (cons (car a) (best (sub1 span) (cdr a) b))] - ;; - Case 2: b is rated better - [(< (caar a) (caar b)) - (cons (car b) (best (sub1 span) a (cdr b)))] - ;; - Case 3: same ratings, so pick based on distance to end-of-game - ;; - Subcase 1: we're picking between losses, and we want to delay the loss - [(and delay-loss? - (= (caar a) -inf.0)) - (if (> (get-depth (car a)) (get-depth (car b))) - (cons (car a) (best (sub1 span) (cdr a) b)) - (cons (car b) (best (sub1 span) a (cdr b))))] - ;; - Subcase 2: a reaches the end first - [(< (get-depth (car a)) (get-depth (car b))) - (cons (car a) (best (sub1 span) (cdr a) b))] - ;; - Subcase 3: b reaches the end first (or no later than a) - [else (cons (car b) (best (sub1 span) a (cdr b)))])) - - ;; --- TESTS --- - #; - (let* ([plan1 (make-plan 0 0 0 0 0 0 1)] - [plan2 (make-plan 0 0 0 0 0 0 2)] - [plan1s (list (cons 2 plan1) (cons 1 plan1))]) - ;; Check empty/zero combinations: - (test null (best 20 null null)) - (test plan1s (best 2 plan1s null)) - (test plan1s (best 2 null plan1s)) - (test plan1s (best 20 null plan1s)) - (test null (best 0 plan1s plan1s)) - ;; Check rating choice - (test (list (cons 2 plan1)) (best 1 (list (cons 2 plan1)) (list (cons 1 plan1)))) - (test (list (cons 1 plan1)) (best 1 (list (cons 1 plan1)) (list (cons -inf.0 plan2)))) - (test (list (cons 1 plan2)) (best 1 (list (cons -inf.0 plan1)) (list (cons 1 plan2)))) - (test (list (cons 10 plan2) (cons 2 plan1)) (best 2 - (list (cons 2 plan1) (cons 1 plan2)) - (list (cons 10 plan2) (cons 1 plan1)))) - ;; Check time-til-end choice: - (test (list (cons 1 plan1)) (best 1 (list (cons 1 plan1)) (list (cons 1 plan2)))) - (test (list (cons -inf.0 plan2)) (best 1 (list (cons -inf.0 plan1)) - (list (cons -inf.0 plan2))))) - - ;; ------------------------------------------------------------ - ;; Multi-step minmax (non-exhaustive): - - (define hit-count 0) - (define depth-count 0) - (define explore-count 0) - (define enter-count 0) - (define move-count 0) - - ;; ...state and search params... -> (values (listof (cons num plan)) xform) - ;; Minimax search up to the given max-depth, returning up to span - ;; choices of move. - (define (minmax depth span config me board last-to-i last-to-j) - (set! hit-count (add1 hit-count)) - (let* ([board-key+xform ((config-canonicalize config) board me)] - [board-key (car board-key+xform)] - [xform (cdr board-key+xform)] - [key (vector board-key (- (config-max-depth config) depth) span)]) - (let ([choices - (cond - ;; Check for known win/loss/tie at arbitrary depth: - [(hash-ref (config-memory config) board-key (lambda () #f)) - => (lambda (x) x)] - ;; Check for known result at specific remaining depth: - [(hash-ref (config-memory config) key (lambda () #f)) - => (lambda (x) x)] - ;; Check for immediate loss (only rating matters; plan is never used) - [(winner? board (other me)) - (hash-set! (config-memory config) board-key '((-inf.0))) - '((-inf.0))] - ;; Check for immediate loss (only rating matters) - [(winner? board me) - (hash-set! (config-memory config) board-key '((+inf.0))) - '((+inf.0))] - ;; Check for depth - [(depth . >= . (config-max-depth config)) - (set! depth-count (add1 depth-count)) - (let ([l (list - (list ((config-rate-board config) board me last-to-i last-to-j)))]) - (hash-set! (config-memory config) key l) - l)] - ;; Otherwise, we explore this state... - [else - (set! depth-count (add1 depth-count)) - (set! explore-count (add1 explore-count)) - ;; In case we get back here while we're looking, claim an unknown tie: - (hash-set! (config-memory config) board-key LOOP-TIE) - (let* ([choices - (map (lambda (g) - ;; Make sure each canned move is in our coordinate system: - (cons (car g) (xlate (cdr g) xform))) - ((config-canned-moves config) board me board-key xform))] - [choices - (if (found-win? choices) - choices - (try-all-enters choices depth span config - me board xform))] - [choices - (if (found-win? choices) - choices - (try-all-moves choices depth span config - me board xform))] - [choices (if (null? choices) - ;; No moves! We lose - '((-inf.0)) - ;; We have at least one move - choices)]) - (hash-remove! (config-memory config) board-key) - (let ([key (if (and ((caar choices) . < . +inf.0) - ((caar choices) . > . -inf.0)) - ;; Result is only valid to current depth limit: - key - ;; Win or loss: result is valid to any depth: - board-key)]) - (hash-set! (config-memory config) key choices) - choices))])]) - (values choices xform)))) - - ;; try-all-enters : ... -> (listof (cons num plan)) - ;; Try moving each available off-board piece onto each board position - (define (try-all-enters choices depth span config me board xform) - (let loop ([enters (pick-enters board me)] - [choices choices]) - (if (null? enters) - choices - ;; For this piece.... - (let ([p (list-ref (if (eq? me 'red) red-pieces yellow-pieces) - (car enters))]) - (loop (cdr enters) - ;; ... try every target position: - (fold-board/choices - span choices - (lambda (i j) - (try-move depth config - board me - p #f #f i j xform)))))))) - - ;; try-all-moves : ... -> (listof (cons num plan)) - ;; Try moving each on-board piece onto each other board position - (define (try-all-moves choices depth span config me board xform) - ;; From each source... - (fold-board/choices - span choices - (lambda (from-i from-j) - ;; ... if it has my piece... - (let ([l (board-ref board from-i from-j)]) - (if (and (pair? l) - (eq? me (piece-color (car l)))) - ;; ... try every target position: - (fold-board/choices - span choices - (lambda (to-i to-j) - (try-move depth config - board me - (car l) from-i from-j to-i to-j xform))) - ;; Can't move from here: - null))))) - - ;; Try the move, and if it's ok, call `minmax' with the other - ;; player and invert the result - (define (try-move depth config - board me - p from-i from-j to-i to-j xform) - (move board p from-i from-j to-i to-j - (lambda (new-board) - ;; Move is ok; rate it - (set! move-count (add1 move-count)) - ;; Min-max recur for other player: - (let-values ([(his-choices sxform) - (minmax (add1 depth) 1 config - (other me) new-board - to-i to-j)]) - #; - (when (zero? depth) - (show-recur (piece-size p) from-i from-j to-i to-j his-choices)) - ;; Construct a plan for this choice, and rate it - ;; opposite of the minmax result - (list (cons (- (caar his-choices)) - (make-plan (piece-size p) from-i from-j to-i to-j - xform - (add1 (get-depth (car his-choices)))))))) - (lambda () - ;; Move isn't ok - null))) - - ;; pick-enters: board -> (listof num) - (define (pick-enters board me) - (let loop ([avail-pieces (available-off-board board me)] - [played-sizes null]) - (cond - [(null? avail-pieces) null] - [(memq (caar avail-pieces) played-sizes) - (loop (cdr avail-pieces) - played-sizes)] - [else - (cons - ;; piece to move: - (caar avail-pieces) - ;; Try pieces from other stacks: - (loop (cdr avail-pieces) - (cons (caar avail-pieces) played-sizes)))]))) - - ;; Like `fold-board', but auto combines choices and - ;; handles shortcut for known immediate wins - (define (fold-board/choices span choices f) - (fold-board - (lambda (i j choices) - (if (and (found-win? choices) - (immediate? choices)) - choices - (best span - choices - (f i j)))) - choices)) - - ;; --- TESTS --- - #; - (let* ([plan (make-plan 0 0 0 0 0 0 1)]) - ;; fold-board/choices - (test (if (= BOARD-SIZE 3) - (list (cons 4 plan) (cons 3 plan)) - (list (cons 6 plan) (cons 5 plan))) - (fold-board/choices 2 null (lambda (i j) - (list (cons (+ i j) plan))))) - - ;; pick-enters - (let* ([one-red (move empty-board (list-ref red-pieces (sub1 BOARD-SIZE)) - #f #f 0 0 values void)] - [two-red (move one-red (list-ref red-pieces (- BOARD-SIZE 2)) - #f #f 1 1 values void)] - [three-red (move two-red (list-ref red-pieces (sub1 BOARD-SIZE)) - #f #f 2 2 values void)] - [place-all (lambda (l) - (cdr - (fold-board (lambda (i j l+b) - (if (null? (car l+b)) - l+b - (cons (cdr (car l+b)) - (move (cdr l+b) (caar l+b) - #f #f i j values void)))) - (cons l empty-board))))]) - (test (if (= BOARD-SIZE 3) '(2 1 0) '(3)) - (pick-enters empty-board 'red)) - (test (if (= BOARD-SIZE 3) '(2 1 0) '(3 2)) - (pick-enters one-red 'red)) - (test (if (= BOARD-SIZE 3) '(2 1 0) '(3 1)) - (pick-enters two-red 'red)) - (test (if (= BOARD-SIZE 3) '(1 0) '(3 2 1)) - (pick-enters three-red 'red)) - - (let ([all-red-pieces (apply append - (vector->list (make-vector (sub1 BOARD-SIZE) red-pieces)))]) - (test null (pick-enters (place-all all-red-pieces) 'red)) - (test '(2) (pick-enters (place-all (remq (list-ref red-pieces 2) - all-red-pieces)) - 'red)) - (test (if (= BOARD-SIZE 3) '(1 0) '(1)) - (pick-enters (place-all (remq (list-ref red-pieces 0) - (remq (list-ref red-pieces 1) - all-red-pieces))) - 'red))))) - - ;; ------------------------------------------------------------ - ;; Multi-step minmax (non-exhaustive): - - ;; Apply minmax, and if steps > 1, rate resulting moves by applying - ;; minmax to them. Meanwhile, in learning mode, record any resulting - ;; move that is known to lead to winning or losing. - (define (multi-step-minmax steps span config indent init-memory me board) - (define first-move? - ((fold-board (lambda (i j v) (+ v (length (board-ref board i j)))) 0) . < . 2)) - (define now (current-inexact-milliseconds)) - (set! hit-count 0) - (set! depth-count 0) - (set! explore-count 0) - (set! enter-count 0) - (set! move-count 0) - (log-printf 1 indent "~a> ~a Exploring for ~a\n" (make-string indent #\space) steps me) - (let-values ([(vs xform) - (minmax 0 - (if (or (steps . <= . 1) first-move?) - 1 - span) - config - me - board #f #f)]) - (log-printf 2 indent "~a>> Done ~a ~a ~a ~a+~a [~a secs]\n" - (make-string indent #\space) - hit-count depth-count explore-count enter-count move-count - (float->string (/ (- (current-inexact-milliseconds) now) 1000))) - (let ([plays - (map (lambda (v) - ;; Transform each result, and turn it into a list - (cons (car v) - (let ([m (xlate (cdr v) xform)]) - (list (list-ref (if (eq? me 'red) - red-pieces - yellow-pieces) - (plan-size m)) - (plan-from-i m) - (plan-from-j m) - (plan-to-i m) - (plan-to-j m) - (get-depth v))))) - (filter (lambda (v) (plan? (cdr v))) vs))]) - (log-printf 3 indent "~a>> Best Plays: ~a\n" - (make-string indent #\space) (plays->string - (make-string (+ 15 indent) #\space) - plays)) - - ;; Record what we've learned... - (when (and learn? - (= steps 1)) - (record-result plays board me config init-memory)) - - (cond - [(null? plays) - ;; No moves because it was a tie due to a repeat. - (car LOOP-TIE)] - [(or (steps . <= . 1) first-move?) - (first plays)] - [else - (let ([nexts - ;; See what the other player thinks about our candidate moves, - ;; and pick the one that looks worst to the other player. - (if ((caar plays) . < . +inf.0) - (sort - (map - (lambda (play) - (log-printf 4 indent " ~a>>> Checking: ~a\n" - (make-string indent #\space) (play->string play)) - (cond - [(= -inf.0 (car play)) - (log-printf 4 indent " ~a>>>> losing\n" - (make-string indent #\space)) - play] - [(eq? 'loop! (cdr play)) - (log-printf 4 indent " ~a>>>> tying\n" - (make-string indent #\space)) - play] - [else - (let ([r (cons (- (car (multi-step-minmax - (sub1 steps) span config - (+ 3 indent) init-memory - (other me) - (apply-play board (cdr play))))) - (cdr play))]) - (log-printf 4 indent " ~a>>>> deeper = ~a\n" - (make-string indent #\space) - (float->string (car r))) - r)])) - plays) - (lambda (a b) (> (car a) (car b)))) - (list (car plays)))]) - (first nexts))])))) - - ;; ------------------------------------------------------------ - ;; Multi-run memory: - - (define learn? #f) - (define MEMORY-FILE - (and learn? - (build-path (find-system-path 'addon-dir) - (format "gobblet-memory-~a.rktd" BOARD-SIZE)))) - - (define (record-result plays board me config init-memory) - (when (or (found-win? plays) - (found-lose? plays)) - (let ([board-key+xform ((config-canonicalize config) board me)]) - (hash-ref init-memory - (car board-key+xform) - (lambda () - ;; This is new... - (with-output-to-file MEMORY-FILE - (lambda () - (let ([m (cdar plays)]) - (printf "(~a ~a ~a)\n#|\n~a|#\n" - (if (found-win? plays) 'win 'lose) - (car board-key+xform) - (list - (piece-color (list-ref m 0)) - (piece-size (list-ref m 0)) - (list-ref m 1) (list-ref m 2) - (list-ref m 3) (list-ref m 4) - (list-ref m 5)) - (board->string 0 board)))) - 'append)))))) - - ;; to load what we've learned from previous runs - (define (load-memory init-memory canonicalize) - (with-handlers ([exn:fail:filesystem? void]) - (with-input-from-file MEMORY-FILE - (lambda () - (let loop () - (let ([v (read)]) - (unless (eof-object? v) - (let ([board-key+xform (canonicalize (cadr v) #f)]) - (hash-set! init-memory - (car board-key+xform) - (list - (cons (if (eq? 'win (car v)) +inf.0 -inf.0) - (let ([n (caddr v)]) - (make-plan - (cadr n) - (list-ref n 2) (list-ref n 3) - (list-ref n 4) (list-ref n 5) - (cdr board-key+xform) - (list-ref n 6))))))) - (loop)))))))) - - ;; ------------------------------------------------------------ - ;; Debugging helpers - - (define (float->string v) - (let ([s (string-append (number->string v) "000000")]) - (substring s 0 (min 6 (string-length s))))) - - (define (play->string p) - (format "~a (~a,~a)->(~a,~a) [~a/~a]" - (piece-size (list-ref p 1)) - (list-ref p 2) (list-ref p 3) (list-ref p 4) (list-ref p 5) - (float->string (car p)) - (list-ref p 6))) - - (define (plays->string is p) - (if (null? p) - "()" - (let ([s (plays->string is (cdr p))]) - (if (null? (cdr p)) - (play->string (car p)) - (string-append (play->string (car p)) - "\n" - is - s))))) - - (define (show-recur sz from-i from-j to-i to-j sv) - (if (not (plan? (cdar sv))) - (printf " Recur ~a (~a,~a)->(~a,~a) ; ??? = ~a/~a\n" - sz from-i from-j to-i to-j - (caar sv) (get-depth (car sv))) - (printf " Recur ~a (~a,~a)->(~a,~a) ; (~a,~a)->(~a,~a) = ~a/~a\n" - sz from-i from-j to-i to-j - (plan-from-i (cdar sv)) (plan-from-j (cdar sv)) - (plan-to-i (cdar sv)) (plan-to-j (cdar sv)) - (caar sv) (get-depth (car sv)))))) diff --git a/pkgs/games/gobblet/gobblet.png b/pkgs/games/gobblet/gobblet.png deleted file mode 100644 index 6c0637eeff3458c4632d6c79761d149ad783bf89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 878 zcmV-!1CjiRP)M z@lP;rjuM?1%3>rAYETSd(Lx9q+CqB{cW?Xl+Uxx&iGGvIz4zYpphiMItsBU`XF@>7xfgVsw;wc=zzgK$?fjP^ z2~dS<27aCy0XvnJVNi$rz&&6{hd~7t6)H=RSKx~dZxnd>0Djj9$d8-kRmom7;WG3B z9~Eh!N$64xHIj-kZ8Jc!WfM9)~l<6p@5fZ zW({)An8=*EARznI2=pZqO+UPl=`mDonZOR>z$!o@mGU&zO1gAp?vMNA+f8X~M)Pcar$W4H2 z)6;07kSo9LSgcOq($v(79*OuOQBI}kpPpU;xG^!Y*E2f0bR3OV+RcIEc>J_Goqh_Y zQrT?wg0j2&IJvqydo`EqPZkP BOARD-SIZE - (define-struct gui-piece (piece dl i j)) - - ;; State ------------------------------ - - ;; The state of the game, as reflected in the GUI: - (define board empty-board) - (define turn 'red) - - ;; past, future : (list-of (cons thunk thunk)) - ;; where first thunk is do and second is undo - (define past null) - (define future null) - - ;; When `playing?' is true, double-check reset request - (define playing? #f) - - ;; GUI Move ------------------------------ - - ;; This function is called when the user tries to move `gp' - ;; to location `to' - (define (gui-move gp to) - (when (gui-piece? gp) - ;; Get dest and source locations: - (let* ((to-i (inexact->exact (floor (gl-vector-ref to 0)))) - (to-j (inexact->exact (floor (gl-vector-ref to 1)))) - (from-i (gui-piece-i gp)) - (from-j (gui-piece-j gp)) - (on-board? (<= 0 from-i (sub1 BOARD-SIZE)))) - ;; Only move if the requent lands on the board: - (when (and (<= 0 to-i (sub1 BOARD-SIZE)) - (<= 0 to-j (sub1 BOARD-SIZE))) - ;; Only move if the model says that it's ok: - (move board (gui-piece-piece gp) - (and on-board? from-i) (and on-board? from-j) - to-i to-j - (lambda (new-board) - (install-board new-board gp to-i to-j)) - (lambda () - ;; Move not allowed by model - (void))))))) - - (define (install-board new-board gp to-i to-j) - ;; Move allowed by the model. Create a thunk to - ;; execute this move and a thunk to undo this - ;; move: - (let ([new-gp (make-gui-piece (gui-piece-piece gp) (gui-piece-dl gp) - to-i to-j)] - [old-board board] - [old-turn turn]) - (action! - ;; Forward thunk: - (lambda () - (set! board new-board) - (send gui-board remove-piece gp) - (gui-add-piece new-gp) - (let ([r? (winner? new-board 'red)] - [y? (winner? new-board 'yellow)]) - (cond - [(and r? y?) (set-winner! (case old-turn - [(red) "Yellow"] - [(yellow) "Red"]))] - [r? (set-winner! "Red")] - [y? (set-winner! "Yellow")] - [else (set-turn! (other old-turn))]))) - ;; Rewind thunk: - (lambda () - (set! board old-board) - (send gui-board remove-piece new-gp) - (gui-add-piece gp) - (set-turn! old-turn))))) - - ;; GUI Board and Pieces ------------------------------ - - (define f (new (class frame% - (define/augment (on-close) - (inner (void) on-close) - (exit)) - (super-new)) - (label "Gobblet") (width 800) (height 600))) - (define gui-board - (new gl-board% (parent f) (who "Gobblet") - (min-x (if JR? (- 1 BOARD-SIZE) -1)) - (max-x (if JR? (sub1 (* 2 BOARD-SIZE)) (add1 BOARD-SIZE))) - (min-y 0) - (max-y BOARD-SIZE) - (lift 1.2) - (move gui-move) - (theta 30))) - - (define q - (send gui-board with-gl-context - (lambda () (gl-new-quadric)))) - - ;; Space description: - (define space-dl - (send gui-board with-gl-context - (lambda () - (let ((list-id (gl-gen-lists 1))) - (gl-quadric-draw-style q 'fill) - (gl-quadric-normals q 'smooth) - (gl-new-list list-id 'compile) - (gl-material-v 'front 'ambient-and-diffuse dark-blue) - (gl-begin 'polygon) - (gl-vertex 0.0 0.0 -0.02) - (gl-vertex 1.0 0.0 -0.02) - (gl-vertex 1.0 1.0 -0.02) - (gl-vertex 0.0 1.0 -0.02) - (gl-end) - (gl-material-v 'front 'ambient-and-diffuse light-blue) - (gl-push-matrix) - (gl-translate 0.5 0.5 -0.01) - (gl-disk q 0.0 .40 25 1) - (gl-pop-matrix) - (gl-end-list) - list-id)))) - - ;; Install spaces on board: - (fold-board (lambda (i j v) - (send gui-board add-space - (lambda () - (gl-push-matrix) - (gl-translate i j 0.01) - (gl-call-list space-dl) - (gl-pop-matrix)) - (cons i j))) - void) - - ;; Piece description-maker: - (define (make-piece-dl color scale) - (send gui-board with-gl-context - (lambda () - (let ((list-id (gl-gen-lists 1))) - (gl-quadric-draw-style q 'fill) - (gl-quadric-normals q 'smooth) - (gl-new-list list-id 'compile) - (gl-material-v 'front 'ambient-and-diffuse color) - (gl-cylinder q (/ scale 2) (/ scale 2) (* 1.5 scale) 25 1) - (gl-push-matrix) - (gl-translate 0.0 0.0 (* 1.5 scale)) - (gl-disk q 0.0 (/ scale 2) 25 1) - (gl-pop-matrix) - (gl-end-list) - list-id)))) - - ;; Red piece descriptions: - (define red-dls (map (lambda (size) - (make-piece-dl red size)) - PIECE-SIZES)) - - ;; Yellow piece descriptions: - (define yellow-dls (map (lambda (size) - (make-piece-dl yellow size)) - PIECE-SIZES)) - - ;; GUI piece records, with each piece at its initial place: - (define gui-pieces - (let loop ([red-dls red-dls][yellow-dls yellow-dls] - [red-pieces red-pieces][yellow-pieces yellow-pieces] - [sizes PIECE-SIZES][z 0]) - (if (null? red-dls) - null - (append - (let ([sz (car sizes)]) - (let loop ([dw (if JR? - (- BOARD-SIZE 2) - (- BOARD-SIZE 1.5))]) - (if (negative? dw) - null - (list* - (make-gui-piece (car red-pieces) (car red-dls) - (if JR? (- dw BOARD-SIZE -1) -1) - (if JR? z dw)) - (make-gui-piece (car yellow-pieces) (car yellow-dls) - (if JR? (+ BOARD-SIZE dw) BOARD-SIZE) - (if JR? z dw)) - (loop (sub1 dw)))))) - (loop (cdr red-dls) (cdr yellow-dls) - (cdr red-pieces) (cdr yellow-pieces) - (cdr sizes) (+ z 1)))))) - - ;; Places a gui-piece at its location on the board: - (define (gui-add-piece gp) - (send gui-board add-piece - (+ (gui-piece-i gp) 0.5) (+ (gui-piece-j gp) 0.5) 0 - (lambda (for-shadow?) - (when for-shadow? - (gl-disable 'lighting)) - (gl-call-list (gui-piece-dl gp)) - (when for-shadow? - (gl-enable 'lighting))) - gp)) - - ;; Extra GUI controls ---------------------------------------- - - ;; Define a 3-element pane that makes the left and right parts - ;; the same width (so that the middle part is centered): - (define controls (new (class horizontal-pane% - ;; Override place-children for the 3-child case, - ;; make first and third the same width - (define/override (place-children l w h) - (let ([r (super place-children l w h)]) - (if (= (length r) 3) - (let ([a (list-ref r 0)] - [b (list-ref r 1)] - [c (list-ref r 2)]) - (let* ([aw (list-ref a 2)] - [cw (list-ref c 2)] - [naw (quotient (+ aw cw) 2)]) - (list - (list (car a) (cadr a) - naw (cadddr a)) - (list (+ (car b) (- naw aw)) (cadr b) - (caddr b) (cadddr b)) - (list (+ naw (caddr b)) (cadr c) - (- (+ cw aw) naw) (cadddr c))))) - r))) - (super-new)) - (parent f) - (stretchable-height #f))) - - ;; Status message: - (define msg - (new message% (label "") (parent controls) (stretchable-width #t))) - - ;; Forward & Reverse buttons - (define controls-middle (new horizontal-pane% - (parent controls) - (stretchable-height #f) - (stretchable-width #f))) - (define arrows? (let ([f (make-object font% 12 'system)]) - (and (send f screen-glyph-exists? #\u25C0 #t) - (send f screen-glyph-exists? #\u25B6 #t)))) - (define backward-button - (new button% (label (if arrows? " \u25C0 " " < ")) (parent controls-middle) - (callback (lambda (b e) (backward!))))) - (define forward-button - (new button% (label (if arrows? " \u25B6 " " > ")) (parent controls-middle) - (callback (lambda (b e) (forward!))))) - (define (enable-buttons) - (send backward-button enable (pair? past)) - (send forward-button enable (pair? future))) - - ;; Reset & Help buttons: - (define controls-right (new horizontal-pane% - (parent controls) - (stretchable-height #f) - (alignment '(right center)))) - (new button% (label "Reset") (parent controls-right) - (callback (lambda (b e) - (when (or (not playing?) - (equal? 1 (message-box/custom - "Warning" - "Stop game in progress and reset?" - "Reset" - "Cancel" - #f - f - '(default=1 caution)))) - (reset!))))) - (new button% (label (if (= BOARD-SIZE 3) "4x4 Game" "3x3 Game")) - (parent controls-right) - (callback (lambda (b e) - (new-game (if (= BOARD-SIZE 3) 4 3))))) - (new button% (label "Help") (parent controls-right) - (callback (lambda (b e) - (show-gobblet-help)))) - - (define bottom (new horizontal-pane% - (parent f) - (stretchable-height #f) - (alignment '(left center)))) - - (define auto-red (new check-box% - (label "Auto-Play Red") - (parent bottom) - (callback (lambda (c e) - (when (eq? turn 'red) - (check-auto-play)))))) - (define auto-yellow (new check-box% - (label "Auto-Play Yellow") - (parent bottom) - (callback (lambda (c e) - (when (eq? turn 'yellow) - (check-auto-play)))))) - - (define auto-play-msg (new message% - (label "") (parent bottom) (stretchable-width #t))) - - (new button% - [label "Auto-Play Options..."] - [parent bottom] - [callback - (lambda (b e) - (letrec ([d (new dialog% - [label "Auto-Play Options"] - [alignment '(left center)] - [parent f])] - [mode (new choice% - [label "Mode:"] - [parent d] - [choices '("Smart - plays Red perfectly in 3x3 game" - "Ok - tries to plan for next move")] - [callback void])] - [timeout-field (new text-field% - [label "Auto-play Think Time (seconds):"] - [parent d] - [init-value (number->string timeout)] - [callback - (lambda (t e) - (let* ([e (send t get-editor)] - [val (string->number (send e get-text))] - [bad? (or (not val) - (not (real? val)) - (val . < . 0))]) - (send ok-button enable (not bad?)) - (send e change-style - (send (make-object style-delta%) - set-delta-background - (if bad? "yellow" "white")) - 0 (send e last-position))))])] - [button-panel (new horizontal-pane% - [parent d] - [alignment '(right center)] - [stretchable-height #f])] - [ok-button - (new button% - [label "Ok"] [parent button-panel] [style '(border)] - [callback (lambda (b e) - (set! smart? (= 0 (send mode get-selection))) - (set! timeout (string->number - (send timeout-field get-value))) - (put-preferences '(gobblet:auto-play-smart?) - (list smart?) - void) - (send d show #f))])]) - (new button% - [label "Cancel"] [parent button-panel] - [callback (lambda (b e) (send d show #f))]) - (send mode set-selection (if smart? 0 1)) - (send d center) - (send d show #t)))]) - - (new grow-box-spacer-pane% [parent bottom]) - - ;; Extra controls ---------------------------------------- - - (define (action! forward backward) - (set! playing? #t) - (set! future null) - (set! past (cons (cons forward backward) past)) - (forward) - (check-auto-play) - (enable-buttons)) - - (define (backward!) - (let ([fb (car past)]) - (set! past (cdr past)) - (set! future (cons fb future)) - ((cdr fb)) - (enable-buttons) - (send gui-board refresh))) - - (define (forward!) - (let ([fb (car future)]) - (set! future (cdr future)) - (set! past (cons fb past)) - ((car fb)) - (enable-buttons) - (send gui-board refresh) - (check-auto-play))) - - (define (reset!) - (for-each (lambda (p) - (send gui-board remove-piece p)) - (send gui-board get-pieces)) - (init-game!) - (send gui-board refresh) - (check-auto-play)) - - (define (set-turn! c) - (set! turn c) - (send msg set-label (format "~a's turn" (if (eq? turn 'red) "Red" "Yellow"))) - (enable-for-turn! c) - (check-auto-play)) - - (define (enable-for-turn! who) - (for-each (lambda (p) - (send gui-board enable-piece p (eq? who (piece-color (gui-piece-piece p))))) - (send gui-board get-pieces))) - - (define (set-winner! who) - (set! playing? #f) - (set! turn #f) - (send msg set-label (format "~a wins!" who)) - (enable-for-turn! #f) - (check-auto-play)) - - (define (init-game!) - (set! board empty-board) - (set! past null) - (set! future null) - (set! playing? #f) - (enable-buttons) - (for-each gui-add-piece gui-pieces) - (set-turn! 'red)) - - ;; Auto-play ---------------------------------------- - - (define auto-play-key #f) - (define auto-play-custodian #f) - - (define (check-auto-play) - (when auto-play-custodian - (set! auto-play-key (gensym)) - (custodian-shutdown-all auto-play-custodian) - (set! auto-play-custodian #f) - (send auto-play-msg set-label "") - (enable-for-turn! turn)) - (when (and (null? future) - turn - (send (if (eq? turn 'red) auto-red auto-yellow) get-value)) - (let ([key (gensym)] - [board board] - [turn turn]) - (enable-for-turn! #f) - (set! auto-play-key key) - (set! auto-play-custodian (make-custodian)) - (parameterize ([current-custodian auto-play-custodian]) - (thread - (lambda () - (let ([move (auto-play board turn)]) - (queue-callback - (lambda () - (when (eq? auto-play-key key) - (auto-move board turn move)))))))) - (send auto-play-msg set-label - (format " Auto-play thinking for ~a..." - (if (eq? turn 'red) "Red" "Yellow")))))) - - - (define (auto-play board turn) - (let ([search (make-search (if (= BOARD-SIZE 3) - make-3x3-rate-board - make-4x4-rate-board) - (if (= BOARD-SIZE 3) - (if smart? - make-3x3-canned-moves - make-3x3-no-canned-moves) - make-4x4-canned-moves))]) - (search timeout ; timeout - 2 ; lookahead steps (non-exhaustive) - 3 ; single-step lookahead (exhaustive) - turn board null))) - - (define (auto-move board turn move) - (send auto-play-msg set-label "") - (let ([gp (let ([piece (list-ref move 0)] - [from-i (list-ref move 1)] - [from-j (list-ref move 2)]) - (ormap (lambda (gp) - (and (eq? piece (gui-piece-piece gp)) - (if from-i - (and (= from-i (gui-piece-i gp)) - (= from-j (gui-piece-j gp))) - (not (<= 0 (gui-piece-i gp) (sub1 BOARD-SIZE)))) - gp)) - (send gui-board get-pieces)))] - [to-i (list-ref move 3)] - [to-j (list-ref move 4)]) - (let ([new-board (apply-play board move)]) - (install-board new-board gp to-i to-j)) - (send gui-board refresh))) - - ;; Go ---------------------------------------- - - (init-game!) - - (send f show #t)) diff --git a/pkgs/games/gobblet/heuristics.rkt b/pkgs/games/gobblet/heuristics.rkt deleted file mode 100644 index 39273b9767..0000000000 --- a/pkgs/games/gobblet/heuristics.rkt +++ /dev/null @@ -1,77 +0,0 @@ -#lang racket -;; Supplies canned moves and board-rating functions for the state -;; explorer. - -(require racket/unit - "sig.rkt" - "plays-3x3.rkt") - -(provide heuristics-unit@) - -(define-unit heuristics-unit@ - (import config^ model^ explore^) - (export heuristics^) - - (define (make-3x3-canned-moves canonicalize init-memory) - ;; Add known good plays to init-memory. These plays define - ;; a perfect red player. - (for-each (lambda (play) - (let ([key+xform (canonicalize (list->bytes (vector->list (car play))) #f)]) - (hash-set! init-memory - (car key+xform) - (let-values ([(from-i from-j) - (if (list-ref play 2) - (unapply-xform (cdr key+xform) (list-ref play 2)) - (values #f #f))] - [(to-i to-j) - (unapply-xform (cdr key+xform) (list-ref play 3))]) - (list - (cons +inf.0 - (plan - (list-ref play 1) - from-i from-j to-i to-j - (cdr key+xform) - (list-ref play 4)))))))) - 3x3-plays) - (lambda (board me k xform) - null)) - - (define (make-3x3-no-canned-moves canonicalize init-memory) - (lambda (board me k xform) - null)) - - (define (make-3x3-rate-board canon) - (lambda (board me to-i to-j) - (+ (random) - ;; Occupying the middle cell seems good - (rate-cell board me 1 1)))) - - (define (make-4x4-canned-moves canon init-memory) - (lambda (board me k xform) - null)) - - (define (make-4x4-rate-board canon) - (lambda (board me to-i to-j) - (+ (random) - (if (and (top-color? board to-i to-j (other me)) - (3-in-a-row? board to-i to-j (other me))) - -10 - 0) - ;; Controlling the middle cells seems good - (rate-cell board me 1 1) - (rate-cell board me 1 2) - (rate-cell board me 2 1) - (rate-cell board me 2 2)))) - - (define (rate-cell board me i j) - (let ([l (board-ref board i j)]) - (if (pair? l) - (if (eq? (piece-color (car l)) me) - 2 - -2) - 0))) - - (define (top-color? board i j c) - (let ([l (board-ref board i j)]) - (and (pair? l) - (eq? (piece-color (car l)) c))))) diff --git a/pkgs/games/gobblet/info.rkt b/pkgs/games/gobblet/info.rkt deleted file mode 100644 index 27d3e6fce3..0000000000 --- a/pkgs/games/gobblet/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game "gobblet.rkt") -(define game-set "Board Games") diff --git a/pkgs/games/gobblet/model.rkt b/pkgs/games/gobblet/model.rkt deleted file mode 100644 index f1b9b1b231..0000000000 --- a/pkgs/games/gobblet/model.rkt +++ /dev/null @@ -1,500 +0,0 @@ -#lang racket -(require "sig.rkt" - racket/unit) - -(provide model-unit@) - -;; Most tests are in test-model.rkt, but for better coverage, -;; uncomment the tests below for unexported functions when running -;; the test suite. - -(define-unit model-unit@ - (import config^) - (export model^) - - (define JR? (= BOARD-SIZE 3)) - (define SIZES (if (= BOARD-SIZE 3) - '(0 1 2) - '(0 1 2 3))) - (define PIECE-COUNT (sub1 BOARD-SIZE)) - - ;; A piece is - ;; (make-piece num sym hash-table) - ;; where the sym is 'red or 'yellow - ;; - ;; The hash table maps a stack without this - ;; piece to a stack with this piece on top. - (define-struct piece (size color gobble-table)) - - (define red-pieces (map (lambda (sz) (make-piece sz 'red (make-hasheq))) SIZES)) - (define yellow-pieces (map (lambda (sz) (make-piece sz 'yellow (make-hasheq))) SIZES)) - - ;; Fill in stacks for pieces. By building each possible - ;; stack once, we avoid allocating redudant stacks, and - ;; we get a value we can eq-hash for canonicalization. - (define all-stacks - (let loop ([red-pieces red-pieces] - [yellow-pieces yellow-pieces] - [prev-stacks (list null)]) - (if (null? red-pieces) - ;; Return all unique stacks: - prev-stacks - ;; Add stacks to first pieces' tables: - (loop (cdr red-pieces) - (cdr yellow-pieces) - (apply - append - prev-stacks - (map (lambda (p) - (map (lambda (stack) - (let ([new-stack (cons p stack)]) - (hash-set! (piece-gobble-table p) stack new-stack) - new-stack)) - prev-stacks)) - (list (car red-pieces) - (car yellow-pieces)))))))) - - ;; A board is a - ;; (vector (vector (list piece ...) ...) ...) - - (define empty-board - (make-vector BOARD-SIZE (make-vector BOARD-SIZE null))) - - ;; board-ref : board num num -> piece - (define (board-ref a i j) - (vector-ref (vector-ref a i) j)) - - ;; board-set : board num num piece -> board - (define (board-set a i j p) - ;; We implement functional update by copying two vectors - ;; and modifying them. - (let ([a2 (copy-vector a)] - [r2 (copy-vector (vector-ref a i))]) - (vector-set! a2 i r2) - (vector-set! r2 j p) - a2)) - - ;; copy-vector : vector -> vector - (define (copy-vector v) - (list->vector (vector->list v))) - - ;; Utilities ------------------------------ - - ;; fold-rowcol : (num alpha -> alpha) alpha -> alpha - (define (fold-rowcol f v) - (let iloop ([i 0][v v]) - (if (= i BOARD-SIZE) - v - (iloop (add1 i) (f i v))))) - - ;; fold-board : (num num alpha -> alpha) alpha -> alpha - (define (fold-board f v) - (fold-rowcol (lambda (i v) - (fold-rowcol (lambda (j v) - (f i j v)) - v)) - v)) - - ;; other : sym -> sym - (define (other c) - (if (eq? c 'red) 'yellow 'red)) - - ;; Model ------------------------------ - - ;; move : board piece num-or-#f num-or-#f num num (board -> alpha) (-> alpha) - ;; -> alpha - ;; Given a board, piece, current location of the piece (or #f if - ;; not on the board), and target location for the piece, either - ;; allows the move and calls the continuation k with the new - ;; board, or disallows and calls the failure continuation. - ;; The given piece and its source must be correct and ok to move. - (define (move board p from-i from-j to-i to-j k fail-k) - (let ([pl (board-ref board to-i to-j)]) - ;; The move is allowed if the target space is empty or the - ;; top piece is smaller than this one: - (if (or (null? pl) - (and (< (piece-size (car pl)) (piece-size p)) - (or from-i - JR? - ;; In 4x4 game, can't move onto board on top - ;; of piece unless it's part of 3-in-a-row - (and (not (eq? (piece-color (car pl)) (piece-color p))) - (3-in-a-row? board to-i to-j (piece-color (car pl))))))) - ;; Allowed: - (let ([new-board (if from-i - ;; Remove the piece from the old spot: - (board-set board from-i from-j - (cdr (board-ref board from-i from-j))) - ;; Wasn't on the board, yet: - board)]) - ;; Add the piece at its new spot, and continue - (k (board-set new-board to-i to-j (gobble p pl)))) - ;; Not allowed; fail - (fail-k)))) - - ;; gobble : piece (listof piece) -> (listof piece) - (define (gobble p l) - (hash-ref (piece-gobble-table p) l)) - - ;; - - - - - - - - - - - - - - - - - - - - ;; winner? : board sym -> bool - ;; Checks whether the given color has BOARD-SIZE in a row - (define (winner? board c) - (or (n-in-a-diag? BOARD-SIZE board c backslash-diag-flip) - (n-in-a-diag? BOARD-SIZE board c slash-diag-flip) - ;; Rows and columns: - (fold-rowcol (lambda (i v) - (or v - (and - ;; Before we count in all directions, - ;; check the target square. - (let ([pl (board-ref board i i)]) - (and (pair? pl) - (eq? c (piece-color (car pl))))) - ;; Target square matches, so on to expensive check - (n-in-a-row/col? BOARD-SIZE board i i c)))) - #f))) - - ;; 3-in-a-row? : board num num color -> bool - (define (3-in-a-row? board i j c) - (or (n-in-a-row/col? 3 board i j c) - (and (= i j) - (n-in-a-diag? 3 board c backslash-diag-flip)) - (and (= i (- BOARD-SIZE 1 j)) - (n-in-a-diag? 3 board c slash-diag-flip)))) - - ;; n-in-a-row/col? : num board num num color -> bool - (define (n-in-a-row/col? n board i j c) - (let ([row/col? - (lambda (board-ref) - (= n - (fold-rowcol (lambda (z v) - (+ v - (let ([pl (board-ref z)]) - (if (and (pair? pl) - (eq? c (piece-color (car pl)))) - 1 - 0)))) - 0)))]) - (or (row/col? (lambda (z) (board-ref board i z))) - (row/col? (lambda (z) (board-ref board z j)))))) - - ;; n-in-a-diag? : num board color (num -> num) -> bool - (define (n-in-a-diag? n board c flip) - (= n - (fold-rowcol (lambda (i v) - (+ v - (let ([pl (board-ref board i (flip i))]) - (if (and (pair? pl) - (eq? c (piece-color (car pl)))) - 1 - 0)))) - 0))) - (define backslash-diag-flip (lambda (x) x)) - (define slash-diag-flip (lambda (x) (- BOARD-SIZE 1 x))) - - ;; Tests for unexported helpers: - #; - (let* ([one-red-board (move empty-board (car red-pieces) #f #f 0 0 values void)] - [two-red-board (move (move one-red-board (car red-pieces) #f #f 0 2 values void) - (car yellow-pieces) #f #f 2 2 values void)] - [three-red-board (move two-red-board (cadr red-pieces) #f #f 1 1 values void)]) - (define (test x y) - (unless (equal? x y) - (error 'test "failure!: ~s ~s\n" x y))) - (test #f (n-in-a-row/col? 1 empty-board 0 0 'red)) - (test #t (n-in-a-row/col? 1 one-red-board 0 0 'red)) - (test #t (n-in-a-row/col? 2 two-red-board 0 0 'red)) - (test #t (n-in-a-row/col? 1 two-red-board 2 2 'red)) - (test #f (n-in-a-row/col? 2 two-red-board 2 2 'red)) - (test #t (n-in-a-row/col? 2 two-red-board 0 1 'red)) - (test #t (n-in-a-row/col? 1 three-red-board 0 1 'red)) - (test #t (n-in-a-row/col? 2 three-red-board 0 1 'red)) - - (test #f (n-in-a-diag? 1 one-red-board 'red slash-diag-flip)) - (test #t (n-in-a-diag? 1 one-red-board 'red backslash-diag-flip)) - (test (= BOARD-SIZE 3) (n-in-a-diag? 1 two-red-board 'red slash-diag-flip)) - (test #f (n-in-a-diag? 2 two-red-board 'red slash-diag-flip)) - (test #t (n-in-a-diag? 1 two-red-board 'red backslash-diag-flip)) - (test (= BOARD-SIZE 3) (n-in-a-diag? 2 three-red-board 'red slash-diag-flip)) - (test #t (n-in-a-diag? 2 three-red-board 'red backslash-diag-flip))) - - - ;; - - - - - - - - - - - - - - - - - - - - ;; available-off-board : board sym -> (list-of (list-of num)) - ;; Returns pieces available to move onto the board. The pieces - ;; are grouped where moving one piece is disallowed or - ;; not sensible until another piece (earlier in the same set) - ;; has been moved onto the board. - (define (available-off-board board c) - (let ([counts (make-vector BOARD-SIZE 0)]) - (fold-board (lambda (i j v) - (for-each (lambda (p) - (when (eq? c (piece-color p)) - (vector-set! counts (piece-size p) - (add1 (vector-ref counts (piece-size p)))))) - (board-ref board i j))) - (void)) - (reverse - (if JR? - ;; Can move any piece onto board - (let loop ([counts (vector->list counts)][sizes SIZES]) - (cond - [(null? counts) null] - [((car counts) . < . PIECE-COUNT) - (cons (vector->list (make-vector (- PIECE-COUNT (car counts)) - (car sizes))) - (loop (cdr counts) (cdr sizes)))] - [else (loop (cdr counts) (cdr sizes))])) - ;; Can only move pieces that are not covered by others: - (let-values ([(l cnt) - (let loop ([counts (vector->list counts)][sizes SIZES]) - (cond - [(null? counts) (values null 0)] - [else (let-values ([(l cnt) (loop (cdr counts) (cdr sizes))]) - (let ([gone (+ cnt (car counts))]) - (if (gone . < . PIECE-COUNT) - (values (append (vector->list - (make-vector - (- PIECE-COUNT gone) - (let sloop ([sz (car sizes)]) - (if (negative? sz) - null - (cons sz - (sloop (sub1 sz))))))) - l) - (+ cnt (- PIECE-COUNT gone))) - (values l cnt))))]))]) - l))))) - - ;; Canonicalization of boards ------------------------------ - - ;; Xforms for finding canonical forms. Seven transforms - ;; (including the identity) are equivalent. We generate - ;; them all and hash when a new board is encountered. - (define xforms - (if (= BOARD-SIZE 3) - '(#(0 1 2 3 4 5 6 7 8) - #(0 3 6 1 4 7 2 5 8) - #(2 5 8 1 4 7 0 3 6) - #(8 5 2 7 4 1 6 3 0) - #(6 3 0 7 4 1 8 5 2) - #(2 1 0 5 4 3 8 7 6) - #(8 7 6 5 4 3 2 1 0) - #(6 7 8 3 4 5 0 1 2)) - '(#(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - #(0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15) - #(12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3) - #(3 2 1 0 7 6 5 4 11 10 9 8 15 14 13 12) - #(15 11 7 3 14 10 6 2 13 9 5 1 12 8 4 0) - #(12 8 4 0 13 9 5 1 14 10 6 2 15 11 7 3) - #(15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) - #(3 7 11 15 2 6 10 14 1 5 9 13 0 4 8 12)))) - - ;; Procedure form of the above xforms, effectively - ;; unrolloing a loop over the vector. - (define xform-procs - (if (= BOARD-SIZE 3) - (list - (lambda (v) v) - (lambda (v) (bytes (bytes-ref v 0) (bytes-ref v 3) (bytes-ref v 6) - (bytes-ref v 1) (bytes-ref v 4) - (bytes-ref v 7) (bytes-ref v 2) (bytes-ref v 5) (bytes-ref v 8))) - (lambda (v) (bytes (bytes-ref v 2) (bytes-ref v 5) (bytes-ref v 8) - (bytes-ref v 1) (bytes-ref v 4) - (bytes-ref v 7) (bytes-ref v 0) (bytes-ref v 3) (bytes-ref v 6))) - (lambda (v) (bytes (bytes-ref v 8) (bytes-ref v 5) (bytes-ref v 2) - (bytes-ref v 7) (bytes-ref v 4) - (bytes-ref v 1) (bytes-ref v 6) (bytes-ref v 3) (bytes-ref v 0))) - (lambda (v) (bytes (bytes-ref v 6) (bytes-ref v 3) (bytes-ref v 0) - (bytes-ref v 7) (bytes-ref v 4) - (bytes-ref v 1) (bytes-ref v 8) (bytes-ref v 5) (bytes-ref v 2))) - (lambda (v) (bytes (bytes-ref v 2) (bytes-ref v 1) (bytes-ref v 0) - (bytes-ref v 5) (bytes-ref v 4) - (bytes-ref v 3) (bytes-ref v 8) (bytes-ref v 7) (bytes-ref v 6))) - (lambda (v) (bytes (bytes-ref v 8) (bytes-ref v 7) (bytes-ref v 6) - (bytes-ref v 5) (bytes-ref v 4) - (bytes-ref v 3) (bytes-ref v 2) (bytes-ref v 1) (bytes-ref v 0))) - (lambda (v) (bytes (bytes-ref v 6) (bytes-ref v 7) (bytes-ref v 8) - (bytes-ref v 3) (bytes-ref v 4) - (bytes-ref v 5) (bytes-ref v 0) (bytes-ref v 1) (bytes-ref v 2)))) - (list - (lambda (v) v) - (lambda (v) (bytes (bytes-ref v 0) (bytes-ref v 4) (bytes-ref v 8) - (bytes-ref v 12) (bytes-ref v 1) - (bytes-ref v 5) (bytes-ref v 9) (bytes-ref v 13) - (bytes-ref v 2) (bytes-ref v 6) - (bytes-ref v 10) (bytes-ref v 14) - (bytes-ref v 3) (bytes-ref v 7) (bytes-ref v 11) - (bytes-ref v 15))) - (lambda (v) (bytes (bytes-ref v 12) (bytes-ref v 13) (bytes-ref v 14) - (bytes-ref v 15) (bytes-ref v 8) - (bytes-ref v 9) (bytes-ref v 10) (bytes-ref v 11) - (bytes-ref v 4) (bytes-ref v 5) - (bytes-ref v 6) (bytes-ref v 7) - (bytes-ref v 0) (bytes-ref v 1) (bytes-ref v 2) - (bytes-ref v 3))) - (lambda (v) (bytes (bytes-ref v 3) (bytes-ref v 2) (bytes-ref v 1) - (bytes-ref v 0) (bytes-ref v 7) - (bytes-ref v 6) (bytes-ref v 5) (bytes-ref v 4) - (bytes-ref v 11) (bytes-ref v 10) - (bytes-ref v 9) (bytes-ref v 8) - (bytes-ref v 15) (bytes-ref v 14) (bytes-ref v 13) - (bytes-ref v 12))) - (lambda (v) (bytes (bytes-ref v 15) (bytes-ref v 11) (bytes-ref v 7) - (bytes-ref v 3) (bytes-ref v 14) - (bytes-ref v 10) (bytes-ref v 6) (bytes-ref v 2) - (bytes-ref v 13) (bytes-ref v 9) - (bytes-ref v 5) (bytes-ref v 1) - (bytes-ref v 12) (bytes-ref v 8) (bytes-ref v 4) - (bytes-ref v 0))) - (lambda (v) (bytes (bytes-ref v 12) (bytes-ref v 8) (bytes-ref v 4) - (bytes-ref v 0) (bytes-ref v 13) - (bytes-ref v 9) (bytes-ref v 5) (bytes-ref v 1) - (bytes-ref v 14) (bytes-ref v 10) - (bytes-ref v 6) (bytes-ref v 2) - (bytes-ref v 15) (bytes-ref v 11) (bytes-ref v 7) - (bytes-ref v 3))) - (lambda (v) (bytes (bytes-ref v 15) (bytes-ref v 14) (bytes-ref v 13) - (bytes-ref v 12) (bytes-ref v 11) - (bytes-ref v 10) (bytes-ref v 9) (bytes-ref v 8) - (bytes-ref v 7) (bytes-ref v 6) - (bytes-ref v 5) (bytes-ref v 4) - (bytes-ref v 3) (bytes-ref v 2) (bytes-ref v 1) - (bytes-ref v 0))) - (lambda (v) (bytes (bytes-ref v 3) (bytes-ref v 7) (bytes-ref v 11) - (bytes-ref v 15) (bytes-ref v 2) - (bytes-ref v 6) (bytes-ref v 10) (bytes-ref v 14) - (bytes-ref v 1) (bytes-ref v 5) - (bytes-ref v 9) (bytes-ref v 13) - (bytes-ref v 0) (bytes-ref v 4) (bytes-ref v 8) - (bytes-ref v 12)))))) - - ;; Generates the compact representation of a board, which is - ;; good for hashing, but bad for applying moves - (define flatten-board - (if (= BOARD-SIZE 3) - (lambda (board stack-ids) - (bytes (hash-ref stack-ids (board-ref board 0 0)) - (hash-ref stack-ids (board-ref board 1 0)) - (hash-ref stack-ids (board-ref board 2 0)) - (hash-ref stack-ids (board-ref board 0 1)) - (hash-ref stack-ids (board-ref board 1 1)) - (hash-ref stack-ids (board-ref board 2 1)) - (hash-ref stack-ids (board-ref board 0 2)) - (hash-ref stack-ids (board-ref board 1 2)) - (hash-ref stack-ids (board-ref board 2 2)))) - (lambda (board stack-ids) - (bytes (hash-ref stack-ids (board-ref board 0 0)) - (hash-ref stack-ids (board-ref board 1 0)) - (hash-ref stack-ids (board-ref board 2 0)) - (hash-ref stack-ids (board-ref board 3 0)) - (hash-ref stack-ids (board-ref board 0 1)) - (hash-ref stack-ids (board-ref board 1 1)) - (hash-ref stack-ids (board-ref board 2 1)) - (hash-ref stack-ids (board-ref board 3 1)) - (hash-ref stack-ids (board-ref board 0 2)) - (hash-ref stack-ids (board-ref board 1 2)) - (hash-ref stack-ids (board-ref board 2 2)) - (hash-ref stack-ids (board-ref board 3 2)) - (hash-ref stack-ids (board-ref board 0 3)) - (hash-ref stack-ids (board-ref board 1 3)) - (hash-ref stack-ids (board-ref board 2 3)) - (hash-ref stack-ids (board-ref board 3 3)))))) - - - ;; Generate a numerical ID for each stack. This numerical - ;; ID must stay constant for all of time, because we - ;; record boards in compact form using these numbers. - ;; (For example, see "plays-3x3.rkt".) - (define red-stack-ids (make-hasheq)) - (define yellow-stack-ids (make-hasheq)) - (for-each (lambda (s) - (hash-set! red-stack-ids s (hash-count red-stack-ids))) - all-stacks) - (for-each (lambda (s) - (let ([inverse - (let loop ([s s]) - (if (null? s) - null - (hash-ref (piece-gobble-table - (if (eq? (piece-color (car s)) 'red) - (list-ref yellow-pieces (piece-size (car s))) - (list-ref red-pieces (piece-size (car s))))) - (loop (cdr s)))))]) - (hash-set! yellow-stack-ids s (hash-ref red-stack-ids inverse)))) - all-stacks) - - ;; Applies an appropriate flattener - (define (compact-board board who) - (flatten-board board - (if (eq? who 'red) red-stack-ids yellow-stack-ids))) - - ;; make-canonicalize : -> (union (board sym -> (cons compact xform)) - ;; (compact #f -> (cons compact xform))) - ;; The resulting procedure embeds a table for mapping a compact - ;; board to its canonical compact board. The result includes an - ;; xform for getting from the given board's locations to - ;; locations in the canonical board. - (define (make-canonicalize) - (let ([memory (make-hash)]) - ;; Convert the board into a byte string, normalizing player: - (lambda (board who) - (let ([v (if who - (compact-board board who) - board)]) - ;; Find canonical mapping. - (hash-ref - memory v - (lambda () - (let* ([pr (cons v (car xforms))]) - (hash-set! memory v pr) - ;; Add each equivalent to table: - (for-each (lambda (xform xform-proc) - (hash-set! memory (xform-proc v) (cons v xform))) - (cdr xforms) (cdr xform-procs)) - pr))))))) - - ;; apply-xform : xform num num -> num - ;; Returns a position in a canonical board - (define (apply-xform xform i j) - (vector-ref xform (+ (* j BOARD-SIZE) i))) - ;; unapply-xform : xform num -> (values num num) - ;; Maps a canonical-board position to a position in - ;; a specific board. - (define (unapply-xform xform v) - (let loop ([i 0]) - (if (= (vector-ref xform i) v) - (values (modulo i BOARD-SIZE) (quotient i BOARD-SIZE)) - (loop (add1 i))))) - - ;; Printing boards ------------------------------ - - ;; helper - (define (board->string depth b) - (let jloop ([j 0]) - (if (= j BOARD-SIZE) - "" - (string-append - (make-string depth #\space) - (let iloop ([i 0]) - (if (= i BOARD-SIZE) - "" - (string-append (stack->string (board-ref b i j)) - " " - (iloop (add1 i))))) - "\n" - (jloop (add1 j)))))) - - (define (stack->string s) - (let ([s (apply string-append - "...." - (map (lambda (p) - (list-ref (if (eq? 'red (piece-color p)) - '("_" "i" "I" "|") - '("=" "o" "O" "0")) - (piece-size p))) - s))]) - (substring s (- (string-length s) BOARD-SIZE))))) diff --git a/pkgs/games/gobblet/plays-3x3.rkt b/pkgs/games/gobblet/plays-3x3.rkt deleted file mode 100644 index 34c8b6cd7b..0000000000 --- a/pkgs/games/gobblet/plays-3x3.rkt +++ /dev/null @@ -1,80 +0,0 @@ -#lang racket -(provide 3x3-plays) -(define 3x3-plays - ;; This list is generated by "check.rkt". - ;; Generate it only when red knows how to win - ;; from all boards. - '((#9(15 0 0 21 9 0 0 0 18) 1 #f 6 2) - (#9(15 0 0 21 9 0 0 0 6) 1 #f 1 3) - (#9(0) 2 #f 4 8) - (#9(0 1 0 6 9 21 0 18 0) 2 #f 0 2) - (#9(0 1 21 8 9 15 0 18 0) 1 #f 0 2) - (#9(15 21 0 21 9 0 0 0 6) 0 #f 2 2) - (#9(23 18 0 0 9 0 0 9 0) 1 #f 2 2) - (#9(9 18 3 9 0 0 18 0) 2 0 5 2) - (#9(0 0 18 0 9 0 15 0) 1 #f 1 3) - (#9(0 7 0 0 9 21 0) 2 #f 1 4) - (#9(0 0 3 9 9 18 18 0) 2 4 0 3) - (#9(0 0 15 0 18 0 15 19 0) 1 #f 1 2) - (#9(0 16 0 6 9 21 0 18 0) 1 #f 0 2) - (#9(0 0 0 15 18 15 0 0 21) 1 #f 0 2) - (#9(6 0 0 3 9 18 0) 2 #f 0 2) - (#9(18 0 0 6 9 15 0) 2 4 3 4) - (#9(0 0 6 18 9 0 15 0) 0 #f 7 4) - (#9(0 0 21 9 9 18 0) 1 #f 8 2) - (#9(0 19 21 8 9 15 0) 1 #f 0 2) - (#9(0 0 0 18 9 15 21 0) 1 #f 0 2) - (#9(21 0 0 9 9 18 0) 1 #f 6 2) - (#9(0 0 21 20 9 15 0 0 7) 0 #f 0 2) - (#9(0 0 6 18 9 0 15 19 0) 2 4 2 3) - (#9(0 0 18 18 9 15 3 0) 1 6 8 3) - (#9(0 16 0 0 9 21 0 18 0) 1 #f 0 2) - (#9(9 0 21 9 0 0 18 0) 1 #f 4 2) - (#9(2 0 0 0 9 0) 2 #f 7 6) - (#9(21 0 9 0 9 0 18 0) 1 #f 3 2) - (#9(18 0 0 9 9 6 0) 2 3 5 5) - (#9(19 16 0 0 9 21 0 6 0) 1 #f 2 2) - (#9(0 0 0 18 9 15 0 0 21) 1 #f 2 2) - (#9(0 0 0 15 18 15 0) 1 #f 2 3) - (#9(6 0 0 21 9 0) 2 #f 0 4) - (#9(0 0 0 6 9 0) 1 #f 5 6) - (#9(0 0 21 20 9 15 0 6 0) 0 #f 8 3) - (#9(0 0 18 18 9 0 15 0) 1 #f 1 3) - (#9(0 0 21 20 9 15 0) 0 #f 8 3) - (#9(0 0 9 18 9 0 6 0) 2 2 6 5) - (#9(0 3 18 0 9 0 15 18 0) 1 #f 0 2) - (#9(0 0 21 11 9 18 0 6 0) 1 #f 8 2) - (#9(0 9 0 2 9 0 0 18 0) 1 #f 2 3) - (#9(0 0 0 18 9 15 0) 1 #f 2 3) - (#9(0 0 0 6 9 21 0) 0 #f 1 5) - (#9(0 9 21 2 9 0 0 18 0) 1 #f 0 2) - (#9(0 16 0 0 9 21 0 6 0) 0 #f 0 3) - (#9(0 0 0 9 9 18 0) 1 #f 0 3) - (#9(0 9 21 2 9 0 0 6 0) 2 1 3 5) - (#9(0 19 0 6 9 21 0) 1 #f 0 2) - (#9(0 0 9 18 9 0 18 0) 1 #f 0 3) - (#9(0 0 9 0 9 0 18 0) 2 2 7 6) - (#9(0 0 21 8 9 15 0) 0 #f 1 3) - (#9(0 21 18 0 9 0 15 0) 1 #f 0 2) - (#9(0 7 0 6 9 21 0) 2 #f 1 4) - (#9(2 18 0 0 9 0 0 9 0) 1 #f 0 3) - (#9(23 6 0 0 9 0 0 9 0) 2 7 1 4) - (#9(18 0 0 18 9 15 0) 1 #f 6 4) - (#9(0 0 0 2 9 0) 2 #f 1 7) - (#9(0 0 21 11 9 6 0 6 0) 2 3 5 4) - (#9(0 0 6 0 9 0 15 19 0) 2 4 2 3) - (#9(0 0 21 11 9 6 0) 2 3 5 4) - (#9(0 9 0 2 9 0 0 6 0) 1 #f 2 6) - (#9(0 0 0 24 9 3 0) 2 #f 2 2) - (#9(5 6 0 0 9 0 0 9 18) 2 4 1 2) - (#9(0 0 18 15 18 15 0 0 3) 1 #f 6 2) - (#9(23 15 0 0 18 0 0 15 0) 1 #f 8 2) - (#9(18 0 0 0 9 0) 2 #f 3 6) - (#9(18 0 0 15 18 15 0) 1 #f 8 3) - (#9(0 0 0 18 9 0) 2 #f 2 7) - (#9(2 6 0 0 9 0 0 9 0) 1 #f 0 5) - (#9(23 15 0 0 9 0 0 18 0) 1 #f 2 2) - (#9(6 0 0 0 9 0) 1 #f 3 5) - (#9(5 18 0 0 9 0 0 9 18) 2 7 3 2) - (#9(18 0 0 9 9 18 0) 1 #f 2 4) - (#9(23 15 0 0 9 0 0 6 0) 2 4 7 3))) diff --git a/pkgs/games/gobblet/robot.rkt b/pkgs/games/gobblet/robot.rkt deleted file mode 100644 index 77f1307731..0000000000 --- a/pkgs/games/gobblet/robot.rkt +++ /dev/null @@ -1,86 +0,0 @@ -#lang racket -;; Plays automatic games, often useful when learning is enabled in "explore.rkt" - -(require "sig.rkt" - (only-in "model.rkt" model-unit@) - (only-in "explore.rkt" explore-unit@) - (only-in "heuristics.rkt" heuristics-unit@)) - -(define board-size 3) -(define steps 2) -(define depth 3) - -(define timeout 3.0) -(define cannon-size +inf.0) - -(define-unit board-config@ - (import) - (export config^) - (define BOARD-SIZE board-size)) - -(define-unit robot-unit@ - (import config^ explore^ model^ heuristics^) - (export) - (define init-board - empty-board - #; - (move empty-board - (list-ref red-pieces 2) #f #f 0 0 - (lambda (b) - (move b - (list-ref yellow-pieces 2) #f #f 0 1 - (lambda (b) b) - void)) - void)) - (define init-who 'red) - ; Only play 50 games to control run time - (define how-many 50) - - ;; Play-a-game test - (let go () - (unless (zero? how-many) - (set! how-many (sub1 how-many)) - ;(sleep 1) - (define s (bitwise-and (+ (current-milliseconds) (random 100)) - (sub1 (expt 2 31)))) - (printf "Random seed: ~s\n" s) - (random-seed s) - (let loop ([board init-board] - [who init-who] - [who-moved "no one"] - [history null]) - (cond - [(winner? board who) - (printf "----------- ~a wins!-------------\n~a\n" who (board->string 1 board)) - (go)] - [(winner? board (other who)) - (printf "----------- ~a wins!-------------\n~a\n" (other who) (board->string 1 board)) - (go)] - [(member board history) - (printf "----------- tie! -------------\n~a\n" (board->string 1 board)) - (go)] - [else - (printf "\n~a moved; ~a's turn\n~a\n" who-moved who (board->string 1 board)) - (let ([start (current-inexact-milliseconds)] - [m ((make-search (if (= BOARD-SIZE 3) - make-3x3-rate-board - make-4x4-rate-board) - (if (= BOARD-SIZE 3) - make-3x3-no-canned-moves - make-4x4-canned-moves)) - timeout steps depth - who board history)]) - (printf "[~a secs]\n" (/ (- (current-inexact-milliseconds) start) - 1000.0)) - (loop (apply-play board m) (other who) who (cons board history)))]))))) - -(invoke-unit - (compound-unit/infer - (import) - (export) - (link - [((CONFIG : config^)) board-config@] - [((MODEL : model^)) model-unit@] - [((HEURISTICS : heuristics^)) heuristics-unit@] - [((EXPLORE : explore^)) explore-unit@] - [() robot-unit@]))) diff --git a/pkgs/games/gobblet/sig.rkt b/pkgs/games/gobblet/sig.rkt deleted file mode 100644 index 81b88fab4e..0000000000 --- a/pkgs/games/gobblet/sig.rkt +++ /dev/null @@ -1,43 +0,0 @@ -#lang racket -(require racket/unit) - -(provide config^ - heuristics^ explore^ - model^ restart^) - -(define-signature config^ - (BOARD-SIZE)) - -(define-signature heuristics^ - (make-3x3-rate-board - make-3x3-canned-moves - make-3x3-no-canned-moves - make-4x4-rate-board - make-4x4-canned-moves)) - -(define-signature explore^ - (make-search - apply-play ; a play is (list piece from-i from-j to-i to-j) - (struct plan (size from-i from-j to-i to-j xform)))) - -(define-signature model^ - (move - winner? 3-in-a-row? - red-pieces yellow-pieces - piece-color piece-size - empty-board - board-ref - fold-board - fold-rowcol - other - available-off-board - compact-board - make-canonicalize - apply-xform unapply-xform - board->string)) - -(define-signature restart^ - (new-game - show-gobblet-help)) - - diff --git a/pkgs/games/gobblet/test-explore.rkt b/pkgs/games/gobblet/test-explore.rkt deleted file mode 100644 index c32573a0da..0000000000 --- a/pkgs/games/gobblet/test-explore.rkt +++ /dev/null @@ -1,77 +0,0 @@ -#lang racket -(require racket/unit - "sig.rkt" - (only-in "model.rkt" model-unit@) - (only-in "explore.rkt" explore-unit@) - (only-in "heuristics.rkt" heuristics-unit@)) - -(define board-size 3) - -(define-unit board-config@ - (import) - (export config^) - (define BOARD-SIZE board-size)) - -(define-unit robot-unit@ - (import config^ explore^ model^ heuristics^) - (export) - (define (mv b p fi fj ti tj k) - (move b p fi fj ti tj k void)) - - (define big (sub1 BOARD-SIZE)) - (define med (- BOARD-SIZE 2)) - - (define 3x3-one-step-win - ;; One-step win - (mv empty-board (list-ref red-pieces big) #f #f 0 0 - (lambda (board) - (mv board (list-ref red-pieces big) #f #f 1 1 - values)))) - - (define 3x3-two-step-win - (mv empty-board (list-ref red-pieces big) #f #f 0 0 - (lambda (board) - (mv board (list-ref yellow-pieces big) #f #f 1 0 - (lambda (board) - (mv board (list-ref red-pieces big) #f #f 1 1 - (lambda (board) - (mv board (list-ref yellow-pieces big) 1 0 2 2 - (lambda (board) - (mv board (list-ref red-pieces med) #f #f 1 0 - (lambda (board) - (mv board (list-ref yellow-pieces big) #f #f 1 0 - values)))))))))))) - - (define (test-search depth board who history) - ((make-search (if (= BOARD-SIZE 3) - make-3x3-rate-board - make-4x4-rate-board) - (if (= BOARD-SIZE 3) - make-3x3-no-canned-moves - make-4x4-canned-moves)) - +inf.0 1 - depth ; depth - who board history)) - - (when (= BOARD-SIZE 3) - (test-search 1 3x3-one-step-win 'red null) - (test-search 3 3x3-one-step-win 'red null) - (test-search 3 3x3-two-step-win 'red null)) - - ;; Time test - (let ([start (current-inexact-milliseconds)] - [m (test-search 5 empty-board 'red null)]) - (printf "[~a secs]\n" (/ (- (current-inexact-milliseconds) start) - 1000.0)) - )) - -(invoke-unit - (compound-unit/infer - (import) - (export) - (link - [((CONFIG : config^)) board-config@ CONFIG] - [((MODEL : model^)) model-unit@] - [((HEURISTICS : heuristics^)) heuristics-unit@] - [((EXPLORE : explore^)) explore-unit@] - [() robot-unit@]))) diff --git a/pkgs/games/gobblet/test-model.rkt b/pkgs/games/gobblet/test-model.rkt deleted file mode 100644 index d6ff0da767..0000000000 --- a/pkgs/games/gobblet/test-model.rkt +++ /dev/null @@ -1,401 +0,0 @@ -#lang racket -;; Some tests for the model - -(require "sig.rkt" - "model.rkt" - "test.rkt") - -;; Test basic procs: -(define (test-folding n) - - (define BOARD-SIZE n) - (define-values/invoke-unit model-unit@ (import config^) (export model^)) - (test 'red (other 'yellow)) - (test 'yellow (other 'red)) - (test (if (= n 3) - '(0 1 2) - '(0 1 2 3)) - (sort (fold-rowcol (lambda (i v) (cons i v)) null) <)) - (test (if (= n 3) - '((0 . 0) (0 . 1) (0 . 2) - (1 . 0) (1 . 1) (1 . 2) - (2 . 0) (2 . 1) (2 . 2)) - '((0 . 0) (0 . 1) (0 . 2) (0 . 3) - (1 . 0) (1 . 1) (1 . 2) (1 . 3) - (2 . 0) (2 . 1) (2 . 2) (2 . 3) - (3 . 0) (3 . 1) (3 . 2) (3 . 3))) - (sort (fold-board (lambda (i j v) (cons (cons i j) v)) null) - (lambda (a b) - (if (= (car a) (car b)) - (< (cdr a) (cdr b)) - (< (car a) (car b))))))) -(test-folding 3) -(test-folding 4) - -;; Test available-off-board for 3x3: -(let () - (define BOARD-SIZE 3) - (define-values/invoke-unit model-unit@ (import config^) (export model^)) - (test '((2 2) (1 1) (0 0)) (available-off-board empty-board 'red)) - (test '((2 2) (1 1) (0)) (available-off-board - (move empty-board (list-ref red-pieces 0) #f #f 1 1 values void) - 'red)) - (let ([b2 (move empty-board (list-ref red-pieces 2) #f #f 1 1 values void)]) - (test '((2) (1 1) (0 0)) (available-off-board b2 'red)) - (let ([b3 (move b2 (list-ref yellow-pieces 1) #f #f 2 2 values void)]) - (test '((2) (1 1) (0 0)) (available-off-board b3 'red)) - (test '((2 2) (1) (0 0)) (available-off-board b3 'yellow)) - (let ([b4 (move b3 (list-ref red-pieces 2) #f #f 0 1 values void)]) - (test '((1 1) (0 0)) (available-off-board b4 'red)) - (test '((2 2) (1) (0 0)) (available-off-board b4 'yellow)))))) - -;; Test available-off-board for 4x4: -(let () - - (define BOARD-SIZE 4) - (define-values/invoke-unit model-unit@ (import config^) (export model^)) - (test '((3 2 1 0) (3 2 1 0) (3 2 1 0)) (available-off-board empty-board 'red)) - (let ([b2 (move empty-board (list-ref red-pieces 3) #f #f 1 1 values void)]) - (test '((3 2 1 0) (3 2 1 0) (2 1 0)) (available-off-board b2 'red)) - (let ([b3 (move b2 (list-ref yellow-pieces 3) #f #f 2 2 values void)]) - (test '((3 2 1 0) (3 2 1 0) (2 1 0)) (available-off-board b3 'red)) - (test '((3 2 1 0) (3 2 1 0) (2 1 0)) (available-off-board b3 'yellow)) - (let ([b4 (move b3 (list-ref red-pieces 3) #f #f 0 1 values void)]) - (test '((3 2 1 0) (2 1 0) (2 1 0)) (available-off-board b4 'red)) - (let ([b5 (move b4 (list-ref red-pieces 2) #f #f 0 3 values void)]) - (test '((3 2 1 0) (2 1 0) (1 0)) (available-off-board b5 'red))) - (let ([b5 (move b4 (list-ref red-pieces 3) #f #f 0 3 values void)]) - (test '((2 1 0) (2 1 0) (2 1 0)) (available-off-board b5 'red)))) - (let ([b4 (move b3 (list-ref red-pieces 2) #f #f 0 1 values void)]) - (test '((3 2 1 0) (3 2 1 0) (1 0)) (available-off-board b4 'red)) - (let ([b5 (move b4 (list-ref red-pieces 3) #f #f 0 3 values void)]) - (test '((3 2 1 0) (2 1 0) (1 0)) (available-off-board b5 'red)) - (let ([b6 (move b5 (list-ref red-pieces 2) #f #f 3 3 values void)]) - (test '((3 2 1 0) (1 0) (1 0)) (available-off-board b6 'red)))))))) - -(define x-table (make-hash)) -(define (testx id board) - (test id (hash-ref x-table board - (lambda () - (when (hash-ref x-table id (lambda () #f)) - (error 'testx "id already mapped\n")) - (hash-set! x-table id #t) - (hash-set! x-table board id) - id)))) - -;; Given a canonicalize function, a board, the current player, -;; and the model exports, check that the canonicalizer works -;; on the board. -(define (canon-test BOARD-SIZE canonicalize board who - fold-board board-ref move empty-board - yellow-pieces red-pieces piece-color piece-size other - apply-xform unapply-xform) - (define (flip-stack stack) - (map (lambda (p) - (if (eq? (piece-color p) 'red) - (list-ref yellow-pieces (piece-size p)) - (list-ref red-pieces (piece-size p)))) - stack)) - (define (board-xform board ijx flip-stack) - (fold-board - (lambda (i j b) - (let ([stack (board-ref board i j)]) - (let loop ([stack (flip-stack stack)]) - (if (null? stack) - b - (let-values ([(i j) (ijx i j)]) - (move (loop (cdr stack)) - (car stack) - #f #f - i j - values void)))))) - empty-board)) - (let* ([key+xform (canonicalize board who)] - ;; flip vert - [board2 (board-xform board (lambda (i j) - (values i (- BOARD-SIZE 1 j))) - values)] - [key2+xform2 (canonicalize board2 who)] - ;; flip horiz - [board3 (board-xform board (lambda (i j) - (values (- BOARD-SIZE 1 i) j)) - values)] - [key3+xform3 (canonicalize board3 who)] - ;; flip colors - [board4 (board-xform board (lambda (i j) (values i j)) - flip-stack)] - [key4+xform4 (canonicalize board4 (other who))]) - ;; Canoncal key should be the same for all boards: - (test (car key+xform) (car key2+xform2)) - (test (car key+xform) (car key3+xform3)) - (test (car key+xform) (car key4+xform4)) - ;; Xforming coordinates should produce the same thing for each board: - (fold-board (lambda (i j v) - (let ([pos (apply-xform (cdr key+xform) i j)] - [s (board-ref board i j)]) - (let-values ([(i j) (unapply-xform (cdr key2+xform2) pos)]) - (test s (board-ref board2 i j)) - (test pos (apply-xform (cdr key2+xform2) i j))) - (let-values ([(i j) (unapply-xform (cdr key3+xform3) pos)]) - (test s (board-ref board3 i j)) - (test pos (apply-xform (cdr key3+xform3) i j))) - (let-values ([(i j) (unapply-xform (cdr key4+xform4) pos)]) - (test (flip-stack s) (board-ref board4 i j)) - (test pos (apply-xform (cdr key4+xform4) i j))))) - (void)) - (car key+xform))) - -;; Test canonicalization, 3x3 -(let () - (define BOARD-SIZE 3) - (define-values/invoke-unit model-unit@ (import config^) (export model^)) - (let ([c (let ([canonicalize (make-canonicalize)]) - (lambda (b who) - (canon-test 3 canonicalize b who - fold-board board-ref move empty-board - yellow-pieces red-pieces piece-color piece-size other - apply-xform unapply-xform)))]) - (testx 0 (c empty-board 'red)) - (testx 0 (c empty-board 'yellow)) - (let ([b1 (move empty-board (list-ref red-pieces 2) #f #f 1 1 values void)]) - (testx 1 (c b1 'red)) - (testx 2 (c b1 'yellow)) - (testx 1 (c b1 'red)) - (let ([b2 (move b1 (list-ref red-pieces 2) #f #f 2 2 values void)]) - (testx 3 (c b2 'red)) - (testx 7 (c b2 'yellow))) - (let ([b2 (move b1 (list-ref red-pieces 2) #f #f 0 0 values void)]) - (testx 3 (c b2 'red)) - (testx 7 (c b2 'yellow)) - (let ([b3 (move b2 (list-ref yellow-pieces 1) #f #f 1 0 values void)]) - (testx 11 (c b3 'red)) - (testx 19 (c b3 'yellow)) - (let ([b4 (move b3 (list-ref red-pieces 2) #f #f 1 0 values void)]) - (testx 27 (c b4 'red)) - (testx 35 (c b4 'yellow)) - (let ([b5 (move b4 (list-ref red-pieces 2) 0 0 2 0 values void)]) - (testx 27 (c b5 'red)) - (testx 35 (c b5 'yellow))))))))) - -(set! x-table (make-hash)) - -;; Test canonicalization, 4x4 - -(define BOARD-SIZE 4) -(define-values/invoke-unit model-unit@ (import config^) (export model^)) -(let ([c (let ([canonicalize (make-canonicalize)]) - (lambda (b who) - (canon-test 4 canonicalize b who - fold-board board-ref move empty-board - yellow-pieces red-pieces piece-color piece-size other - apply-xform unapply-xform)))]) - (testx 0 (c empty-board 'red)) - (testx 0 (c empty-board 'yellow)) - (let ([b1 (move empty-board (list-ref red-pieces 0) #f #f 1 1 values void)]) - (testx 1 (c b1 'red)) - (testx 5 (c b1 'yellow)) - (testx 1 (c b1 'red)) - (let ([b1.1 (move b1 (list-ref red-pieces 0) #f #f 2 2 values void)]) - (let ([b2 (move b1.1 (list-ref red-pieces 2) #f #f 3 3 values void)]) - (testx 9 (c b2 'red)) - (testx 13 (c b2 'yellow))) - (let ([b2 (move b1.1 (list-ref red-pieces 2) #f #f 0 0 values void)]) - (testx 9 (c b2 'red)) - (testx 13 (c b2 'yellow)) - (let ([b3 (move b2 (list-ref yellow-pieces 1) #f #f 1 0 values void)]) - (testx 17 (c b3 'red)) - (testx 25 (c b3 'yellow))))))) - -(define (basic-tests size xform 4x4-finish-pos) - ;; When xform is the identity, then we build toward - ;; _ _ Y - _ = empty - ;; _ Y _ - - = optional (3x3 vs 4x4) - ;; y R R - - ;; - - - - - ;; The xform changes the cooridnate system so that we - ;; test rows and columns in addition to this diagonal. - - (define BOARD-SIZE size) - - (define-values (i00 j00) (xform 0 0)) - (define-values (i11 j11) (xform 1 1)) - (define-values (i22 j22) (xform 2 2)) - (define-values (i12 j12) (xform 1 2)) - (define-values (i02 j02) (xform 0 2)) - (define-values (i20 j20) (xform 2 0)) - - (define-values/invoke-unit model-unit@ (import config^) (export model^)) - - ;; Empty board -------------------- - (define b empty-board) - - (test null (board-ref b i00 j00)) - (test null (board-ref b i22 j22)) - - (test #f (winner? b 'red)) - (test #f (winner? b 'yellow)) - - (define big-red (list-ref red-pieces 2)) - (define big-yellow (list-ref yellow-pieces 2)) - (define med-red (list-ref red-pieces 1)) - (define med-yellow (list-ref yellow-pieces 1)) - (define small-yellow (list-ref yellow-pieces 0)) - - ;; Big red -------------------- - - (define b1 (move b big-red #f #f i00 j00 values void)) - (test (list big-red) (board-ref b1 i00 j00)) - (test (void) (move b1 big-yellow #f #f i00 j00 values void)) - - (test #f (winner? b1 'red)) - (test #f (winner? b1 'yellow)) - - ;; Big red, big yellow -------------------- - - (define b2 (move b1 big-yellow #f #f i11 j11 values void)) - (test (list big-red) (board-ref b2 i00 j00)) - (test (list big-yellow) (board-ref b2 i11 j11)) - - (test #f (winner? b2 'red)) - (test #f (winner? b2 'yellow)) - - (test (void) (move b2 big-red #f #f i11 j11 values void)) - (test (void) (move b2 big-red i00 j00 i11 j11 values void)) - - ;; Big red moved, big yellow -------------------- - - (define b3 (move b2 big-red i00 j00 i22 j22 values void)) - (test null (board-ref b3 i00 j00)) - (test (list big-yellow) (board-ref b3 i11 j11)) - (test (list big-red) (board-ref b3 i22 j22)) - - (test #f (winner? b3 'red)) - (test #f (winner? b3 'yellow)) - - ;; Big red, big yellow, med yellow -------------------- - - (define b4 (move b3 med-yellow #f #f i02 j02 values void)) - (test (list big-yellow) (board-ref b4 i11 j11)) - (test (list big-red) (board-ref b4 i22 j22)) - (test (list med-yellow) (board-ref b4 i02 j02)) - - (test #f (winner? b4 'red)) - (test #f (winner? b4 'yellow)) - - (test (void) (move b4 med-red #f #f i02 j02 values void)) - - ;; Big red gobble med yellow, big yellow -------------------- - ;; --- Add big red - (define b5.1 (move b4 big-red #f #f i02 j02 values void)) - (when (= size 4) - ;; can't gobble yellow, since it's not in a 3-in-arow - (test (void) b5.1) - ;; Generate board by cheating, giving red two turns... - (set! b5.1 (move (move b4 big-red i22 j22 i02 j02 values void) - big-red #f #f i22 j22 values void))) - (test (list big-yellow) (board-ref b5.1 i11 j11)) - (test (list big-red) (board-ref b5.1 i22 j22)) - (test (list big-red med-yellow) (board-ref b5.1 i02 j02)) - - ;; --- Move big red - (define b5.2 (move b4 big-red i22 j22 i02 j02 values void)) - (test (list big-yellow) (board-ref b5.2 i11 j11)) - (test null (board-ref b5.2 i22 j22)) - (test (list big-red med-yellow) (board-ref b5.2 i02 j02)) - - ;; Add small yellow ------------------------------ - ;; --- with 2 big red - (define b6.1 (move b5.1 small-yellow #f #f i20 j20 values void)) - (test (list big-yellow) (board-ref b6.1 i11 j11)) - (test (list big-red) (board-ref b6.1 i22 j22)) - (test (list big-red med-yellow) (board-ref b6.1 i02 j02)) - (test (list small-yellow) (board-ref b6.1 i20 j20)) - - (test #f (winner? b6.1 'red)) - (test #f (winner? b6.1 'yellow)) - - ;; --- with 1 big red - (define b6.2 (move b5.2 small-yellow #f #f i20 j20 values void)) - (test (list big-yellow) (board-ref b6.2 i11 j11)) - (test null (board-ref b6.2 i22 j22)) - (test (list big-red med-yellow) (board-ref b6.2 i02 j02)) - (test (list small-yellow) (board-ref b6.2 i20 j20)) - - (test #f (winner? b6.2 'red)) - (test #f (winner? b6.2 'yellow)) - - ;; Expose med yellow for 3-in-row ---------- - (define b7.1 (move b6.1 big-red i02 j02 i12 j12 values void)) - (test (list big-yellow) (board-ref b7.1 i11 j11)) - (test (list big-red) (board-ref b7.1 i22 j22)) - (test (list med-yellow) (board-ref b7.1 i02 j02)) - (test (list small-yellow) (board-ref b7.1 i20 j20)) - (test (list big-red) (board-ref b7.1 i12 j12)) - - (test #f (winner? b7.1 'red)) - (test (= size 3) (winner? b7.1 'yellow)) - - (define b7.2 (move b6.2 big-red i02 j02 i12 j12 values void)) - (test (list big-yellow) (board-ref b7.2 i11 j11)) - (test null (board-ref b7.2 i22 j22)) - (test (list med-yellow) (board-ref b7.2 i02 j02)) - (test (list small-yellow) (board-ref b7.2 i20 j20)) - (test (list big-red) (board-ref b7.2 i12 j12)) - - (test #f (winner? b7.2 'red)) - (test (= size 3) (winner? b7.2 'yellow)) - - (when (and (= size 4) - 4x4-finish-pos) - ;; 4 x 4 game: now red can cover small yellow, because it's - ;; part of 3 in a row - - (test #t (3-in-a-row? b7.2 i20 j20 'yellow)) - (test #f (3-in-a-row? b7.2 i20 j20 'red)) - - (define b8.2 (move b7.2 med-red #f #f i20 j20 values void)) - (test (list big-yellow) (board-ref b8.2 i11 j11)) - (test null (board-ref b8.2 i22 j22)) - (test (list med-yellow) (board-ref b8.2 i02 j02)) - (test (list med-red small-yellow) (board-ref b8.2 i20 j20)) - (test (list big-red) (board-ref b8.2 i12 j12)) - - (test #f (winner? b8.2 'red)) - (test #f (winner? b8.2 'yellow)) - - (define b8.2x (move b7.2 med-yellow #f #f (car 4x4-finish-pos) (cdr 4x4-finish-pos) values void)) - (test #f (winner? b8.2x 'red)) - (test #t (winner? b8.2x 'yellow)))) - -(define (rotate i j) - (case i - [(0) (case j - [(0) (values 1 0)] - [(1) (values 0 0)] - [(2) (values 0 1)])] - [(1) (case j - [(0) (values 2 0)] - [(1) (values 1 1)] - [(2) (values 0 2)])] - [(2) (case j - [(0) (values 2 1)] - [(1) (values 2 2)] - [(2) (values 1 2)])] - [else (values i j)])) - -(map (lambda (xform+?) - (basic-tests 3 ((cdr xform+?) 3) (car xform+?)) - (basic-tests 4 ((cdr xform+?) 4) (car xform+?))) - (list (cons #f (lambda (sz) (lambda (i j) (values i j)))) - (cons #f (lambda (sz) (lambda (i j) (values j i)))) - (cons #f (lambda (sz) (lambda (i j) (values i (- sz 1 j))))) - (cons '(3 . 1) (lambda (sz) (lambda (i j) (rotate i j)))) - (cons '(1 . 3) (lambda (sz) (lambda (i j) (rotate i (- 3 1 j))))))) - -;; Extra tests for 4 x 4 to get yellow 3-in-a-row on diagonals: -(basic-tests 4 (lambda (i j) (values i (+ j 1))) '(3 . 0)) -(basic-tests 4 (lambda (i j) (values i (- 3 (+ j 1)))) '(3 . 3)) - -(report-test-results) - - diff --git a/pkgs/games/gobblet/test.rkt b/pkgs/games/gobblet/test.rkt deleted file mode 100644 index 09a98c4f8d..0000000000 --- a/pkgs/games/gobblet/test.rkt +++ /dev/null @@ -1,26 +0,0 @@ -#lang racket -(provide test report-test-results) - -(define failed? #f) -(define (set-failed!) (set! failed? #t)) - -(define-syntax test - (syntax-rules () - [(_ expect expr) - (begin - (printf "~s =>" 'expr) - (flush-output) - (let ([v expr] - [ex expect]) - (printf " ~s" v) - (unless (equal? v ex) - (set-failed!) - (printf " EXPECTED ~s" ex) - (exit)) - (printf "\n")))])) - -(define (report-test-results) - (printf (if failed? - "\nTESTS FAILED\n" - "\nAll tests passed.\n"))) - diff --git a/pkgs/games/gofish/gofish.png b/pkgs/games/gofish/gofish.png deleted file mode 100644 index 7eea24f73dc6d4e3f4f3a086c52e9ae2ba2a95ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)tqb#F?ChhabmRZ_|GdxdJ?DAem**7* z2V2qUlKmWz78j?4l9GENedRH=+JCZV81y=*xD+#RV`Ie+2%&rh@oKPHq5XB}EIuDh z%*MQ#J)j^!rxR)_Lq|P-1J>K{J$9%dy?f#}*xTT89^AhbV7gpi(dm+7hU{x`aY|5P zN{9Y-@CEmcTCJw1XBfR+N5uivR{=oVYk2%DC?Gywjm>7IJxqPq)_yWHG=|sfiwde> zXBQm(@b&|2Z3mcwAkf+Aq$W&#o0{6OT5I|8MT!!rQbNlEc<~70)dA-8^gJ(LzD1HI zWfwaf{VXr9lb)VRM~8#Cxuu9eB>)+xWKEMP9jEgt3WY+}@9P^vlBUpVH8>mtT)TD| zqcJTCU>Mo$E$H<+>g#U?c}-1s+1&InFz}h;;yhAPB6oCHpwl^s(>X|7oC1p_huqw= z0lp|EAc_f8S6__?iVB#Yf1ZpC6B&Q-fJeap z4~%$u$11nmgCtF|vEfD(w+oO!%{UzW7>#L6O#Gm^xq-^clAySq zon3rBAG5PAluJv~!sh0x?5Hn_$HRVMQBf`{E9;DmxF{_xAUpd^P|VEC0>JzLzc8CmGe18b`#DTX60ulvP^skiZZ>CPFr1*b_Y)A|9EPj!->9f) fZ#-FBTM&K&ofGo*YBEYw00000NkvXXu0mjf1QU0! diff --git a/pkgs/games/gofish/gofish.rkt b/pkgs/games/gofish/gofish.rkt deleted file mode 100644 index 034bfb7723..0000000000 --- a/pkgs/games/gofish/gofish.rkt +++ /dev/null @@ -1,326 +0,0 @@ -#lang racket -(require games/cards racket/gui racket/class racket/unit) - -(provide game@) -(define game@ (unit (import) (export) - -;; Player record -(define-struct player (r hand-r discard-r count-r ; regions - hand discarded ; cards - tried) #:mutable) ; memory for simulating players - -;; Player names -(define PLAYER-1-NAME "Opponent 1") -(define PLAYER-2-NAME "Opponent 2") -(define YOUR-NAME "You") - -;; Initial card count -(define DEAL-COUNT 7) - -;; Messages -(define YOUR-TURN-MESSAGE - "Your turn. (Drag a match to your discard box or drag a card to an opponent.)") -(define GO-FISH-MESSAGE - "Go Fish! (Drag a card from the center deck to your box.)") -(define MATCH-MESSAGE "Match!") -(define GAME-OVER-MESSAGE "GAME OVER") - -;; Region layout constants -(define MARGIN 10) -(define SUBMARGIN 10) -(define LABEL-H 15) - -;; Randomize -(random-seed (modulo (current-milliseconds) 10000)) - -;; Set up the table -(define t (make-table "Go Fish" 8 4.5)) -(define status-pane (send t create-status-pane)) -(send t add-scribble-button status-pane - '(lib "games/scribblings/games.scrbl") "gofish") -(send t show #t) -(send t set-double-click-action #f) -(send t set-button-action 'left 'drag-raise/one) -(send t set-button-action 'middle 'drag/one) -(send t set-button-action 'right 'drag/one) - -;; Get table width & height -(define w (send t table-width)) -(define h (send t table-height)) - -;; Set up the cards -(define deck (shuffle-list (make-deck) 7)) -(for-each (lambda (card) - (send card snap-back-after-move #t) - (send card user-can-flip #f)) - deck) - -;; Function for dealing or drawing cards -(define (deal n) - (let loop ([n n][d deck]) - (if (zero? n) - (begin (set! deck d) null) - (cons (car d) (loop (sub1 n) (cdr d)))))) - -;; Card width & height -(define cw (send (car deck) card-width)) -(define ch (send (car deck) card-height)) - -;; Put the cards on the table -(send t add-cards deck (/ (- w cw) 2) (- (/ (- h ch) 2) (/ ch 3))) - -;; Player region size -(define pw (- (/ (- w cw) 2) (* 2 MARGIN))) -(define ph (- (/ (- h (/ ch 3)) 2) (* 2 MARGIN))) - -;; Region-makers -(define (make-hand-region r) - (define m SUBMARGIN) - (make-region (+ m (region-x r)) (+ LABEL-H m (region-y r)) - (- (region-w r) (* 3 m) cw) (- (region-h r) LABEL-H (* 2 m)) - #f #f)) -(define (make-discard-region r) - (make-region (- (+ (region-x r) (region-w r)) SUBMARGIN cw) - (- (+ (region-y r) (region-h r)) SUBMARGIN ch) - cw ch - #f #f)) -(define (make-discard-count-region r c cb) - (make-region - (- (+ (region-x r) (region-w r)) SUBMARGIN cw (/ SUBMARGIN 2)) - (- (+ (region-y r) (region-h r)) SUBMARGIN ch LABEL-H (/ SUBMARGIN 2)) - (+ cw SUBMARGIN) (+ ch LABEL-H SUBMARGIN) - (number->string c) - cb)) - -;; Define the initial regions -(define player-1-region - (make-region MARGIN MARGIN pw ph PLAYER-1-NAME void)) -(define player-2-region - (make-region (- w MARGIN pw) MARGIN pw ph PLAYER-2-NAME void)) -(define you-region - (make-region MARGIN (- h MARGIN ph) (- w (* 2 MARGIN)) ph YOUR-NAME void)) - -;; Player setup -(define (create-player r discard-callback) - (let ([p (make-player - r - (make-hand-region r) - (make-discard-region r) - (make-discard-count-region r 0 discard-callback) - (deal DEAL-COUNT) - null - null)]) - (send t add-region r) - (send t add-region (player-count-r p)) - (for-each (lambda (card) - (send t card-to-front card)) (reverse (player-hand p))) - (send t move-cards-to-region (player-hand p) (player-hand-r p)) - p)) - -(define player-1 (create-player player-1-region #f)) -(define player-2 (create-player player-2-region #f)) -(define you (create-player you-region - ;; Dragging to your discard pile checks to see if - ;; the card makes a match: - (lambda (cards) - (check-hand you (car cards)) - (send t set-status YOUR-TURN-MESSAGE)))) - -;; More card setup: Opponents's cards and deck initially can't be moved -(for-each (lambda (card) (send card user-can-move #f)) - (append (player-hand player-1) (player-hand player-2) deck)) - -;; More card setup: Show your cards -(send t flip-cards (player-hand you)) - -;; Function to update the display for a player record -(define (rearrange-cards p) - ;; Stack cards in 3D first-to-last - (send t stack-cards (player-discarded p)) - (send t stack-cards (player-hand p)) - ;; Move them to their regions - (send t move-cards-to-region (player-discarded p) (player-discard-r p)) - (send t move-cards-to-region (player-hand p) (player-hand-r p)) - ;; Recreate the counter region to reset the count - (send t begin-card-sequence) - (send t remove-region (player-count-r p)) - (set-player-count-r! p (make-discard-count-region - (player-r p) (/ (length (player-discarded p)) 2) - (region-callback (player-count-r p)))) - (send t add-region (player-count-r p)) - (send t end-card-sequence)) - -;; Function to search for an equivalent card -(define (find-equiv card hand) - (ormap (lambda (c) - (and (not (eq? c card)) - (= (send card get-value) (send c get-value)) - c)) - hand)) - -;; Function to check for a match involving `card' already in the player's hand -(define (check-hand player card) - (let* ([h (player-hand player)] - [found (find-equiv card h)]) - (if found - (begin - ;; Make sure the matching cards are face-up and pause for the user - (send t cards-face-up (list found card)) - (send t set-status MATCH-MESSAGE) - ;; The players has a match! Move the card from the player's hand - ;; to his discard pile - (set-player-hand! player (remove* (list card found) h)) - (set-player-discarded! player - (list* found card (player-discarded player))) - ;; The dicarded cards can no longer be moved - (send card user-can-move #f) - (send found user-can-move #f) - ;; Move the cards to their new places - (rearrange-cards player) - ;; Slower - #t) - #f))) - -;; Function to enable/disable moving your cards -(define (enable-your-cards on?) - (for-each (lambda (c) (send c user-can-move on?)) (player-hand you))) - -;; Callbacks communicate back to the main loop via these -(define something-happened (make-semaphore 1)) -(define go-fish? #f) - -;; Function for trying to get a card from another player -(define (ask-player-for-match getter giver card) - (let* ([h (player-hand giver)] - [found (find-equiv card h)]) - (if found - (begin - ;; The giver player has a matching card - give it to the getter - (set-player-hand! giver (remq found h)) - (set-player-hand! getter (cons found (player-hand getter))) - ;; Make sure the matching cards are face-up and pause for the user - (send t cards-face-up (list found card)) - ;; Move the cards around - (check-hand getter card) - (rearrange-cards giver) - #t) - ;; The giver player doesn't have it - Go Fish! - #f))) - -;; Callback for dragging a card to an opponent -(define (player-callback player) - (lambda (cards) - (set! go-fish? (not (ask-player-for-match you player (car cards)))) - (semaphore-post something-happened))) - -;; Visual info to go fish -(define wiggle-top-card - (lambda () - (let ([top (car deck)] - [x (/ (- w cw) 2)] - [y (- (/ (- h ch) 2) (/ ch 3))]) - (send t move-card top (- x 10) y) - (send t move-card top (+ x 10) y) - (send t move-card top x y)))) - -;; Callback for going fishing -(define fishing - (lambda (cards) - (send t flip-card (car deck)) - (set-player-hand! you (append (deal 1) (player-hand you))) - (rearrange-cards you) - (semaphore-post something-happened))) - -;; Function to simulate a player -(define (simulate-player player other-player k) - ;; Try cards in the players hand that haven't been tried - (let ([cards-to-try (remq* (player-tried player) (player-hand player))]) - (if (null? cards-to-try) - (begin - ;; No cards to try. Reset the history and start over - (set-player-tried! player null) - (simulate-player player other-player k)) - ;; Pick a random card and a random opponent - (let ([c (list-ref cards-to-try (random (length cards-to-try)))] - [o (list-ref (list you other-player) (random 2))]) - (set-player-tried! player (cons c (player-tried player))) - ;; Show you the card-to-ask - (send t flip-card c) - ;; Hilight player-to-ask - (send t hilite-region (player-r o)) - ;; Wait a moment - (sleep 0.3) - ;; Unhilight player-to-ask - (send t unhilite-region (player-r o)) - (if (ask-player-for-match player o c) - ;; Got it - go again - (check-done - (lambda () - (simulate-player player other-player k))) - ;; Go fish - (begin - ;; Wait a bit, then turn the asked-for card back over - (sleep 0.3) - (send t flip-card c) - (if (null? deck) - ;; No more cards; pass - (k) - (begin - ;; Draw a card - (set-player-hand! player (append (deal 1) (player-hand player))) - (rearrange-cards player) - (if (check-hand player (car (player-hand player))) - ;; Drew a good card - keep going - (check-done - (lambda () - (simulate-player player other-player k))) - ;; End of our turn - (k)))))))))) - -;; Function to check for end-of-game -(define (check-done k) - (if (ormap (lambda (p) (null? (player-hand p))) (list player-1 player-2 you)) - (begin (enable-your-cards #f) - (send t set-status GAME-OVER-MESSAGE)) - (k))) - -;; Look in opponents' initial hands for matches (Since each player gets 7 -;; cards, it's impossible to run out of cards this way) -(define (find-initial-matches player) - (when (ormap (lambda (card) (check-hand player card)) (player-hand player)) - ;; Found a match in the hand - (find-initial-matches player))) -(find-initial-matches player-1) -(find-initial-matches player-2) - -;; Run the game loop -(let loop () - (set-region-callback! (player-r you) #f) - (set-region-callback! (player-r player-1) (player-callback player-1)) - (set-region-callback! (player-r player-2) (player-callback player-2)) - (send t set-status YOUR-TURN-MESSAGE) - (yield something-happened) - (if go-fish? - (begin - (if (if (null? deck) - ;; No more cards; pass - #f - ;; Draw a card (wait for the user to drag it) - (begin (send t set-status GO-FISH-MESSAGE) - (wiggle-top-card) - (enable-your-cards #f) - (set-region-callback! (player-r player-1) #f) - (set-region-callback! (player-r player-2) #f) - (set-region-callback! (player-r you) fishing) - (send (car deck) user-can-move #t) - (yield something-happened) - (enable-your-cards #t) - (check-hand you (car (player-hand you))))) - (check-done loop) - (begin (send t set-status PLAYER-1-NAME) - (simulate-player - player-1 player-2 - (lambda () - (send t set-status PLAYER-2-NAME) - (simulate-player player-2 player-1 loop)))))) - (check-done loop))))) diff --git a/pkgs/games/gofish/info.rkt b/pkgs/games/gofish/info.rkt deleted file mode 100644 index 3f418a045b..0000000000 --- a/pkgs/games/gofish/info.rkt +++ /dev/null @@ -1,5 +0,0 @@ -#lang info - -(define name "Go Fish") -(define game "gofish.rkt") -(define game-set "Card Games") diff --git a/pkgs/games/info.rkt b/pkgs/games/info.rkt deleted file mode 100644 index c875e500fd..0000000000 --- a/pkgs/games/info.rkt +++ /dev/null @@ -1,33 +0,0 @@ -#lang info - -(define collection "games") - -(define scribblings '(("scribblings/games.scrbl" (multi-page) (gui-library)))) - -(define gracket-launcher-libraries (list "main.rkt")) -(define gracket-launcher-names (list "PLT Games")) -(define deps '("base" - "draw-lib" - "drracket" - "gui-lib" - "net-lib" - "htdp-lib" - "math-lib" - "scribble-lib" - "racket-index" - "sgl" - "srfi-lib" - "string-constants-lib" - "data-enumerate-lib" - "typed-racket-lib" - "typed-racket-more")) -(define build-deps '("draw-doc" - "gui-doc" - "racket-doc" - "pict-lib" - "rackunit-lib" - "htdp-doc")) - -(define pkg-desc "Games") - -(define pkg-authors '(mflatt robby)) diff --git a/pkgs/games/jewel/array.rkt b/pkgs/games/jewel/array.rkt deleted file mode 100644 index 2056d41d28..0000000000 --- a/pkgs/games/jewel/array.rkt +++ /dev/null @@ -1,97 +0,0 @@ -#lang racket - -(provide array-make array-ref array-set! - array-mult array-mult-vector - array-det array-sub array-inv) - -;; creates a square matrix, nxn -(define (array-make n) - (define a (make-vector n #f)) - (for ([i (in-range n)]) - (vector-set! a i (make-vector n 0.0))) - a) - -;; returns an array element -(define (array-ref m i j) - (vector-ref (vector-ref m i) j)) - -;; sets an array element -(define (array-set! m i j val) - (vector-set! (vector-ref m i) j val)) - -;; matrix - matrix multiplication -(define (array-mult a b) - (define n (vector-length a)) - (define m (array-make n)) - (for* ([i (in-range n)] - [j (in-range n)] - [k (in-range n)]) - (array-set! m i j (+ (array-ref m i j) - (* (array-ref a i k) - (array-ref b k j))))) - m) - -;; vector - matrix multiplication -(define (array-mult-vector m v) - (define r (make-vector 4 0)) - (for* ([i (in-range 4)] - [j (in-range 4)]) - (vector-set! r i (+ (* (array-ref m i j) (vector-ref v j)) - (vector-ref r i)))) - r) - -;; calculates the determinant of a matrix -(define (array-det a) - (cond [(= (vector-length a) 1) - (array-ref a 0 0)] - [(= (vector-length a) 2) - (- (* (array-ref a 0 0) (array-ref a 1 1)) - (* (array-ref a 1 0) (array-ref a 0 1)))] - [else - (define n (vector-length a)) - (define det 0.0) - (define m #f) - (define j2 #f) - (for ([j1 (in-range n)]) - ;; create sub-matrix - (set! m (array-make (- n 1))) - (for ([i (in-range 1 n)]) - (set! j2 0) - (for ([j (in-range n)] #:unless (= j j1)) - (array-set! m (- i 1) j2 (array-ref a i j)) - (set! j2 (+ j2 1)))) - (set! det (+ det (* (expt -1 (+ 1 j1 1)) - (array-ref a 0 j1) - (array-det m))))) - ;; return the determinant - det])) - -;; creates a sub-matrix, except row 'in' and column 'jn' -(define (array-sub a in jn) - (define n (vector-length a)) - (define m (array-make (- n 1))) - (define ii 0) - (define jj 0) - (for ([i (in-range n)] #:unless (= i in)) - (set! jj 0) - (for ([j (in-range n)] #:unless (= j jn)) - (array-set! m ii jj (array-ref a i j)) - (set! jj (+ jj 1))) - (set! ii (+ ii 1))) - m) - -;; calculates the inverse of a matrix -(define (array-inv a) - (define n (vector-length a)) - (define m (array-make n)) - (define det (array-det a)) - (for* ([i (in-range n)] - [j (in-range n)]) - (array-set! m j i (/ (* (expt -1 (+ i j)) - (array-det (array-sub a i j))) - det))) - m) - -;; (define aa '#(#(1 2 3) #(4 4 0) #(0 0 10))) -;; (define bb (array-inv aa)) -;; (array-mult aa bb) diff --git a/pkgs/games/jewel/info.rkt b/pkgs/games/jewel/info.rkt deleted file mode 100644 index f151845ba3..0000000000 --- a/pkgs/games/jewel/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game "jewel.rkt") -(define game-set "Puzzle Games") diff --git a/pkgs/games/jewel/jewel.png b/pkgs/games/jewel/jewel.png deleted file mode 100644 index e4b2e67d0ae400c49d75a87311dddf449e13ec39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmV;M0%ZM(P)0#VT7CJ9X-ya7=jAbEfkY21f5proU4fkd7GVG2knQxK&A zBqBFN#3V>T3g{?q)*i2S_tqDSeA3EuJL{cqznT4$WMo_>(o2mFR0F;SumpSsy1;RX z`BUHwI4DD44fqV)k?*dwFC!4B0N16R`WU*<03KLK6-qoSOsYp z;d5n|3BCf{0(OCI;G5+iDoC9ISK-BC0oah>2CKkB$Jl{XXa&|v1ilSC4fq#j%xl#* zpn_4rUj6roz$*p8_1H~dR`vC^r76O;^`}q)nmmWF>*?PCK8W1`I#uGg-2yNlIo1cA zk~+{yGBSJh0Plb!v5WHTf=>aBZQzsdE;y3F^AyWn7OTKc6_|54$02tN7L$zZufvg& z7s*-4iDOa#Fd4dz>%ec|#|4N4g9EQp;EBU&E{K{C8D||#05{1G!B$Fs2Do;DMh&#b!BeH+HAV4&;6M?~k_ zptpLPKpS{AA_+~zPRmvLl4~^ehwDXT&V_{GXH^W2f%mvy+%1&+;C>U9Q32otI3#~^ z)g1mkJ2?1X#czPe#3^tn&BjmbyNSxZf$t>T0v-hjnAM&Hh+PAIi9JwwF$B!ET( ("hello" "ladies" "and" "gentleman") -(define (text-split str ch empty) - (let* ([idx (string-length str)] - [last #f] - [slist '()]) - (do () ((not (>= idx 0))) - (set! last idx) - (do () ((not (and (> idx 0) - (not (char=? (string-ref str (- idx 1)) ch))))) - (set! idx (- idx 1))) - (when (>= idx 0) - (when (or empty (and (not empty) (> (- last idx) 0))) - (set! slist (cons (substring str idx last) slist))) - (set! idx (- idx 1)))) - slist)) - -(define (high-score-read) - (define l (get-preference 'plt:jewel:scores (lambda () null))) - (let loop ([l l] [i 0]) - (unless (or (not (pair? l)) - (not (list? (car l))) - (not (= (length (car l)) 3)) - (= i 10)) - (vector-set! high-scores i (map clean-string (car l))) - (loop (cdr l) (+ i 1))))) - -(define (high-score-write) - (put-preferences '(plt:jewel:scores) (list (vector->list high-scores)))) - -(define (get-user) - (define s - (get-text-from-user "High Score" "High Scorer's Name:" *MAIN_WINDOW* - (or (getenv "USER") (getenv "USERNAME")))) - (if s (clean-string s) "UKNOWN")) - -(define (clean-string s) - (regexp-replace* #rx"[^-A-Z0-9+]" - (let ([s (string-upcase s)]) - (substring s 0 (min (string-length s) 10))) - " ")) - -(define (high-score-set) - (define score #f) - (define exit? #f) - (do ((i 0 (+ i 1))) ((or exit? (= i (vector-length high-scores)))) - (set! score (vector-ref high-scores i)) - (when (> jewel-score (string->number (list-ref score 1))) - (do ((j (- (vector-length high-scores) 1) (- j 1))) - ((= j i)) - (vector-set! high-scores j (vector-ref high-scores (- j 1)))) - (vector-set! high-scores i - (list (get-user) - (number->string jewel-score) - (number->string jewel-level))) - (set! exit? #t)))) - -(define (high-score-render) - (define highxname 2.5) - (define highxscore 6.0) - (define highxlevel 5.5) - (define score #f) - (define dimmer #(0.0 0.0 0.0 0.5)) - (define boxleft -3.5) - (define boxright 8.2) - (define boxtop 5.7) - (define boxbottom (- boxtop)) - (define boxz 8.0) - (glPushMatrix) - (glTranslatef -3.0 5.5 8.1) - (glScalef 0.6 0.6 0.6) - - (glPushMatrix) - (glTranslatef highxname 0.0 0.0) - (string-draw "NAME") - (glTranslatef highxscore 0.0 0.0) - (string-draw "SCORE") - (glTranslatef highxlevel 0.0 0.0) - (string-draw "LEVEL") - (glPopMatrix) - - (for ([i (in-range (vector-length high-scores))]) - (glTranslatef 0.0 -1.8 0.0) - (glPushMatrix) - (set! score (vector-ref high-scores i)) - (string-draw (number->string (+ i 1)) ) - (glTranslatef highxname 0.0 0.0) - (string-draw (if (< (string-length (list-ref score 0)) 6) - (list-ref score 0) - (substring (list-ref score 0) 0 6))) - (glTranslatef (+ highxscore 1.0) 0.0 0.0) - (string-draw (list-ref score 1) ) - (glTranslatef highxlevel 0.0 0.0) - (string-draw (list-ref score 2) ) - (glPopMatrix)) - (glPopMatrix) - - ;; draw a dim square over the jewels - (glEnable GL_BLEND) - (when (>= (get-gl-version-number) 13) - (glEnable GL_MULTISAMPLE)) - (glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA) - (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector dimmer)) - (glDisable GL_LIGHT0) - (glDisable GL_LIGHT1) - (glBegin GL_QUADS) - (glVertex3f boxleft boxtop boxz) - (glVertex3f boxleft boxbottom boxz) - (glVertex3f boxright boxbottom boxz) - (glVertex3f boxright boxtop boxz) - (glEnd) - (glEnable GL_LIGHT0) - (glEnable GL_LIGHT1) - (glBlendFunc GL_ONE GL_ONE) - (glDisable GL_BLEND)) - -;; ----------------------------------------------------------------- -;; Difficulty level -;; ----------------------------------------------------------------- - -(define (difficulty-ask) - (set! gamestate 'DIFFICULTY)) - -(define (difficulty-render) - (define highxname 2.5) - (define highxscore 6.0) - (define highxlevel 5.5) - (define dimmer #(0.0 0.0 0.0 0.5)) - (define boxleft -3.5) - (define boxright 8.2) - (define boxtop 5.7) - (define boxbottom (- boxtop)) - (define boxz 8.0) - (define levels '#("BEGINNER" "MATCH EVERYTHING" - "EASY" "MATCH COLORS" - "MEDIUM" "MATCH SHAPES" - "HIGH" "MATCH COLORS" - "EXTREME" "MATCH SHAPES")) - - (glPushMatrix) - (glTranslatef -3.0 5.5 8.1) - (glScalef 0.6 0.6 0.6) - - (glPushMatrix) - (glTranslatef highxname 0.0 0.0) - (string-draw "SELECT DIFFICULTY") - (glPopMatrix) - - (for ([i (in-range (vector-length levels))]) - (glTranslatef 0.0 -1.8 0.0) - (glPushMatrix) - (when (= (remainder i 2) 0) - (string-draw (number->string (/ i 2)) )) - (glTranslatef highxname 0.0 0.0) - (string-draw (vector-ref levels i) ) - (glPopMatrix)) - (glPopMatrix) - - ;; draw a dim square over the jewels - (glEnable GL_BLEND) - (glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA) - (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector dimmer)) - (glDisable GL_LIGHT0) - (glDisable GL_LIGHT1) - (glBegin GL_QUADS) - (glVertex3f boxleft boxtop boxz) - (glVertex3f boxleft boxbottom boxz) - (glVertex3f boxright boxbottom boxz) - (glVertex3f boxright boxtop boxz) - (glEnd) - (glEnable GL_LIGHT0) - (glEnable GL_LIGHT1) - (glBlendFunc GL_ONE GL_ONE) - (glDisable GL_BLEND)) - -;; ----------------------------------------------------------------- -;; Initialisation -;; ----------------------------------------------------------------- - -(define (jewel-quit-game) - (send *TIMER* stop) - (high-score-write) - ;; (display "\nTHE END\n") - ) - -(define (jewel-init-game) - (element-init-db) - - (set! jewel-stage 0) - (set! jewel-score 0) - (set! jewel-level 0) - (set! jewel-nmoves 0) - (set! score-numbers (make-hash)) - - (set! gamestate 'GAME-OVER) - ;; read high scores - (high-score-read)) - -(define (jewel-start-game diff) - (set! jewel-difficulty diff) - (set! jewel-life startlife) - (set! jewel-decay initialdecay) - (set! jewel-stage 0) - (set! jewel-score 0) - (set! jewel-level 0) - (set! jewel-nmoves 0) - - ;; make the current configuration to vanish - (for* ([iy (in-range ey)] [ix (in-range ex)]) - (element-set! iy ix 'vanish 0.999)) - - (set! diff-color (random 7)) - (set! diff-shape (random 7)) - (set! gamestate 'PLAYING) - (set! action-mode 'ACTION-REMOVING)) - -(define (jewel-realize) - (define scale 0.88) - - (glEnable GL_CULL_FACE) - (glEnable GL_LIGHTING) - (glEnable GL_LIGHT0) - (glEnable GL_LIGHT1) - - (glLightfv GL_LIGHT0 GL_SPECULAR (vector->gl-float-vector white)) - (glLightfv GL_LIGHT0 GL_DIFFUSE (vector->gl-float-vector grey)) - - (glLightfv GL_LIGHT1 GL_SPECULAR (vector->gl-float-vector white2)) - (glLightfv GL_LIGHT1 GL_DIFFUSE (vector->gl-float-vector grey2)) - - (glLightfv GL_LIGHT2 GL_SPECULAR (vector->gl-float-vector white)) - (glLightfv GL_LIGHT2 GL_DIFFUSE (vector->gl-float-vector grey)) - - (glEnable GL_DEPTH_TEST) - - (glShadeModel GL_SMOOTH) - (glClearColor 0.0 0.0 0.0 1.0) - (glClear GL_COLOR_BUFFER_BIT) - (glClear GL_DEPTH_BUFFER_BIT) - - (glDisable GL_BLEND) - (glBlendFunc GL_ONE GL_ONE) - - (glLineWidth 2.0) - (glDisable GL_LINE_SMOOTH) - - ;; initialise objects - (set! objectlists (glGenLists 8)) - (glNewList (+ objectlists 0) GL_COMPILE) - (makebucky (* scale 0.9)) - (glEndList) - - (glNewList (+ objectlists 1) GL_COMPILE) - (makebevelcube scale) - (glEndList) - - (glNewList (+ objectlists 2) GL_COMPILE) - (makepyramid (* scale 0.7)) - (glEndList) - - (glNewList (+ objectlists 3) GL_COMPILE) - (makeicosahedron (* scale 0.9)) - ;; (makespiky (* scale 0.9)) - (glEndList) - - (glNewList (+ objectlists 4) GL_COMPILE) - (makecylinder (* scale 0.9)) - (glEndList) - - (glNewList (+ objectlists 5) GL_COMPILE) - (makediamond (* scale 0.9)) - (glEndList) - - (glNewList (+ objectlists 6) GL_COMPILE) - (makeuvsphere (* scale 0.9)) - (glEndList) - - (glNewList (+ objectlists 7) GL_COMPILE) - (makedisc (* scale 1.2)) - (glEndList) - - ;; initialise fonts - (string-init font-scale)) - -(define (jewel-configure width height) - (glViewport 0 0 width height) - (set! viewport (make-vector 4 0)) - (vector-set! viewport 2 width) - (vector-set! viewport 3 height) - - ;; projection matrix - (glMatrixMode GL_PROJECTION) - (glLoadIdentity) - (if (< width height) - (let ([h (/ height width)]) - (glFrustum -1.0 1.0 (- h) h 5.0 60.0)) - (let ((h (/ width height))) - (glFrustum (- h) h -1.0 1.0 5.0 60.0))) - ;; modelview matrix - (glMatrixMode GL_MODELVIEW) - (glLoadIdentity) - (glTranslatef 0.0 0.0 -40.0)) - -;; ----------------------------------------------------------------- -;; Handling animation and game control -;; ----------------------------------------------------------------- - -;; determine which elements to replace -(define (replace) - (define falls (make-vector ex 1)) - (do ((iy (- ey 1) (- iy 1))) ((< iy 0)) - (for ([ix (in-range ex)]) - (when (= (element-get iy ix 'vanish) 0.0) - (define finished -1) - (do ((k (- iy 1) (- k 1))) ((or (< k 0) (> finished -1))) - (unless (= (element-get k ix 'vanish) 0.0) - (set! finished k))) - (if (>= finished 0) - (begin (element-copy! finished ix iy ix) - (element-set! finished ix 'vanish 0.0) - (element-set! iy ix 'fall (- iy finished))) - ;; initializes new elements - (begin (element-init iy ix) - (element-set! iy ix 'fall (+ iy (vector-ref falls ix))) - (vector-set! falls ix (+ 1 (vector-ref falls ix))))))))) - -(define (addlife chain len x y) - (define value (+ chain len)) - (define sx (+ (* (+ (- x (/ ex 2.0)) 0.5) spacing) shiftx)) - (define sy (+ (* (- (/ ey 2.0) y) spacing) shifty)) - (define sz 0.0) - (score-add sx sy sz 1.0 value) - (set! jewel-score (+ jewel-score value)) - (set! jewel-stage (+ jewel-stage len)) - (set! jewel-life (+ jewel-life (* value credit))) - (when (>= jewel-stage nextlevel) - (set! jewel-stage (- jewel-stage nextlevel)) - (set! jewel-level (+ jewel-level 1)) - (set! jewel-decay (+ jewel-decay decayadd)))) - -(define (declife) - (unless (eq? gamestate 'GAME-OVER) - (set! jewel-life (- jewel-life jewel-decay)) - (when (< jewel-life 0.0) - (define score #f) - (define exit? #f) - ;; set life points to zero - (set! jewel-life 0.0) - ;; set high score if any - (high-score-set) - ;; end of game - (set! gamestate 'GAME-OVER)))) - -;; check for minimum three adjacent elements -(define (findwins checking) - (define hadsome #f) - ;; check the rows for three identical elements - (for ([iy (in-range ey)]) - (define identical 1) - (do ((ix 1 (+ ix 1))) ((= ix (+ ex 1))) - ;; if in range horizontally and - ;; type of the current and the previous element is equal - (if (and (< ix ex) - (= (element-get iy ix 'type) - (element-get iy (- ix 1) 'type))) - (set! identical (+ identical 1)) - ;; else three or more identical has been found in a row - (if (>= identical 3) - (begin (set! hadsome #t) - (when (not checking) - (let* ([x (- ix 1 (/ identical 2.0))] - [y (+ iy 0.5)]) - (addlife 0 (- identical 1) x y))) - ;; set the found elements to vanish - (do ((k identical (- k 1))) ((= k 0)) - (element-set! iy (- ix k) 'vanish 0.999)) - (set! identical 1)) - (set! identical 1))))) - - ;; checking columns for three identical elements - (for ([ix (in-range ex)]) - (define identical 1) - (do ((iy 1 (+ iy 1))) ((= iy (+ ey 1))) - ;; if in range vertically and - ;; type of the current and the previous element is equal - (if (and (< iy ey) - (= (element-get iy ix 'type) - (element-get (- iy 1) ix 'type))) - (set! identical (+ identical 1)) - ;; else three or more identical has been found in a row - (if (>= identical 3) - (begin (set! hadsome #t) - (when (not checking) - (let ([x ix] - [y (- iy 0.5 (/ identical 2.0))]) - (addlife 0 (- identical 1) x y))) - ;; set the found elements to vanish - (do ((k identical (- k 1))) ((= k 0)) - (element-set! (- iy k) ix 'vanish 0.999)) - (set! identical 1)) - (set! identical 1))))) - hadsome) - -;; possible moves -(define chkpos - '#( #(1 -1 0 1) - #(-1 -1 -1 1) - #(0 -1 1 1) - #(0 -2 0 1) - - #(1 1 -1 0) - #(1 -1 -1 -1) - #(1 0 -1 1) - #(2 0 -1 0) - - #(-1 1 0 -1) - #(1 1 1 -1) - #(0 1 -1 -1) - #(0 2 0 -1) - - #(-1 -1 1 0) - #(-1 1 1 1) - #(-1 0 1 -1) - #(-2 0 1 0))) - -;; check whether any move is possible in the game field -(define (anymove?) - (define moves 0) - (define type #f) - - ;; check for all combination - (for* ([iy (in-range ey)] [ix (in-range ex)]) - (unless (= (element-get iy ix 'type) - (array-ref move-db (+ iy 2) (+ ix 2))) - (printf "wrong iy: ~s ix: ~s\n" iy ix)) - ;; all 16, possible combinations - (for ([k (in-range 16)]) - (set! type (array-ref move-db (+ iy 2) (+ ix 2))) - (when (and (= type (array-ref move-db - (+ iy 2 (array-ref chkpos k 1)) - (+ ix 2 (array-ref chkpos k 0)))) - (= type (array-ref move-db - (+ iy 2 (array-ref chkpos k 3)) - (+ ix 2 (array-ref chkpos k 2))))) - ;; (printf "move ~s\n" type) - ;; (printf "~s - ~s\n" iy ix) - ;; (printf "~s - ~s\n" - ;; (+ iy (array-ref chkpos k 1)) - ;; (+ ix (array-ref chkpos k 0))) - ;; (printf "~s - ~s\n" - ;; (+ iy (array-ref chkpos k 3)) - ;; (+ ix (array-ref chkpos k 2))) - (set! moves (+ moves 1))))) - (set! jewel-nmoves moves) - moves) - -;; function that is called by the timer -;; handles the switching between states -(define (jewel-control-game) - ;; continuous rotation of elements - (for* ([iy (in-range ey)] [ix (in-range ex)]) - (element-set! iy ix 'angle (+ 3.0 (element-get iy ix 'angle)))) - - ;; fading of score numbers - (score-for-each - (lambda (key elem) - (define fade (- (score-get elem 'fade) score-fade)) - (if (< fade 0.0) - (score-del! key) - (score-set! elem 'fade fade))) - score-numbers) - - (case action-mode - [(ACTION-LOOKING) - (when (equal? gamestate 'PLAYING) - (if (findwins #f) - (set! action-mode 'ACTION-REMOVING) - ;; check if any move is possible at all ??? - (begin - (if (= (anymove?) 0) - ;; set all elements to vanish - (begin - (for* ([iy (in-range ey)] [ix (in-range ex)]) - (element-set! iy ix 'vanish 0.999)) - (set! action-mode 'ACTION-REMOVING)) - ;; switch to ACTION-WAITING - (set! action-mode 'ACTION-WAITING)))))] - [(ACTION-WAITING) - (when (equal? gamestate 'PLAYING) - (declife) - (when tryswap? (set! action-mode 'ACTION-SWAPPING)))] - [(ACTION-SWAPPING ACTION-UNSWAPPING) - (when (equal? action-mode 'ACTION-UNSWAPPING) - (declife)) - (set! tryswap? #f) - (let* ([hadsome 0] [swap #f] - [ax #f] [ay #f] [bx #f] [by #f]) - (for* ([iy (in-range ey)] [ix (in-range ex)]) - (set! swap (element-get iy ix 'swapping)) - (when (not (= swap 0)) - (set! hadsome 1) - (set! swap (+ swap 1)) - (if (= swap swaptime) - (begin - (element-set! iy ix 'swapping 0) - (set! hadsome 2) - ;; for the first time it has no meaning - (set! ax bx) - (set! ay by) - ;; it always stores the result in bx by - (set! bx ix) - (set! by iy)) - (element-set! iy ix 'swapping swap)))) - (when (= hadsome 2) - (cond - [(findwins #f) - (set! locked? #f) - (set! action-mode 'ACTION-REMOVING)] - [(equal? action-mode 'ACTION-SWAPPING) - ;; swap back - (element-swap! ay ax by bx) - ;; set swapping - (element-set! ay ax 'swapping 1) - (element-set! ay ax 'dx (- (element-get ay ax 'dx))) - (element-set! ay ax 'dy (- (element-get ay ax 'dy))) - (element-set! by bx 'swapping 1) - (element-set! by bx 'dx (- (element-get by bx 'dx))) - (element-set! by bx 'dy (- (element-get by bx 'dy))) - ;; unswapping state - (when revert-bubble-x - (set! bubble-x revert-bubble-x) - (set! bubble-y revert-bubble-y)) - (set! action-mode 'ACTION-UNSWAPPING)] - [else - (set! locked? #f) - (set! action-mode 'ACTION-WAITING)])))] - ;; remove elements from the scene - ;; after removal switch to dropping - [(ACTION-REMOVING) - (define hadsome 0) - (define vanish #f) - (for* ([iy (in-range ey)] [ix (in-range ex)]) - (set! vanish (element-get iy ix 'vanish)) - (when (< vanish 1.0) - (set! vanish (- vanish vanishrate)) - (if (< vanish 0.0) - (begin (element-set! iy ix 'vanish 0.0) - (set! hadsome (+ hadsome 1))) - (element-set! iy ix 'vanish vanish)))) - (when (> hadsome 0) - (replace) - (set! action-mode 'ACTION-DROPPING))] - ;; drop in new elements to the scene - ;; after dropping switch to looking - [(ACTION-DROPPING) - (define hadsome 0) - (define fall #f) - (define speed #f) - (for* ([iy (in-range ey)] [ix (in-range ex)]) - (set! fall (element-get iy ix 'fall)) - (when (> fall 0.0) - (set! hadsome (+ hadsome 1)) - (set! fall (- fall (element-get iy ix 'speed))) - (set! speed (element-get iy ix 'speed)) - (element-set! iy ix 'speed (+ speed fallrate)) - (if (<= fall 0.0) - (begin (element-set! iy ix 'fall 0.0) - (element-set! iy ix 'speed 0.0)) - (element-set! iy ix 'fall fall)))) - (when (= hadsome 0) (set! action-mode 'ACTION-LOOKING))]) - - ;; generate an expose event, redraw the opengl window - (queue-callback - (lambda x (send *OPENGL_WINDOW* on-paint)) - #f)) - -;; ----------------------------------------------------------------- -;; Rendering functions -;; ----------------------------------------------------------------- - -(define (setmaterial color-vect) - (glMaterialfv GL_FRONT_AND_BACK GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector color-vect)) - (glMaterialfv GL_FRONT_AND_BACK GL_SPECULAR - (vector->gl-float-vector white)) - (glMaterialfv GL_FRONT_AND_BACK GL_SHININESS - (vector->gl-float-vector #(25.0)))) - -(define (show-life) - (let* ([sections 24] - [section-yellow 4] - [section-red 1] - [b (/ (* 3.1415927 2.0) 24)] - [a 0] - [s #f]) - (glPushMatrix) - (glTranslatef -6.5 -3.0 5.0) - (glRotatef 11.0 0.0 1.0 0.0) - - ;; circle outline - (setmaterial (vector-ref color-map 0)) - (glNormal3f 0.0 0.0 1.0) - (glBegin GL_LINE_LOOP) - (for ([i (in-range sections)]) - (glVertex3f (* (sin a) 2.0) (* (cos a) 2.0) 0.0) - (set! a (+ a b))) - (glEnd) - - ;; show triangle fan - (glBegin GL_TRIANGLE_FAN) - (glEnable GL_NORMALIZE) - (glVertex3f 0.0 0.0 3.0) - (if (< jewel-life lifevisible) - (let ([x #f] [y #f]) - (set! a (/ (* 3.1415927 2.0 jewel-life) lifevisible)) - (set! x (* (sin a) 2.0)) - (set! y (* (cos a) 2.0)) - (glNormal3f x y 0.7) - (glVertex3f x y 0.0) - (set! s (floor (/ (* jewel-life sections) lifevisible)))) - (set! s sections)) - ;; color of the section - (cond [(> s section-yellow) - ;; green - (setmaterial (vector-ref color-map 4))] - [(> s section-red) - ;; yellow - (setmaterial (vector-ref color-map 2))] - [else - ;; red - (setmaterial (vector-ref color-map 5))]) - (do ((i s (- i 1))) ((< i 0)) - (cond [(= i section-yellow) (setmaterial (vector-ref color-map 2))] - [(= i section-red) (setmaterial (vector-ref color-map 5))]) - (set! a (* (- i 0.5) b)) - (glNormal3f (sin a) (cos a) 0.7) - (set! a (* i b)) - (glVertex3f (* (sin a) 2.0) (* (cos a) 2.0) 0.0)) - - (glEnd) - - (glPopMatrix))) - -;; main OpenGL rendering, called by expose event -(define (jewel-redraw) - (glClear GL_COLOR_BUFFER_BIT) - (glClear GL_DEPTH_BUFFER_BIT) - - (glLightfv GL_LIGHT0 GL_POSITION (vector->gl-float-vector lightpos)) - (glLightfv GL_LIGHT1 GL_POSITION (vector->gl-float-vector light1pos)) - (glLightfv GL_LIGHT2 GL_POSITION (vector->gl-float-vector light2pos)) - - (when (equal? gamestate 'PLAYING) (show-life)) - - (glPushMatrix) - - (let* ([t spacing] - [x #f] - [y (* t (- (/ ey 2.0) 0.5))] - [xt 0.0] [yt 0.0] [zt 0.0] - [k (* ex ey)] - [nx #f] [ny #f] [nz #f] - [obj #f] - [ang #f] - [s #f] - [counter 0]) - - ;; This shouldn't do anything, but it fixes drawing in - ;; Snow Leopard. Bug in the game or in Snow Leopard? - (glEnable GL_LIGHT2) - (glDisable GL_LIGHT2) - - (glEnable GL_BLEND) - (for ([iy (in-range ey)]) - (set! x (* (- t) (- (/ ex 2.0) 0.5))) - (for ([ix (in-range ex)]) - (set! nx (+ x shiftx)) - (set! ny y) - (set! nz (* (- 1.0 (element-get iy ix 'vanish)) 50.0)) - (when (not (= (element-get iy ix 'swapping) 0)) - (set! ang (/ (* (element-get iy ix 'swapping) 3.1415927) - 2.0 - swaptime)) - (set! s (* t (cos ang))) - (set! nx (+ nx (* s (element-get iy ix 'dx)))) - (set! ny (+ ny (* s (element-get iy ix 'dy)))) - (set! s (* t (sin (* ang 2.0)))) - (when (= (remainder counter 2) 1) (set! s (- s))) - (set! counter (+ counter 1)) - (set! nz (+ nz s))) - (set! ny (+ ny (* (element-get iy ix 'fall) t))) - (glTranslatef (- nx xt) (- ny yt) (- nz zt)) - (set! xt nx) - (set! yt ny) - (set! zt nz) - (when (and (equal? gamestate 'PLAYING) - (= cposx ix) (= cposy iy)) - (glEnable GL_LIGHT2)) - (glPushMatrix) - (glRotatef (element-get iy ix 'angle) - (element-get iy ix 'ax) - (element-get iy ix 'ay) - (element-get iy ix 'az)) - (setmaterial (vector-ref color-map (element-get iy ix 'color))) - (glCallList (+ objectlists (element-get iy ix 'shape))) - - (glPopMatrix) - - (when (and (equal? gamestate 'PLAYING) - (= cposx ix) (= cposy iy)) - (glDisable GL_LIGHT2)) - - (when (and (equal? gamestate 'PLAYING) - (not (memq action-mode '(ACTION-REMOVING - ACTION-DROPPING - ACTION-LOOKING))) - bubble-x bubble-y - (= ix bubble-x) - (= iy bubble-y)) - (glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA) - (glPushMatrix) - (setmaterial (if locked? bubble-lock-color bubble-color)) - (glCallList (+ objectlists 7)) - (glPopMatrix) - (glBlendFunc GL_ONE GL_ONE)) - - (set! x (+ x t))) - (set! y (- y t)))) - - (glPopMatrix) - - ;; draw the flying scores - (glDisable GL_DEPTH_TEST) - (score-for-each - (lambda (key elem) - (let* ([color (make-vector 4 1.0)] - [fade (score-get elem 'fade)] - [x (score-get elem 'x)] - [y (score-get elem 'y)] - [z (score-get elem 'z)] - [val (score-get elem 'value)]) - (vector-set! color 0 fade) - (vector-set! color 1 fade) - (vector-set! color 2 fade) - (glPushMatrix) - (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector color)) - (glTranslatef x (- y (- 1.0 fade)) z) - (string-draw (string-append "+" (number->string val)) ) - (glPopMatrix))) - score-numbers) - (glEnable GL_DEPTH_TEST) - - ;; draw the scores on the left hand side - (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector (vector-ref color-map 5))) - (glPushMatrix) - (glTranslatef scorex scorey scorez) - (glScalef 0.8 0.8 0.8) - (string-draw "SCORE") - (glTranslatef 0.0 (- linespace) 0.0) - (string-draw "LEVEL") - (glTranslatef 0.0 (- linespace) 0.0) - (string-draw "MOVES") - (cond - [(equal? gamestate 'GAME-OVER) - (glTranslatef 0.0 (* -2.5 linespace) 0.0) - (glScalef 0.6 0.6 0.6) - (string-draw "GAME OVER") - (glTranslatef 0.0 (* -1.5 linespace) 0.0) - (glScalef 0.5 0.5 0.5) - (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector grey)) - (string-draw "SPACE BAR TO START") - (glTranslatef 0.0 (* -0.6 linespace) 0.0) - (string-draw "H FOR HELP") - (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector (vector-ref color-map 5)))] - [(and (equal? gamestate 'PLAYING) need-help?) - (glTranslatef 0.0 (* -3.75 linespace) 0.0) - (glScalef 0.3 0.3 0.3) - (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector grey)) - (string-draw "DRAG JEWEL WITH MOUSE OR USE ARROW KEYS AND SPACE BAR H FOR HELP") - (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector (vector-ref color-map 5)))]) - (glPopMatrix) - - (glPushMatrix) - (glTranslatef scorex (- scorey (* linespace 0.4)) scorez) - (glScalef 0.8 0.8 0.8) - (string-draw (number->string jewel-score) ) - (glTranslatef 0.0 (- linespace) 0.0) - (string-draw (number->string jewel-level) ) - (glTranslatef 0.0 (- linespace) 0.0) - (string-draw (number->string jewel-nmoves) ) - (glPopMatrix) - - (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE - (vector->gl-float-vector (vector-ref color-map 6))) - ;; if not playing cover with dim square - (when (equal? gamestate 'GAME-OVER) (high-score-render)) - (when (equal? gamestate 'DIFFICULTY) (difficulty-render))) - -;; ----------------------------------------------------------------- -;; Mouse handling -;; ----------------------------------------------------------------- - -(define last-click-x #f) -(define last-click-y #f) -(define num-unproductive-clicks 0) - -(define (jewel-mouse-down button x y) - (set! down-x x) - (set! down-y y) - (set! isdown? #t) - (set! num-unproductive-clicks (add1 num-unproductive-clicks)) - (set! need-help? (num-unproductive-clicks . > . 5)) - (let ([pos (getpos x y)]) - (when pos - (set! last-click-x (vector-ref pos 0)) - (set! last-click-y (vector-ref pos 1)))) - (set! bubble-x #f) - (set! bubble-y #f) - (set! revert-bubble-x #f) - (set! revert-bubble-y #f)) - -(define (jewel-mouse-up button x y) - (set! isdown? #f)) - -(define (jewel-key-move dx dy) - (if (and locked? - (equal? gamestate 'PLAYING) - (equal? action-mode 'ACTION-WAITING) - bubble-x - bubble-y - (<= 0 (+ bubble-x dx) (sub1 ex)) - (<= 0 (+ bubble-y dy) (sub1 ey))) - (let ([bx bubble-x] [by bubble-y]) - (set! revert-bubble-x bx) - (set! revert-bubble-y by) - (set! bubble-x (+ bubble-x dx)) - (set! bubble-y (+ bubble-y dy)) - (try-to-swap bx by dx dy)) - (begin - (set! revert-bubble-x #f) - (set! revert-bubble-y #f) - (set! bubble-x - (cond [bubble-x (max 0 (min (sub1 ex) (+ bubble-x dx)))] - [last-click-x last-click-x] - [(dx . >= . 0) 0] - [else (- ex 1)])) - (set! bubble-y - (cond [bubble-y (max 0 (min (sub1 ex) (+ bubble-y dy)))] - [last-click-y last-click-y] - [(dy . >= . 0) 0] - [else (- ey 1)])))) - (set! isdown? #f)) - -(define (jewel-key-lock) - (set! locked? (not locked?)) - (set! isdown? #f)) - -;; from the mouse position determine which object will be selected -(define (getpos mx my) - (let* ([screen (make-vector 4)] - [v0 (vector-ref viewport 0)] - [v1 (vector-ref viewport 1)] - [v2 (vector-ref viewport 2)] - [v3 (vector-ref viewport 3)] - [world #f]) - (vector-set! screen 0 (- (/ (* (- mx v0) 2.0) v2) 1.0)) - (vector-set! screen 1 (- (/ (* (- my v1) 2.0) v3) 1.0)) - (vector-set! screen 2 0.27272727) - (vector-set! screen 3 1.0) - - (set! world (array-mult-vector unproject_matrix screen)) - - (if (= (vector-ref world 3) 0.0) - (make-vector 2 -1) - (let* ([w0 (vector-ref world 0)] - [w1 (vector-ref world 1)] - [w2 (vector-ref world 2)] - [w3 (vector-ref world 3)] - [z (/ w2 w3)] - [x (+ (/ (- (* z (/ w0 w3)) shiftx) spacing) (/ ex 2))] - [y (+ (/ (- (* z (/ w1 w3)) shifty) spacing) (/ ey 2))] - [vect (make-vector 2 0)]) - (set! x (if (>= x 0.0) (inexact->exact (truncate x)) -1)) - (set! y (if (>= y 0.0) (inexact->exact (truncate y)) -1)) - (vector-set! vect 0 x) - (vector-set! vect 1 y) - vect)))) - -(define (jewel-mouse-motion x y) - (let* ([pos (getpos x y)] - [dx (if isdown? (- x down-x) 0.0)] - [dy (if isdown? (- y down-y) 0.0)] - [px #f] - [py #f]) - (set! cposx (vector-ref pos 0)) - (set! cposy (vector-ref pos 1)) - - ;; if mouse was pressed, - ;; we are playing, - ;; no action is happening - ;; and mouse is moved, so try to swap - (when (and isdown? - (equal? gamestate 'PLAYING) - (equal? action-mode 'ACTION-WAITING) - (> (+ (* dx dx) (* dy dy)) (* dist dist))) - (set! isdown? #f) - (if (> (abs dx) (abs dy)) - (begin (set! dx (if (< dx 0) -1 1)) - (set! dy 0)) - (begin (set! dy (if (< dy 0) -1 1)) - (set! dx 0))) - - (set! pos (getpos down-x down-y)) - (set! px (vector-ref pos 0)) - (set! py (vector-ref pos 1)) - (unless (or (< px 0.0) - (>= px ex) - (< py 0.0) - (>= py ey) - (< (+ px dx) 0.0) - (>= (+ px dx) ex) - (< (+ py dy) 0.0) - (>= (+ py dy) ey)) - (set! num-unproductive-clicks 0) - (set! need-help? #f) - (try-to-swap px py dx dy))))) - -(define (try-to-swap px py dx dy) - (element-swap! py px (+ py dy) (+ px dx)) - ;; mark the elements for the swap - (element-set! py px 'swapping 1) - (element-set! py px 'dx dx) - (element-set! py px 'dy (- dy)) - (element-set! (+ py dy) (+ px dx) 'swapping 1) - (element-set! (+ py dy) (+ px dx) 'dx (- dx)) - (element-set! (+ py dy) (+ px dx) 'dy dy) - (set! tryswap? #t)) - -;; ----------------------------------------------------------------- -;; MAIN -;; ----------------------------------------------------------------- - -(jewel-init-game) - -(define show-jewel-help - (show-scribbling '(lib "games/scribblings/games.scrbl") "jewel")) - -(define *MAIN_WINDOW* - (new jewel-frame% - [label "Jewel"] - [min-width 640] - [min-height 480] - [stretchable-width #f] - [stretchable-height #f] - [style '(no-resize-border)])) - -(define *OPENGL_WINDOW* - (new jewel-canvas% - [parent *MAIN_WINDOW*] - [min-width 100] - [min-height 100] - [expose jewel-redraw] - [realize jewel-realize] - [configure jewel-configure] - [mouse-press jewel-mouse-down] - [mouse-motion jewel-mouse-motion] - [mouse-release jewel-mouse-up])) - -(send *MAIN_WINDOW* show #t) - -(define *TIMER* (new timer% - [notify-callback jewel-control-game] - [interval timer-interval] - [just-once? #f])) - -)) diff --git a/pkgs/games/jewel/shapes.rkt b/pkgs/games/jewel/shapes.rkt deleted file mode 100644 index 7f154f3329..0000000000 --- a/pkgs/games/jewel/shapes.rkt +++ /dev/null @@ -1,658 +0,0 @@ -#lang racket - -(require sgl/gl sgl/gl-vectors sgl) - -(provide makedots makebucky makebevelcube makecylinder - makeuvsphere makediamond makepyramid makeicosahedron - makespiky makedisc) - -(define (norm p1 p2 p3 dir) - (let* ([v1 (map (lambda (x y) (- x y)) p2 p1)] - [v2 (map (lambda (x y) (- x y)) p3 p1)] - [nx (- (* (list-ref v1 1) (list-ref v2 2)) - (* (list-ref v2 1) (list-ref v1 2)))] - [ny (- (* (list-ref v2 0) (list-ref v1 2)) - (* (list-ref v1 0) (list-ref v2 2)))] - [nz (- (* (list-ref v1 0) (list-ref v2 1)) - (* (list-ref v2 0) (list-ref v1 1)))]) - (glNormal3f (* dir nx) (* dir ny) (* dir nz)))) - -;; ------------------------------------------------------------------- -(define (makedots size) - (let* ([dots 12] - [a #f] [u #f] [v #f]) - (glPointSize 3.0) - (glDisable GL_LIGHTING) - (glBegin GL_POINTS) - (for ([i (in-range dots)]) - (set! a (* i 3.1415928 (/ 2.0 dots))) - (set! u (* size (cos a))) - (set! v (* size (sin a))) - (glVertex3f u v 0.0) - (glVertex3f u 0.0 v)) - (glEnd) - (glEnable GL_LIGHTING))) - -;; ------------------------------------------------------------------- - -(define bucky-points - '#((-0.449358 0.730026 0.514918) - (-0.277718 0.201774 0.939234) - (-0.277718 -0.201774 0.939234) - (-0.555436 0.403548 0.727076) - (-0.555436 -0.403548 0.727076) - (-0.833155 0.201774 0.514918) - (-0.833155 -0.201774 0.514918) - ( 0.106079 -0.326477 0.939234) - ( 0.212158 -0.652955 0.727076) - (-0.449358 -0.730026 0.514918) - (-0.065560 -0.854729 0.514918) - ( 0.343279 0.000000 0.939234) - ( 0.686557 0.000000 0.727076) - ( 0.555436 -0.652955 0.514918) - ( 0.792636 -0.326477 0.514918) - ( 0.661515 0.730026 -0.171639) - ( 0.898715 0.403548 -0.171639) - ( 0.489876 0.854729 0.171639) - ( 0.964275 0.201774 0.171639) - ( 0.555436 0.652955 0.514918) - ( 0.792636 0.326477 0.514918) - (-0.489876 0.854729 -0.171639) - (-0.106079 0.979432 -0.171639) - (-0.661515 0.730026 0.171639) - ( 0.106079 0.979432 0.171639) - (-0.065560 0.854729 0.514918) - (-0.964275 -0.201774 -0.171639) - (-0.964275 0.201774 -0.171639) - (-0.898715 -0.403548 0.171639) - (-0.898715 0.403548 0.171639) - (-0.106079 -0.979432 -0.171639) - (-0.489876 -0.854729 -0.171639) - ( 0.106079 -0.979432 0.171639) - (-0.661515 -0.730026 0.171639) - ( 0.898715 -0.403548 -0.171639) - ( 0.661515 -0.730026 -0.171639) - ( 0.964275 -0.201774 0.171639) - ( 0.489876 -0.854729 0.171639) - ( 0.065560 0.854729 -0.514918) - ( 0.449358 0.730026 -0.514918) - (-0.792636 0.326477 -0.514918) - (-0.555436 0.652955 -0.514918) - (-0.555436 -0.652955 -0.514918) - (-0.792636 -0.326477 -0.514918) - ( 0.449358 -0.730026 -0.514918) - ( 0.065560 -0.854729 -0.514918) - ( 0.833155 0.201774 -0.514918) - ( 0.833155 -0.201774 -0.514918) - ( 0.277718 0.201774 -0.939234) - (-0.106079 0.326477 -0.939234) - ( 0.555436 0.403548 -0.727076) - (-0.212158 0.652955 -0.727076) - (-0.343279 0.000000 -0.939234) - (-0.686557 0.000000 -0.727076) - (-0.106079 -0.326477 -0.939234) - (-0.212158 -0.652955 -0.727076) - ( 0.277718 -0.201774 -0.939234) - ( 0.555436 -0.403548 -0.727076) - ( 0.106079 0.326477 0.939234) - ( 0.212158 0.652955 0.727076) - )) - -(define (hex-point n size) - (apply glVertex3f (map (lambda (x) (* x size)) - (vector-ref bucky-points n)))) - -(define (hex p1 p2 p3 p4 p5 p6 size) - (norm (vector-ref bucky-points p1) - (vector-ref bucky-points p3) - (vector-ref bucky-points p2) - 1.0) - (glPolygonMode GL_FRONT GL_FILL) - (glBegin GL_POLYGON) - (hex-point p6 size) - (hex-point p5 size) - (hex-point p4 size) - (hex-point p3 size) - (hex-point p2 size) - (hex-point p1 size) - (glEnd) - (glPolygonMode GL_FRONT GL_FILL)) - -(define (pent p1 p2 p3 p4 p5 size) - (norm (vector-ref bucky-points p1) - (vector-ref bucky-points p3) - (vector-ref bucky-points p2) - 1.0) - (glBegin GL_TRIANGLE_STRIP) - (hex-point p1 size) - (hex-point p5 size) - (hex-point p2 size) - (hex-point p4 size) - (hex-point p3 size) - (glEnd)) - -(define (makebucky size) - (glEnable GL_NORMALIZE) - - (hex 2 7 8 10 9 4 size) - (hex 1 2 4 6 5 3 size) - (hex 7 11 12 14 13 8 size) - (hex 9 10 32 30 31 33 size) - (hex 5 6 28 26 27 29 size) - (hex 0 25 59 58 1 3 size) - (hex 11 58 59 19 20 12 size) - (hex 21 22 24 25 00 23 size) - (hex 30 32 37 35 44 45 size) - (hex 26 28 33 31 42 43 size) - (hex 15 17 24 22 38 39 size) - (hex 15 16 18 20 19 17 size) - (hex 38 51 49 48 50 39 size) - (hex 13 14 36 34 35 37 size) - (hex 16 46 47 34 36 18 size) - (hex 21 23 29 27 40 41 size) - (hex 40 53 52 49 51 41 size) - (hex 44 57 56 54 55 45 size) - (hex 46 50 48 56 57 47 size) - (hex 42 55 54 52 53 43 size) - - (pent 1 58 11 7 2 size) - (pent 8 13 37 32 10 size) - (pent 4 9 33 28 6 size) - (pent 0 3 5 29 23 size) - (pent 17 19 59 25 24 size) - (pent 12 20 18 36 14 size) - (pent 30 45 55 42 31 size) - (pent 21 41 51 38 22 size) - (pent 48 49 52 54 56 size) - (pent 15 39 50 46 16 size) - (pent 34 47 57 44 35 size) - (pent 26 43 53 40 27 size) - ) - -;; ------------------------------------------------------------------- - -(define (makebevelcube scale) - (define sizex (* 0.6 scale)) - (define sizey (* 0.6 scale)) - (define sizez (* 0.6 scale)) - (define bevel (* 0.15 scale)) - (define bsizex (+ sizex bevel)) - (define bsizey (+ sizey bevel)) - (define bsizez (+ sizez bevel)) - - (glEnable GL_NORMALIZE) - - (glBegin GL_QUADS) - (glNormal3f 0.0 sizey 0.0) - (glVertex3f sizex bsizey sizez) - (glVertex3f sizex bsizey (- sizez)) - (glVertex3f (- sizex) bsizey (- sizez)) - (glVertex3f (- sizex) bsizey sizez) - - (glNormal3f 0.0 0.0 sizez) - (glVertex3f sizex sizey bsizez) - (glVertex3f (- sizex) sizey bsizez) - (glVertex3f (- sizex) (- sizey) bsizez) - (glVertex3f sizex (- sizey) bsizez) - - (glNormal3f 0.0 0.0 (- sizez)) - (glVertex3f (- sizex) (- sizey) (- bsizez)) - (glVertex3f (- sizex) sizey (- bsizez)) - (glVertex3f sizex sizey (- bsizez)) - (glVertex3f sizex (- sizey) (- bsizez)) - - (glNormal3f sizex 0.0 0.0) - (glVertex3f bsizex sizey sizez) - (glVertex3f bsizex (- sizey) sizez) - (glVertex3f bsizex (- sizey) (- sizez)) - (glVertex3f bsizex sizey (- sizez)) - - (glNormal3f (- sizex) 0.0 0.0) - (glVertex3f (- bsizex) (- sizey) (- sizez)) - (glVertex3f (- bsizex) (- sizey) sizez) - (glVertex3f (- bsizex) sizey sizez) - (glVertex3f (- bsizex) sizey (- sizez)) - - (glNormal3f 0.0 (- sizey) 0.0) - (glVertex3f (- sizex) (- bsizey) (- sizez)) - (glVertex3f sizex (- bsizey) (- sizez)) - (glVertex3f sizex (- bsizey) sizez) - (glVertex3f (- sizex) (- bsizey) sizez) - - ;; setmaterial(blue) - - (glNormal3f 0.0 sizey sizez) - (glVertex3f (- sizex) bsizey sizez) - (glVertex3f (- sizex) sizey bsizez) - (glVertex3f sizex sizey bsizez) - (glVertex3f sizex bsizey sizez) - - (glNormal3f sizex 0.0 sizez) - (glVertex3f bsizex sizey sizez) - (glVertex3f sizex sizey bsizez) - (glVertex3f sizex (- sizey) bsizez) - (glVertex3f bsizex (- sizey) sizez) - - (glNormal3f sizex sizey 0.0) - (glVertex3f bsizex sizey (- sizez)) - (glVertex3f sizex bsizey (- sizez)) - (glVertex3f sizex bsizey sizez) - (glVertex3f bsizex sizey sizez) - - (glNormal3f 0.0 (- sizey) (- sizez)) - (glVertex3f (- sizex) (- bsizey) (- sizez)) - (glVertex3f (- sizex) (- sizey) (- bsizez)) - (glVertex3f sizex (- sizey) (- bsizez)) - (glVertex3f sizex (- bsizey) (- sizez)) - - (glNormal3f (- sizex) 0.0 (- sizez)) - (glVertex3f (- bsizex) sizey (- sizez)) - (glVertex3f (- sizex) sizey (- bsizez)) - (glVertex3f (- sizex) (- sizey) (- bsizez)) - (glVertex3f (- bsizex) (- sizey) (- sizez)) - - (glNormal3f (- sizex) (- sizey) 0.0) - (glVertex3f (- bsizex) (- sizey) (- sizez)) - (glVertex3f (- sizex) (- bsizey) (- sizez)) - (glVertex3f (- sizex) (- bsizey) sizez) - (glVertex3f (- bsizex) (- sizey) sizez) - - (glNormal3f 0.0 (- sizey) sizez) - (glVertex3f sizex (- bsizey) sizez) - (glVertex3f sizex (- sizey) bsizez) - (glVertex3f (- sizex) (- sizey) bsizez) - (glVertex3f (- sizex) (- bsizey) sizez) - - (glNormal3f 0.0 sizey (- sizez)) - (glVertex3f (- sizex) sizey (- bsizez)) - (glVertex3f (- sizex) bsizey (- sizez)) - (glVertex3f sizex bsizey (- sizez)) - (glVertex3f sizex sizey (- bsizez)) - - (glNormal3f (- sizex) 0.0 sizez) - (glVertex3f (- bsizex) (- sizey) sizez) - (glVertex3f (- sizex) (- sizey) bsizez) - (glVertex3f (- sizex) sizey bsizez) - (glVertex3f (- bsizex) sizey sizez) - - (glNormal3f sizex 0.0 (- sizez)) - (glVertex3f sizex sizey (- bsizez)) - (glVertex3f bsizex sizey (- sizez)) - (glVertex3f bsizex (- sizey) (- sizez)) - (glVertex3f sizex (- sizey) (- bsizez)) - - (glNormal3f (- sizex) sizey 0.0) - (glVertex3f (- bsizex) sizey sizez) - (glVertex3f (- sizex) bsizey sizez) - (glVertex3f (- sizex) bsizey (- sizez)) - (glVertex3f (- bsizex) sizey (- sizez)) - - (glNormal3f sizex (- sizey) 0.0) - (glVertex3f sizex (- bsizey) (- sizez)) - (glVertex3f bsizex (- sizey) (- sizez)) - (glVertex3f bsizex (- sizey) sizez) - (glVertex3f sizex (- bsizey) sizez) - - (glEnd) - - ;; setmaterial(red) - (glBegin GL_TRIANGLES) - - (glNormal3f sizex sizey sizez) - (glVertex3f bsizex sizey sizez) - (glVertex3f sizex bsizey sizez) - (glVertex3f sizex sizey bsizez) - - (glNormal3f (- sizex) sizey sizez) - (glVertex3f (- sizex) bsizey sizez) - (glVertex3f (- bsizex) sizey sizez) - (glVertex3f (- sizex) sizey bsizez) - - (glNormal3f (- sizex) (- sizey) sizez) - (glVertex3f (- bsizex) (- sizey) sizez) - (glVertex3f (- sizex) (- bsizey) sizez) - (glVertex3f (- sizex) (- sizey) bsizez) - - (glNormal3f sizex (- sizey) sizez) - (glVertex3f sizex (- bsizey) sizez) - (glVertex3f bsizex (- sizey) sizez) - (glVertex3f sizex (- sizey) bsizez) - - (glNormal3f (- sizex) (- sizey) (- sizez)) - (glVertex3f (- sizex) (- sizey) (- bsizez)) - (glVertex3f (- sizex) (- bsizey) (- sizez)) - (glVertex3f (- bsizex) (- sizey) (- sizez)) - - (glNormal3f sizex (- sizey) (- sizez)) - (glVertex3f sizex (- sizey) (- bsizez)) - (glVertex3f bsizex (- sizey) (- sizez)) - (glVertex3f sizex (- bsizey) (- sizez)) - - (glNormal3f sizex sizey (- sizez)) - (glVertex3f sizex sizey (- bsizez)) - (glVertex3f sizex bsizey (- sizez)) - (glVertex3f bsizex sizey (- sizez)) - - (glNormal3f (- sizex) sizey (- sizez)) - (glVertex3f (- sizex) sizey (- bsizez)) - (glVertex3f (- bsizex) sizey (- sizez)) - (glVertex3f (- sizex) bsizey (- sizez)) - - (glEnd)) - -;; ------------------------------------------------------------------- - -(define (makecylinder size) - (define csqueeze 0.8) - (define csides 12) - (define x (make-vector csides 0.0)) - (define z (make-vector csides 0.0)) - (define a #f) - (define cur #f) - (define prev #f) - - (for ([i (in-range csides)]) - (set! a (/ (* i 3.1415928 2.0) csides)) - (vector-set! x i (* (cos a) size csqueeze)) - (vector-set! z i (* (sin a) size csqueeze))) - - (glEnable GL_NORMALIZE) - ;; bottom - (glNormal3f 0.0 -1.0 0.0) - (glBegin GL_POLYGON) - (for ([i (in-range csides)]) - (glVertex3f (vector-ref x i) - (- size) - (vector-ref z i))) - (glEnd) - ;; top - (glNormal3f 0.0 1.0 0.0) - (glBegin GL_POLYGON) - (for ([i (in-range csides)]) - (glVertex3f (vector-ref x (- csides 1 i)) - (- size) - (vector-ref z (- csides 1 i)))) - (glEnd) - ;; side - (glBegin GL_QUAD_STRIP) - (for ([i (in-range (+ csides 1))]) - (set! cur (if (< i csides) i (- i csides))) - (when (> i 0) - (glNormal3f (/ (+ (vector-ref x cur) - (vector-ref x prev)) 2.0) - 0.0 - (/ (+ (vector-ref z cur) - (vector-ref z prev)) 2.0))) - (glVertex3f (vector-ref x cur) (- size) (vector-ref z cur)) - (glVertex3f (vector-ref x cur) size (vector-ref z cur)) - (set! prev cur)) - (glEnd)) - -;; ------------------------------------------------------------------- - -(define (makeuvsphere size) - (define usides 15) - (define vsides 9) - (define x (make-vector usides 0.0)) - (define z (make-vector usides 0.0)) - (define a #f) - (define t #f) - (define c1 #f) - (define s1 #f) - (define c2 #f) - (define s2 #f) - - (for ([i (in-range usides)]) - (set! a (/ (* i 3.1415928 2.0) usides)) - (vector-set! x i (* (cos a) size)) - (vector-set! z i (* (sin a) size))) - - (glEnable GL_NORMALIZE) - - (for ([i (in-range vsides)]) - (set! a (/ (* i 3.1415927) vsides)) - (set! c1 (cos a)) - (set! s1 (sin a)) - (set! a (/ (* (+ i 1) 3.1415927) vsides)) - (set! c2 (cos a)) - (set! s2 (sin a)) - - (glBegin GL_QUAD_STRIP) - (for ([j (in-range (+ usides 1))]) - (set! t (if (< j usides) j (- j usides))) - (unless (= j 0) - (let* ((c #f) (s #f)) - (set! a (/ (* (+ i 0.5) 3.1415927) vsides)) - (set! c (cos a)) - (set! s (sin a)) - (set! a (/ (* (- j 0.5) 3.1415927 2.0) usides)) - (glNormal3f (* (cos a) s) c (* (sin a) s)))) - (glVertex3f (* (vector-ref x t) s2) - (* c2 size) - (* (vector-ref z t) s2)) - (glVertex3f (* (vector-ref x t) s1) - (* c1 size) - (* (vector-ref z t) s1))) - (glEnd))) - -;; ------------------------------------------------------------------- - -(define (makediamond size) - (let* ((dsides 9) - (x (make-vector dsides 0.0)) - (z (make-vector dsides 0.0)) - (a #f) (p1 #f) (p2 #f) - (c #f) (d #f) (h #f) (s #f) (j #f) (o #f)) - - (for ([i (in-range dsides)]) - (set! a (/ (* i 3.1415928 2.0) dsides)) - (vector-set! x i (* (cos a) size)) - (vector-set! z i (* (sin a) size))) - - (glEnable GL_NORMALIZE) - - (set! p2 (* size 0.5)) - (for ([t (in-range 2)]) - (set! p1 (if (remainder t 2) (- size) size)) - - (glBegin GL_TRIANGLE_FAN) - (glVertex3f 0.0 p1 0.0) - (set! d (if (= t 0) (- size p2) (+ size p2))) - (set! h (sqrt (+ (* size size) (* d d)))) - (set! c (if (= t 0) (/ size h) (/ (- size) h))) - (set! s (/ d h)) - (for ([i (in-range (+ dsides 1))]) - (set! j (if (< i dsides) i (- i dsides))) - (when (= t 0) (set! j (- dsides 1 j))) - (when (> i 0) - (glNormal3f (* (/ (+ (vector-ref x j) - (vector-ref x o)) 2.0) s) - (* size c) - (* (/ (+ (vector-ref z j) - (vector-ref z o)) 2.0) s))) - (glVertex3f (vector-ref x j) p2 (vector-ref z j)) - (set! o j)) - (glEnd)))) - -(define (makedisc size) - (define q (gl-new-quadric)) - (gl-quadric-draw-style q 'fill) - (gl-quadric-normals q 'smooth) - (gl-sphere q size 25 25)) - -;; ------------------------------------------------------------------- - -(define (makepyramid size) - (glEnable GL_NORMALIZE) - - (glBegin GL_QUADS) - (glNormal3f 0.0 (- size) 0.0) - (glVertex3f size (- size) size) - (glVertex3f (- size) (- size) size) - (glVertex3f (- size) (- size) (- size)) - (glVertex3f size (- size) (- size)) - (glEnd) - - (glBegin GL_TRIANGLE_FAN) - (glVertex3f 0.0 size 0.0) - - (glVertex3f size (- size) size) - (glNormal3f 2.0 -1.0 0.0) - (glVertex3f size (- size) (- size)) - (glNormal3f 0.0 -1.0 -2.0) - (glVertex3f (- size) (- size) (- size)) - (glNormal3f -2.0 -1.0 0.0) - (glVertex3f (- size) (- size) size) - (glNormal3f 0.0 -1.0 2.0) - (glVertex3f size (- size) size) - (glEnd)) - -;; ------------------------------------------------------------------- - -(define (makeicosahedron scale) - (define coord - #(#(-0.525731112119133606 0.0 0.850650808352039932) - #( 0.525731112119133606 0.0 0.850650808352039932) - #(-0.525731112119133606 0.0 -0.850650808352039932) - #( 0.525731112119133606 0.0 -0.850650808352039932) - - #(0.0 0.850650808352039932 0.525731112119133606) - #(0.0 0.850650808352039932 -0.525731112119133606) - #(0.0 -0.850650808352039932 0.525731112119133606) - #(0.0 -0.850650808352039932 -0.525731112119133606) - - #( 0.850650808352039932 0.525731112119133606 0.0) - #(-0.850650808352039932 0.525731112119133606 0.0) - #( 0.850650808352039932 -0.525731112119133606 0.0) - #(-0.850650808352039932 -0.525731112119133606 0.0))) - (define indices - #( #(1 4 0) #(4 9 0) #(4 5 9) #(8 5 4) #(1 8 4) - #(1 10 8) #(10 3 8) #(8 3 5) #(3 2 5) #(3 7 2) - #(3 10 7) #(10 6 7) #(6 11 7) #(6 0 11) #(6 1 0) - #(10 1 6) #(11 0 9) #(2 11 9) #(5 2 9) #(11 2 7))) - (define triang #f) - (define p0 #f) - (define p1 #f) - (define p2 #f) - (glEnable GL_NORMALIZE) - (glBegin GL_TRIANGLES) - (for ([i (in-range 20)]) - (set! triang (vector-ref indices i)) - (set! p0 (vector-ref coord (vector-ref triang 0))) - (set! p1 (vector-ref coord (vector-ref triang 1))) - (set! p2 (vector-ref coord (vector-ref triang 2))) - (norm (vector->list p0) - (vector->list p1) - (vector->list p2) - 1.0) - (glVertex3f (* (vector-ref p0 0) scale) - (* (vector-ref p0 1) scale) - (* (vector-ref p0 2) scale)) - (glVertex3f (* (vector-ref p1 0) scale) - (* (vector-ref p1 1) scale) - (* (vector-ref p1 2) scale)) - (glVertex3f (* (vector-ref p2 0) scale) - (* (vector-ref p2 1) scale) - (* (vector-ref p2 2) scale))) - (glEnd)) - -;; ------------------------------------------------------------------- - -(define (makespiky scale) - (let* ([spikes 12] - [spikez 0.5] - [spikein 0.7] - [x1 (make-vector spikes 0.0)] - [y1 (make-vector spikes 0.0)] - [x2 (make-vector spikes 0.0)] - [y2 (make-vector spikes 0.0)] - [p0 (make-vector 3 0.0)] - [p1 (make-vector 3 0.0)] - [p2 (make-vector 3 0.0)] - [b (/ (* 3.1415927 2.0) spikes)] - [b2 (/ b 2.0)] - [a #f] [j #f]) - - (glEnable GL_NORMALIZE) - (for ([i (in-range spikes)]) - (set! a (* i b)) - (vector-set! x1 i (* (cos a) scale spikein)) - (vector-set! y1 i (* (sin a) scale spikein)) - (vector-set! x2 i (* (cos (+ b2 a)) scale)) - (vector-set! y2 i (* (sin (+ b2 a)) scale))) - - ;; first side - (glBegin GL_TRIANGLE_FAN) - - (vector-set! p0 0 0.0) - (vector-set! p0 1 0.0) - (vector-set! p0 2 (* spikez scale)) - (glVertex3fv (vector->gl-float-vector p0)) - - (vector-set! p1 0 (vector-ref x1 0)) - (vector-set! p1 1 (vector-ref y1 0)) - (vector-set! p1 2 0.0) - (glVertex3fv (vector->gl-float-vector p1)) - - (for ([i (in-range spikes)]) - (set! j (+ i 1)) - (when (>= j spikes) (set! j (- j spikes))) - - (vector-set! p2 0 (vector-ref x2 i)) - (vector-set! p2 1 (vector-ref y2 i)) - (vector-set! p2 2 0.0) - (norm (vector->list p0) - (vector->list p1) - (vector->list p2) - 1.0) - (glVertex3fv (vector->gl-float-vector p2)) - - (vector-set! p1 0 (vector-ref x1 j)) - (vector-set! p1 1 (vector-ref y1 j)) - (vector-set! p1 2 0.0) - (norm (vector->list p0) - (vector->list p2) - (vector->list p1) - 1.0) - (glVertex3fv (vector->gl-float-vector p1))) - - (glEnd) - - ;; second side - (glBegin GL_TRIANGLE_FAN) - - (vector-set! p0 0 0.0) - (vector-set! p0 1 0.0) - (vector-set! p0 2 (* (- spikez) scale)) - (glVertex3fv (vector->gl-float-vector p0)) - - (vector-set! p1 0 (vector-ref x1 0)) - (vector-set! p1 1 (vector-ref y1 0)) - (vector-set! p1 2 0.0) - (glVertex3fv (vector->gl-float-vector p1)) - - (for ([i (in-range spikes)]) - (set! j (+ i 1)) - (when (>= j spikes) (set! j (- j spikes))) - - (vector-set! p2 0 (vector-ref x2 i)) - (vector-set! p2 1 (vector-ref y2 i)) - (vector-set! p2 2 0.0) - (norm (vector->list p0) - (vector->list p1) - (vector->list p2) - -1.0) - (glVertex3fv (vector->gl-float-vector p2)) - - (vector-set! p1 0 (vector-ref x1 j)) - (vector-set! p1 1 (vector-ref y1 j)) - (vector-set! p1 2 0.0) - (norm (vector->list p0) - (vector->list p2) - (vector->list p1) - -1.0) - (glVertex3fv (vector->gl-float-vector p1))) - - (glEnd))) - -;; ------------------------------------------------------------------- diff --git a/pkgs/games/jewel/text.rkt b/pkgs/games/jewel/text.rkt deleted file mode 100644 index 72245d8865..0000000000 --- a/pkgs/games/jewel/text.rkt +++ /dev/null @@ -1,186 +0,0 @@ -#lang racket/base - -(require racket/class sgl/gl sgl/gl-vectors) - -(provide string-init string-draw) - -;; HERSHEY fonts -(define hershey-fonts - '#( (#\A "MWRMNV RRMVV RPSTS") - (#\B "MWOMOV ROMSMUNUPSQ ROQSQURUUSVOV") - (#\C "MXVNTMRMPNOPOSPURVTVVU") - (#\D "MWOMOV ROMRMTNUPUSTURVOV") - (#\E "MWOMOV ROMUM ROQSQ ROVUV") - (#\F "MVOMOV ROMUM ROQSQ") - (#\G "MXVNTMRMPNOPOSPURVTVVUVR RSRVR") - (#\H "MWOMOV RUMUV ROQUQ") - (#\I "MTRMRV") ; modified - (#\J "NUSMSTRVPVOTOS") - (#\K "MWOMOV RUMOS RQQUV") - (#\L "MVOMOV ROVUV") - (#\M "LXNMNV RNMRV RVMRV RVMVV") - (#\N "MWOMOV ROMUV RUMUV") - (#\O "MXRMPNOPOSPURVSVUUVSVPUNSMRM") - (#\P "MWOMOV ROMSMUNUQSROR") - (#\Q "MXRMPNOPOSPURVSVUUVSVPUNSMRM RSTVW") - (#\R "MWOMOV ROMSMUNUQSROR RRRUV") - (#\S "MWUNSMQMONOOPPTRUSUUSVQVOU") - (#\T "MWRMRV RNMVM") - (#\U "MXOMOSPURVSVUUVSVM") - (#\V "MWNMRV RVMRV") - (#\W "LXNMPV RRMPV RRMTV RVMTV") - (#\X "MWOMUV RUMOV") - (#\Y "MWNMRQRV RVMRQ") - (#\Z "MWUMOV ROMUM ROVUV") - (#\space "LX") - ;; numbers - (#\0 "MWRMPNOPOSPURVTUUSUPTNRM") - (#\1 "MWPORMRV") - (#\2 "MWONQMSMUNUPTROVUV") - (#\3 "MWONQMSMUNUPSQ RRQSQURUUSVQVOU") - (#\4 "MWSMSV RSMNSVS") - (#\5 "MWPMOQQPRPTQUSTURVQVOU RPMTM") - (#\6 "MWTMRMPNOPOSPURVTUUSTQRPPQOS") - (#\7 "MWUMQV ROMUM") - (#\8 "MWQMONOPQQSQUPUNSMQM RQQOROUQVSVUUURSQ") - (#\9 "MWUPTRRSPROPPNRMTNUPUSTURVPV") - ;; signs - (#\- "LXNRVR") - (#\+ "LXRNRV RNRVR") - ;; !!!!! this must exist !!!!! - (#\* "MWRORU ROPUT RUPOT") - )) - -;; font database is a hash table -(define font-db (make-hash)) -(define font-gen #f) -(define font-scale #f) - -(define (real->int val) - (inexact->exact (round val))) - -;; interpret a hershey font -(define (interpret-hershey str scale) - (let* ([nc (/ (string-length str) 2)] - [cx #f] [cy #f] [x #f] [y #f] - [left (char->integer (string-ref str 0))] - [right (char->integer (string-ref str 1))] - [rchar (char->integer #\R)]) - (set! left (- left rchar)) - (set! right (- right rchar)) - - (glBegin GL_LINE_STRIP) - (for ([i (in-range 1 nc)]) - (set! cx (string-ref str (+ (* i 2) 0))) - (set! cy (string-ref str (+ (* i 2) 1))) - (if (and (char=? cx #\space) - (char=? cy #\R)) - (begin (glEnd) - (glBegin GL_LINE_STRIP)) - (begin (set! x (* (- (char->integer cx) rchar) scale)) - (set! y (* (- (char->integer cy) rchar) scale)) - (glVertex2f x (- y))))) - (glEnd) - - ;; width of the font - (- right left))) - - -;; initialise the font database -(define (string-init scale) - (let* ([n (vector-length hershey-fonts)] - [elem #f] - [width #f]) - - (set! font-scale scale) - (set! font-gen (glGenLists n)) - (glLineWidth 2.0) - - (for ([i (in-range n)]) - (set! elem (vector-ref hershey-fonts i)) - (glNewList (+ font-gen i) GL_COMPILE) - (set! width (interpret-hershey (cadr elem) scale)) - (glEndList) - - (hash-set! font-db (car elem) (cons i width))))) - -;; draw the text -(define (string-draw str) - (let* ([n (string-length str)] - [c #f] [e #f] - [star (hash-ref font-db #\*)]) - (glPushMatrix) - (glNormal3f 0.0 0.0 1.0) - (for ([i (in-range n)]) - (set! c (string-ref str i)) - (set! e (hash-ref font-db c (lambda () star))) - (glCallList (+ font-gen (car e))) - (glTranslatef (* font-scale (cdr e)) 0.0 0.0)) - (glPopMatrix))) - - -;; ------------------------------------------------------- -;; Testing - -#| -(define *GL_VIEWPORT_WIDTH* #f) -(define *GL_VIEWPORT_HEIGHT* #f) -(define scale 1.5) -(define bit '#(1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1)) - -(define (my-display) - (glMatrixMode GL_PROJECTION) - (glLoadIdentity) - (glOrtho 0 *GL_VIEWPORT_WIDTH* 0 *GL_VIEWPORT_HEIGHT* -1 1) - - (glMatrixMode GL_MODELVIEW) - (glLoadIdentity) - - (glTranslatef (/ *GL_VIEWPORT_WIDTH* 2) - (/ *GL_VIEWPORT_HEIGHT* 2) - 0.0) - (string-draw "+12" scale) - ;; (glRasterPos2i 50 50) - ;; (glBitmap 8 8 0.0 0.0 8.0 0.0 (vector->gl-ubyte-vector bit)) -) - -(define my-canvas% - (class* canvas% () - (inherit with-gl-context swap-gl-buffers) - - (define/override (on-paint) - (with-gl-context - (lambda () - (glClearColor 0.0 0.0 0.0 0.0) - (glClear GL_COLOR_BUFFER_BIT) - (glClear GL_DEPTH_BUFFER_BIT) - - (my-display) - (swap-gl-buffers)))) - - (define/override (on-size width height) - (with-gl-context - (lambda () - (set! *GL_VIEWPORT_WIDTH* width) - (set! *GL_VIEWPORT_HEIGHT* height) - - (string-init scale)))) - - (super-instantiate () (style '(gl))))) - -;; initialise fonts - -(let* ([f (make-object frame% "Font test" #f)] - [w (instantiate my-canvas% (f) - (min-width 300) - (min-height 100))]) - - (send f show #t)) -|# diff --git a/pkgs/games/lights-out/board.rkt b/pkgs/games/lights-out/board.rkt deleted file mode 100644 index 8f6ee8958a..0000000000 --- a/pkgs/games/lights-out/board.rkt +++ /dev/null @@ -1,149 +0,0 @@ -(module board racket - (require racket/gui - racket/class - "boards.rkt") - - (provide - new-board ;; : (-> board) querys user - random-board) ;; : (num -> board) - - (define (new-board) - (letrec ([dialog (make-object dialog% "New Board")] - [mode 'prebuilt] - [update-mode - (lambda () - (send below-panel change-children - (case mode - [(random) - (lambda x (list random-panel))] - [(prebuilt) - (lambda x (list prebuilt-panel))] - [(empty) - (lambda x (list random-panel))])))] - [radio-box - (make-object radio-box% #f (list "Prebuilt" "Random" "Empty") dialog - (lambda (rb evt) - (cond - [(= 0 (send rb get-selection)) - (set! mode 'prebuilt)] - [(= 1 (send rb get-selection)) - (set! mode 'random)] - [(= 2 (send rb get-selection)) - (set! mode 'empty)]) - (update-mode)) - '(horizontal))] - [below-panel (make-object vertical-panel% dialog)] - [prebuilt-panel (make-object vertical-panel% below-panel '(border))] - [prebuilt - (make-object choice% - #f - (map board-name boards) - prebuilt-panel - (lambda (choice evt) - (void)))] - [random-panel (make-object vertical-panel% below-panel '(border))] - [random-slider - (make-object slider% - "Board Size" 3 8 random-panel - (lambda (slider evt) - (void)) - 6)] - [button-panel (make-object horizontal-panel% dialog)] - [cancel? #t] - [ok (new button% - [label "OK"] - [parent button-panel] - [style '(border)] - [callback - (lambda x - (set! cancel? #f) - (send dialog show #f))])] - [cancel (make-object button% "Cancel" - button-panel - (lambda x - (send dialog show #f)))]) - (update-mode) - (send button-panel set-alignment 'right 'center) - (set! new-board - (lambda () - (set! cancel? #t) - (send dialog show #t) - (if cancel? - #f - (case mode - [(random) - (random-board (send random-slider get-value))] - [(empty) - (build-vector - (send random-slider get-value) - (lambda (x) (make-vector (send random-slider get-value) 'o)))] - [(prebuilt) - (to-vectors (board-board (list-ref boards (send prebuilt get-selection))))])))) - (new-board))) - - (define (to-vectors lsts) - (apply vector (map (λ (x) (apply vector x)) lsts))) - - '(define (build-vector n f) - (list->vector - (let loop ([n n]) - (cond - [(zero? n) null] - [else (cons (f (- n 1)) (loop (- n 1)))])))) - - (define (random-board n) - (let* ([choices - (let loop ([i n] - [res null]) - (cond - [(zero? i) res] - [else - (loop (- i 1) - (let loop ([j n] - [res res]) - (cond - [(zero? j) res] - [else (loop (- j 1) - (cons (cons (- i 1) (- j 1)) res))])))]))] - [board (build-vector n (lambda (x) (make-vector n 'o)))] - [flip - (lambda (i j) - (when (and (<= 0 i (- n 1)) - (<= 0 j (- n 1))) - (vector-set! (vector-ref board j) i - (case (vector-ref (vector-ref board j) i) - [(x) 'o] - [(o) 'x]))))] - [sim-click - (lambda (i j) - (flip i j) - (flip (- i 1) j) - (flip (+ i 1) j) - (flip i (+ j 1)) - (flip i (- j 1)))] - - [number-of-clicks - (let loop ([n (* (+ n 1) 2)]) - (cond - [(zero? n) 0] - [else (+ (random 2) - (loop (- n 1)))]))]) - - (let loop ([clicks number-of-clicks]) - (unless (zero? clicks) - (let ([choice (random (length choices))] - [continue? (not (zero? (random 3)))] - [choice-coordinates #f]) - (set! choices - (let loop ([choices choices] - [n choice]) - (cond - [(zero? n) - ;(printf "choose: ~a\n" (car choices)) - (set! choice-coordinates (car choices)) - (cdr choices)] - [else (cons (car choices) (loop (cdr choices) (- n 1)))]))) - (sim-click (car choice-coordinates) - (cdr choice-coordinates)) - (loop (- clicks 1))))) - board))) diff --git a/pkgs/games/lights-out/boards.rkt b/pkgs/games/lights-out/boards.rkt deleted file mode 100644 index 7886fc1ebb..0000000000 --- a/pkgs/games/lights-out/boards.rkt +++ /dev/null @@ -1,69 +0,0 @@ -#lang racket/base -(require racket/vector) - -(provide boards - (struct-out board)) - -(define-struct board (name board)) - -(define (build-board name vec) - (make-board name (vector-map vector-copy vec))) - -(define boards - (list - (make-board - "1" - '((o o o o o) - (o o o o o) - (x o x o x) - (o o o o o) - (o o o o o))) - (make-board - "2" - '((x o x o x) - (x o x o x) - (o o o o o) - (x o x o x) - (x o x o x))) - (make-board - "3" - '((o x o x o) - (x x o x x) - (x x o x x) - (x x o x x) - (o x o x o))) - (make-board - "4" - '((o o o o o) - (x x o x x) - (o o o o o) - (x o o o x) - (x x o x x))) - (make-board - "5" - '((x x x x o) - (x x x o x) - (x x x o x) - (o o o x x) - (x x o x x))) - (make-board - "6" - '((o o o o o) - (o o o o o) - (x o x o x) - (x o x o x) - (o x x x o))) - (make-board - "7" - '((x x x x o) - (x o o o x) - (x o o o x) - (x o o o x) - (x x x x o))) - (make-board - "Diagonal" - '((o o o o x) - (o o o x o) - (o o x o o) - (o x o o o) - (x o o o o))))) diff --git a/pkgs/games/lights-out/info.rkt b/pkgs/games/lights-out/info.rkt deleted file mode 100644 index b1a306ae95..0000000000 --- a/pkgs/games/lights-out/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game-set "Puzzle Games") -(define game "lights-out.rkt") diff --git a/pkgs/games/lights-out/lights-out.png b/pkgs/games/lights-out/lights-out.png deleted file mode 100644 index 9811bca777e74ee8a1f8a67ba8ac7a240b666ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o{+5N5n|x9$&6kiEpy*OmPWH void) resets the window(s) - -(define frame (make-object frame% "Lights Out")) - -(define label-size 30) - -(define orange (make-object color% 255 165 0)) -(define light-orange (make-object color% 255 220 100)) - -(define on-pen (send the-pen-list find-or-create-pen orange 1 'solid)) -(define on-brush (send the-brush-list find-or-create-brush orange 'solid)) -(define off-pen (send the-pen-list find-or-create-pen "BLACK" 1 'solid)) -(define off-brush (send the-brush-list find-or-create-brush "BLACK" 'solid)) - -(define dull-on-pen (send the-pen-list find-or-create-pen light-orange 1 'solid)) -(define dull-on-brush (send the-brush-list find-or-create-brush light-orange 'solid)) -(define dull-off-pen (send the-pen-list find-or-create-pen "DARK GRAY" 1 'solid)) -(define dull-off-brush (send the-brush-list find-or-create-brush "DARK GRAY" 'solid)) - -(define (flip-one i j) - (when (and (<= 0 i (- (vector-length current-board) 1)) - (<= 0 j (- (vector-length current-board) 1))) - (vector-set! - (vector-ref current-board j) - i - (case (vector-ref (vector-ref current-board j) i) - [(x) 'o] - [(o) 'x])))) - -(define (flip-surrounding i j) - (flip-one i j) - (flip-one (- i 1) j) - (flip-one i (- j 1)) - (flip-one (+ i 1) j) - (flip-one i (+ j 1))) - -(define current-board #f) -(define original-board #f) - -(define board-canvas% - (class canvas% - (inherit get-dc get-client-size) - - (define/private (get-width) (let-values ([(w h) (get-client-size)]) w)) - (define/private (get-height) (let-values ([(w h) (get-client-size)]) h)) - - [define dull-i 1] - [define dull-j 1] - [define/private tile->screen - (lambda (i j) - (let ([x (inexact->exact (floor (* (/ i (vector-length current-board)) (- (get-width) 2))))] - [y (inexact->exact (floor (* (/ j (vector-length current-board)) (- (get-height) 2))))] - [w (inexact->exact (floor (* (/ (- (get-width) 2) (vector-length current-board)))))] - [h (inexact->exact (floor (* (/ (- (get-height) 2) (vector-length current-board)))))]) - (values (+ x 2) - (+ y 2) - (max 0 (- w 2)) - (max 0 (- h 2)))))] - [define/private screen->tile - (lambda (x y) - (values (inexact->exact (floor (* (/ x (get-width)) (vector-length current-board)))) - (inexact->exact (floor (* (/ y (get-height)) (vector-length current-board))))))] - [define/private draw-tile - (lambda (dc i j) - (when (and (<= 0 i (- (vector-length current-board) 1)) - (<= 0 j (- (vector-length current-board) 1))) - (let ([ent (vector-ref (vector-ref current-board j) i)] - [dull? (and dull-i - dull-j - (or (and (= i dull-i) (= j dull-j)) - (and (= i (- dull-i 1)) (= j dull-j)) - (and (= i (+ dull-i 1)) (= j dull-j)) - (and (= i dull-i) (= j (- dull-j 1))) - (and (= i dull-i) (= j (+ dull-j 1)))))]) - (if dull? - (if (eq? ent 'x) - (begin (send dc set-pen dull-off-pen) - (send dc set-brush dull-off-brush)) - (begin (send dc set-pen dull-on-pen) - (send dc set-brush dull-on-brush))) - (if (eq? ent 'x) - (begin (send dc set-pen on-pen) - (send dc set-brush on-brush)) - (begin (send dc set-pen off-pen) - (send dc set-brush off-brush))))) - (let-values ([(x y w h) (tile->screen i j)]) - (send dc draw-rectangle x y w h))))] - [define/private get-changed - (lambda (x y) - (if (and x y) - (list (cons x y) - (cons (+ x 1) y) - (cons (- x 1) y) - (cons x (- y 1)) - (cons x (+ y 1))) - null))] - [define/public redraw - (lambda () - (let* ([dc (get-dc)]) - (let loop ([j (vector-length current-board)]) - (if (zero? j) - (void) - (begin (let loop ([i (vector-length current-board)]) - (if (zero? i) - (void) - (begin (draw-tile dc (- i 1) (- j 1)) - (loop (- i 1))))) - (loop (- j 1)))))))] - - [define/override on-event - (lambda (evt) - (cond - [(send evt button-up?) - (let-values ([(x y) (screen->tile (send evt get-x) (send evt get-y))]) - (flip-surrounding x y) - (redraw))] - [(send evt leaving?) - (let ([changed (get-changed dull-i dull-j)]) - (set! dull-i #f) - (set! dull-j #f) - (for-each (lambda (pair) (draw-tile (get-dc) (car pair) (cdr pair))) - changed))] - [(send evt moving?) - (let ([changed-one (get-changed dull-i dull-j)]) - (let-values ([(x y) (screen->tile (send evt get-x) (send evt get-y))]) - (set! dull-i x) - (set! dull-j y)) - (let ([changed-two (get-changed dull-i dull-j)]) - (for-each (lambda (pair) (draw-tile (get-dc) (car pair) (cdr pair))) - (append changed-one changed-two))))] - [else (void)]))] - [define/override on-paint - (lambda () - (send (get-dc) clear) - (redraw))] - (super-instantiate () (parent frame)))) - -(define board-canvas (make-object board-canvas%)) -(send board-canvas min-width 100) -(send board-canvas min-height 100) - -(define (copy-board board) - (list->vector - (map (lambda (x) (list->vector (vector->list x))) - (vector->list board)))) - -(define (init-board new-board) - (set! current-board new-board) - (set! original-board (copy-board new-board)) - (send board-canvas on-paint)) - -(define button-panel (make-object horizontal-panel% frame)) - -(make-object button% "New" button-panel - (lambda x - (let ([res (new-board)]) - (when res - (init-board res))))) - -(make-object button% "Reset" button-panel - (lambda x - (init-board original-board))) - -(let ([help (show-scribbling '(lib "games/scribblings/games.scrbl") "lights-out")]) - (make-object button% "Help" button-panel (lambda x (help)))) - -(make-object grow-box-spacer-pane% button-panel) -(send button-panel stretchable-height #f) - -(init-board (random-board - (+ 3 (random 2) (random 2) (random 2) (random 2) (random 2)))) -;; (send frame stretchable-width #f) -;; (send frame stretchable-height #f) -(send frame show #t))) diff --git a/pkgs/games/main.icns b/pkgs/games/main.icns deleted file mode 100644 index 7acd6c28fd340e5cc4576494a2a1746699217790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33719 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 diff --git a/pkgs/games/main.ico b/pkgs/games/main.ico deleted file mode 100644 index 2d63962e56c00d048c898e26e66884d86449a2c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25214 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 diff --git a/pkgs/games/main.rkt b/pkgs/games/main.rkt deleted file mode 100644 index c2f3693993..0000000000 --- a/pkgs/games/main.rkt +++ /dev/null @@ -1,124 +0,0 @@ -#lang racket/gui -(require setup/getinfo - net/sendurl) - -(define-struct game (file name set icon)) - -(define (get-game gamedir) - (define-values (base name dir?) (split-path gamedir)) - (define game (path-element->string name)) - (define info (with-handlers ([exn:fail? (lambda (x) #f)]) - (get-info (list "games" game)))) - (define main (and info (info 'game (lambda () #f)))) - (define (gamefile f) (build-path gamedir f)) - (and main - (make-game - (gamefile main) - (info 'name (λ () (string-titlecase (regexp-replace* #rx"-" game " ")))) - (info 'game-set (λ () "Other Games")) - (info 'game-icon (λ () (gamefile (format "~a.png" game))))))) - -(define (run-game game) - (define c (make-custodian)) - (define run - (dynamic-wind - begin-busy-cursor - (lambda () - (with-handlers ([exn? (lambda (e) (lambda () (raise e)))]) - (let ([u (dynamic-require (game-file game) 'game@)]) - (lambda () (invoke-unit u))))) - end-busy-cursor)) - (parameterize* ([current-custodian c] - [current-namespace (make-gui-empty-namespace)] - [current-eventspace (make-eventspace)]) - (queue-callback - (lambda () - (exit-handler (lambda (v) (custodian-shutdown-all c))) - (with-handlers ([exn? (lambda (e) - (message-box (format "Error in \"~a\"" - (game-name game)) - (let ([ep (open-output-string)]) - (parameterize ([current-error-port ep]) - ((error-display-handler) (exn-message e) e)) - (get-output-string ep)) - f - '(ok)))]) - (run)))))) - -(define games - (for/list ([gamedir (in-list (find-relevant-directories '(game)))]) - (get-game gamedir))) - -(define game-sets - (let ([ht (make-hash)]) - (for ([g (in-list games)]) - (let ([set (game-set g)]) - (hash-set! ht set (cons g (hash-ref ht set '()))))) - (sort (hash-map ht cons) - (lambda (x y) - (let ([xlen (length x)] [ylen (length y)]) - (cond [(> xlen ylen) #t] - [(< xlen ylen) #f] - [else (stringpath+anchor) - ((dynamic-require 'setup/xref 'load-collections-xref)) - ((dynamic-require 'scribble/tag 'make-section-tag) - "top" - #:doc '(lib "games/scribblings/games.scrbl")))) - (send-url/file path #:fragment anchor))) - -(application-about-handler show-games-help) -(application-preferences-handler - (lambda () - (message-box - "Oops" - "There aren't actually any preferences." - f - '(ok)))) - -(send f show #t) - -;; For test mode, check that we can at least start, -;; but exit right away: -(module+ test - (queue-callback (lambda () (exit )) #f)) diff --git a/pkgs/games/memory/images/club.png b/pkgs/games/memory/images/club.png deleted file mode 100644 index e1e73ff43f6e471a137fe92a1905f6adf6478634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 zcmeAS@N?(olHy`uVBq!ia0vp^?m(Qt!2~1^RR1`}z`)|}>EaktG3V{9e2?gGkpt(u zHy#$dc}p#HV_#O##Ti$w9+g_MdT}?;#Jsm$PQQ*P%{FWb(A^Rm!qj)bZjH8^$EGb) zu0E1@bn95AX6ot?&5+x_7HnM`cwMNwGgC|@EZf!OX1lqZk+|-i>XYm4$p8FMbpPR; z&(-=*Wb+QWDhakf&W^DDpmv!deY-T{gA0nuYjz)OxGnpnQk+4*aqA)$hRDcGd-nWg zQ0OdGcS#8Qa$wDi#>k7zn-{UCx$>XslA9rFYoJ|)E|GoN%WIc|g2B!E|8KnKS5w)u zJV>*sc=Mx29r0dGVRrEg)}6a`@uF;}%aNm3t}NM{-ambM{lP++otKvA-M(<)^WEM3 zyJEIa*J5nA{(IG`SJsO!?%5%s79zzFdG_pCdAk^6OG{DR2d}Q)KR@?(r%NWIQkdR# zdHuMa^)ks@x1Bq4X3`42mNiw?>|wn#=hpsya8Ow2YU6}Z4U@lmiR~+Z{~HwkTf4#2_Yq*xC8~ z?_YAhK7U$Q^D^29U;g@fyR_7-z4yWoMfa+0UiPdaGxK6Ackk}9w-&X(suOKBGe7rA z^DX^!c;(8>)my)wn%b9OpfcyyX7}4yLS|2FeEysH@ZMcDH$wvh^|creJa}+oqViUD z{xJL6U(ff|&hL6{X?bePmMPb+`K{gd=Fd;DKu(6LYI!knXfC*EH@e{MEK${FP?Q_L+MAX6^1xCShP!wFDk~?ys0>(JRVBB`eB%`B z@^_2X9k)tJe_m+5QKX;U*(pT3N8Y~iXC)73;MymjdSCeJq@JF3_JwD_+LB#&M9*o7 zWPX45SI4gP)~z~=vNxxv3X6%=wcHR|5Ixu8W9Syyj-H;iv9aIY;dGoj!T&*r})1 zzD76Mr|Z>rr#?AqU^v$*blt@itGT(&&5OCYxo6IN$>!X7FhFbSF;2$(dwWFrg@nxu zWWqyBx9r$)A?^3mcd>RNv!>nk<3Fr3Nuk8NF}cTmXD&z``Ng~8L+&t;ucLK6TD CiYRyh diff --git a/pkgs/games/memory/images/diamond.png b/pkgs/games/memory/images/diamond.png deleted file mode 100644 index 84d64a425e01584d38328fee40114e9066024ae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmeAS@N?(olHy`uVBq!ia0vp^?m(Qt!2~1^RR1`}z`)Gs>EaktG3V{9SdZX9hU4|K zgL$+MtMF@8B$`rmE&39e6Zh6UWnQE1xU3wwx)q=HG z9HUn@Zwq42UCM_c@t6O8`-i@$DX9~$9#OH>OJq+JUmtM_p>&B zieLTPe`i_#vqDei_f<>Oy|%x4xpc#)^AC@x+|;Y%In6sY+w{xiGfBserO%c5(RTUl zl`ThNI>Ul5TipG^f2Q!|(dewG)Tc~BYqg>({-xbpUAn#Enx=Ntw5yA!$K?IL&Tv`f z`q}5}gDx$NsQu$o_wvx;Hun={hIWek8Y)%`>bG~-#=4c%Ke!`$kd@(J*yYPlreC`K z{`i#H{5yWTq_8_|2(7j5kN;`=I>q$;Z+=70l1apGV38nb|1BBs z&Gg!~c`Z_k6ialS;~I9LPo=ww;jeeU7cq$gDb>7bIBqQQMk?ut?jwf71`HGH&vPra nJ!AtXOLg|$Js!YxS;tsXy1ay|>}Vx0gD`ly`njxgN@xNA`iO=A diff --git a/pkgs/games/memory/images/fish.png b/pkgs/games/memory/images/fish.png deleted file mode 100644 index 81c923a273f3d5014313a0431bc5c0b8c576eaf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1625 zcma)->mw5i0L3?qY2H~a6O|~Ek|{JQuhNj#Ow3~_C0(V3v5aYJi9}g7=8<`iMTW~1 zrKlIlb)Ubxt%?J7vBAEIfTHrda$h-J0o3XJiB-@yu z_L3{EG0IhkBr08EE&`6FgE<(e&M~7bNLz$b-~K&2!lI^JXN}U=t3Z8Lq-N-lQG)PW z9w8_uZ41}{xsaB_{`r(Nx`|GYrJOkQlq4RhJlxTd$P-!c2p@H~OO}5H{gyicC%K|~ ztInIe}YfX3^!1Og;2r%gYxD=ZZCaR-Mcm%kz;ELbp!rr^4IVIgu+m^F#&5) zaDkGvJ1E6!S3xh*_}!^nZlF+kFxX*1K3EZNn+X-R)z6_nKT-oN`zD2e&65Rm?MjMf z!g9(~RPgHn(?M%0nA^2#xf*vb9zSeuj~S2D$O;H^x&qpfGY z%gi34-O>eZvyAI`zsaj)&BzXf{UNN_qCS^y9e|17SybGh;Ixo1V(*em?<+BE+nYYW zShLm*Ri4Z)tSaALG-!ZT=bx@bl+Haps}3LnXJ7cpjj!nl zTTkG(WG1g3B;2s@0hnxpW>h*@*XOW zI@@{*W=={ne6AJ0H;H^zr`?x!+jZjS>?|B@lD~UIIkEh*heWLlfi|@>AcTBsa%Be} z_oV_S=PgW9MrgGljyvLn=5MXms`Ew!|BoXYMf%~X6%9HL0J9_2H#5VtFth5C`Nq;- zTTH)M`b0!go`q^OeEg0uoGqX=@RYm6hphFFhp) z-|iBl%#XLftba(CYb85=w{&Iwv{b_`M_CZ{Cw_Un z>vdEf*z(*fT$mel+w|3IooH=R$#cw?J+KDLf1LXB;k?Sg(g|U_5cSmXtzH>{F28tsb-OV9e zO=j#FQ}cdR&!nGmRjbc&jlO8&;kS*?*3yuf==t_2P!n_2{dHL{JI%~q@ZV@^#HJ;qgw=!#lW=&XM}?Hk%>Uq5iKN9-V=SW_PCh;OWd*=P1<+dQ31bp82~pIPiL+p GKKWny*dFZw diff --git a/pkgs/games/memory/images/happy.png b/pkgs/games/memory/images/happy.png deleted file mode 100644 index 1ea8891df2f05f2c93b8265dd40e8fe1a74a779e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2191 zcmV;A2ypj_P){ zf1aH9+;h&y=bk^ma}Hse=A}#TWBV|7=FBWHIe8kud+(io+O=r_ckZO;<^*8QhwY*S z;J|?$M~?6Sd{4V3TSCjKd1zTR4=t&J-XCkN#8y zXi$?->1eit&-U;oF4Dk?G{`D7(UX}78_9qVJ^-Yrf@umg;(8i*hz@yj_atc5i%7QmF0M_nJBm zeJSv^-2Tff^H#BjVjqJ(QfdEL$^V10FRWEfK!WNmfUswBkAA;#Y?vC zZIznnv749nd@Og41W1x(7$y`7b^XW;e7NqVR10cU9{vmbem_M~9LI%1p`PDo$k(K* zi8%zoY+REX(@+ z{=kQ6n~IVlbp7WX=Ot$stJFk~-GYeRrIX}?S@On>8&|GeF${wwNy_HO{wDtDgN~HV zW~Zm87Zw(LJ|8_Q+ofm0Y4IK}&E;Zc*H8f1*B`v%OG`_~jvYIB^5p#dynBHUA^Oyf zALZi3iziN;h{a+qkH8m1$Ks^lHFGDc;*8%&2JF7A%rd5F0$5&NmStI%ZGYpcm}|7A zX;u!atE&LA*{thR4Ez}(=sLbT-UH0xiZ_=QOrf#W?30 zYm|S}o4#!1^Z9%}Un~|yfv)_vhJ~VWGmwkzu&fG&La9^|f6-^$wC%|cYfQ1=5`t6o zWm|7)##4k_{vcAhnzugd*J@bQSZLQevTp=@hsywrn*lHFOn_kEmlFhF+XHQ_Ha5Ln zsYB**%r&~E90(93s9c-^Y*$a)bC>fuvl3@q#+hdsTdR!?8!a@tK8?WyDv&y&PO+)26&+DDc#UeGBsx?Ts`JT^t<_Gx@@!gZP&FtK z-YH;l8ZGFkdl>hGF=1991*0wzs*_a*pLOk*PZ%AVjB=QFd5N5?diaup+T!-DMu9A$ z==}P@*@}yRDF4Ez4hanC5{kXN?0SgoG7I;`G8MS&gbm@9 zzvAOnEV>lsh=k%*{HX^{L1zV05rr3H?h~ntRp*$F=$ZkiJr)|w4{`c)%-p~ybu^j^ zWdZ-bj?3S|_xiEdE}0Ik3^5Qbb&t8{>AqqbJfAK@bWTHq`99tq#DQr{cz3gW{*2$H zu>2N&>Y!x8lu#0pJ9OUDWaEB%&^2as#Fpeqj)qHgJb;lOUi80h32 zFasDFzz7~T&SPKEUQ9MHV3bfOAoJ#RPiH(9UakBQ^M$GVOXFlay1j^PK!b68b?q=< z6p_nf{qR(|rYk`;#8cG@u9_g))zBH&J zvKgdanJV=2HD3U#ITjA{>cG^!G?FT|WMjjGsX)$Q{VS~0r-b@$XZ7<&_vfoKN6T%= zT^xe01EY6zXc9`+i1+4orS9u>b?#gEBj$H+J2rd6s(TFIzAj~E zmKP_}t3oh`!*k&9Q! zp9FS9RW5>BXCd!w)g8YGZvv*nVa%5DobBB=p=H%Pw5*zkmR0l6vT7b$R?S1p zs(IMHR(I}HzwY03Y=}_6+}s=h{;AfdVa(0_3IJi6=A}!oKkdpik~3#!{|8`9LRZ%F Rt#tqZ002ovPDHLkV1ibSJ?sDg diff --git a/pkgs/games/memory/images/heart.png b/pkgs/games/memory/images/heart.png deleted file mode 100644 index c58548fcb2a9c7739aadb7ab097703e1856d1a78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 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 diff --git a/pkgs/games/memory/images/two-fish.png b/pkgs/games/memory/images/two-fish.png deleted file mode 100644 index 8aee1304adca486ef7e65dcf6911986b3c7551ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2325 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 diff --git a/pkgs/games/memory/info.rkt b/pkgs/games/memory/info.rkt deleted file mode 100644 index ae10c8b574..0000000000 --- a/pkgs/games/memory/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game "memory.rkt") -(define game-set "Card Games") diff --git a/pkgs/games/memory/memory.png b/pkgs/games/memory/memory.png deleted file mode 100644 index acf9932f64b3a7c837f45c9bfb06fe336196400d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T0!3HFGR%fsRDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oArNM~bhqvgP>{XE)7O>#3OApi41?x#wS^1}j0&DEjv*Cu-cH--#q221wtr%R zj><*7-h||dMn@L3N^I~=%+H@`#Zk$&+omzr>todH2#t*SUfl5tOFcJhn$2l?XYf!> zX@Jn! z{Kt%AhIOq1(z-jF^70mz^S%w6(;xSsatG6egLVo9|3#ixo8DM^!1`Qt`K^|BtT|I3 zOMF?liMOI$g(-acg%$b-+AB|rvjp60`Mf!Qd#vNtSAm;hOoumHF7^R~kHOQ`&t;ucLK6TIjii$R diff --git a/pkgs/games/memory/memory.rkt b/pkgs/games/memory/memory.rkt deleted file mode 100644 index 9cedd79602..0000000000 --- a/pkgs/games/memory/memory.rkt +++ /dev/null @@ -1,160 +0,0 @@ -#lang racket -(require games/cards racket/gui racket/class racket/unit) - -(provide game@) - -(define game@ (unit (import) (export) - -;; Layout width and height: -(define WIDTH 5) -(define HEIGHT 4) -(define MAX-MATCHES (/ (* WIDTH HEIGHT) 2)) - -;; Randomize -(random-seed (modulo (current-milliseconds) 10000)) - -;; Set up the table -(define t (make-table "Memory" (+ 2 WIDTH) (+ 1 HEIGHT))) -(send t show #t) -(send t set-double-click-action #f) - -;; Get table width & height -(define w (send t table-width)) -(define h (send t table-height)) - -;; Set up the cards -(define deck - (let ([cards (map (lambda (name value) - (let ([bm (make-object - bitmap% - (build-path - (collection-path "games" "memory" "images") - (format "~a.png" name)))]) - (make-card bm #f 0 value))) - '("club" "heart" "spade" "diamond" - "happy" "unhappy" - "fish" "two-fish" - "jack" "star") - '(1 2 3 4 5 6 7 8 9 10))]) - (append cards (map (lambda (c) (send c copy)) cards)))) -(for-each (lambda (card) - (send card user-can-move #f) - (send card user-can-flip #t)) - deck) - -;; Card width & height -(define cw (send (car deck) card-width)) -(define ch (send (car deck) card-height)) - -(define dx (/ cw (+ 2 WIDTH))) -(define dy (/ ch (+ 1 HEIGHT))) - -(define match-x (- w cw dx)) -(define match-y dy) - -(define time-h (+ 12 5 5)) -(define time-x match-x) -(define time-y (+ ch dy dy)) - -;; Put the cards on the table -(send t add-cards deck match-x match-y) - -;; Setup -(define (setup) - (reset-timer) - (set! deck (shuffle-list deck 7)) - (send t stack-cards deck) - (send t move-cards deck 0 0 - (lambda (pos) - (let ([i (modulo pos WIDTH)] - [j (quotient pos WIDTH)]) - (values (+ dx (* i (+ cw dx))) - (+ dy (* j (+ ch dy)))))))) - -;; Number of matches found so far: -(define matches 0) - -;; First card flipped, or #f if non flipped, yet -(define card-1 #f) - -(define (flip-and-match c) - (cond [(eq? c card-1) - ;; Cancel first card - (send t flip-card c) - (set! card-1 #f)] - [(not (send c face-down?)) - ;; Can't click a matched card, unless the game is over, - ;; in which case we reset the game - (when (= matches MAX-MATCHES) - (send t flip-cards deck) - (set! matches 0) - (setup))] - [else - ;; Flip over a card... - (send t flip-card c) - (send t card-to-front c) - (run-timer) - (cond [(not card-1) - ;; That was the first card - (set! card-1 c)] - [(and (equal? (send card-1 get-value) (send c get-value)) - (equal? (send card-1 get-suit) (send c get-suit))) - ;; Match - (send t pause 0.5) - (send t move-cards (list card-1 c) match-x match-y) - (set! card-1 #f) - (set! matches (add1 matches))] - [else - ;; Not a match - (send t pause 0.5) - (send t flip-cards (list card-1 c)) - (set! card-1 #f)])])) -(send t set-single-click-action flip-and-match) - -;; The timer turns out to be the most difficult part: -(define (make-time-region secs) - (make-region time-x time-y cw time-h - (if (>= secs 6000) - "XX:XX" - (format - "~a:~a" - (substring (number->string (+ 100 (quotient secs 60))) 1) - (substring (number->string (+ 100 (modulo secs 60))) 1))) - #f)) -(define start-time #f) ; in inexact milliseconds; #f means not started -(define shown-seconds 0) ; used to compute the delay until the next update -(define time-region (make-time-region 0)) ; old region, so we wan remove it -(send t add-region time-region) ; start with the initial region added -(define (show-time n) - ;; Compute new time to show: - (set! shown-seconds n) - ;; Update the time by removing the old region and adding a new one: - (send t begin-card-sequence) - (send t remove-region time-region) - (set! time-region (make-time-region shown-seconds)) - (send t add-region time-region) - (send t end-card-sequence)) -(define (get-update-delta) - ;; Figure out how many milliseconds to sleep before the next update - (max 0 (inexact->exact (floor (- (+ start-time (* 1000 shown-seconds) 1000) - (current-inexact-milliseconds)))))) -(define time-timer - (make-object timer% - (lambda () - (unless (= matches MAX-MATCHES) - (show-time - (inexact->exact - (floor (/ (- (current-inexact-milliseconds) start-time) 1000)))) - (send time-timer start (get-update-delta) #t))))) -(define (reset-timer) - (send time-timer stop) - (set! start-time #f) - (show-time 0)) -(define (run-timer) - (unless start-time - (set! start-time (current-inexact-milliseconds)) - (send time-timer start 1000 #t))) - -;; Start the game: -(send t pause 0.25) -(setup))) diff --git a/pkgs/games/mines/gen-tiles.rkt b/pkgs/games/mines/gen-tiles.rkt deleted file mode 100644 index c2364210b9..0000000000 --- a/pkgs/games/mines/gen-tiles.rkt +++ /dev/null @@ -1,183 +0,0 @@ - -(module gen-tiles racket - (require racket/gui - racket/math) - - (module test racket/base) - - (define SIZE 24) - - (define bm (make-object bitmap% SIZE SIZE)) - (define dc (make-object bitmap-dc% bm)) - - (define dir (build-path (collection-path "games" "mines") - "images")) - - ;; Bomb ---------------------------------------- - - (define (draw-bomb color fuse?) - (send dc set-smoothing 'smoothed) - (send dc set-pen (make-object pen% color 1 'solid)) - (send dc set-brush (make-object brush% color 'solid)) - (send dc draw-ellipse 5 7 14 14) - (when fuse? - (send dc set-pen (make-object pen% (make-object color% 100 100 100) 1 'solid)) - (send dc set-brush (make-object brush% "BLACK" 'transparent)) - (send dc draw-arc 12 2 24 14 (* 2/3 pi) pi))) - - (send dc clear) - (draw-bomb "BLACK" #t) - (send dc set-pen (make-object pen% "RED" 1 'solid)) - (send dc set-smoothing 'aligned) - (send dc draw-line 14 0 16 2) - (send dc draw-line 18 4 20 6) - (send dc draw-line 18 2 20 0) - (send bm save-file (build-path dir "bomb.png") 'png) - - (let ([path (make-object dc-path%)]) - (send path move-to 4 0) - (send path line-to 12 4) - (send path line-to 22 0) - (send path line-to 20 12) - (send path line-to 24 20) - (send path line-to 20 20) - (send path line-to 20 24) - (send path line-to 12 20) - (send path line-to 0 24) - (send path line-to 4 18) - (send path line-to 0 10) - (send path line-to 6 6) - (send path close) - (send path translate -12 -12) - - (send dc clear) - (send dc set-pen (make-object pen% "RED" 1 'solid)) - (send dc set-brush (make-object brush% "RED" 'solid)) - (send dc draw-path path 12 12) - - (send path scale 2/3 2/3) - (send dc set-pen (make-object pen% "ORANGE" 1 'solid)) - (send dc set-brush (make-object brush% "ORANGE" 'solid)) - (send dc draw-path path 12 12) - - (send path scale 1/2 1/2) - (send dc set-pen (make-object pen% "YELLOW" 1 'solid)) - (send dc set-brush (make-object brush% "YELLOW" 'solid)) - (send dc draw-path path 12 12) - - (void)) - - (send bm save-file (build-path dir "explode.png") 'png) - - ;; Tiles ---------------------------------------- - - (define bg (make-object bitmap% (build-path dir "bg.png"))) - - (define (lighter n q) - (- 255 (floor (* (if (zero? q) 3/4 4/5) (- 255 n))))) - (define (darker n q) - (floor (* (if (zero? q) 1/2 4/5) n))) - - (send dc draw-bitmap bg 0 0) - (let ([c (make-object color%)]) - (let loop ([q 0]) - (unless (= q 2) - (let loop ([i 0]) - (unless (= i SIZE) - (let ([adjust - (lambda (adj x y) - (send dc get-pixel x y c) - (send c set - (adj (send c red) q) - (adj (send c green) q) - (adj (send c blue) q)) - (send dc set-pixel x y c))]) - (when (<= q i (- SIZE q)) - (adjust lighter q i) - (unless (zero? i) - (adjust lighter i q)) - (adjust darker (- SIZE 1 q) i) - (unless (= i (- SIZE q)) - (adjust darker i (- SIZE 1 q))))) - (loop (add1 i)))) - (loop (add1 q))))) - - (send bm save-file (build-path dir "tile.png") 'png) - - (define (bright r g b) - (min - (inexact->exact - (floor - (sqrt (+ (sqr r) (sqr g) (sqr g))))) - 255)) - - (define (xform red green blue) - (let ([c (make-object color%)]) - (let loop ([i 0]) - (unless (= i SIZE) - (let loop ([j 0]) - (unless (= j SIZE) - (send dc get-pixel i j c) - (let ([r (send c red)] - [g (send c green)] - [b (send c blue)]) - (send c set - (red r g b) - (green r g b) - (blue r g b)) - (send dc set-pixel i j c) - (loop (add1 j))))) - (loop (add1 i)))))) - - (xform (lambda (r g b) r) (lambda (r g b) g) bright) - - (define tile-bm (make-object bitmap% (build-path dir "tile.png"))) - - (send bm save-file (build-path dir "lclick-tile.png") 'png) - - (send dc draw-bitmap tile-bm 0 0) - (xform bright (lambda (r g b) g) (lambda (r g b) b)) - (send bm save-file (build-path dir "rclick-tile.png") 'png) - - (define (semi-bright r g b) - (floor (- 255 (* 2/3 (- 255 r))))) - - (send dc draw-bitmap tile-bm 0 0) - (xform semi-bright semi-bright semi-bright) - (send bm save-file (build-path dir "local-tile.png") 'png) - - (define (semi-dim r g b) - (floor (* 4/5 r))) - - (send dc draw-bitmap tile-bm 0 0) - (xform semi-dim semi-dim semi-dim) - (send bm save-file (build-path dir "near-tile.png") 'png) - - ;; Flag ----------------------------------------- - - (define (draw-flag dc color field?) - (send dc clear) - (send dc set-smoothing 'aligned) - (send dc set-pen (make-object pen% "BLACK" 1 'solid)) - (send dc set-brush (make-object brush% "BLACK" 'solid)) - (send dc draw-rectangle 5 9 2 12) - (send dc set-pen (make-object pen% color 1 'solid)) - (send dc set-brush (make-object brush% color 'solid)) - (send dc draw-polygon - (list (make-object point% 5 4) - (make-object point% 19 9) - (make-object point% 5 14))) - (when field? - (send dc draw-rectangle 7 3 12 7))) - - (let* ([bm2 (make-object bitmap% SIZE SIZE)] - [dc2 (make-object bitmap-dc% bm2)]) - (draw-flag dc2 "BLACK" #f) - (send dc2 set-bitmap #f) - (send bm set-loaded-mask bm2)) - - (draw-flag dc "RED" #t) - - (send bm save-file (build-path dir "flag.png") 'png) - - ) diff --git a/pkgs/games/mines/images/bg.png b/pkgs/games/mines/images/bg.png deleted file mode 100644 index 275cdf4945a5fa2911eae32446b4bb4716f733d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmV;M0c8G(P)#No)cQ$^yp(>$*P3 zwrvqM*ERdUWm)K&*izYvtqk_`KUGk2N^g%Lp20bjOZWbrz{=-Jq^0CK2s_7mz&ugp zJkQ5t-}evNO*qbafNf~;jAQ}5Z%Hti?PV4uNEd#CWayXmL}hc^)bm9Xq#6R(MKvu! zt38e*=?~&oU^QnR6n$u@Z_2ook!;WHqMXSrVCth3)hg&}K`n8P5#{5Pq^Gd6SF0U_`MlLGL+iFZED*>A|BX!GjWiK+pb)_U3=+U(jvIK`AX=yv3`6 zC?rIQ_M#xm?7_9H#*f7A19OAbUOI``ifsSH^{%d09RMQ_4QVYcy8_0YK5O4AFx~(-{0QwNfIo}3d92h zgTVlc#Ue7na=Apm-#<-2Usz515Fp5Avrttvav?=gkjv$QANGmN7>g{jqA1}+=A5Hk zE=LlYF@{Q|f>mRvnqPM-k~zbPv-8j6Gf3kQH-?g zLLD66_t9##FdmNq0GUh%g+c+G^OO2~?IwpnV2b`X{s82zp7>hHw~GJ(002ovPDHLk FV1m422J8R; diff --git a/pkgs/games/mines/images/explode.png b/pkgs/games/mines/images/explode.png deleted file mode 100644 index cd6441c0513ccc2374e63595cef5d55cc4a08687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 923 zcmV;M17!S(P)FAWSxkw{Pa}wbmPV< z0Od4YLmEcvLuy{dQ8Q8s>3gJ{w}1GsboZ_#DNH@NcoBZT0=t0=KtJ#l7y~ANFMu=< z2SU!~t!JOl!`{6B)B?=S!RRRb1@r=IoK_Nu0c~!tsmgBF&Fk00^fc_)0Uo|dE(h)H z@c1#j0eHiigSQ( zfo6|-6xdic_V)jCYyg%$fKn*{5aP@k0`eyK$=5&&wXzJncIzhKZ@2a;$N+|iR}KWQ zoazIBWeHO$k+t5sP=H9p1Bk^Slc^Z~2rPMyCa`o=%NpQI?94*IfZLBo;pR;b0AOUK z!s0zJ?l~=b(JgxHgr#Pe`yU5-fXPX?b<0wojs zoZe@^H(0tN5f~aWqLM78*;(l5u!@QS-vN!lS6H1t1xn7@Mi=>5RoZ5Nhrm6ctqsP< zy_@W_IPaVT`~v(2ya1-KntxU0{GFRO0ObO5EP`)QcQ=fU!hS5rlh`A+2|J6QfIol? zkihOsBUZ-etJt`+sH7;Lhb>zmyJVFy53~Y5JIDDd2YaxbF9V%*001^`rqU03dh9K~ zj5LVUjTCb4`_`?}$&=ENBT`F?6pOhggmePwy4MS~Z42}a0~i^pZ6=9?boQ*&+bcz* z(&^LE?c37Cgfuv4K=F9}M&t>ap0>UV($1YyIxX$nXHNV3rTh1#g@xL#H#1{xv9(p| x==cCYIxRIdNk@+cBP|x|cGDV}nyO{w$^VbK55O3cm{$M*002ovPDHLkV1mxcu6h6f diff --git a/pkgs/games/mines/images/flag.png b/pkgs/games/mines/images/flag.png deleted file mode 100644 index 6c14d2cc1f6243b5a9c5713cbbb78650767661d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 zcmV-f0jBvLii^%x7z>E6t**LLijpsnI` z`$tIwi*a2qSsp=_OS z>Y1ZIi8ltu*g>PJdb+6-CSoU~0El2M{X?TEu>+>~F`k{|NaPWqOJ;_Mqd2dcC7V3a zB?4<6AmqT1scdB<0i15&w?q6TdK2~-UP^h^m(maXj z%OX#a&Z&V+G|~dk&yn}PbHog0IF}M-*T`6-=o!{X*Jae1CyIDjBXtdCG|i+sGtVEa zsz6jz-@`fF?~^}wvUA7ydPUb=sIEaY{A=TOG-l3Ef776z9w8!T{8kdl5+DE&0ZP&9988hybqWn*?_TmT z=Fyi|tM!e8a3Xo~*e#`=hyRtjao`oDFex5Dsp%(71f*%^D)2mvCG`OmT|%P%)*i^U#weZpq*E&v!&PZBja<8nBBW4HUnFW4eq U>cN3fc>n+a07*qoM6N<$f*M`ZhyVZp diff --git a/pkgs/games/mines/images/local-tile.png b/pkgs/games/mines/images/local-tile.png deleted file mode 100644 index acc2daa56518722da35f50d4d40e8fde3d72d95f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmV;e0aE^nP)?7e{V&!nh{AT9f z1OUS@zPOSb^ z5CWJPWUU1NIOh%{$wB7(IRBzb0L^*|m$YfbQ|iP|8`$MTodlQ9PJX#h2#z1Mpa z%&i7Qzrpkrx#oy-ZY9uaa7KVNXQ;NJ1}xgB0g5p*QcB+ldOX#f$m_7xz!(E-Euy!X zXxDY^=H1Uzj1kO?5JJ(bGX(qbc3ls{aCi@T(xJ8K<~b3Zb0A?_mZd4IGtZ~@9wCHp z1ZQ*rtevC1ewWJyM6?$9@p$0%dNo0{Co>;U)3mnf^?Jp!EEvbJ3fM!C+dR*BKA-pl X-#3o?k_8F500000NkvXXu0mjfzH`2B diff --git a/pkgs/games/mines/images/near-tile.png b/pkgs/games/mines/images/near-tile.png deleted file mode 100644 index 8b0023e710877b625041ccfa37540b05334d665d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmV;-0WlYGQP_c4K-$=uMdd1_N!yvRgs2_o`R|zH@t9Ids8K0b-Wanu ztKB)D&maKkx(=Vu=hp^WMgXAidxQ`s10e*w-|zWy4p{PA5h%T0FWhc75HmwW5M!(w z*h{5uj1eLNa?ZgR10woTSo3mE1VjXDEhwb~5rK$odX=ZBrK@Kmf|L?yp}CV<#`S+T zV2pwO)&RE7%KM5*&N%>p_kMAyOk1ssT8_-M)lisum!~axOP973N)Vk55&23>87(tU zHCUU-Rw03U&hu|;?G%ABD%gqu0Iao}E$p0wb8dYOT2!l7X-F|ih2`GKmDRJqO!gv0 zYk6(~YA5D27g-0QR)baqwK*sae9ZwfH|Jn&UAH!GE+<{9<2Wvqe`_G;=XKq6-Pe1t zMtj;+$$LMwX^aufjA0lSfUR9r11u?ofN>nB2=W@VQd08eswg+Y;c$TWetI%5mkS<` z$HI&MJehspPc=B5P8fy(*XwmR$et(j`F!GjzvBmShp2l8_rdD`00009MC+b?#7S*;9= zK~(s;(}f7{B0fLMB?tg8p99xx+}IDq0meW8V7tY+u0aq2s4C!cc{uw4xjt3_w>_Qk zvD<;rb%0Vp+r|NSkQ9I~ZHq=J5Qut*JRcgQvU~<0&rxI<2wDSL_f>F7RWN4j?v#Qy z#*+LW;ow>adZ)D|+5J)h__=={^A`eA2#fEVC6j9>xMXC!f%%c4`eZ zXc6xz514v6iS0`Faf`xITL1t607*qoM6N<$f|#z*tpET3 diff --git a/pkgs/games/mines/images/tile.png b/pkgs/games/mines/images/tile.png deleted file mode 100644 index 54f92dfad81394c4885020a7d1eed33a68b8cfc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmVlEjW|1tuRf^;kAOH{%wASBqutu`iDKzBz zKIJ1KZ@zK0%sg=rPGp?Cbj#G6hyS(K69-<=T4PN-fYy4og^6gI1Lxe_Qn`daC?s_4 zIp;R@&heYZ2}_+*+OFiwt*R<{la#~>MPw0Yt$iP~6bCV>pU#1E?spED8O#i8Z4#ig zu5%oO_IX{8w2@V6DaL^;+GKsn2Il z@B1F(I8GH1(Y%XtPZI0QT%7#2ZKo=j8OP%h*XuR=Bq_kP3c9YF+H|+uVHgISPN#nX g#B#gcaJgLY10I*}^eQj+qyPW_07*qoM6N<$f)_~Q;s5{u diff --git a/pkgs/games/mines/info.rkt b/pkgs/games/mines/info.rkt deleted file mode 100644 index 4a2d3be8d2..0000000000 --- a/pkgs/games/mines/info.rkt +++ /dev/null @@ -1,5 +0,0 @@ -#lang info - -(define name "Minesweeper") -(define game-set "Puzzle Games") -(define game "mines.rkt") diff --git a/pkgs/games/mines/mines.png b/pkgs/games/mines/mines.png deleted file mode 100644 index 2abc1d52fd7ab59718113354489fcd750e220e3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 475 zcmV<10VMv3P)op$A~%3WzH(Fm!8?*yvn@s6daw zHcDSgVpVYx)zXvYm*n^RY%BgFs!E&XB(1#s^=>O8wK>;1?h(ir*K<1(NdbbHt5pDc z`s$y$c4Jc@;(Dy=jJGnkDG27l7@(&s!4pLVkO5QR9#{YyKz+UN`6-Z@@6_2S zUtIXK66zS^K5&;atcs0)zn?d^;b1BNfHAO)G`6waZ@!x=GoKx3Y-3j1$$!izHJOK) zL<0Z=U|lo78W_X^%xg9eF|PywhKbBW3@w0Nh;B(+3i=k{Ix#>&-vV4F1}Nz7Y(^sT z4V)$f_)*ofe4@eg!2V(Z-V^&3^ewstring neighbor-bomb-count)) - (vector-ref DIGIT-COLORS neighbor-bomb-count))]))]) - - (super-instantiate ()))) - -;; Class for a tile with a bomb underneath -(define tile:bomb% - (class tile:plain% - (inherit get-state draw-text-tile) - (define explode-source? #f) ; draw this bomb as the one that exploded? - - (public* - [set-explode-source (lambda (s?) (set! explode-source? s?))]) - - (override* - [draw - (lambda (dc x y w h hilite) - (if (eq? (get-state) 'uncovered) - (draw-text-tile dc x y w h #f #f - (if explode-source? explode-bm bomb-bm) #f) - (super draw dc x y w h hilite)))]) - - (super-instantiate ()))) - -(define (is-bomb? x) - (is-a? x tile:bomb%)) - -;; ;;;;;;;;;;;;;;; Board Operations ;;;;;;;;;;;;;;;;;; -;; A board is a vector of vectors of tiles - -(define board #f) ; initialized by calling make-board! - -(define (get-tile x y) - (vector-ref (vector-ref board x) y)) - -(define (set-tile! x y t) - (vector-set! (vector-ref board x) y t)) - -(define (do-surrounding x y accum start default f) - (step-while -1 <= 1 - (lambda (dx) - (step-while -1 <= 1 - (lambda (dy) - (if (and (not (and (zero? dx) (zero? dy))) - (< -1 (+ x dx) B-WIDTH) - (< -1 (+ y dy) B-HEIGHT)) - (f dx dy) - default)) - accum start)) - accum start)) - -(define (count-surrounding-bombs x y) - (do-surrounding - x y + 0 0 - (lambda (dx dy) (if (is-bomb? (get-tile (+ x dx) (+ y dy))) 1 0)))) - -(define (for-each-tile f) - (step-while 0 < B-WIDTH - (lambda (x) - (step-while 0 < B-HEIGHT (lambda (y) (f (get-tile x y) x y)) - void (void))) - void (void))) - -(define (make-board!) - ;; Create the board - (set! board - (build-vector B-WIDTH - (lambda (i) - (build-vector B-HEIGHT - (lambda (j) (make-object tile:plain%)))))) - ;; Randomly insert bombs - (let loop ([n THE-BOMB-COUNT]) - (unless (zero? n) - (let rloop () - (let* ([x (random B-WIDTH)] - [y (random B-HEIGHT)] - [t (get-tile x y)]) - (if (is-a? t tile:bomb%) - (rloop) - (begin - (set-tile! x y (make-object tile:bomb%)) - (loop (sub1 n)))))))) - ;; Set surrounding-bomb counts for each tile: - (for-each-tile (lambda (t x y) - (send t - set-neighbor-bomb-count - (count-surrounding-bombs x y))))) - -;; ;;;;;;;;;;;;;;; Graphic Interface ;;;;;;;;;;;;;;;;;; - -;; Make a frame: -(define frame - (instantiate - (class frame% - (augment* - [on-close ; stop the timer, in case it's running - (lambda () - (send board-canvas stop-timer) - (inner '() on-close))]) - (super-instantiate ())) - ("Minesweeper") - [style '(no-resize-border metal)])) - -;; Make the row of controls at the top of the frame: -(define panel (make-object horizontal-panel% frame)) -(send panel stretchable-height #f) -(define (make-centering-pane parent) - (let ([p (make-object vertical-pane% parent)]) - (send p set-alignment 'center 'center) - p)) - -(define time-display - (make-object message% "Time: 00000" (make-centering-pane panel))) -(make-object button% "Reset" (make-centering-pane panel) - (lambda (b e) (send board-canvas reset))) -(define count-display - (make-object message% "Count: 000" (make-centering-pane panel))) - -(define (set-time t) - (send time-display set-label (string-append "Time: " (number->string t)))) -(define (set-count c) - (send count-display set-label (string-append "Bombs: " (number->string c)))) - -;; Most of the work is in this class, which extends the basic canvas -;; class for drawing the Minesweeper board and handling clicks. -(define board-canvas% - (class canvas% - (init frame) - (inherit get-dc min-client-width min-client-height - stretchable-width stretchable-height) - - (define clicking #f) ; #t => click in progress - (define clicking-x 0) ; x position of click in progress - (define clicking-y 0) ; y position of click in progress - (define clicking-right? #f) ; #t => right-click in progress - (define area-hilite #f) ; tile with mouse pointer over it - (define area-hilites null) ; tiles+locs hilited due to mouse-over - (define ready? #t) ; #t => accept clicks - (define start-time #f) ; time of first click - (define elapsed-time 0) ; seconds since first click - (define timer #f) ; a timer that updates elapsed-time - (define bomb-count THE-BOMB-COUNT) ; number of bombs minus the number of flags - (define cover-count (* B-HEIGHT B-WIDTH)) ; number of uncovered tiles - - (public* - [stop-timer ; stop the clock - (lambda () - (when timer - (send timer stop) - (set! timer #f)))] - [start-timer ; start the clock - (lambda () - (set! start-time (current-seconds)) - (set! timer - (make-object - (class timer% '() - (override* - [notify - (lambda () - (let ([e (- (current-seconds) start-time)]) - (when (> e elapsed-time) - (set! elapsed-time e) - (set-time e))))]) - (super-instantiate ())))) - (send timer start 100 #f))] ; check time roughly every .1 secs - [end-of-game ; stop the game - (lambda (win?) - (stop-timer) - (set! ready? #f) - (set! start-time #f) - (unless win? (show-all-bombs)) - (set-count THE-BOMB-COUNT))] - [explode ; stop the game because the player hit a bomb - (lambda () (end-of-game #f))] - [win ; stop the game because the player won - (lambda () (end-of-game #t))] - [reset ; quit the current game and reset the board - (lambda () - (stop-timer) - (set! ready? #t) - (set! start-time #f) - (set! elapsed-time 0) - (set! cover-count (* B-HEIGHT B-WIDTH)) - (send dc clear) - (set-time 0) - (set! bomb-count THE-BOMB-COUNT) - (set-count THE-BOMB-COUNT) - (make-board!) - (on-paint))] - [show-all-bombs ; show the location of each bomb (after end-of-game) - (lambda () - (for-each-tile (lambda (t x y) - (when (is-bomb? t) - (change-state t (send t get-state) 'uncovered #f) - (paint-one t x y)))))] - [autoclick-surrounding ; autoclick tiles (after a 0 tile is uncovered) - (lambda (x y) - (do-surrounding - x y void (void) (void) - (lambda (dx dy) - (let* ([x2 (+ x dx)] - [y2 (+ y dy)] - [t (get-tile x2 y2)] - [state (send t get-state)] - [nc (send t get-neighbor-bomb-count)]) - (unless (eq? state 'uncovered) - (change-state t state 'uncovered #t) - (paint-one t x2 y2) - (when (zero? nc) (autoclick-surrounding x2 y2)))))))] - [change-state ; update counters after a tile changes - (lambda (t old-state new-state update-count?) - (send t set-state new-state) - (when (and update-count? (not (eq? new-state old-state))) - (when (eq? new-state 'uncovered) - (set! cover-count (sub1 cover-count))) - (when (eq? old-state 'uncovered) - (set! cover-count (add1 cover-count))) - (when (eq? new-state 'flagged) - (set! bomb-count (sub1 bomb-count)) - (set-count bomb-count)) - (when (eq? old-state 'flagged) - (set! bomb-count (add1 bomb-count)) - (set-count bomb-count))))] - [do-select ; handle a click on a tile - (lambda (x y flag?) - (let* ([t (get-tile x y)] - [state (send t get-state)] - [new-state (case state - [(covered) (if flag? 'flagged 'uncovered)] - [(flagged) (if flag? 'semi-flagged state)] - [(semi-flagged) (if flag? 'covered 'uncovered)] - [else state])] - [nc (send t get-neighbor-bomb-count)] - [new-uncover? (and (eq? new-state 'uncovered) - (not (eq? state 'uncovered)))] - [bomb? (is-bomb? t)]) - (change-state t state new-state #t) - (when (and new-uncover? bomb?) (send t set-explode-source #t)) - (paint-one t x y) - (when new-uncover? - (if bomb? - (explode) - (begin - (if (zero? nc) - (autoclick-surrounding x y) - (set-near-hilite t x y)))) - (when (and ready? (= cover-count THE-BOMB-COUNT)) (win)))))] - [paint-one ; draw one tile - (lambda (t x y) - (let ([xloc (* x TILE-HW)] - [yloc (* y TILE-HW)]) - (send t draw dc xloc yloc TILE-HW TILE-HW - (and (eq? t clicking) (if clicking-right? 'right 'left)))))] - [set-near-hilite - (lambda (t x y) - (set! area-hilite t) - (set! area-hilites - (do-surrounding - x y append null null - (lambda (dx dy) - (let* ([x (+ x dx)] - [y (+ y dy)] - [t (get-tile x y)]) - (if (not (eq? (send t get-state) 'uncovered)) - (begin - (send t set-area-hilite 'near) - (paint-one t x y) - (list (list t x y))) - null))))))] - [clear-area-hilite - (lambda () - (when area-hilite - (set! area-hilite #f) - (for-each (lambda (p) - (send (car p) set-area-hilite 'none) - (paint-one (car p) (cadr p) (caddr p))) - area-hilites) - (set! area-hilites null)))]) - (override* - [on-event ; handle a click - (lambda (e) - (when ready? - (unless start-time ; if the timer's not running, start it - (when (send e button-down?) - (start-timer))) - ;; Find the time for an (x,y) pixel position in the canvas - (let* ([x (quotient (inexact->exact (floor (send e get-x))) TILE-HW)] - [y (quotient (inexact->exact (floor (send e get-y))) TILE-HW)] - [t (if (and (< -1 x B-WIDTH) (< -1 y B-HEIGHT)) - (get-tile x y) - #f)]) ; not a tile - (cond - [(and clicking (or (not (eq? t clicking)) - (not (or (send e button-up?) - (send e dragging?))))) - ;; We're already in the middle of a click, and the mouse - ;; was moved. Paint the tile to show whether releasing the - ;; mouse button selects the tile. - (let ([old clicking]) - (set! clicking #f) - (paint-one old clicking-x clicking-y))] - [(and t - (not (eq? (send t get-state) 'uncovered)) - (or (send e button-down?) - (and (send e dragging?) - (= x clicking-x) - (= y clicking-y)))) - ;; Start a click on a covered tile - (clear-area-hilite) - (set! clicking t) - (set! clicking-x x) - (set! clicking-y y) - (when (send e button-down?) - (set! clicking-right? - (or (send e button-down? 'right) - (send e get-control-down) - (send e get-alt-down) - (send e get-meta-down)))) - (paint-one t x y)] - [(and clicking (send e button-up?)) - ;; User released the button - (set! clicking #f) - (do-select x y clicking-right?)] - [(and (not (send e leaving?)) - t - (eq? (send t get-state) 'uncovered) - (positive? (send t get-neighbor-bomb-count))) - ;; Moving over uncovered number - (unless (eq? t area-hilite) - (clear-area-hilite) - (set-near-hilite t x y))] - [(and (not (send e leaving?)) - t - (not (eq? (send t get-state) 'uncovered))) - ;; Moving over tile - (unless (eq? t area-hilite) - (clear-area-hilite) - (set! area-hilite t) - (set! area-hilites (list (list t x y))) - (send t set-area-hilite 'local) - (paint-one t x y))] - [else (clear-area-hilite)]))))] - [on-paint ; refresh the board - (lambda () (for-each-tile (lambda (tile x y) (paint-one tile x y))))]) - - (super-instantiate (frame)) - - ;; Make canvas size always match the board size: - (min-client-width (* TILE-HW B-WIDTH)) - (min-client-height (* TILE-HW B-HEIGHT)) - (stretchable-width #f) - (stretchable-height #f) - - (define dc (get-dc)) - - (reset) ; initialize the game - (send dc set-font (make-object font% 16 'swiss 'normal 'bold #f 'default #t)) - (send dc set-text-background BG-COLOR) - (send dc set-brush (send the-brush-list find-or-create-brush - BG-COLOR 'solid)))) - -;; Make the board canvas: -(define board-canvas (make-object board-canvas% frame)) - -;; Show the frame (and handle events): -(send frame show #t))) diff --git a/pkgs/games/paint-by-numbers/all-problems.rkt b/pkgs/games/paint-by-numbers/all-problems.rkt deleted file mode 100644 index eb70e19f7b..0000000000 --- a/pkgs/games/paint-by-numbers/all-problems.rkt +++ /dev/null @@ -1,80 +0,0 @@ -#lang racket -(require racket/unit - racket/include - "problem.rkt" - (for-syntax racket)) - -(define-signature paint-by-numbers:all-problems^ (problemss set-names)) -(define-signature paint-by-numbers:problem-set^ (problems set-name)) -(define-signature paint-by-numbers:problem^ ((struct problem (name rows cols solution) #:omit-constructor))) - -(define-syntax (mk-units stx) - (syntax-case stx () - [(_) - (with-syntax - ([(unit-names ...) - (let* ([prob-dir (collection-file-path "problems" "games" "paint-by-numbers")] - [files (call-with-input-file (build-path prob-dir "directory") read)]) - (for/list ([file files] #:when (file-exists? (build-path prob-dir file))) - (define path-spec (string-append "problems" "/" file)) - path-spec))]) - #'(list (include unit-names) ...))])) - -(define units (mk-units)) - -(define empty-unit - (unit - (import paint-by-numbers:problem^) - (export paint-by-numbers:all-problems^) - (define problemss null) - (define set-names null))) - - -(define (combine-units new-unit sofar) - (compound-unit - (import [p : paint-by-numbers:problem^]) - (export combine) - (link [((new : paint-by-numbers:problem-set^)) new-unit p] - [((old : paint-by-numbers:all-problems^)) sofar p] - [((combine : paint-by-numbers:all-problems^)) - (unit - (import (prefix old: paint-by-numbers:all-problems^) - (prefix new: paint-by-numbers:problem-set^) - paint-by-numbers:problem^) - (export paint-by-numbers:all-problems^) - - (define (expand-problem pbm) - (make-problem (problem-name pbm) - (problem-rows pbm) - (problem-cols pbm) - (expand-solution (problem-solution pbm)))) - - (define problemss - (if (null? new:problems) - old:problemss - (cons (map expand-problem new:problems) old:problemss))) - (define set-names - (if (null? new:problems) - old:set-names - (cons new:set-name old:set-names)))) new old p]))) - -;; expand-solution : (union #f (listof string[row])) -> -;; (union #f (vectorof (vectorof (union 'on 'off 'unknown)))) -(define (expand-solution sol) - (and sol (apply vector (map expand-row sol)))) -;; expand-row : string -> (vectorof (union 'on 'off 'unknown)) -(define (expand-row str) - (list->vector (map expand-char (string->list str)))) -;; expand-char : char -> (union 'on 'off 'unknown) -(define (expand-char c) - (case c - [(#\x) 'on] - [(#\space) 'off] - [(#\U) 'unknown])) - -(provide-signature-elements paint-by-numbers:all-problems^) - -(define-values/invoke-unit - (foldr combine-units empty-unit units) - (import paint-by-numbers:problem^) - (export paint-by-numbers:all-problems^)) diff --git a/pkgs/games/paint-by-numbers/gui.rkt b/pkgs/games/paint-by-numbers/gui.rkt deleted file mode 100644 index 538aa58274..0000000000 --- a/pkgs/games/paint-by-numbers/gui.rkt +++ /dev/null @@ -1,867 +0,0 @@ -#lang racket/base -#| - -The paint-by-numbers-canavas% class accepts two initalization -arguments. They must be lists of lists of numbers and they must be the -same length. paint-by-numbers-canvas% objects accepts four methods: - -set-rect : (int int (union 'on 'off 'unknown) -> void) -Sets the grid point specified by the first two arguments to the third. -The coordinates are from the top-left and the x coordinate comes first. - -get-rect : (int int -> (union 'on 'off 'unknown)) -Gets the value of the grid at the coordinates specified by the two integers - -paint-rect : (int int -> void) -Draws the rectangle specified by the arguments. -Call this after calling set-rect to see the changes updated on the screen. - -get-grid : (-> (list-of (list-of (union 'on 'off 'unknown 'wrong)))) -Returns the current state of the entire board as a list of lists. - -set-grid : ((vector-of (vector-of (union 'on 'off 'unknown 'wrong)))-> void) -Sets the state of the board. No drawing takes place - -on-paint : (-> void) -Redraws the entire canvas. May be used if many rects were set. - -all-unknown : (-> void) -Sets all board positions to 'unknown - -close-up : (-> void) -call when canvas is closed. - -See the bottom of this file for the creation of a file and a test -paint by numbers. - -|# - -(require racket/gui - framework - racket/class) - -(provide paint-by-numbers-canvas% - design-paint-by-numbers-canvas%) - -(define UNKNOWN-BRUSH (send the-brush-list find-or-create-brush "DARK GRAY" 'solid)) -(define ON-BRUSH (send the-brush-list find-or-create-brush "BLUE" 'solid)) -(define OFF-BRUSH (send the-brush-list find-or-create-brush "WHITE" 'solid)) -(define WRONG-BRUSH (send the-brush-list find-or-create-brush "RED" 'solid)) - -(define LINES/NUMBERS-PEN (send the-pen-list find-or-create-pen "BLACK" 1 'solid)) - -(define BLACK-PEN (send the-pen-list find-or-create-pen "BLACK" 1 'solid)) -(define WHITE-PEN (send the-pen-list find-or-create-pen "WHITE" 1 'solid)) -(define WHITE-BRUSH (send the-brush-list find-or-create-brush "WHITE" 'solid)) - -(define BAR-PEN (send the-pen-list find-or-create-pen "SALMON" 1 'solid)) -(define BAR-BRUSH (send the-brush-list find-or-create-brush "SALMON" 'solid)) - -(define-struct ado (x y before after)) - -(define-struct pt (x y)) - -(define paint-by-numbers-canvas% - (class canvas% - (init-field row-numbers col-numbers) - (inherit get-dc get-client-size) - - (define/private (get-font) (send (get-dc) get-font)) - - (define/public (get-row-numbers) row-numbers) - (define/public (get-col-numbers) col-numbers) - - (define/public (get-max-col-entries) - (apply max (map length (get-col-numbers)))) - - [define extra-space-every 5] - - [define grid-x-size (length (get-col-numbers))] - [define grid-y-size (length (get-row-numbers))] - [define y-margin 1] - [define x-margin 3] - [define row-label-width 10] - [define row-label-height 10] - [define col-label-width 10] - [define col-label-height 10] - - [define/private (get-row-label-string l) - (if (null? l) - "" - (let ([first (car l)] - [rest (cdr l)]) - (apply string-append - (number->string first) - (map (lambda (x) (format " ~a" x)) rest))))] - - [define/private get-col-label-strings - (lambda (l) - (map number->string l))] - - [define grid (build-vector grid-x-size (lambda (i) (make-vector grid-y-size UNKNOWN-BRUSH)))] - - [define/private get-string-height - (lambda (s) - (let ([dc (get-dc)]) - (let-values ([(width height descent ascent) - (send dc get-text-extent s)]) - (- height descent))))] - [define/private get-string-height/descent - (lambda (s) - (let ([dc (get-dc)]) - (let-values ([(width height descent ascent) - (send dc get-text-extent s)]) - height)))] - [define/private get-string-ascent - (lambda (s) - (let ([dc (get-dc)]) - (let-values ([(width height descent ascent) - (send dc get-text-extent s)]) - ascent)))] - [define/private get-string-width - (lambda (s) - (let ([dc (get-dc)]) - (let-values ([(width height descent ascent) - (send dc get-text-extent s)]) - width)))] - - [define/private loc->string - (lambda (x y) - (format "(~a,~a)" x y))] - - [define/private xy->grid - (lambda (x y) - (let* ([grid-width (/ (- (get-canvas-width) row-label-width) grid-x-size)] - [grid-height (/ (- (get-canvas-height) col-label-height) grid-y-size)] - [xp (- x row-label-width)] - [yp (- y col-label-height)] - [x (inexact->exact (floor (/ xp grid-width)))] - [y (inexact->exact (floor (/ yp grid-height)))]) - (if (and (<= 0 x) - (< x grid-x-size) - (<= 0 y) - (< y grid-y-size)) - (make-pt x y) - #f)))] - - [define/private grid->rect - (lambda (x y) - (let* ([grid-width (- (get-canvas-width) - row-label-width - (quotient grid-x-size extra-space-every))] - [grid-height (- (get-canvas-height) - col-label-height - (quotient grid-y-size extra-space-every))] - [left (+ row-label-width - (quotient x extra-space-every) - (* x (/ grid-width grid-x-size)))] - [top (+ col-label-height - (quotient y extra-space-every) - (* y (/ grid-height grid-y-size)))] - [width (/ grid-width grid-x-size)] - [height (/ grid-height grid-y-size)]) - (values left top width height)))] - - (define/private (get-canvas-width) (let-values ([(w h) (get-client-size)]) w)) - (define/private (get-canvas-height) (let-values ([(w h) (get-client-size)]) h)) - - [define undo-history null] - [define redo-history null] - [define/private do-do - (lambda (do current-sel new-sel) - (let* ([x (ado-x do)] - [y (ado-y do)] - [actual (get-raw-rect x y)] - [current (current-sel do)] - [new (new-sel do)] - [color->val - (lambda (brush) - (let ([color (send brush get-color)]) - (list (send color red) - (send color green) - (send color blue))))]) - (unless (eq? current actual) - (error 'do-do "expected ~a found ~a at (~a,~a)" - (color->val current) - (color->val actual) - x y)) - (set-raw-rect x y new) - (paint-rect x y)))] - - [define/private brush->symbol - (lambda (res) - (cond - [(eq? res UNKNOWN-BRUSH) 'unknown] - [(eq? res OFF-BRUSH) 'off] - [(eq? res ON-BRUSH) 'on] - [(eq? res WRONG-BRUSH) 'wrong]))] - [define/private sym->brush - (lambda (sym) - (case sym - [(unknown) UNKNOWN-BRUSH] - [(off) OFF-BRUSH] - [(on) ON-BRUSH] - [(wrong) WRONG-BRUSH]))] - - [define/private in-rect? - (lambda (p cp1 cp2) - (or (and (<= (pt-x cp1) (pt-x p) (pt-x cp2)) - (<= (pt-y cp1) (pt-y p) (pt-y cp2))) - (and (<= (pt-x cp2) (pt-x p) (pt-x cp1)) - (<= (pt-y cp2) (pt-y p) (pt-y cp1)))))] - - ;; ((list-of (list-of (union 'unknown 'off 'on 'wrong))) -> void) - [define/public set-grid - (lambda (g) - (set! undo-history null) - (set! redo-history null) - (set! grid - (list->vector - (map (lambda (x) (list->vector (map (lambda (x) (sym->brush x)) x))) - g))))] - - ;; (-> (list-of (list-of (union 'unknown 'off 'on 'wrong)))) - [define/public get-grid - (lambda () - (map (lambda (x) (map (lambda (x) (brush->symbol x)) (vector->list x))) - (vector->list grid)))] - - ;; (-> void) - [define/public undo - (lambda () - (cond - [(null? undo-history) (bell)] - [else - (let ([do (car undo-history)]) - (set! undo-history (cdr undo-history)) - (set! redo-history (cons do redo-history)) - (do-do do ado-after ado-before))]))] - - ;; (-> void) - [define/public redo - (lambda () - (cond - [(null? redo-history) (bell)] - [else - (let ([do (car redo-history)]) - (set! redo-history (cdr redo-history)) - (set! undo-history (cons do undo-history)) - (do-do do ado-before ado-after))]))] - - [define/public paint-rect - (lambda (i j) - (send (get-dc) set-pen LINES/NUMBERS-PEN) - (paint-rect/lines-numbers-pen i j))] - - ;; (int int -> void) - [define/public paint-rect/lines-numbers-pen - (lambda (i j) - (let ([dc (get-dc)]) - (let-values ([(left top width height) (grid->rect i j)]) - (cond - [(and draw-small-start-p - draw-small-end-p - (in-rect? (make-pt i j) - draw-small-start-p - draw-small-end-p)) - (send dc set-pen WHITE-PEN) - (send dc set-brush WHITE-BRUSH) - (send dc draw-rectangle left top width height) - - (let ([spacing 2]) - (send dc set-pen LINES/NUMBERS-PEN) - (send dc set-brush (new-brush (get-raw-rect (pt-x draw-small-start-p) - (pt-y draw-small-start-p)) - modifier-on?)) - (send dc draw-rectangle - (+ left spacing) - (+ top spacing) - (- width spacing spacing) - (- height spacing spacing)))] - - [else - (send dc set-brush (get-raw-rect i j)) - (send dc draw-rectangle left top width height)]))))] - - - ;; (int int -> (instance brush%)) - [define/public get-raw-rect - (lambda (i j) - '(unless (and (<= 0 i) - (< i grid-x-size) - (<= 0 j) - (< j grid-y-size)) - (error 'get-raw-rect "cannot get (~a, ~a) in ~ax~a board" - i j grid-x-size grid-y-size)) - (vector-ref (vector-ref grid i) j))] - - ;; (int int -> (union 'on 'off 'unknown 'wrong)) - [define/public get-rect - (lambda (i j) - (brush->symbol (get-raw-rect i j)))] - - ;; (int int (instance brush%) -> void) - [define/public set-raw-rect - (lambda (i j brush) - '(unless (and (<= 0 i) - (< i grid-x-size) - (<= 0 j) - (< j grid-y-size)) - (error 'set-raw-rect "cannot set (~a, ~a) in ~ax~a board" - i j grid-x-size grid-y-size)) - (vector-set! (vector-ref grid i) j brush))] - - ;; (int int (union 'on 'off 'unknown 'wrong) -> void) - [define/public set-rect - (lambda (i j sym) - (set-raw-rect i j (sym->brush sym)))] - - - ;; (int int -> void) - [define/public set-to-error - (lambda (i j) - (let ([brush (sym->brush 'wrong)]) - (set! undo-history (cons (make-ado i j (get-raw-rect i j) brush) undo-history)) - (set-raw-rect i j brush) - (paint-rect i j)))] - - ;; (-> void) - [define/public all-unknown - (lambda () - (let loop ([i grid-x-size]) - (cond - [(zero? i) (void)] - [else - (let loop ([j grid-y-size]) - (cond - [(zero? j) (void)] - [else (set-rect (- i 1) (- j 1) 'unknown) - (loop (- j 1))])) - (loop (- i 1))])))] - - [define highlight-row #f] - [define highlight-col #f] - (define/public draw-row-label - (lambda (n) - (let-values ([(gx gy gw gh) (grid->rect 0 n)]) - (when (and (gx . >= . 0) - (gy . >= . 0) - (gw . >= . 0) - (gh . >= . 0)) - (let* ([nums (list-ref (get-row-numbers) n)] - [dc (get-dc)] - [str (get-row-label-string nums)] - [str-height (get-string-height str)] - [str-ascent (get-string-ascent str)] - [str-width (get-string-width str)] - [sy (+ gy - (- (/ gh 2) - (/ str-height 2)))] - [sx (- row-label-width str-width x-margin)] - - [x 0] - [y gy] - [w gx] - [h gh]) - - (if (and highlight-row - (= highlight-row n)) - (begin - (send dc set-pen BAR-PEN) - (send dc set-brush BAR-BRUSH)) - (begin - (send dc set-pen WHITE-PEN) - (send dc set-brush WHITE-BRUSH))) - - (send dc draw-rectangle x y w h) - (send dc draw-text str sx sy)))))) - - [define/public draw-col-label - (lambda (n) - (let-values ([(gx gy gw gh) (grid->rect n 0)]) - (when (and (gx . >= . 0) - (gy . >= . 0) - (gw . >= . 0) - (gh . >= . 0)) - (let* ([nums (list-ref (get-col-numbers) n)] - [strs (get-col-label-strings nums)] - [dc (get-dc)]) - - (if (and highlight-col - (= highlight-col n)) - (begin - (send dc set-pen BAR-PEN) - (send dc set-brush BAR-BRUSH)) - (begin - (send dc set-pen WHITE-PEN) - (send dc set-brush WHITE-BRUSH))) - - (send dc draw-rectangle gx 0 gw gy) - (let loop ([ss strs] - [line (- (get-max-col-entries) (length strs))]) - (cond - [(null? ss) (void)] - [else - (let* ([s (car ss)] - [str-width (get-string-width s)] - [str-height (get-string-height s)] - [x (+ gx - (- (/ gw 2) - (/ str-width 2)))] - [y (* line (+ str-height y-margin))]) - (send dc draw-text (car ss) x y) - (loop (cdr ss) - (+ line 1)))]))))))] - - [define/private new-brush - (lambda (prev modifier?) - (cond - [(eq? prev UNKNOWN-BRUSH) - (if modifier? - OFF-BRUSH - ON-BRUSH)] - [(eq? prev ON-BRUSH) UNKNOWN-BRUSH] - [(eq? prev OFF-BRUSH) UNKNOWN-BRUSH] - [(eq? prev WRONG-BRUSH) UNKNOWN-BRUSH] - [else - (error 'internal-error - "unkown brush in board ~s\n" prev)]))] - - [define/private check-modifier - (lambda (evt) - (or (send evt get-right-down) - (send evt button-up? 'right) - (send evt get-alt-down) - (send evt get-meta-down) - (send evt get-control-down) - (send evt get-shift-down)))] - - [define modifier-on? #f] - [define last-p #f] - - - ;; (union #f if button not down - ;; (make-pt num num)) if button down - [define draw-small-start-p #f] - - ;; (union #f if button dragged outside board - ;; (make-pt num num)) if button dragged in board - [define draw-small-end-p #f] - - [define coordinate-p #f] - - [define/private update-range-of-rects - (lambda (p1 p2) - (let ([x-small (min (pt-x p1) (pt-x p2))] - [x-large (max (pt-x p1) (pt-x p2))] - [y-small (min (pt-y p1) (pt-y p2))] - [y-large (max (pt-y p1) (pt-y p2))]) - (let loop ([x x-small]) - (when (<= x x-large) - (let loop ([y y-small]) - (when (<= y y-large) - (paint-rect x y) - (loop (+ y 1)))) - (loop (+ x 1))))))] - - [define/override on-event - (lambda (evt) - (let* ([x (send evt get-x)] - [y (send evt get-y)] - [p (xy->grid x y)]) - (cond - [(or (send evt moving?) - (send evt entering?) - (send evt leaving?)) - - ;; update depressed squares - (when draw-small-start-p - (let ([old-draw-small-end-p draw-small-end-p]) - (cond - [(and draw-small-start-p - p - (or (= (pt-x p) (pt-x draw-small-start-p)) - (= (pt-y p) (pt-y draw-small-start-p)))) - (unless (equal? draw-small-end-p p) - (set! draw-small-end-p p) - (when old-draw-small-end-p - (update-range-of-rects draw-small-start-p old-draw-small-end-p)) - (when draw-small-end-p - (update-range-of-rects draw-small-start-p draw-small-end-p)))] - [draw-small-start-p - (set! draw-small-end-p #f) - (when old-draw-small-end-p - (update-range-of-rects draw-small-start-p old-draw-small-end-p))]))) - - (let ([dc (get-dc)]) - - ;; update the bars - (let ([new-highlight-col - (if (and p - (not (send evt leaving?))) - (pt-x p) - #f)] - [old-highlight-col highlight-col]) - (unless (equal? old-highlight-col new-highlight-col) - (set! highlight-col new-highlight-col) - (when new-highlight-col - (draw-col-label new-highlight-col)) - (when old-highlight-col - (draw-col-label old-highlight-col)))) - - (let ([new-highlight-row - (if (and p - (not (send evt leaving?))) - (pt-y p) - #f)] - [old-highlight-row highlight-row]) - (unless (equal? old-highlight-row new-highlight-row) - (set! highlight-row new-highlight-row) - (when new-highlight-row - (draw-row-label new-highlight-row)) - (when old-highlight-row - (draw-row-label old-highlight-row)))) - - (set! last-p p) - - ;; update the coordinates - (send dc set-pen WHITE-PEN) - (send dc set-brush WHITE-BRUSH) - (send dc draw-rectangle 0 0 row-label-width col-label-height) - (when (and (not (send evt leaving?)) - p) - (unless (equal? coordinate-p p) - (let* ([i (pt-x p)] - [j (pt-y p)] - [string (loc->string (+ i 1) (+ j 1))] - [width (get-string-width string)] - [height (get-string-height string)] - [sx (- (/ row-label-width 2) - (/ width 2))] - [sy (- (/ col-label-height 2) - (/ height 2))]) - (send dc draw-text string sx sy)))))] - [(send evt button-down?) - (set! draw-small-start-p p) - (set! draw-small-end-p p) - (set! modifier-on? (check-modifier evt)) - (when p - (paint-rect (pt-x p) (pt-y p)))] - [(send evt button-up?) - (cond - [(and p (or (= (pt-x p) (pt-x draw-small-start-p)) - (= (pt-y p) (pt-y draw-small-start-p)))) - (let ([new (new-brush (get-raw-rect - (pt-x draw-small-start-p) - (pt-y draw-small-start-p)) - (check-modifier evt))]) - ;(set! undo-history (cons (make-ado i j prev new) undo-history)) - ;(set! redo-history null) - (let ([x-small (min (pt-x draw-small-start-p) (pt-x p))] - [x-large (max (pt-x draw-small-start-p) (pt-x p))] - [y-small (min (pt-y draw-small-start-p) (pt-y p))] - [y-large (max (pt-y draw-small-start-p) (pt-y p))]) - - (set! draw-small-start-p #f) - (set! draw-small-end-p #f) - (set! modifier-on? #f) - - (let loop ([x x-small]) - (when (<= x x-large) - (let loop ([y y-small]) - (when (<= y y-large) - (set-raw-rect x y new) - (paint-rect x y) - (loop (+ y 1)))) - (loop (+ x 1))))))] - [else - (let ([old-draw-small-start-p draw-small-start-p] - [old-draw-small-end-p draw-small-end-p]) - (set! draw-small-start-p #f) - (set! draw-small-end-p #f) - (set! modifier-on? (check-modifier evt)) - (when (and old-draw-small-start-p - old-draw-small-end-p) - (update-range-of-rects old-draw-small-start-p - old-draw-small-end-p)))])])))] - [define/override on-paint - (lambda () - (let ([dc (get-dc)]) - (send dc clear) - (let-values ([(width height) (get-client-size)]) - - (send dc set-pen LINES/NUMBERS-PEN) - (let loop ([i grid-x-size]) - (cond - [(zero? i) (void)] - [else (let loop ([j grid-y-size]) - (cond - [(zero? j) (void)] - [else (paint-rect/lines-numbers-pen (- i 1) (- j 1)) - (loop (- j 1))])) - (loop (- i 1))])) - - (let loop ([l (get-col-numbers)] - [n 0]) - (cond - [(null? l) (void)] - [else - - (draw-col-label n) - (loop (cdr l) (+ n 1))])) - - (let loop ([l (get-row-numbers)] - [n 0]) - (cond - [(null? l) (void)] - [else - (if (and last-p - (= (pt-y last-p) n)) - (begin - (send dc set-pen BAR-PEN) - (send dc set-brush BAR-BRUSH)) - (begin - (send dc set-pen WHITE-PEN) - (send dc set-brush WHITE-BRUSH))) - (draw-row-label n) - (loop (cdr l) - (+ n 1))])) - - (void))))] - - [define/public calculate-row-margins - (lambda () - (let* ([dc (get-dc)]) - (set! row-label-width - (max (get-string-width (loc->string grid-x-size grid-y-size)) - (apply max (map (lambda (x) (+ x-margin - (get-string-width (get-row-label-string x)) - x-margin)) - (get-row-numbers))))) - - (let-values ([(width height descent ascent) (send dc get-text-extent "0123456789")]) - (set! row-label-height (+ y-margin height y-margin)))))] - [define/public calculate-col-margins - (lambda () - (let* ([dc (get-dc)]) - - (set! col-label-height - (max - (get-string-height/descent (loc->string grid-x-size grid-y-size)) - (apply max - (map (lambda (l) - (let* ([strs (get-col-label-strings l)] - [margins (* (length strs) y-margin)] - [height (apply + (map (lambda (x) (get-string-height x)) strs))]) - (+ margins height))) - (get-col-numbers))))) - - (set! col-label-width - (apply max - (map (lambda (l) - (let ([label-strings (get-col-label-strings l)]) - (if (null? label-strings) - (+ x-margin x-margin) ;; Minimum column label width (no labels) - (apply max - (map (lambda (x) (+ x-margin - (get-string-width x) - x-margin)) - label-strings))))) - (get-col-numbers))))))] - [define/public update-min-spacing - (lambda () - (min-width (inexact->exact (ceiling (+ row-label-width (* grid-x-size col-label-width))))) - (min-height (inexact->exact (ceiling (+ col-label-height (* grid-y-size row-label-height))))))] - - (inherit min-width min-height) - (super-instantiate ()) - - [define/public close-up - (lambda () - (remove-pref-callback))] - [define/public reset-font - (lambda (font) - (send (get-dc) set-font font) - (calculate-row-margins) - (calculate-col-margins) - (update-min-spacing))] - - (define pref-callback (preferences:add-callback - 'paint-by-numbers:font - (lambda (pref new-value) - (reset-font new-value)))) - [define/public (remove-pref-callback) (pref-callback)] - - (reset-font (preferences:get 'paint-by-numbers:font)) - (calculate-row-margins) - (calculate-col-margins) - (update-min-spacing))) - -(define design-paint-by-numbers-canvas% - (class paint-by-numbers-canvas% - (init-field width height) - [define row-spacing 5] - [define col-spacing 5] - [define row-numbers - (vector->list (make-vector height (vector->list (make-vector row-spacing 1))))] - [define col-numbers - (vector->list (make-vector width (vector->list (make-vector col-spacing 1))))] - - [define/override get-max-col-entries - (lambda () - col-spacing)] - [define/override get-row-numbers - (lambda () - row-numbers)] - [define/override get-col-numbers - (lambda () - col-numbers)] - - (inherit draw-col-label draw-row-label get-rect - calculate-row-margins - calculate-col-margins - update-min-spacing - on-paint) - - [define/private calculate-col/row - (lambda (get-rect col/row-numbers num-row/cols) - (let loop ([i num-row/cols] - [block-count 0] - [ans null]) - (cond - [(zero? i) (if (= block-count 0) - ans - (cons block-count ans))] - [else - (let ([this (get-rect (- i 1))]) - (case this - [(unknown off wrong) - (if (zero? block-count) - (loop (- i 1) 0 ans) - (loop (- i 1) 0 (cons block-count ans)))] - [(on) (loop (- i 1) (+ block-count 1) ans)] - [else (error 'calculate-col "unknown response from get-rect: ~a\n" this)]))])))] - - [define/private calculate-col - (lambda (col) - (calculate-col/row - (lambda (i) (get-rect col i)) - col-numbers - (length row-numbers)))] - - [define/private calculate-row - (lambda (row) - (calculate-col/row - (lambda (i) (get-rect i row)) - row-numbers - (length col-numbers)))] - - [define/private update-col/row - (lambda (col/row col/row-numbers calculate-col/row) - (let loop ([l col/row-numbers] - [n col/row]) - (cond - [(null? l) (error 'update-col/row "col/row too big: ~a\n" col/row)] - [(zero? n) - (cons (calculate-col/row col/row) - (cdr l))] - [else - (cons (car l) - (loop (cdr l) - (- n 1)))])))] - - [define/private update-col - (lambda (col) - (set! col-numbers - (update-col/row col - col-numbers - (lambda (x) (calculate-col x)))) - (draw-col-label col) - (let ([len (length (list-ref col-numbers col))]) - (when (< col-spacing len) - (set! col-spacing len) - (calculate-col-margins) - (update-min-spacing) - (on-paint))))] - - [define/private update-row - (lambda (row) - (set! row-numbers - (update-col/row row - row-numbers - (lambda (x) (calculate-row x)))) - (draw-row-label row) - (let ([len (length (list-ref row-numbers row))]) - (when (< row-spacing len) - (set! row-spacing len) - (calculate-row-margins) - (update-min-spacing) - (on-paint))))] - - [define update-row-col? #t] - [define/override set-raw-rect - (lambda (i j n) - (super set-raw-rect i j n) - (when update-row-col? - (update-col i) - (update-row j)))] - - [define/private update-all-rows-cols - (lambda () - (let loop ([i width]) - (unless (zero? i) - (update-col (- i 1)) - (loop (- i 1)))) - (let loop ([i height]) - (unless (zero? i) - (update-row (- i 1)) - (loop (- i 1)))))] - (inherit set-rect) - [define/public set-bitmap - (lambda (bitmap) - (set! update-row-col? #f) - (let ([dc (make-object bitmap-dc% bitmap)] - [c (make-object color%)] - [width (send bitmap get-width)] - [height (send bitmap get-height)] - [warned? #f]) - (let loop ([i width]) - (unless (zero? i) - (let loop ([j height]) - (unless (zero? j) - (let ([m (- i 1)] - [n (- j 1)]) - (send dc get-pixel m n c) - (when (and (not warned?) - (not (or (and (= 0 (send c red)) - (= 0 (send c blue)) - (= 0 (send c green))) - (and (= 255 (send c red)) - (= 255 (send c blue)) - (= 255 (send c green)))))) - (set! warned? #t) - (message-box - "Paint by Numbers" - "WARNING: This is a color bitmap; non-white pixels will be considered black")) - (set-rect m n - (if (and (= 255 (send c red)) - (= 255 (send c blue)) - (= 255 (send c green))) - 'off - 'on))) - (loop (- j 1)))) - (loop (- i 1))))) - - (set! update-row-col? #t) - (update-all-rows-cols))] - - [define/override set-grid - (lambda (g) - (set! update-row-col? #f) - (super set-grid g) - (set! update-row-col? #t) - (update-all-rows-cols))] - - (super-new (row-numbers null) (col-numbers null)) - (set! row-numbers (vector->list (make-vector height null))) - (set! col-numbers (vector->list (make-vector width null))))) diff --git a/pkgs/games/paint-by-numbers/hattori/1.gif b/pkgs/games/paint-by-numbers/hattori/1.gif deleted file mode 100644 index 8152685883d2cce250b03cfb77a5a3bee2271913..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1512 zcmVG5jI{j|X$4Z2J}@1HaMoGm^gM6mX(9$PbtoxnbMU$H%+t+j|==lcO zOw8Qe5gBTkf`}P>T&nz*O9;<~+YIS2sjh;PD>L4a`=jEcsIseQ0dHk3G5Fm#YwQVd(QX)f< zGEx#8((a@zMkQH>0EjbS&YgQ~UU8}LQ%o_O5EWfi)29&^M;}cKH8i3iq~MfVk!lbP z)u}XRn%TNVqe-IS#sbCI5acaeI@|Jm>vo^6xOvXX{B}2}U9;p=@)dhTYuA?#`Fe~e zukc>ML}#getO;cIDfzV|tY95GAY!tl*3x3(bIZ-oimSyBgNJ_cnV@@)5p%%I1xCYVfCHTt<0HXfC#v7@vb~Iwx0A&_e2^qjG_$gLBpKYN9wz+TDp> z*;eLivQa8(sPEaz)uW5z>Z_T+fm-ab+W+lIY@58&nbEUnDv6M^$~M`mta!wlZK0)J z8|;?3W(jV&tyn9krpc1a?wW-_8)ApdtvYC?94Sg~zWVO#Cy4AZ_#wdl{tIBh1rMCm z!3YPn;=&9I?68UuM{Kad6h}Pc#48q9@dK2+>q^524>iMH4{I#4eJ1;gI;%zF#_X6YlRDYM7xve9^ZywiB8Qo-Mxy70x@E&5NlH=FxN&0n>7wa5;u zx8N<;cblryk3(Vg&R)N(@fZyc@L}FRzi{{DM~^xY{GQ|Q-15(FXZ@ejfPenPV|c&* zAt!VE6W{=C_dZNTCw-d&o;&sjJq}QBb`2a!_!3Af{xNV|idzb`JR`pi{;qerlHdX< z$Uzd;>3H5770v=Ds1X{$fXEZk@&eeu8kPuEG7Oyn*;hg)m5he6!yTTCD8y_SFN0Sp z9O7<>#Nd4ogDeaXcX)_B--cz8bkeKfO|F5(@E&}S9n0b&PGypqsLf{tw diff --git a/pkgs/games/paint-by-numbers/hattori/10.gif b/pkgs/games/paint-by-numbers/hattori/10.gif deleted file mode 100644 index f6fbde944b7094f5c7c235cf9a4deb645db219b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3089 zcmV+s4DRzsNk%w1VaWjd0Du4h|Ns90001li0002V0Q&$y0{?`Msmq-Kqnxzbi?iOm z`|gC|hy;zvpo^-o&uL8YJEyRXueVP2ez|J}X$O@H2r$-`$sw``jWStBsqlv-Rhh&q z4~a4vUCQS%ToX5GXYP8t{$}SnuQwvaFZFT$xSW>;5w{m3u{VfVCi8YkNCyd}HrYgJ zS&4b6naR27*$Mh78cGTmiS?J4*r=B(*lGxCMnq=S7n>O7=-RhhYv^SAMELtS+=X27 zvCQldj9YO6H+|Li2xylqybbM~()?^(gdrVXd_In??Zz$M%_z5?L|*sMoKc!Ty072Q zkFSYbzzhB=-J=&zokCUWjyY^M4Pgt3_6XKfcF=-3C;w=yP`e0GTE>y9vORnU0wlYY zZ|s>P2{Wclk{eaFoQX51&Ygq)72JpO=RBSud>SqFF`gM;>C(x3Nt8oPr4W%jHHEqVJcbE>%6_hL6ifV%%y(<*&zq;Uz-kZC0(JsItzwup$ z_5f93uZ!ma?g*w@<-d^68b%CxE+9X&Hd8z~8K&v5CY>IB4Ldf?$AMzm zYFK#1>8hS3chwl0b|E&Uh0~2@9OKi@z0`0C-(8>nDOB;rKmTtzi+=xkC(nL9447X+xy{E2g4Zwv zVS?fr*u#74S%~3<8k$1k2o8P-O&YeL6JUdk=_1QeQJAP-haO(Wm`7R7xT0fZkeHc_ zI>wlzi&>y3m|HnIVhm<07FS!6!}WONTf$(b1~3AK_@IQ)*>_)d{^4g?hF)&yPhXvg ziJ?Ga*2E%rm zT!vQTn2LB3m}izCer9Q=nr^y5f5fTCC#RyinJ1cWj*2Qzo&reZpUkzlYE@G)7^xy! z7CKR?_`Dj;mwuh~tFCp$$KZ&LHY%)ItN$8F#j&_Pn`p8WY}cxEk3vhGsENUeZFhoF z3NA{W@=BCxVEURKnPCDuCNp_mswS-|#)&DnmG+kFt(Dg42BEl3DsD-B;@fR%bNb0| zk>3JL-kx%fv>Kxb8#kJeOVYcjq8R5J)3!uzd2Yyhsf+H&?)pWojkOkB-o`9HJg#oc;b+B}|*AzYgCf)?Kr^vgCG?Eum)mr66!Ni!@p)LMwl zb;(_8sP%zF;|S@}0A4$2zgUMYcGJiF+Y2^WQCy=eYEI4e*gF&pDw0d`Jp(U-H??-& zFS<>0S>yO^bRk`jGQ+POMvL zs%-bli;Re*ytz<0`QWVI@Op~2Ln-9y7dK9P#m3itJ9kwU&3fpPJH#xF3olQ0{*HU2mtt zUCm%psaHw{h%-8AE_3HHQ<(@7tmU9BfS}Wx0sF^3j>Qjts-au>2uGf=?XP_jGhYW4 z^uYj0Dujr;8O+L;EezsMg4qZZ^{hoX7G`XNr;?!y`3JED3Nc+-5?RZfcDg1Z&||NO zSpIa_mLMf>i9kGz6BW}!R{!;ciS8Sf1#iT~E^>;2KoO%E6X>*`Iq8gSL=?|Hf+7O8 z@r2er_X__V7qTSY>OwvVSHx_PoRU@S_AE~KeYGjDaY!_l87!@PFQVI6E;sJB{l{TepUh9+P1tB@Gw3v%F zt1GA3-bkt$o=}6=oY2;wWX+OwBoPT~G1SKH=lR3aT)Yi~Qw5tm(ss zB}{i~I_3`pxlWc9wEuJgW$5r6ipo#{lAyv=Xhm_@O{`56nfDZFM+uovGXC>IcKOLl zMUl0%-LOq3Ri?evd9ZzbRC(3IC>niw%ZAkyeNKk``V^s3 z#b+T?Y6+5MPOBrECP=6H&F>8|og&?4^6r*Kb{0^n2K^~I_b9xyhI43R{h|^hY17z< zu$6pm;_jZtISy4$u!bXSVgD+bhW3mOhGko09gElr6>MvfMa}LWt2M%M2(ywMY-I}+ z*w413d7>R{XiLjkqor20kv%79S#mfj4K$>bMQvr_rdZ~Qpcpxp_#Q#04az6{)4n$K2^c!n$`#PLxi$5*WfZ zw#%(9ab!xB>;mCm@EtF6n+w_J-uAxY4Q_b<3*b4}kVH^ooNR%i5Ms*5z!Ws?X~&B+ z-j*_Zi=C}IdKpjX+LyvLo%3WmIrky$13znA@D@A8@J5t<7>51-#}f3pl(<-C;XhoaYVC z)PFn9Z2zCtT2%;>d2uf$C!e2~(K(M1q^)qb80lAqz)%hFoToUS#*8m$x(-*(pr>NTQMY2snaI@QZw z^{7dU+C0nJt-EzqwTVjT+UR-GJTz$3jJ;{HvX#+=_Oi4o-BxaI6udbTc5Bbw?P%rH zL)NY`bm2X3lBzqRb&hrsrTc74o9@x~aS^M-w&ZPhy5Im8_pLcxZq-`K-~sonzZo9p ziaVFreVusoPRZtPcl_Vb?$W+T?pM-sci|}4tErFHazTbV=H1gZF=(#K%Z3~0z|{FA zdH+t!ivwL(1n0LFJZ@z#H&}m=7CFZ6jc_+dy6G>}W3-i?!l1&OwY)R^?yWYv-Q#^~s{h@UXMdlv*Il8Z zQybXLiW?1!t$1Q@*>WVEd({<>^#}d@>yVE;-*x@?#C!hp9}m56gDXiNRdec?#CyZz ztoo#AUGEtev+B3eEYrum?S8+v?u+~S-hJN)v_Ccw>1d;j_G z9Prf^=lNeAd+axV1cQ21hI(w*f4^sW*v20zq-_+3fLo`45eResrDLxaeB392h*x=V zcY!}5Wyo-48aIFuxPTwnZ?z|Y^@nUFNP6F9fV`J);PHDAM}Oo-Y8XgpBe-UlCu)U< zXBJp#Po{$WCsZ65eJr?IAy*+f$Y6>_dcR?GNr+5A2!KGCSBa*6-ZptxXna!Feh!yf zH~48?Xkm-RgVW}Nc!X29g-ZB__I7}D z=xjgug@ZVJg=mChID28Gh-Ro*xwd_V*M=_0hVhRO$CR; zMO&Z$cW2mam8qjD7a$dr;QnSeD4R11O|@NC~?C`Z}2CF z0hoz~rjFN^c^wvO?`UrESb@1Hi{U7ZT9||SD1F+OWxPm*_gH+H#*2QmV$+9a2^om+ zc#wI+gxg4b%r{sC001HX3r#^oM?-IJAOr&tF#rGn0atQqbaZ8IAYyqSM@dFQZ*F#F fa&%>KATlm9E;k@=W*|yoZXhx_EFdvCIWzz}tDg*f diff --git a/pkgs/games/paint-by-numbers/hattori/100.gif b/pkgs/games/paint-by-numbers/hattori/100.gif deleted file mode 100644 index d6ee00c8589e4ee41becac02ded69d678227eb4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4044 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 diff --git a/pkgs/games/paint-by-numbers/hattori/101.gif b/pkgs/games/paint-by-numbers/hattori/101.gif deleted file mode 100644 index 78db5e6145b1f3d9ad43a6032bac54c6958cf055..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4220 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 SAWC6wATl{DATc>PGypqc{b;TL diff --git a/pkgs/games/paint-by-numbers/hattori/102.gif b/pkgs/games/paint-by-numbers/hattori/102.gif deleted file mode 100644 index 19b5710f5157938c8de075f7a969973a430331af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 LEFdvCIWzz}IZVBk diff --git a/pkgs/games/paint-by-numbers/hattori/103.gif b/pkgs/games/paint-by-numbers/hattori/103.gif deleted file mode 100644 index 41c74adec679683a1a9ebfc0c58296b49af1d4e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3755 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 diff --git a/pkgs/games/paint-by-numbers/hattori/105.gif b/pkgs/games/paint-by-numbers/hattori/105.gif deleted file mode 100644 index 92fd309d0fd59404ce92fefeba2987bb51eaf2cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4101 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 D!J8C| diff --git a/pkgs/games/paint-by-numbers/hattori/106.gif b/pkgs/games/paint-by-numbers/hattori/106.gif deleted file mode 100644 index 812d6748456cd2435d6c59f72d326374ecaa71a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4659 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 QVQwHYIV>PCIXN@{J7du$2><{9 diff --git a/pkgs/games/paint-by-numbers/hattori/109.gif b/pkgs/games/paint-by-numbers/hattori/109.gif deleted file mode 100644 index b2d40ed80f6f3ccc7d50a1f69ee86675bc1712ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4945 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 PZXhx_EFdvCIWzz}Q==g8 diff --git a/pkgs/games/paint-by-numbers/hattori/11.gif b/pkgs/games/paint-by-numbers/hattori/11.gif deleted file mode 100644 index d19f5c09f9c70123c167655f62ae410383ddf277..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3237 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 XE;k@=W*|yoZXhx_EFdvCIWzz}7AH$h diff --git a/pkgs/games/paint-by-numbers/hattori/110.gif b/pkgs/games/paint-by-numbers/hattori/110.gif deleted file mode 100644 index 9b834d59a9b25a1b626b16ef5853ea6da0beabf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5011 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 diff --git a/pkgs/games/paint-by-numbers/hattori/113.gif b/pkgs/games/paint-by-numbers/hattori/113.gif deleted file mode 100644 index 011bbf0c20c39d9e9fe8ebd9823025bf2cd7b27e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3982 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 diff --git a/pkgs/games/paint-by-numbers/hattori/114.gif b/pkgs/games/paint-by-numbers/hattori/114.gif deleted file mode 100644 index 6c42b061c8b705aae5b9d31f310f7de4393b4854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5715 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 diff --git a/pkgs/games/paint-by-numbers/hattori/116.gif b/pkgs/games/paint-by-numbers/hattori/116.gif deleted file mode 100644 index 0c5455b4326d5d8ac4a7601cb109c714d2576c85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3090 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 diff --git a/pkgs/games/paint-by-numbers/hattori/117.gif b/pkgs/games/paint-by-numbers/hattori/117.gif deleted file mode 100644 index 8a63ea170d232d40013a4e7c2b1383e23aad5686..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5081 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 diff --git a/pkgs/games/paint-by-numbers/hattori/118.gif b/pkgs/games/paint-by-numbers/hattori/118.gif deleted file mode 100644 index 173cd320bd74a65509bc886ad22249dc1bea9952..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3738 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 EJG<#uGXMYp diff --git a/pkgs/games/paint-by-numbers/hattori/119.gif b/pkgs/games/paint-by-numbers/hattori/119.gif deleted file mode 100644 index 77e4f2e3ff934f6addeaf906143e4fc0c5f65286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6761 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 LEFdvCIWzz}t~t-X diff --git a/pkgs/games/paint-by-numbers/hattori/12.gif b/pkgs/games/paint-by-numbers/hattori/12.gif deleted file mode 100644 index 449430ae7821d5cf4c62aeb994d4ecac9eeb5ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3590 zcmV+h4*Bs%Nk%w1Vfz3C0e}Di|Ns90001li0002{00aR*0{?`Msmq-Kqnxzbi?iOm z`wxbhLzX5IG%2$#t@1wV%+jt6<8sa4ef~QMhkzJLcMK+dOki{OY#9$RDUynNO%2;3 z@hj|#xe+Yad)|%J*L2hjufpAOx4Di^8dqzu-&RHk5jSX;CslZuh-gLD7)P}Tg-1DQ ziB`r)_!x*OVfYt%mO|=PdTN@Ax~kgB`sx}BJ1bjDduyAE%PQJy*f{Y!cX$c8#8(vT zS-Onr=$y>VH;5b!o#|LO9jGbno!pk^bhi{Oa$XVM2ZP@3z79410I%1%2fF>+kN^gKY;MzWiZg<%5%PLW|USuG_kpOPdyXRAia_{ag6>s#*o6aT=oxFeb=Y2SAX*rda4r(3;EFQNb{h@b#D?RH zIwI#wk3RkgWROBa<(NyHv@|3b6QWpRjZBK>p_3#g>A;dx<|rk4#mK{6lRel28m!)Mh z*2)>0WQuo^QM&r&D@krDq$h5)hF2S%4gVSyo{h6!I>(&Ug@`P3=IQ9)YpH43s;5|$ zCSqjV!iuYx*QT>=l+Sp(iE+xFr!Kk5swkCyJKl?Lf89L`Ua@RhJ1%-sqxA0 zW%R3y7}eaX%psy=#cFxN=>P&6HSfdv=9N--q#4pt)T!WN|Mzch7c{q3POQ@6BVi z7Yk14iT<*jHQ`tbe6yO8mz|R19RK9}c;2kGz4*b9TfX$??s{&wbakJOINYF*s4(do zA`1vR2Q4Q-Bo5t39k+NY32jgLJJ3}5;b zXsWx3P=hR7mG+F~96s%@bM$+Y{P4%Y6V6b783uj`4F}4JU=2*rDTmjT>aMpoWh`#zDRY-Cs-P``r7M*dZgqgFTF|2iE)NN zIYi+$AE~xve)ExYdm0nUxe110B#(Nd8}m*HFmM(!I0xJzDAia?eU>t80{!Ja=&3q; z0*;!6AMUVjHoFP;!krTlYPldCr3ZpO?DbioT=neM&-HDWrkB_B5ma1 z)Hza?mQ;N+gl9rk>e7m}BE*IEm0tDioyj za%$0RSx_`8&X?%4>QjAs&nj9fXi@!;S5YRgqqPuK}r zldc|dr}*T@wYM4-l6*DhtHx!+BT%uZ?-1-+9V=6q-8B_wgk@t_T3BG_^)*c0Rb~N{ zwv--4JzbOJXaCc;ttl~oR68wyQp++Z2Ck#71rBWGMMlh-%sN#uc*6t?z2zh~4~Jb-wKV>xRY`-tx|sz?VEPMa`t& zbS%cLWjr2!4VqrR!k1CRr7&Y7tlv+dvB4G#5cqFd)4#vHsU6C<$}L~?>rK^M!QwOllijFnG4yBYXEm_rHAodW9edshRd)XO8 zHlLZjXJsqU38vc_bh*AA1>0+L|nm;jr2cGJ8=kls0_UKVx zdwRYk~ z{zknWc%r^i`e-d$Yk*LH-1j5vHyYOGfY|qVga?4r zC4lJX3(aSFZB>B^Sc1d%f3H?}85n-TW^L8xe;EjY9=L#|mruKq3Rh{+ag5tvYp)`w5{HLB={gjju{hKQC1iZ<9Zw77|n*kg;xgc#b28>je zXDx<%R7hnhHh|1XUtfr6G8c`~XoQxwattVoEhc*)*l=2CV&4dcL)dG77+luJhoE+G zJ{W?H=vwNijPbx$nFnj=$XoKriS+n-<~M_wn2v>~iS~GoWmsGK$c?;chDa!mAjW&J zHf!6ckpB344%uyf$Z~RZIjh!;g~gsX7=l7)oxRtTm89toi1|g`8H_uLpKd9Z zI7FV;>7T7BluTESL}{QfnUF3Sl^*$!SO$&YIEN5=ky3ZpTKX%hLMHOit0%9%Qvl{^NdK`Nv}N~A?9 zW5wA|MyjMsDxtKLC(`miDZ!*uN~H{G3_@dDZXjZLAV*0?LvL<&WpZ?7av(A;GcGqEZ)PA$VQwHY MIV>PCIXN@{JE`#Y#Q*>R diff --git a/pkgs/games/paint-by-numbers/hattori/120.gif b/pkgs/games/paint-by-numbers/hattori/120.gif deleted file mode 100644 index 6454c4168f6520fa4fe2aed505bfb1751a03d2f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4467 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≺w3-3giwdZAQSpW=v}XsMYU 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 diff --git a/pkgs/games/paint-by-numbers/hattori/122.gif b/pkgs/games/paint-by-numbers/hattori/122.gif deleted file mode 100644 index 93b1843207587aec5cd660c534b3b94d36650980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9685 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 XE;k@=W*|yoZXhx_EFdvCIWzz}_GxW_ diff --git a/pkgs/games/paint-by-numbers/hattori/123.gif b/pkgs/games/paint-by-numbers/hattori/123.gif deleted file mode 100644 index bb797bed2fb37ec8ef65d0fe0b95150d2facf5a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5912 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 diff --git a/pkgs/games/paint-by-numbers/hattori/124.gif b/pkgs/games/paint-by-numbers/hattori/124.gif deleted file mode 100644 index 986aa23e0ed734ce34f46736c783b84c20b00680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2738 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 diff --git a/pkgs/games/paint-by-numbers/hattori/125.gif b/pkgs/games/paint-by-numbers/hattori/125.gif deleted file mode 100644 index 63fbad663a8e7877cd36483363c0f37e7441e8da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3867 zcmV+$59IJiNk%w1Vfz3C0e}Di|Ns90001li0002{00aR*0{?`Msmq-Kqnxzbi?iOm z`wxbhLzX5IG%2$#t@1wV%+jt6<3JnpI{G`rfTyC7c&iDKIc4(Mgvy)--||{zzIxcG zcPc%K9m7>QJ3a53!!G#Ce9NswF1o&?U+rtEd<+;Bfi-wn*tY{gsCWnG7Ke1m!-!}o zM9DX)hp4$oCm9qdnnJo(dTN@Ax~kgB`sx}BJ1bjDduyAE3oF_iiFs)?(a2dPVF=u1 z2DD58)`>RUC!P6hTxfPYtzErM+C~idxW_DFevY0VTKP8~?#?c5ybc~uo|m4lzi&bB z?N7x^v|@9h*KS^VF2+ z%&b}ias(ReXU4H1b#)wjHYC>(Xfc$$YLcZJqy~jX{hD*F+q`=TvC;B35?GZZ`0`^4 zVj)As{Qw%p2^ra9s1uLIq}+}$V||;Q`LPOmZrG-SEqf^46{QOiorjTq?TYm)*=1*o zt*w@8?ZVV}KDH$I7s#Q*@3uZvIkj(}ihoks0yxbx*2EKI_KLc>(z}I?XQ}!qo9^qX zlV>+vLHp$=aofYiWY;`-&FD{8U!PpB{{8&>`~UAQAA45;=UssT9+;U_$4xb#Y0|8A z9u&|usGNcnMu;GG_t^*Gh0=X!V1gBns9pycZe<;J5xPegeIaW2VqKGQS6qgd;09Zc zIPR$9DYUJ!7LON^s6=nU#pt4qNur1!lgxP-l`m3GNoAE*UfB+4dVC@pmSYf!q=jLE zi6D4O!lOysW6agIx45WMRQZCo(6Pj8YXEI&ts*8V-&1v z{5ES3-9&~ehy?!HE3YGq8Xc)u=L4>yqQl*H+nA@!_TPc|6}9TE zTTbxbr;Gb~%rsjb`t73wt~=>u52bkG!Ut~_(Zu^`JkaMEX(Z)x@80t7&gZP~xy^Ep zd+ohnZZ%j`3IYcAiwsPs1f4LWN*u$uqwDUT6Hjj7VO-wCbU6Mk+3EPRG<+Tc*G>KqJd$+ z;jLD8HVCe+Rx6xf4?#35g#Uy`hrP=n^Df4;FEWjXFPvd;HmEimu$ zP=pSv6*Hoth+V<)guq&39RJu2@vOv)_Yf7=B9+5fc@Ay4I-3;}Nv=w%ZIO_yL#SSu zuuN)llMmwHu)f1d{{WDT_X6OyLfM~Dda{%OJS8gkqe>QD&Xmb|rCwqwMe89ENXavt zEtLq&*@RD#zB`}yYSr)*r zr7m1f)Pg~G7co+LtpAt0EM_~4w=qCnG)KlP2A3Y032qMVNebl*#Of)>m-S0ybQ@_; zCc2$}`m<|hRO3NoiaL|Jlt1R{N<)1$Npb2_sG!RxER8BZbfVKOZ8?l>64O+dJk@4F zjpt8U$IqG06QIvLCeKVas)2&AX)@d)QRBANuTsxMNL9#&>?R0(nh`5Fl_&a2XIF@F z6{W^ zR%{-2veMh5$@Vu`w-y$y;WQmUx9LM6Hq3&lO|ALzC(^SXqoT-zYHTQ~)B|qR79Dl$ z4QXpx$?-LrdHXPC0CMela8)}iT*Y@g(HuPhyWTj0%i#r9?K&wjKKT!K@>H0H2& z%j@9>(@~l=*0GPtNmbfW&9o-Iaa*JNSp)-5Vt%#phJ9?{_p((*E^e`v^Xt^y)VD{> zy=sZuTj9Xwbjs$eW-`!dWH9Si%<-)r_{jt*_ z*73ICtltgqs>T_sz?ruZN{v~%1YA|rPB*dr{cj=XIm8p`SFN*M&3MiX-P+bScpDx? zUqgJ|_6T>nNpSFr=X>P$CV9zEj%b8a9N+iecONf4NG}<(egl6;&Ha0GLC_F`ChW6n zRR6B?ODEKhJ3sZakM8Ln$0_B(0>{T0JqMA&oK+kbcfEVg@`qpD>RH!#*S!uVg9m-a zZ-CE@s$xiM7v1S;-xaXjMUfkU+U1*b5w)d$NSiC;#{q=K%?)bd?(# zKh#T|e#w-FJ?mv3diw$1_OWNR>+OwY-mA9tlutcAgwJMn=U(&3A3pAXU;D{|9GO@z ze&*9_-Rb|5>(*BjuCq@D>T}=K^Io4b(X0JeR-gQ@mwx!SA9?nFUH1oj|9?#1ZvUUQ zKVbG3C9w0460>(;+C*nB^?x!4a{_2*<5Ym@Lq7^wb)<$c{g+AyIDaN|dE_=>$;WxX zmVo=GSQTnBglbpCu~;)ff3eEBDjFPr*KTie1t}W9p+{?SZntL zat+uL>z8cKmnU^Hc0dSqHCTc1SA>H#DCWmlO4w7L<%G*-gb9~Yl0tBl z7Ki@QB9MiLY&e8ysE2UKhidqRf>?;?R*9AviC1U>pBIIf2w*LhCx>Wpeg79?xyFf@ z_=f4{e}tHcF4%z>hjdJMd#Lz`s@Q~~n2B_ki10vxv$%Ro{jIB70*(W{tbXrpogY^hMKxmMX zBzV|JUkeFsUt*0Qn2gnEiJ@?g1crVINsDC0a}9Zn56N!>v5TKbkwM6c@Q9JpsF68n zgPUlP=of2M;UKw`QxR-_qkWxvRbQzHM z_>XTnnT)BJRq2@@;cbZNeUb@|OUZ7Ys9Y7fg#uTYW7(N!xS76~nU#qo9jTI3iIdGZ zd9tUP7DbaOk&+Xso4Hw>M3|Zg30pGBmWN4=zBij0d6~9}fs?qHvPpi_8I6V+inPZ% zcIcPbnR1$WmB-1Nk!hWvDV{&5odjua5TPsSX_?TOoxJIo-2X{`m>Hhl_mY2Tiz_LK zwaAi^x0}Zqo6ebw+Bk|yL7S{epvL)`1=^SY*_;d~TEG}3j$R77P3)f=)M|>sh1s370wgqOLflS^A?l+MrfSq*%J8HY%pQ8JcN1dui9A zT3U=$T96Qkjv7j)aax-d3a0cKbD9{Ya;l`9iKHYtrfMpqZQ7@H%ANyBZ$3$$b9jA$ zG^ojGs7HvX?dhG@M~7*8kdLZ`D7tG-x`Ub3sHORlE4f&ri7JPdx~3@@s)wqnqxq=_ z$ehwyrq3CLuBvu-nxy%Oqk$@^-C3Hkc7ZC|rMh~haY?IpXRCf%sJZ%;Mrx|aiK+rB ztY1p3zlx{2W}5nGt;Jf3ts0j$8I>kTsItPXUP`CL39G5epHQck$2z3t3ZB_Yt+$$v zIVqpCN@@3sulcI4`^vBV`lOYLDgG+31Dk^Pkv5rj65l|u3(K&g+Hd^EC8XG}6HBr1 za(pP1REtzlnos}$A^!_aK|@DFZ*Cw20}wF)00043a%psQWo{s1c_2qgMni9Ic4cyO dWpW@gE;BASAa7j z3zYb`itJZxJdHa|O;pm0J^Yi!roCb>q@R-9fC|TwydpEV&jFq3KwbHhiG-$#X0XG-n;Ge+DsdlEvkzFN3F0VsAxAfg0y8rM0UmITe2Vj8$`e&aTs>#C2edI}_ z)pB!1_+U2GU1(iaD(Qq8hs6D))@q(fwjpE9m4O?HudQefIuhQ8$5$-Q2wP|kMgt;A zgO$`GT1wT!lZZh?RB`*3+pn(3VYM8GQYN}JB z#tOoVj}`i+fxSw4WUWWxM{Kd!rLo(Md;iF}%Y4R)z-yhr3Onsa&!U>{ zV)%~BaJde%b8dy6c2)4F@9mZ#lS>X5Ms6P08?X@!j_jQu0cjjc$;rZJGJ7nqT->$t z@kjE${-$j6jymIfb9g?VTHmq}OEGcL=p8*N(j5Craex*xZM25CPE9qb)k6JmloVdw z!kpbID6o=2JDaejkd~d#)?eQec6)9E+o9HzRRbEqV$aJOsQl2~u((zKeF@$%#Hcsm z!A82aJsK8nc#$rmjbN*0H*WajT>m?LSyGfYj!xg2xRn=1H_h}HLZN?#d6^paEvtgl5o^h33!cIYFq}mQM?ml~+>hFrZzP$3g&UtY0s<)iy28>@X zcktQE`mj2r@45Lou)4|ZZ5xwcZ}?}zjlQE=Rt41TiL39=x7F95zRNf}FL>LR+poLc zB~E|w(;nmo=syIeO?2Jc#GpI}L04hve^HyD0{@r4?d7U$b^{OcGI&4$+DmF1yjsnG zSHcUbP=pq=kpB)AJ~xL>fL1b)`yR)0l?BAOA{mREIH91R?35$43L}MD~S1Y># z5r=@g6}4g*#7Aw;j$drxU5w;M2gZ?&c}(7nl(>d9s;r0_bPXcoGPFoaGHuehQEiYl z$xLce3;TK>d`^~0Od3m+#UdrKOnJ&psxp+Cbd1baIZ0IFN0!Her6g%tOIGSKmaW94 zaeUbuU|zD9wv41OX>&|u7ISFHlua|8xy*u@O3*@J@IZ(+lRbN{YhyO?)!5o8B}gKhFtHa-!^Hic4e@-zCm} zB&};iWT!xRIfBeN)c=JdTU%nl0m`SDQKN?FXGJf@ujq}1U*f@IA&2!!eM{lqKIzgwgwG`U5_tiyCT}Y6lT7`ts^bxPs#eWwMtzn z5{LWShL%TiNB`9;a$lp{kTF+?&&@4xO9|WKRu{FdHSPkpo7|=vvvt&6Uw)VeE%cIb zcOfmRdyz1+E^0Tn<~^_T)|fAbs5 z{yO)+PhhYQ?MmQK64t%}J}zZDtlcs3wz(74FClISU=Wv=!WCBWiUnIk;h?z1E}k$j z+m~VrVKQAYDr;{ooM09=*npv(abT@SUj^q_$x9X>hkcAqAQxGE!4$DJk;TaZI+>a| ztTK*E8}hCnC)JYvb774i#qKC8mvazO-)`MI0iW4`= zET1{N0IA`tLp|$LZ>8Jc4)?gr-8TDij!EZ^_pb}_le)Qwpz;p*eNQAeZo^&R4PGyppqEaf`@ diff --git a/pkgs/games/paint-by-numbers/hattori/127.gif b/pkgs/games/paint-by-numbers/hattori/127.gif deleted file mode 100644 index de2bdb20b5149c27e1fae724046e25b6a8f63a9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3771 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 z 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 diff --git a/pkgs/games/paint-by-numbers/hattori/129.gif b/pkgs/games/paint-by-numbers/hattori/129.gif deleted file mode 100644 index 22d05edb1ca08b9459551a9633ee242b591aa693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5176 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 diff --git a/pkgs/games/paint-by-numbers/hattori/13.gif b/pkgs/games/paint-by-numbers/hattori/13.gif deleted file mode 100644 index e023d398212afb1f89255af1c411adb35c668a1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3003 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 QVQwHYIV>PCIXN@{I|q4~7ytkO diff --git a/pkgs/games/paint-by-numbers/hattori/132.gif b/pkgs/games/paint-by-numbers/hattori/132.gif deleted file mode 100644 index 6de7ed5cd4325a1a54d8927f5a422365f70548a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3997 zcmV;O4`T2~Nk%w1Vfz3M0e}Di|Ns90001li0002{01g2_0{?`Msmq-Kqnxzbi?iOm z`wxbhLzX5IG%2$#t@1wV%+jt6<1%{0d=0z>PsF0Z*VFxk%-nF-ggT?kDd2@XDwEHu z@k`2Hx7se3dM=O6YOD0!ip8PgI!%%W>(TAE_n!yYH@Bu`$5uEMkw|mX*ibR*$Mh78cI59T8etAn##KB+6wzB8%w%rn;DpkyPLRE`6$Pz+uJx<$@3c- zJjgY{{7i}0d#mSj?CWHmdF>pnOb4E(?TtBZek6Uqv`j3FPBuNP&KJ*n=pupvfA1z( z|Ig1)kAVKz8Qg~u(Fhj$6egrcP~N^-6lqnwXffjmRsZ@hdUTX8q=!@yp&dlmsGmfK z3@@l?2yvpwnHpZ|NLlD)w~_!K!hreHB};rlW45Hp;ikK3+>H4YXzyjwpcbB@5Fr(* zNTntR6545XB}AYP$QI1{0j*Z7AKPkt>z1QSxm7)`y^B|xQApuHid7j^p;@n01?N4i z^(oG;Ie9vkS(s>Ks)#G+?JFr8<}#0m0tPv`>{O_r6CbUh7U||<4C^8k#9)pE*I9rJZ2_>SvjT>e*8eF9y1& zKZ4$XWTZ(>Dru#Z((>pDcs7ctdWCknntp&Tn(3fla*C>Jl$5qZ_nhd5MLk zme6XhgLwMqbrixTB2!(#*i5L~@Nz38!2kM4PE+4RsVcA7aaJL->McrYuRLD`Z_F+*|y7YK^anfaHlxZ2qei0 zXNL{J7p_d(#9kJ7;)Ep^Ycs((<6Nb|#HHx3vnc~Sq{J}a`=ikqZ%lQ@7JV!V*0JD4 z(p*e(9WR_S`{gdX7em)&bgHG@<<8u`EhVud1}t>FIsb>{hAl_kL5tqX3-sTs20ic4 zb{B0o(QUu%Mbcg=ixbN9LVPyV_Wy-oHoqZTT{YEI+U2##^mX1zY}tNQE#2xysJ7*9 zTg-35b0;!8;IJ>vcf~4Wew%cvH|=zpk=Hr+?|4)0F5@IheYm2_ntZO_At7$?&Ab=R zIb5HAT^EGRcTc*IW}Z%S?yR%D`uCYT0^+bDj?DAkmw%78@dyW<9<3}txj6m)i!Zsy zxlekp3n1ZiHZc1w?|%$zApDXA!3aw5QNs&dN{X?R3EmD~3M|_JZD&AqMUaCC{9p+E z6gj5dZiLwjUkhL8LQ83IgX<$94F^O#6{3uVCe)!1J!q6|-B5%OwBZTi@I%~<4Q?p} z;>k2<#3b_Sh{6+9ybLI-8UJ!3hA`|R7r%%KElRP5#@QknXH~KnR6*GPZpv}&cSh4bQT6HD6BuBE_$|OrQo2L$VNhLmvT!&9!;LZ_`K~jrN1DL<&@-vIK~QRwW1(|UH@6ASR@l&% zfz+AdkQd2oK69MF9HKcB*SrpSG(f5bfo))X&jXoQwIuls6_3X%%XuTCZt!L!9CoQRHQlH*!cSZFbK;73;k%qN?SaoVyH?YvSRw|+!;oe)<)zyGD z2AgCRD@pGL2N1db_*ph+VtAh zKWl2^txrEySg?BB&AjhD@GadG#1WZs^aem?6iCXF24<1Sgnnp3QmuZ(3Rr;NqN z`mZ%-T)k#C*kunP)rbhp;mTr{d08EE@^+NgS(f90Yxc1E*4e%#Vu8+~Sme zPjs*Kp8o?E+L<*9u8%S6t!Dv^=b@1A$;$O8`lbwNdcteKQ&N(Iv&=vHaih{5jxnfN zCt~>~Ce~YvOmm>z!|K$Bo_qH#fm22yb-X`{4E#_%PyKaD+$P;SI;P!7GmO zfKQxC6rZVQnAgBtgkwzmVvaE&K>=7MTDY0xB4nP>dsI`6s9 zQU4xuo(p~G6t9LHk_iu*`|ZBz+OxcJPIQiUJO@la_a2%kD`^P>mMe#N(7|BxuB+Sz zBDdgX8i&)Hdwu6XXM53q{`R)RUFvS9`%h{q@@_jFDzKRw5=L(Fzvo>MR_FG{l|@8o za5o+{@3o>9UiTz${WEA^n5rHR2xUja<#S(q=M{c(xkugeqX+%9{S`<{4jvy2dDFmK z58UQfoqepY{oM;+s=fE{d0pmU*uRVGvS_BuJG~{!LyCNuFIW&~)Ld{+ZwpMgRF< zefxQ%JpR9bc>fnuZ&EK^XMO9Yf5K;b2?%yULV)OGfVoFX3`igp7=8|jf!!y7*r#rU zcYQ0fKdyIuMPz|RP=fPkA`j?O5jbuW7=Q;TJu0YWEO;jf^-o3zds@PO5D0?$mua>) zbzLBS>^FcJcz^0=gE<(4R4|0zSA;2;bYPc+Kv;be2!&U8gyA=ZxA%497lKCUe^_XO zpN3gsuzFmmfHYWhV2E8JsD%*dhCSAQap*9qw1X?ygHi~Gc6Jyjm}_@9gL#OAdq`mu z)`dj)g<`07il`}M=zfUkgoy}Mbf_uw^=FobD`&WPxYvPg$cE-;YRG0Ke*ZWzz~_ZM zSb+MLT%Bo$cWGgW`XD=q$m)uXo`q9jFzK@?Kh4x@`BA6gU`r` zeFj&KXn$4Mg4y_lkA`I_r-{+`fvK2^@F-N;CxrATdhI8JfhFc5%fkQ&L69I}M{ph_o5jq6B{tXPsH_i;*) zk|L>Kl6Z_SDUqG%j-p7CFG*#Pn2{Svi_v(F^5c?bB~t*DLP{x+r~lZK2I-I7D3twI z62O*&DjAb4DTv!>j1GB|{Y4O1=Yd#>E9_{K3^r>O`HSV}g}V5ZHF=OevlF66Rc~vzSkELgw zpShV;=8G#?a*vpX=edl6X_se7m%@3J(;0<>=$W)ujxR@=uK$UgFqwrWXr2~xA2i9A zrTLmh>7GWniW}&b*a?{fs-Mirp9lJ#kHlvor=Y3XZy=|6wb`7eX&P^6oa5PU;0KN# zh=86ZpHkV87rKNannCerq8^H(AnI)!x}Ov@p_y2rAgH1k$!)PohQ(--4qBc%8j`VB zr1iOPK1!58`i>g-ZWiizNP3~inV$_xms>e*P?`%oQCr_frE58Z+UcY?r==5#eqVZ} zM9QGjh;C)7lU}-l2AZPOS!x|un}RffXiA}T%At*RlH-%7amu7Z2BQrGkT;i8a2lqA z>ZV{SE}|KtdWxfbx~9{Jo7+{XFG{9tX{RenQE{1;RsVXUcFL(&H+GEqY;-D(|EMMq ziiDmD7@W78r8-noN~!z_pk*kkn#ywXX{v$hr(VgOhT5ioYMZ_=s%o04L_&frCuzy5 zq{|wtHVUh;nx?=gtd)3Z#ae98Dyi>zCC%EcyxN|O`h!_&tmuiX`2(aN$jN_MJR zpa|NkE32~hSr0FZsX{uM1xvF%yN^M;h$$PX-#gl>&E~XE3$;-zwNoo|ciIF7OSM@$ zY_$0-X?J5;qqSixwv?E4<%2;eJGN=NY`Wo4WV0ksCMS(l001HX3r#^oM?-IJAOr&t zF#rGn0atQqbaZ8IAYyqSM@dFQZ*F#Fa&%>KATlm9E;k@=W*|yoZXhx_EFdvCIWzz} DWX;QP diff --git a/pkgs/games/paint-by-numbers/hattori/133.gif b/pkgs/games/paint-by-numbers/hattori/133.gif deleted file mode 100644 index 04fc23220a7cbb7394afc0e880c22f50e71490e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4241 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 diff --git a/pkgs/games/paint-by-numbers/hattori/134.gif b/pkgs/games/paint-by-numbers/hattori/134.gif deleted file mode 100644 index 1de7d7a77be4a05254ad70a3763c4906e70f7fff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5459 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 diff --git a/pkgs/games/paint-by-numbers/hattori/136.gif b/pkgs/games/paint-by-numbers/hattori/136.gif deleted file mode 100644 index d379ad17477897c98cbbe89b98615adc64366fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4530 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 QVQwHYIV>PCIXN@{J0;%i(*OVf diff --git a/pkgs/games/paint-by-numbers/hattori/137.gif b/pkgs/games/paint-by-numbers/hattori/137.gif deleted file mode 100644 index 75188be41e9978178acc84d199824d59e96b5d54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3693 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 LEFdvCIWzz}dQ~nx diff --git a/pkgs/games/paint-by-numbers/hattori/138.gif b/pkgs/games/paint-by-numbers/hattori/138.gif deleted file mode 100644 index e6461ff05a7212d7947567d1c9cbd2f8eb3f3956..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6083 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 KATc>PGypq>XgRk4 diff --git a/pkgs/games/paint-by-numbers/hattori/15.gif b/pkgs/games/paint-by-numbers/hattori/15.gif deleted file mode 100644 index e21dd84df1583234c79ba83e3804f3fe665933f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4373 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 PZXhx_EFdvCIWzz}2@|L6 diff --git a/pkgs/games/paint-by-numbers/hattori/16.gif b/pkgs/games/paint-by-numbers/hattori/16.gif deleted file mode 100644 index fbe9fdc125b3b379ff00aef9ba9bf13c8df6a8f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3420 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 diff --git a/pkgs/games/paint-by-numbers/hattori/17.gif b/pkgs/games/paint-by-numbers/hattori/17.gif deleted file mode 100644 index 2ebcfb199dbc64e83baba342aeefd13121dda529..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3861 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 XE;k@=W*|yoZXhx_EFdvCIWzz}0jZQX diff --git a/pkgs/games/paint-by-numbers/hattori/18.gif b/pkgs/games/paint-by-numbers/hattori/18.gif deleted file mode 100644 index 138807b09828209ab763cfaa58c544c7ab7cac50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4463 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 VAa7Y z6!q;2y*TccNY0kE)piaHF-Ne{xtN~3-}B~unHZ-h_oo!d1!r>QwwQS4*a-P38A&;5 zS&4b6naR27*|-?`g5gsLe4J6t zYgc;6s)`&gs@N<`}pl2$$UKV`8?@O=gfw*?8wwbGhR}CN}HAxc>|)US$K%;Omoq3O8pG{p=ZM!JI~hb#%|r^%9}HHggo|X;meGYl>>UCM_benjpS{dXY>&b z0ew7vxFc2d?5DC%Zwl9WXXeMZ2~%n^uj03?9i`ZU zF^;HWk3RmGOJ%`vS6v`D4g+M6NM6L_Vn`9y;d@KwbQO$M+S4RT)9FLhDB|o`TX^72 zNoANd1^D4LVD@IFXazlIS32y-DIuIiT~ucxSRI6Begc-r7NEF^xfzpfrpX|iz3F%8 zok?D}C1H``#i*i$PP*o$jVfs(ZQ5-b;s%+bHfkYu%0*{6j}C;Ypx_PZC!(ANx++Uo zVp&^yx{^7Xn59`t>ZHHgw_B;lX$owo$^RZpED2*Oi)^&Pf{JOgJmh(5w%Befp0(7P z*=2kE5xCxd8o4K}Sl)ii=BFKX=x%&Asv*_1xviV-v9PK#+#cD1*51Cx;=62MQNlMa zW&V--?!0MwoS zDq1nwgSwLlb$K$)u^|%p5ITQW=C(k8?!n+aCbkq$cYT?sS7wAS5y~D)70CdO>Kkn>xuy* zMnYk^3P2)+#{Ax9C=d28g`1+B4R1KBK?SQ)`O4o7eW$tm)ewg->|tAih`-G#5s4O@ zp`@CqFsV6li6_+I0Z~Yc2LEbtCH`>W7B@jfaA8r2j=Q22#~2bMer}4?bDI&FNE*rX zD`YD)9ueL6pgQu&GfzWc4wH9B^_34#U!+7evWF5cQjCMr5+Ij0s7HP%Pljd$Wc?sF zF9c!EdwJw!C4D!^r2%GTJj+-qC3Z?wit=8nT;(W9>B?8OGM3#kB`wVY%UhEi#g0@B{LM2Qj*d5p@pbTgqX-&rP`G7#~GYbnz~u0eY}~RC^AJ6 zFWUwmtUyg&R#TnqY-cRNi5z%#vzW$A4u1Oc%yPX9V9r#Rble#oZn|ey1SRKVQnnLO z$a9{++~WvC#viN6lK+|XT&P0VNlS}f6rk3`XhyR*4}VsTV^=fiG^ue?l%aH`RjUw5 zKMEa_QQ@F(+)yJQ$({PJGklEc=|d^0o>FekPdbIEQQzrNq;gc08vQ3s_j%7N^wV5W zO{qdssx_;MD~qpas#A4XPLnnlyOu4ZX=kR3 z_s#aY?LDl6>ziQF#+Shs-Y;k~j9lMJQnwl&twdQm3kly>yQ^hnWFp!a6^~eYb_}eG z{adc4pa{g|?c9BBd|~kN_`hiTaT`qxUjlZRA_K1Rkqui16c59{GUhCWKWM@UcXrAP zYnOeO{H78nYQ_M@ak_S_WGinNhFM;5Ji54)is@h}V7OT?>{w98) zd$`Dw8iNFuY>3Ou=}6mo(-@{T%T|45JhvIlV-Am|cb(ohzZjZQCh3;{*5r&LS-*F# zBC46uU=oYez0Ef8u|Me>X=Aq9_4MVkqs{I4YFp9c&MUL)%uHc3mB7&j?{b;9-R8QR z(&e3pZTlg)5;d$Qwj{P45dV_a(h7I z!4C4ti}u>FH@4=V7P-oi?q#-DUA7jF=Z)bWEwexQ=-+g^+>@;KbJHE;e)m8D001HX z3r#^oM?-IJAOr&tF#rGn0atQqbaZ8IAYyqSM@dFQZ*F#Fa&%>KATlm9E;k@=W*|yo PZXhx_EFdvCIWzz}wioH; diff --git a/pkgs/games/paint-by-numbers/hattori/20.gif b/pkgs/games/paint-by-numbers/hattori/20.gif deleted file mode 100644 index 0628c30657c8527b370eb2a02343fef14c634ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4176 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 aGA=VNHz03jAWC6wATl{DATc>PGypr^-9S(P diff --git a/pkgs/games/paint-by-numbers/hattori/21.gif b/pkgs/games/paint-by-numbers/hattori/21.gif deleted file mode 100644 index 8ff4f11e213a4ad83d3ecff314ef5e0493341734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3855 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

sW97*Ps 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 diff --git a/pkgs/games/paint-by-numbers/hattori/23.gif b/pkgs/games/paint-by-numbers/hattori/23.gif deleted file mode 100644 index c3fbcb4e15a2a56e9b675bddfd67b645d5f2ef78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4414 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 EJG*kt7ytkO diff --git a/pkgs/games/paint-by-numbers/hattori/24.gif b/pkgs/games/paint-by-numbers/hattori/24.gif deleted file mode 100644 index 2b93e91954a1f3983995fa5701daf751517c6654..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4225 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 XE;k@=W*|yoZXhx_EFdvCIWzz}=UPlm diff --git a/pkgs/games/paint-by-numbers/hattori/25.gif b/pkgs/games/paint-by-numbers/hattori/25.gif deleted file mode 100644 index d91b69a2e137286c3b64731d52cec70494170f91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4168 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 SAWC6wATl{DATc>PGypq$Ju4^x diff --git a/pkgs/games/paint-by-numbers/hattori/26.gif b/pkgs/games/paint-by-numbers/hattori/26.gif deleted file mode 100644 index 4b84b82bab6e7a38c6727c17043fc6f58097d643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4192 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 diff --git a/pkgs/games/paint-by-numbers/hattori/27.gif b/pkgs/games/paint-by-numbers/hattori/27.gif deleted file mode 100644 index 34b7f0bbd9941741add0df1d389332d720ae06ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3981 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 diff --git a/pkgs/games/paint-by-numbers/hattori/28.gif b/pkgs/games/paint-by-numbers/hattori/28.gif deleted file mode 100644 index 6397db1fc683d0702b79b10f15612b8228ad938e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3797 zcmV;`4l40SNk%w1Vfz3C0e}Di|Ns90001li0002{00aR*0{?`Msmq-Kqnxzbi?iOm z`wxbhLzX5IG%2$#t@1wV%+jt6<8sa4ef~QMhkzJLS2P$8OC^%|bpBq=Wbk-}W~II^ z@ms1ISFx5jYE7ECWVUpj)~?}dt#^0F=IubR-xk4_Mkev51QCZ9$mLd4Xf?rxCdX!RHXNr2Nn##KB+6wzB8%sNDTZ?ona9g{D_XHNqg;7_=jsF@u!ioqoWF(FxXHg7D(AhD3 zCs{TW2{WQWi(*>R1hmLz%9$x+`uxc=U%?>9Ru03WQ`18h>L&UO3Up#a9YvWX%vAB( zQWs4XK9vfVVOSU=N}Bcf6CKI456`;wsBy$tWXzP2Wh>DuUQ1&8W))hqYn*J12+L6< z0wM^-9~g&(3Yn?k9gjL4J$!KQ2FD#&4DNS%*W0;VE{R4O=+l(4DCWtdvx z)FYNZZaJoxL(Ir#jBd6G=bNsmDa1lx(j_L30J6tthLaTIOPOdYmnWS#WK$w|PB??a zFo{y8D0Gc5=%=G7Mp{^w_!v4)Re?t7XdR1!Y8Rdh2FIaR?|5gaHK{7KYJv76D z2=29J{u(5O;sX1viQ}GoUb$?g>u$XA&Kn|8q|OSBtwUDUqJ+ztcc!+zvUHNCmVJsX z3X>_!D@_77J21o&L+CG;-2Gy3c$#?_pS0}SmzR1XCv>Mu+V$&!hzq|blgG|xs}8ZZ z7<=PlYlVPp&NW|nkQ|pP<($d;soXGeC%+tV!YuQPbhVdE4CH_u*Vk>pEBp8=Ql&C1 zZ@U0jP43lZKKkf-Q9~Ox+8oUP|*ACx{y&rY4?CZjO`E}d!eI=*PKM%e0Ob5aVlhHe1 zeD>*X-#gS*M6Z4KpdX(!`QCpEzT2p;uYUVyT@N;9@duu;cjt?5K0)cfu3`D%6aKUL z`44^2vy+A@C#KKkD|V=@HwQ5`?V<5gLM?8`p@Lpy^ zA_R-{!*5{4RE5i-6sgF>O#i^{L>O!$5EsbBKYh`OHAI9Dp9iQ1sxggikjMwI7{p*y zv5H!Ql%y7fDfta%QpxM1AL*5)jB!tZj1$oyLrAbdW|4k9^qTUxRxw6KP?D2GN&pdQ z!DkH(f7z>~4n6tAzTM}Llsus+QMj8`q!NWQqgHo9Nyyo0Zh3$kV8FhlLRVCT^;!Og-+Blh&+PEQj(R$|A!hD|kM#kfQXaJbxEXR>~-5s#FVF=Vl?hE*ZT~n!uPs#RgG11+su_^>qM{BySF;^uuzg3H*6yl#&0kibo8Js)?8$jqQ&pEX^cUwm>sf_HksmfHo5nbw zkyC>ltxmgkMwC!XZp>d?nSA2 zacWeL+RdpJMXUetYFNA4A|{A67+5$#QtLU?`Mve3Z5@VHvwGHeCIPUCP$okQo6pO> z-m%xzY-dM1ikzM{wE=-nS=X9UYn0;@rGeN z*aG?Vp})sQZ{s;B=C(E({Y_|qD_h`*COD(zt!tWsv)(wQfqTwPr44pz;mOo@vL9XU z73!}T$)*B&c|ym6o%hNPymrEc;?}2i{M#wdcc-SBqw@2JYMvAhP&cNwO}`P%Wvou@8>|@a;(~zPbotbrF#%M9_gvWQT^JL zRG={Nokxcu-TGp$F$Q-_a2FQA8Q%o|m==|Ly4(Bm3|P|9m^d zt$Ju*euBFVecsh3`_fC^_LIjwxo1yznj;&kIQ>fjfsInvPyEcCVSaz%F1^1uA@HUj ze(`nuVsuBJ=iTnR^lnZ3Q2=-s2RuFqfzJ1Qy;p-Q_ad>wh zw;giWe2v&K2v~}o_$8{CRje3_u4rhcNQyWXiHF#Vxu}SM_==B(eGaC6mI#YgcZ*HI zb!w*%(V%4McY)aljk73fo2VD3AFVZ}{klSrKst ziH`kN!VwvmoL7zji0kK*AphBUMpBdhc!@C? zl0?afx_D$z8I&$LlnTj}ZMc7-)s#z#kz;9<>9KSKd5}rTkvI93fB24(mv(9yky&YK zTgjA2>6A7ni)m4ZZkd-_d5o4flD#OHBDs9DNR3m{IcWwrgO`*vX<`fMkPBv)sJ4&V zrgoI=Tr>*km(Wt)?!l)hP->L`h8*^;!mm)eP) zZRwgfxr|?@oMNe*)x}UJwpxoD*eq^BW7@#*6j?YP&4jN+&I)?(PYH3M-Kxt7vq!rn%Ro>`A6p=B4;%qBV+vkr|Y4>TFTzj_0|KZrW+~*&TkGlj&KLI!Tqd zc|mOXr&KnjhUtl6>Y03$nSHv8i7JM5DWr9msh7&ATXWigW(uWQx|sbZp18TGpm?XI zdYfr!l71F#KATlm9E;k@=W*|yoZXhx_ LEFdvCIWzz}V+d(% diff --git a/pkgs/games/paint-by-numbers/hattori/29.gif b/pkgs/games/paint-by-numbers/hattori/29.gif deleted file mode 100644 index 8376c377b8ff69bba2b3438e877994df951efff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3939 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 VAa7syif7*e+M*B7|=*2f1pH+SY%XePm^7&x(* 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 SAWC6wATl{DATc>PGyppX$dI1^ diff --git a/pkgs/games/paint-by-numbers/hattori/33.gif b/pkgs/games/paint-by-numbers/hattori/33.gif deleted file mode 100644 index 08403c454d6b264151f88290b795e1bc6fba0903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3677 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 diff --git a/pkgs/games/paint-by-numbers/hattori/34.gif b/pkgs/games/paint-by-numbers/hattori/34.gif deleted file mode 100644 index 8d84208256b9a4f8b91fa2bfb2113e3a029682b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3921 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 vYdYQ6w zYd@--8oHy6aGJ~sBvplp7P_HII-pmXbA9q(Kq`JhN}@yxiAYMLTe_r~VuPXBq5*1d zoav4Z>ZKiel)84LX9^;or>6JFq-E*|O(&mWCicpN2FR;3jI5?yDn3tKFt5O~`YCF&>Kv74m)%vT?nrz$3t#(R4!#Y2%S!xnkdr7rvbqY_GdZkfyKIYng z+_y@Eg+B5sncrHj?3zyU_^N{HmvriEx9F=uCZ_ocij+XGtO}`jdaen(6btK?Tm`U~ z){_MrPZjG?>Bg}g>#-jTvLQ>6!bhuvD6%Juve@V|qtXr3@gyk=voTAuENdo$C$l%} zazCLu-taz{86-zq001HX3r#^oM?-IJAOr&tF#rGn0atQqbaZ8IAYyqSM@dFQZ*F#F fa&%>KATlm9E;k@=W*|yoZXhx_EFdvCIWzz}8Th52 diff --git a/pkgs/games/paint-by-numbers/hattori/35.gif b/pkgs/games/paint-by-numbers/hattori/35.gif deleted file mode 100644 index f630e8538127e345f49ab5c44bd1ab0b3bfef825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4176 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 diff --git a/pkgs/games/paint-by-numbers/hattori/36.gif b/pkgs/games/paint-by-numbers/hattori/36.gif deleted file mode 100644 index 38a471f48955092fce8ba467bf0da4fac3afd523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4408 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 diff --git a/pkgs/games/paint-by-numbers/hattori/37.gif b/pkgs/games/paint-by-numbers/hattori/37.gif deleted file mode 100644 index 7aa072cc14a8c8beb9839a5d1b5959e00770fb18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4244 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 diff --git a/pkgs/games/paint-by-numbers/hattori/38.gif b/pkgs/games/paint-by-numbers/hattori/38.gif deleted file mode 100644 index f4ff6f33cef5f7931690dc35b2f10c1b89419f91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3673 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 diff --git a/pkgs/games/paint-by-numbers/hattori/39.gif b/pkgs/games/paint-by-numbers/hattori/39.gif deleted file mode 100644 index 9450673436b8ea5640a880f38f1f9e3cc34be3fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3789 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 D25xB4 diff --git a/pkgs/games/paint-by-numbers/hattori/4.gif b/pkgs/games/paint-by-numbers/hattori/4.gif deleted file mode 100644 index 2a732006043519cdfb058185c5a810bde8782a32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2441 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 HIWzz}s(Q|c diff --git a/pkgs/games/paint-by-numbers/hattori/40.gif b/pkgs/games/paint-by-numbers/hattori/40.gif deleted file mode 100644 index 9973f7ae112fab3e8074ef356312e7e37435693e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4195 zcmV-p5S;HvNk%w1VFdvM0e}Di|Ns90001li000050R#a+0{?`MsmtvdqMWqai?iOm z`wxbq_LS!71dYnDi>tuUN+Ygp*RLM)b8DakgOefg=0ho$JD{^^j7D)R88RmYT(`*s z&fCpuv)kerdxkRC?61+Bo`SDfD|kqk|B(4~RdT1c2PoHP7^qjrwz%fz7ZFGp=jR1E zW%)=ad4p+pso7cChnA=(G8*`_x$619o@~Dnpqh(NgCcmxxUISA5Sk<4{x83zdh3L z52DVIKzG`l1w8n~-HU$~0y2CEu>wMVtInCbH!xv42>%f!#mL~WBMFT*`V~8A45i9f zB1z~1`4Yp*U?XOxG?r12#cGH#mCqC_vO82XWF z){Y^8HcYzB$4;kB6-~7YHmAb18%t{C_;#L8tZ+q&t%z5Z-hCql$>lq7>({D-+5YV- zSYq0nHX93r={Pdu$+aNg^lEjo+O~PcdHxv}V_?oo7l)pUS+U=AX?ehSS~jtV(T8at zJenDd7}CdIX$##opKzd9x1VYSdemHk9cFmSh5w!CkBZ05NMnsQ-iVoR z)x}34ekRt1f=A7Y?*SGEEQoLzWRxbon4)RQQOV9&0K&Lrmm40~B9cr( zSRR)BLE{WIQm%<3m}{!no-b_9NnpYjF)D5sF0ImiYe)lZAoZQa9}~YM5dKWm&hg}@_0m%m`-FWS*}j^DX1vK31_Xe z-fC;EzsSl;POZWUD>$!~@{X{;mP%@s6#s=d>^s2z%4-`*6vR!lod!tCYw}3Q#e|-2 zIS4t{a*OJ*(J~<*AMtR?t{CkO=x)65QZfp)&Jug=Hw4Y`%_gEMJ1U8n0!;9Nt6C|j zhPW=QYr}HdrCGuj9&F^V&=#yJ#z_K-u*Cn+Ms8FDYCGw`Lvn0fnD*J|W(Ta^3v<1c z0y$%#gVL~hcPwp6d?*H9sr*aWz=J0wt!Y8ufD;LM*jgG_Jbl8!v9u}4% z&ztVkQ>LuC*D>~-9_}EEo-fQ}BgHuBqfgBC=^JKhv2@AjZCA&$WmmSQZc`l=<<{qt z-u0J3+&N1!P2Tp7pnrBc@LWS~`|RhZ4*1|Ym5cVetfT(-<9?@a{NkAA{vnmWr9HI# z(Jo2?T;KeTr#F+GDF=KC+|;CGHv^{6CEe4N<+NA9$9yk?nQNZ(;ODH1$xVO7!(HP@ z_&f8JunAU3*8^X8!T}Nxh59PVG7tyD96C@?=jx#ke+a~_z-3v7azqemctHQ%FMLUa z!t%tYz#}3tid5`L6(hL9CjVt?U$K%Rzc2_!4u)}zD)C|omOqJ`bc3o)rDU>)J&vM>Wt$5D9NB28Sq8L<4^^Ab zSmwOvRZN&a^QIkxN4yc@v}Q2{DA%01%$L@vfG$O#Nfmk(gt!xu<=m;$pqDcoM)jaq zTB*-Gy08o4FD9I`g;vW`(wb>zkxccSy_hFFopOn&DLkrE1-BToA~J+DWvf(cC(*pN zbb57)tJ$;($${bzsU}S8UE9}F`_=Du@9X6pIdxdYPSmP)U93@+1XiqmRHPk^(^tQ0 z9?o8_tLOnyS%JF4hEf))cuk;CF&o2=n0BtHt?XnkD#O%XmPnTM>uL>IR<&kvxaiAk z`7&xBERMydz5o3!ZujZh<5KS@n!Qy`I@>+aaUv)3_BFTBWi4Wz%aPBe5uUJQpJe}}U-#;EzNOo!gCG1< z=~a@J79C#n*6LrzLKnHk^+THPhbbBVTnnQt&BE<4K4sY>9HUvrPW~814SUe)I_$He^=zNFs^`pl zb+&S~G5<^7*59`RF41g0vzKl7SI1UOunW%ZZg*_lJBxVCN+c$2{fTJIWf;Big|dKE z`bZdK+E2D6^_0IH=*mIZX+hTDoJ-9@26BNDZ^=o_onWu+{A*AL+s7a7 z@^~3c=fNhs&d5%4cp=-|M*A4p&z`oiH5Y3mADd306}7jyB@IW98>Wh$;km~V)O8~m z%BCaio){``R*!n#??#2azMXHL@;cxIFZct$iSUFU(TLonroXf$PK8T+;*gRVE*tf% z;jq$(=i+#@JkBeS%Sz-@BzeVKA=wj{Tu~mctt%+L@GQ9`=8;8SO!od$hTp^t79C>^|Q+%=2D%zyp!*EC+fD-0(Pk zex1GrCRO5@zLv#XdGf*f`>ZJHp=R9jlaDMgBP#0Z*0tU5FV6>bH2>bApTqN^0`HqQ z|4qU#LiW-kz0oayd)t>>@X&1e97SJwT}m1rR|o9M9lv$3tKIChN4g0fZ~6zJ9&!hU zVt^TM_|+o`dAQdB&dcsQzmceupLY8bra%6dO}zOv*S+3zFLvJhko~Q9Kf>+K8vmem zGu4I0q}R9p1(Jt<;RSs15`WvWZNQ~%!bfwXkaHpULnU~5=#p<62YV?vf(ceny@xd-h=Q)rf^X+ZHVA(vn1f0e zgCExjKbUYTsB%NtV>l>pFvu)M_wukA2@m=w}ui`h5{Fc%jSdAl6h(vg?M;|8rFt< z_=M4C6w^nAftWyf7-4$|hc38xci4!7s6K@li8_dhj|d}OrD zm|>n+JD_NY9oKYh$9<=`UoxbMbi<07D2hF2CW?4Q>_&^Wb&FtFa!&YpZ^(&iQ;R1E zi3l=@X_$(RlZ?@5iIq5wt(a8#SBlxVeBoz>wj+(t2##MUQ_BcfEEsKbxNAG~jlUR< zRK|?5sE2)sYis9$2DXl!2#wWTe!b*>m{D>8ey z0dT^2c*=*3+emkj<$NI*W&8M$9O)G+IBnfXjqRtA4e4GT>5w0JgeY{8^^=iyXp)~8 zjGw5IV;GRSSd#lVlH_QMHCcrD=yVLJlMp$RtGJVtH<8#^kxR*G&i^KpjUbe;<&Z_$ zlSFxqhuCjUxr()ylTvw-RGD%|sf}cJj`j$7AGeWHX^ci`l@!@~K)H};8IxPNmQ~4- zNokV`DRuHEmhI(h{>XCZNMGuBmOY4!b?KAxSa_HhelA& zscvgVnfG^@I0>0IDVhD)nXzYyTp5~rIV+lpD9Q+x_8@?#`I?5AHDKwQpmLk2sVpRR zm+C-*pE;VnsgaARe&R@%T@-S_`FyNdM8r6IvPqJud6@9{m1voetLc&EW}LQYkZOo> z$=4&@c#i}*i|+W8qvo9`N0vo0bB(BP`zD;0){N?DXdFnLZ2w7a(8-hBX`KhSpA4s+ z=6Rg*X>`u1o58th-l&gid7srLb+0Ig;1_)Vd5N{Tpw-!+gcvEKh;xEjhvX@d77Cvs z`kiJtgvE%6`d48H8e<~5oyfs-YY2+h$)cR;q5_&wPA8)$>Yq3Yqlsmkp?IJe8KWpl zd~{ffyh);FnV}U*pQ70-92#^FIHK>^Zb52|(K($^2caqId1%$5e082LDu}bGn%_yI zo9R;_Hl{vWrdoQV8=9tawxrbNo;wPsYMP@;8HdByg;hF^Y`Uf(8mOR2sDrwV=9m<* z38;v=W!Y(>c}k~Nij?&?FA`cyjk>3Tx~YfSsZZ*rcmF!45$ULQ3Xumnq?1~xi7JU? z>Yh<)qoBH_4_cWlCX#mutAB}^Q2Kc#NQ!Yrs-LQJF&e3sdZtlYt8oUVu{x|eTC9D_ zs}DJ<2kD%sYNoR)r#*_DDaoA5>6k*OsXxl68huCa|R`z z-pYm>3aRb7tDy?7AUSt0h^{o*t&vHj;QFrFIjZB?W>I>t80xP2YOvZ`qjotb2uqwW z*_H^YaRr!v?Fp~>DX^7kvGG}Yi)x?$X^@kNttTg!7dx_FTC(dZv1~%IAd8#o`hGAQ zmI0cw6Heo1npZ zxxab3zYDy~s;V;Ey2ne2Q$umj3%$`Rz0*s*8HuE7V4&5jz4teVg@kdY00}Iyz2i&1 zf_rfUcDf)~zUwQy5Es785WeW!3G*8O1pxp6A^!_aK|@DFZ*Cw20}wF)00043a%psQ tWo{s1c_2qgMni9Ic4cyOWpW@gE;BASAa7I2zVsT6da?x~kgB`sx}BJ1bjDduyAEyQ?cp`deD%7OGcRTp^5n z%(?M>e= z?}slAKv4k;5{jyS9 zcdc7+aOW1z>y+VRv3k)ahNC8(Wg3Jxe+)NyY~*U5Z}P;cdGyi7R;#k+47fCD)l;|P zn}nzyZN#ucE4%#qbHmnx4I4*U@3_m9gJUa?Sy;9rLfEu<(*}08JG#9oYmXQGJEc2H ze_U#YK{{6MPw$EkZW?|1_rg=7mdHMSZTk9k^8Y_Q)Nt?tSYJ1}VFwv-1uEE|dc3vg zTZ9r$NMVH*Uie^xJ>_Jbe4;T(poSo>wqSP{{x%?qA{wHPZX@pZVum5k=;4Vnsz~4> zzX@1kk1P5}Ba9~6$RloDNrMiON>*q>=j3`b%cQ*mn*l)BhMt-crbxC&aIPEUO~3$==s2ozN27XlCM= zhwQQ7j*IQJ*PbGZwc_5lV`}Y!Mx8b9>S*g_x=N}iqI;&eUZ4Du8l9{HABHHb1`mud zEj)gjst)(&d*Z1vO8oD_pi-PnY^e6y@W%B9h%v(vEgM3}7kg}Ssvj@d7QQu}wVP|Z z>XqNgt?7$%&N}bx-^5M@dmF@C?pmRPMSHxmv&!CN?Y2bM{Bj30yXR-gF{ixWyt;~v z^VB>yQZd%@a3k%^SW+amzLh1+_Q7s12bFT2A)NHdziw^wzuS%AHQGpvon+Zx{mFIT zz5#xApu*K%>B#9m?&Q8^-^_R7{r{xh8OpgX26WVn_nV-gG8c}tm~WqM5_4_Gsygbf zORagd)j8RC&w9r$I-#WdT(#u8-<~Z_qvt(2@Wwx_G4IEl1Fz?aDqno`zZV)Y?mg1W z$@9w-KYjNcb-nuQkrxtv`QoSYwc_4)jHe~qOV54$?B`yvot-CiKd<`NX|d;4sxLIK zQBQz}B3u9ml|BLHPfm5hQv>foBy*X}v|SU)@h%5u@@qzuAQ3?oo*M3vF?Wh!0;}n-XYP$^ zNmPsA4tO+eE)j{y3uh4{qe)~=h@J0LCj!y5M&rz_jr`2#`Iy)}lKF$4@>{12zemt* z4$g1(OsGK{nihwSZT})rduTZ&nl_9MfhiRQXhA)C&5QU`ZgD$U>qa`hIH?h&yDZl< zKUA@fVy3bAt+~W>mQ$+F zM5$F%dX_eojHGwb>R99!GCj7`TX+0HAqj5=BT6BQ@!zx>2N=~}I zk83Q2W+bl|)%vA1nU(Qrr<_Vwz6utv>04VrAKR*Z=1^^5HEc(m3Rr+8@1hsHP+@Dz znp6h$o($#eS}pWh(}tFFADwCF$~w@$S(XQ61Y>JUM^na@wyMqSt#5zp9ndO-EBV{& zZ7HYJ*>*N7eg9?Por((7xhi&^$~~<+FcwNndNaBy+^JoiSx@@qR-D@UB_54CS_-07 zyk=FcUQY_yx0!CTC4G}~;`t6n%?E=H=FLAE`ax2JM_E~KL_q^N7Y*3 zqe2ymtgW4Qn+u+v3b#LX?P4zRht3IW^t1z(s50@3I{037#qxzPc^M>D@E$k90UqpT zU)-2SE)=FX?s0fw8`}+^hHTil@Q7&)x-K2Lwm;Qijgjo&g0UEG_(buPTfA5w=V+4~ zgz}MrTsYrj6O2i z7tqKdwErpm9B4y-w`=y}FNhP|XeoA?uIeS=q%#OW|1G!DIdd*ip9^X;Zr91*<+Q0c zjcV%(SZ$Ghw5tgzO*T(>z_gyVts7kHILF%2uzp~u&!uTq3tLd99yX;{4cufad)c~{ zrL&*CDpko^ky|=6LZFT9Y#$MF%zG}ST&?W~sOnPVu9XPO4JmYMTiuRgcel1yw`P&mxr7okD_xa zoc~~Horl}z5xCzO;TZ9SC%x!&7*@WC9`NC2;@?iM_|nPH^s8qZ>S>JqU=UyK`%)B(f7Lm{^#5+>QPbzn9&%{pI2pZ7LqU zuiV#fANRKha`>@l#PM8AR^x9jb+l{!-DdAM*q{FSjLY2fnt#F|zU_8iuPgPC774Ih z&8w+*+q8s-xVLUouh<9vvW$d1v;X)X z82l=DOzGdBX0;-JN*8|hcX5n1df6v{`gL;Rwqs#-cH@Uab%jRl*JOtyfnT?P14wTc z2!P3zfP2S%3@C317=a-;fh0I|H`a9-_;K22d-!)bvxI^gSZ~`mDi0VKGlFxe2!{`Hjyuce4kDENOKvnUErBNE|tWK8c7x34u8|k{h^NNB_x-7MYU57<#{0 zk8@a)oVbyy=R!s(jm;QvEZ8lK7>YS}ZCnY6UYU;j$SPuak$E?jNQsUG*_2_alHk~t zYI&1EhKpmv%-5Y>62Pb&r0jn4yuFaJiFT z`HG4$m@WB~#b}oBIGKc5ed=hFjX4>Y`I-IbfSov+p4p8QXn?0#nR*$2&li1@#F{}! zkEF(raS5BEd6j9X1wltqulbV@$(pl?beKsGc6ksSX`0QcoR0aM(KvE>IhVFKooxt` zUpbr)DVSi%ot>GSvB`kU>76}koySp%^EZ7#f^mrf>>>G1+{4%5sots3usNI_jrV zdV{RSmorM8e`=zR>Z5*8qyoBlPDrU)i368vr-AvRoB!IS<=37=DyA!ks9gx6pNghO zD5_;zsU^kpr@1Pl)C8fj=c$XDsYF_;? zb^t1^x3-|uYKG~_Ogwj(^x+uitcL+=H(N`>_HUvL>st5Ziqi7MWMbu_xPGypqYa>G;r diff --git a/pkgs/games/paint-by-numbers/hattori/42.gif b/pkgs/games/paint-by-numbers/hattori/42.gif deleted file mode 100644 index 3a3f779e3b5a10acde2d0b8d86a0af6beb63f09d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3909 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 TW*|yoZXhx_EFdvCIWzz}bwIN+ diff --git a/pkgs/games/paint-by-numbers/hattori/43.gif b/pkgs/games/paint-by-numbers/hattori/43.gif deleted file mode 100644 index ce90e3436594d18076572ba7ab3e06b04dac6c07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4120 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 WHz03jAWC6wATl{DATc>PGyppbwi@;T diff --git a/pkgs/games/paint-by-numbers/hattori/44.gif b/pkgs/games/paint-by-numbers/hattori/44.gif deleted file mode 100644 index 87ef52c3a189e44758739c6f47da8f81f2a25d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3750 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 QVQwHYIV>PCIXN@{JA@8j?f?J) diff --git a/pkgs/games/paint-by-numbers/hattori/45.gif b/pkgs/games/paint-by-numbers/hattori/45.gif deleted file mode 100644 index 20696e7d8f8283bbd78f79e1ec8f8256b6f759b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3890 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 Al>h($ diff --git a/pkgs/games/paint-by-numbers/hattori/46.gif b/pkgs/games/paint-by-numbers/hattori/46.gif deleted file mode 100644 index 79847b4e6deed3596d1ab84f3c60253699ae1546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4265 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 LEFdvCIWzz}3cW|g diff --git a/pkgs/games/paint-by-numbers/hattori/47.gif b/pkgs/games/paint-by-numbers/hattori/47.gif deleted file mode 100644 index fa2d0304095d8a1658f99a6ba05c4b5c988490a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4300 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 diff --git a/pkgs/games/paint-by-numbers/hattori/48.gif b/pkgs/games/paint-by-numbers/hattori/48.gif deleted file mode 100644 index 8817a522fe9931d365e07c441f88f0255510586e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3740 zcmV;N4rB30Nk%w1VFdvM0e}Di|Ns90001li000050R#a+0{?`MsmtvdqMWqai?iOm z`wxbq_LS!71dYnDi>tuUA<=YXx9hI=FaPt!fI}hbh%_Q(OX93)V6vpqA{B6D=7La| z*9qkox7up*j5dq0TeZxUeX_&xXMH`tyR9}jZ_;K~HkVe2@B zbTD79S@J42?6mM$$ZeIrJj&0g<}Q~XKNX0%9mvo>LHIk}jnuVopS?ytEBHlc*&+ak zAdL#%UAw*L?v~|SE@EB5ZC(D|%Hdx~%bWWp6}z%+3)8z+cb!!u?$+43EoY3ni$A)a zm1jqLof2*B<;_op*v$J?i^hwi?daRUxD>a7NCnZHs~L6 zI`SsWjXsjFBU~|7=t_5lrT1f!As%^5lTJPfWt39NgH0;&fivYXL#EgvJ06b67ne+m z8D^G+Y?+~R)2s>Lie*l?8f7A`v5i<}9>QauLF&opo_^kG$bYO+lp1`4R^z5>kktep zB#kyV2BQ)_1gHswiuY7mmK24hm!8u1X&sL;f@!JeaHB_NrdEoChtKpu&X=p^fzGV5 zo@#5Twa({9owD)@>mH8`i>8Q=J~wBY=l?OdEu_@r!cm##wg>H<7oU*2&s3t(!;5txlw2Exyy>& za>N=!jkCpAM;+fbzIIw;%~w}|BvWl43>D4pnSCg8$gY^N&F+cK)!T0mEq8I%3eC{Y zzzt_oUO{g372RmpH?Y?DCN(pR;r|8>_T)E9t!du;s=c|=pGyp)!MieZo9U|4-1OyP zhiNq4albzL>RaC!l;MPj%)8==!>n1iy$|m?!@!H@ao5BzFS+P$*}j=LPcu&~^mej} zefHXCsa`h%YPo%@$H!?+?W|j`cSYgT9=fx)s>(j-@{hm%54zt!IR5&VRDTKc8*w&J z3D92e(^vrum_7j7tbYmQQkxJ3!9o#iOOo0Y@J@yi2Fl5CRx4izFBLoT%_M}6i(u3^ zV?hb3PlJLgA#CghwsPLuK!LEq$O7UQ@fm>M;vOEo3evI$B#O0cN% zq^d=ohPl*k-nxU8PDpB*i$S>K^bCtA^vw=@z{dHFT=xYR^(&81k`_Com_ zt&t*at3uzpx22)Au3npKU^yu{D5jN5de^@?HKm6ATPq)HAI0YNi<=#r zWjXs(;m6j zwCQEqVwnn!L}k`auIjheH`qouI%l+0G`QhBgY zHtd$aJgq*8dCb`xgkBTX-zI#Q%xrFRlmZyY8^)}MJ~VTs>9V?re7( zU3n~}xY-SsdF0zd>XJ64^v%L~hizExN;azEEx>UsBZKg!v#`JY=Tv7};+&>9t}SkC zd5`O8^qWe$zCs6&Jtt%rQjH6D_Z71oa&o^ekK#t)KJGoWnyUlnJjY-W zTmO#Cc(vT*Do=ONLnmBI$9#z&2RFno{`8DHed1A1G{#x(7PAo@-BUEU*H86zk~doE zE(dwp39fNqy&T_VXE&o|ZuYplz3m;}w;*#Z&MYHvpFg*X5{HXfJ%*j>WPkN!MmSQV zqJ8QSuX>pu&Fx_qnwnH^6@2#$O@`;0@{PAVRWa}J$Xkl@Q1|?G^Bnlem+0#LyF3;} z-}==%{s9B#G?;OYJw?+uvWr%`+&g}I+)tX?kmbFj;T);pv!3?FKd_U04?E@0J_XGW zFAJq#`E6H!_sgF&>7_1O*K?2g0N=dqv(H@fKE712Xa4y+AO6qZ`sU@|^Y^VzSpW57 zUGaLH(98J zo(6_tSZP+cZ9!Ou?>B^#M>T4=hB!ieeV07i7l$o!gmn0O?stc5n1qZ6Y<=j5;f96+ zmwqpWf`3MZY?p|>#$Tqodc_xM+b57B z##yzfTW4Y(J=btcrv;k8klMIh_vnuV>5vGSkiiuXxJN-7d4>_Wj0y>n9qEL!g$Kw- zXTB(aySI|E$dVMveXK}bZx)g}D3Lg3U^}UdL@A26^@YeaQ-Vc~Gygb}(P5DY$caIx zkr8=>p0$())|5b*2I3eN3RrT`gp%@zlpcALDp`)^C?GF(bTrwJShBDT@P{FK^JC$XT4^@|<{SeUNvX zzKMxAIG1)fojf^_yvTu-2%CLre+@UBpoWajMwgU{i*9$F{{QBT^*N06`HHCVo|2cI z!N{5X>7BVbe*s#I&`6->84}MIpNHm-wV8}#QI)?5pe`tkK?#~2cx>fKj|lpVkvX0Y zI)FLZl@EHL2g#KMDv}pkdKlW03+kFq*^c>1o+_A`{dsaj>7mycqLpb-Ioh87IidzR zp~M-aQYoK=SER0Zq~K{IP-uHH>ZAIJokoMT9+h1#S% z2#B^hr(Sw}{ScaY3aO>&ca!?4ZiuEwccql7sYJ+{nK}xhZbqu5YO1G-s;LT&%w}dh zq^hq9tIAkcbLJcywTiKdtHsuIawZ=}nybHBplYTJkpq1bRFwq)03rViO+iCPLvL;% z1OpH;00001S8{1|bY*TJVtF7(Nk&6&ZgypIbY*fNGA=VNHz03jAWC6wATl{DATc>P GGypp%wnC8r diff --git a/pkgs/games/paint-by-numbers/hattori/49.gif b/pkgs/games/paint-by-numbers/hattori/49.gif deleted file mode 100644 index 756da705016eec80996955a682e197f440ef20fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4304 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 diff --git a/pkgs/games/paint-by-numbers/hattori/5.gif b/pkgs/games/paint-by-numbers/hattori/5.gif deleted file mode 100644 index 74cde1782ed62451fefda80a155d4ad3a7d1a1c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2616 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 diff --git a/pkgs/games/paint-by-numbers/hattori/50.gif b/pkgs/games/paint-by-numbers/hattori/50.gif deleted file mode 100644 index 3c10bfa844ca0377bdc7fdbba5d3dcba3d3914c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4135 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 diff --git a/pkgs/games/paint-by-numbers/hattori/51.gif b/pkgs/games/paint-by-numbers/hattori/51.gif deleted file mode 100644 index 6d3d72b03371e5d0959ce44379f3681de94f6a9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3882 zcmV+_57qETNk%w1Vfz3C0e}Di|Ns90001li0002{00aR*0{?`Msmq-Kqnxzbi?iOm z`wxbhLzX5IG%2$#t@1v`G|M%s=J@XFJrDB*fv2Jo5JL%Vza~-%ea<4cs`SuGVwX~_ zl{s{R$I+v?6w7kA#4a6=%*I7mjywW_*ICs$ajU_#yhO}zODYWSun-llD#f^jZ#5eixMSFN5+E;_}oHhFVD>W&f* zlKyXAyL|-V`P*Rcn;1jHJQW;h@SsF_3m+bN{?L_F|=xlgE*%(0x4VF{DZj z_Oy*M)-PmBfg@$a9jlCD&V_>pP>ar z4Vt>DhV#<%R5&tRE>5A^=q73GV55gSJBIurt>mR*!0PpCQ8eezWyNOv`wk*#ikm~n zrF;A2T-`Er<4zd@cg@m@3Rz9;*=%64Dq-_WJv2Dd<*eaZITlW^a<$H(CwEO%J9yf$ zTUXB4z3=eq;=QwO-v03;_D#56Ywdpf>-e${5&z|npM0YYNML~mu2$Y(*a4W{YzLA? zUxWz`)gW?~eV5;J@-fEMd(=&c;f6sucV1ZMY1p4?;otpGf}cXP|(-vS$$%!bvAI%1Cpl zoWX>(s5NDjiRMFv5^~x_3tmSf9~N$UVW{YVgIEoSm^uuemR`zFCx$t7VytxnRpTm6 zo%w2~U|u#(8nBLf$0@}u;V5d4`lz0c{{P8TsesHA9+b((ikT`2T@IkArs?NsC0kMf9*W`5WmJ^z|1D9JK zzX~tRaKm@`5b&L(I;7rzERKs~hvfF>u*DIAx~sYduec`1Eh1}j#|3vLtfIhTwpE3A zZLIRM^aWgFH`GEHrB(3O3^caD{bTJqLg#jEkqzr0an9cIwKGd2`&=@m7q9Fg!~Wjt zvZwE6eejaZ*-W#FRQKG$*6qmJwbkY}mN400mpygA0*76eY4y&Xv0u%K4K~R%k8t#$ z*%EDd;&C-s_>O!>3Ts1EdrUXJcmGSIuOoO?2J++k?q~Vf7^CdAS((Fuu;+lIt@7zI zzgcYQs>@EWyg#0tI_a-BuDIe!x3b&Nw)K8ArA@E<^xw;lp6umzhh8;DFdn}v^n+_# zx5l%(PNDME=F{={~y2o z;qNo)TaAYIQUE$uEDaI^VbU zhqDW%uzoDmo7g-iZ7|R)5Twxe>_^<42 zF;h@WBOBLfN1eS7eW+XF9scMwUQH~JUX)a+1}VW79+GRn@=D|k*|MNXa*_{H+qc-p zF5E?Jd7x_`xa3B}pLDZ9F z%xJkDAl`14%pqa|mu5t7Xw6#bf}#IXrm$7Mt&-gf9nMzhOMXd{bqA6j%jm~NYuw9| zwL6;)<3>q(b{4mY8Cs93z-bbC&aY({$VqQMpf1 zZqSgm!samXMmbcTF8`sYgeAq+dC`?9tD^5DXT|oZ#2)^0p`GMrFeR!yiW+U6!nx-> z>v>F-;w_{j1*Azi8o*l$G=m!jsV+aLLJXXivIJY~9*Z%RJg@?atL;*!7;g$ysG5zeqnSxngT;x64%MKhWUGN722P9G zN3I=pXHLJG)WB&I2>n~+AFrA=U~V&@Q)R4O9}C%zS#lg8OypCwDl<^>)OqduC}t<- zM#ycJl{@`wDlvD)P4@J&4Q)thM_bUXw(_WJCF(85wF^7Srw>ycdJGS0ZL_#JV)zOY5>ddGj5y}a*uCrMvZO4El8zAT1=i>~~N*l;k-MT!6GJJ^jmg*7z4Cp{R z;C*2f=l?ZOQD;FbdeJ6yBCWm@jo83%kLn9FrCD|9OJ!QqmX0o6fwAd5h1yM{CUvK0 zSc+0_N!40nb*oQZrC5`~)mWnSm27=$SRWDBpw{)SeSJk>qfyYj{zW5A2S-ty_XNc* zcB+Z(Yx5LDArb^erkT#aFi#X`o?Qo#eiR(R0=m^^*$BJn-8Mu zc$j%LD{-SbOI_wYo);K4g~gf=yv!^Vy1{jhAGCAZ3wal$%NWiRlvCW@Pj@=R#eRl= zYtqFyZZA7pP2jO-dh3;?H^&z*UNqy|eUTT$r`NP~#RoRF-A!!Exzzc@Z(7>8QvK*n zTKXn$9@MEf!{?1|D9oo-BR|Jrwe>zn|#9cCNl41-`Q{18u^#^ zHtSVh{O4ysY|W=VF_Uj>yw4t?+HbsgyRZE3SHJKJr@n)2H~v(+pV`45)9?o?{Qv1M zY|z1HJ@EIRc&G<})x;%KcYpEXc>)+s-c*3CXM0)`fcm$91PFEiH-Yvif%wOKyY_no zq$3HKf$}tVA_sVyhjSJPe<#R!J~e9z*MXAuff0CX2_7Y1FjeCT(C(D!*bg>XTLREE+W4uuA~mxNZ>drZhy zTIhjMD09k2r{k=!3+kbJ?hg&KHUKC^+1tj-u#}vn7L2XgZm3U;+t@)L4)? zf{P1rDtTyyXZVnLW{<7nNDJ9F1IdgRX^8-7dOFyU{s@vkctwp!lJr<8&q$DV;fJoM zNZZJZ;>ePsrjmSkfv5N#+BK5(SduN7leV~%r{{A|=vkOpk=DqOv;PQzhxduJD1~C; zk{?MJMwpCBselGqaVzPNVAyU!2Z)Kbih#$1f=HDyXqE3cZ3(xPrg(EExN2(omD0#H z5OI{!w}~}5mC=Zjgy)qe$&M}gmV6nPIQVS*SeH_Xd+CRUFDaGvr<1ammFzf{R)>9i z8GZ2tTsKK-LkWqDsUc>^B!#(|!u2AaNtK}Kl%nZqcUhW5c$$#;n0J_j>*$(Yxq`L1 zm_Lb)zIU4&g_VA(kM47P!Rd>+$$v;WXL>oA>DYk4*_15^mOtl~vN?~rwr|L(nS4ox zFqoOonVrVDozp3K)v24_SDXbWodM~X$_bdeX`YQKe}DOzY5(bfXE~qfrk^3HX_AST z;YpOfiEaJanZ9Rg_2HZYN}1$_ovDeSr0987nV#?IpF%mD6KbEs$e>X6oBxTQ>ja?W z*q|9nobDNpt0tMG*_RrMmLr&)1e&6d7owBcqGd^;Kp3M9I->2Dp*YH#92%N3x}Z4u zqqRnxQZkNc)T2z}jOnzblh&jPN{T(GqlagBH;SZdNgyW5M^oyN4=0#q6{Q6Pra>8> z>Zz5ANuF4GpUiirs(GStNtbQPfrJ^GO;?}136xvvrU^==dP<#q%8-6~rxHq^gSw`H z$)1NQsAd|Kgi4~D8Kxi#qabI7Oo^g4*^VWOrf-^JN3=s6n)%d?%o3I;p?Proo!3a~X40ijjq? zoqrml%=xG=nXD1%s7a@-G#(S2Fe(IEWR!Ie zYq1w=i1Y?&m4~q%>#>cYOccXDi?mmgPyhfS{|ik)Lq|hzZXg5$5HSD%00CEWX>@dD sZXjZLAV*0?LvL<&WpZ?7av(A;GcGqEZ)PA$VQwHYIV>PCIXN@{JFf|wrvLx| diff --git a/pkgs/games/paint-by-numbers/hattori/52.gif b/pkgs/games/paint-by-numbers/hattori/52.gif deleted file mode 100644 index 9bdadb19ec2c6190981833cf41504e14dae94bd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4634 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 QVQwHYIV>PCIXN@{JHd4+xBvhE diff --git a/pkgs/games/paint-by-numbers/hattori/53.gif b/pkgs/games/paint-by-numbers/hattori/53.gif deleted file mode 100644 index 9be42ca65cb673553001bfc977e92ceddcadb604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4762 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 diff --git a/pkgs/games/paint-by-numbers/hattori/54.gif b/pkgs/games/paint-by-numbers/hattori/54.gif deleted file mode 100644 index aeae13415371d792e3fb510c9202c33dc0f6d9da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4361 zcmV+k5%%s!Nk%w1VFdvW0e}Di|Ns90001li000050S*B`0{?`MsmtvdqMWqai?iOm z`wxbq_LS!71dYnDi>ttZE7R-U;;$a_kdKfBfd?V#i0tK-yW-FZjn<;drnQRwF|*IB z*4s^r$3{bWrWCT&=Cr$ejuYEk`jif)e!2Rw|0HJ?AvK66L1+V4REQ>+D7E-lb!f;) zV;R|}St;4*N$L3~TB1^lW{P^Mn##KB+6wzB8%sNDTZ?1MS*ANSa{b+ z9Qt{@7OXsBCml_heEA6a?6iHj-G;sS`+NNba~_61OufeLJZ=4k&c>{4Y;Om?45>&( z&&a3Po`LwD1j-{Y3_)=R1J+}>Vnl|B5;5RdR<0kvjsFhgRQw3C;X-E>C|)pW0cA>F zyIQh*Ib(#&nJ;C+3|SHu&V3!nJ=*RK%Q^I{`vy3aY2SbmpqID2njm z(5+g#N?c09Xws8cfqWbG#-KT@9ifUu%Ju72rD93)d}@^`B0Zh@Mk1S4?hCdfy{fzm zmnq=37R%nG3Axlnok|~54iR~l%~z9Yc4n0kqtABnG;&(}ly2a|9l)~Y@Y-qOu!Hm7 zE;`?1r1s~Ncg`g zdxIc8J}&y~?AyD44?n(q)wl17-k!};dd1}j)BjKH+gSZcHy?aHNRnH9`8cP}tOzB0|ZflhA3YWRc() zw&aIho|)y6Oscm8X(&QerkZHZ>7kq!^@wMVpwY?a270;_C7i3BvRi31_KE0#)?tZR zoP#Dp8ZwDa>LQzmzBf*$nr_Nzr=Fg{oi>sRr4Lu0im@h{UZ|LAt6&OB<)V(BDvGO2 zc;^UTx>_1*n7zU(>!7sO`e&ZT7K`k$%Kz#zEU|IkXC$uBy0e|H!A^onwZK}NShIle zpbn%|O=Vhw333-oL+56=pjxxGt024HBJmA|_6pPqyZP3OF1-HAd+(de4VqW% z!MM(gs%@cWtCukN?kaG_k#;l0#qa=?tHcFcoY%slQc7~kCMUVApdv&3E3enS%x%hc z2`QtETb#?P!}-e0-^o$I+@hBNDk|P_1cGQ5!T+SiSfj$W+_MLa+Wh2BM6R5(wll-_ zZpz`v6QL?&AcIVqG`EFy}y&LQE>mX~iaDC@+9((OD3SOzIM;Gr@)<=@t z?!~r`ex326M{OeQx6i3_AIxP9Df5-1%>C5SQ}1{dDW?7%f9*>SI?(rDO10Qf?!LRU z&CP9lf}3Xus5VMngj#pwSlzG@w#EexaN+ac1TEMnE$s_&<|2;!XePe>VbEu*y4VDJIDE~_FhTWT8=q^ITwP-O&OQhf!&xpnxGHi`(Y@-`Dm_6)e zqcCpdq6X<_$2^8mdivvI9f6@o`QdSowjyL1zxYQJ_;8UtY$PMumPk?@@?Ym0Bq9wN z$Udejl22?C1F5CCow3l5oy4RmIjKji?ZsoNJ7Fmwl)Qdbv5=@dWe3eyj9YSWlH97~ zC}~MYR6f#?#2ltEAydn)bt9Gl+vSFysW}vy5SmT=*S36lAyWx+frgUSC-K&t24YiV zRs^LgS$Q>8IK$rYayc5q zHBp!8QV1NeSVUEvj{kSv)Fvm7iP2(eG^42qs37TC&1N=ZjwFRd`s|i54sC25cH?J9 zLy605cBPi93+Fc-2ucN6?>77#(>nor&VQC~WA)MxFYgJ^ODa{9N9A7Ue)y55$`p&I zWNId7dBh4z5Jnu`DDa9Gz~KSuB$xSJ0V9XGe(hA2WCP+5)#p99dQYKhwIo}A=~gbv z^?iGNpALcwRCQ9$i&o{|1!dR2t%8tB45eyFOIJ3mW-)(*O|0{{>Q%HMu&b64;4b8* zC(ud;OaZGYJHH1^$(qqmlQkVFMTnPY-E^F;bZYZnS=i|vwz7V0Eevn9&*088aqPq4 zbgr7h+u9bby8oTrBEWT&vouzW5#;S+bE{a^t~Roe&1xFI3*NFllxcP4pbEF!SIXk{ zvQ+G@Z*$iVae}nGP_1EcQTtZq8kf1*{cU%Ii`1dk*SoH@Z*|*x-}5%Ny{Ee#LJex# z@ew$+$>pzg)eGAT7nrjNH0xMB%nQ-p!m~UQ@qC7ay7}tMq!Pwofj#J31tXTP@qsT) zooOVUws^Z!G%#UjnO+?tXH|ogCrd}=!nhvSu+GJ6UWu$?+WI5NU3?ys8T{J%mMpW8 zF|n7$IzR)S)kB(9V2TeK(q-yLzue7mg_V3@C!6`k$CEEU2khc1H(ASUeyWcXCE%pe zS9MgLF#n9Nyy5T$ny%xya3@n`nJq z)#h8`e3dHQQd)6>bDY(|@i-W_mt{SV{C`T6w#!Gna@+}z%}cyuZBy>MUQY~~pNBr0JE{Jr2ob)tRRoQ-ed0C?_Bx90%scFRo1hJlRfs5R- zVt)qXz7F<^1ii){ZM)m+`13(v*;#L|yWPEIgcKpDJHgy$BtbPVz~lX*cNcu8SmxSO z8Gcxcr&Z(O4tc~e?D3x>yxl3EDHToL@`=Pe8$G`%&}&Ncndki5Nk0zMlf(3pue<7R zWtHWX1AnN8eHet& z1cQJGdm`mnS}25YArcN~FjI$waOgR}1ceK?fLU0G5!Q$$=!J>cf5aDuqyIRAe;11E zM~X5SeoJO>#Z`GYMu)VQd91i`uBdor(0y|#hs#Hc{q;SsSZA@geWTZlRQHR*2!6Xr z2E|Bj0C$Mwplz#YAyAb9`lV(12ZT#Fh(Zj_X)z zbkuYpNH6GEE9yv(;Mk7HNNJxoi}uKm#&eDK7mvR-Q{NbDio}e|C6ElriNTnDu6T-L zH+R)2b*-3?<)?wT2#>Xhas#=K1xX4A36al6FH(p{p7&H7nR>REkNzlRZfBAX8F(uB za2^?w7)DbBrhT0!lRVau8<}_t=}H_ZY|{uxI$4oqK_ z=an!MSNMCqD92!71)InpIhsJcyCEGo9^tp6Z#N&i^<%**TXQS6Jm~pU3&1 z)`_3u2%!7viF;%z{yCuaxuExXn)&IVpoyIkYMC%upbv_Y8rhfO$)5X0p7p4m;>mx} zIimgO9_=ZV+318rrl6@Qq8_-J@du(O>Y+?&6h&pCF500NilG#mc=FMnICqujH={br zZ2CE%J_;&8>Y=|^q=`A7NZO-3TA>Egq{sK9Roa%|$)P2xMh5ws(d3>*lBGWilJnV( z-e{2l;c!;aq7tf?UK*lY`a*$85c794WxAwiif_{RrKFjoaJr>(I++3rKbNPcX!@4i z$$TcWjoJvQLwKa$X_kzNrn_mVh=PIFglvMUlznENG5;!~`o^CuByXR3ouI0oqI#)k zf~bM2rI2=;xOtYEs+q8ArlH!U+109lI;M}hqT^{(xVophI;WHRoF}uXmAGc9>Z}Wj zsmRKxjv6z7_ZFwRq0fq;>nW`oN8g(F>aLFSx93{8&v>** zyM1XVp}Kg0nGJ{ zxVmel4M|h3`;f#-v+?+RW;eXb%df2Yj0f|((A%@j%e%K|z0qsD+3S7V3%KaDMoEY- z8R>Z7JFAyUx_x`M&x^j~YK*#gewzEf_oq0H-urp=Yrm^Tw{EMyXo^R13SR=)VrUq!8R}PRhY{+n9CRwdSW*cgexY zIJ2zknGc4-4y?j*>$?I-q#>NPnOngg`@J?yoH)F~sC#!oEW|@h#6@hx7OAjTFri1x z#7=4+JcT@A)SXRC#X?+!bHsNASjAgB#9qQX5#tSVv}Tb|001HX3r#^oM?-IJAOr&t zF#rGn0atQqbaZ8IAYyqSM@dFQZ*F#Fa&%>KATlm9E;k@=W*|yoZXhx_EFdvCIWzz} DdfL8w diff --git a/pkgs/games/paint-by-numbers/hattori/55.gif b/pkgs/games/paint-by-numbers/hattori/55.gif deleted file mode 100644 index e5d743f920a525e38a91f7e74089d030611c7dc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4357 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 diff --git a/pkgs/games/paint-by-numbers/hattori/56.gif b/pkgs/games/paint-by-numbers/hattori/56.gif deleted file mode 100644 index 5f4964611bc92be8cda4684ade29e363c7c61761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3710 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 diff --git a/pkgs/games/paint-by-numbers/hattori/57.gif b/pkgs/games/paint-by-numbers/hattori/57.gif deleted file mode 100644 index 2e546a25bc1eb66046253edd56ba48b135651b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4466 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 EJEhp<0RR91 diff --git a/pkgs/games/paint-by-numbers/hattori/58.gif b/pkgs/games/paint-by-numbers/hattori/58.gif deleted file mode 100644 index ae20dedca0b480e95b759c3583d7cc82b52e02fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3581 zcmVX3xI(!X z7wPB7c-Q!r_j%+dYBgF)dTN@Ax~kgB`sx}BJ1bjDI}4gC_$ZdiHc6$(DYd!O3HeBv z+zW|3On4fsIsGdvO$_$j426QBB9hGlE(d+*bZ(x$guec8iC*{1=}j*3u166vO^cMYvBT+dP{W-!6IPf>RAo4%WB{n0?Y`KY*~40tI@37w5jHnl}HU4Bdk`nlC=wX#NWUR$HK|y zl`2}oj9=E{iUg`qBTx_5GyAQv%)uTxcl>5}8Q7$mHJjGw`7~gYtl_q9t=a;t*dJi? zoj6)qF+PU-(mtB{x9rQeW3H=Q+1caeS*L<1EnF^i;LXFi3Dz4oa~RRPGxXin`nB-e zCwf1>xjFjv?Axo(p4V^n@(+j4Z|NSQTKJigYyZCw9%}04XV-q^#RCWy2pUHpPyz<{ z9C3|7)?h&Kkq4l84{8`;h75WrmN>7uM&gKW(Pg42rlrVYNMjwuTZQs*mzIpDW%prU zy6nhfk3RnBV-(ZG<49OQeu1HHIEDx!X*MoN)R9om_@9z(>}F+?ROVQvlqQr2W{YBm zN#>ZiczHsS%HYMMa!iOuM>StP8K;w3p~+5i+;~D6Pum;^s6%=hGp8hhUWd^Sd;ZC% zPmAJ7LZ9U<=-(j*Ju?}m^6Y?|g+@-gsTQ4DnqVZ9`k82k7v?4yejR2>oq~mTNA1m$>e1xUIR*a!6pk_TKAQxvcsWEx7HL%j~@IW}D=rkFKk) zg!o3puBv`AwIv&7X-ltu+!42y)082YuFZnVR~kycQcJ9M0{jRq-WoV&bX5=URPLjYAU+ zFJiKlOmf({a$Vp_+3vD*+Dbb|cFpFUz3$rAwjG^;3CH+zw^#dXpWaN<{oUK{!hE;i zF*6J_;2DD_cH>~P{PnOagS4WrZ2#`^2Qz9D+;!FtU(6VVg(D1&+#e&J?Be~J4ls_L zF1UAB;{dD~+*(44d+xg9F4TBc^;pI3n~NN~?S`{%`0mKBZankEW1Y70j!*wM_14=W z{OAKe{}lAgZ-2Y)-xp6OjK?<*e)j2;-X-i+%QrPVzIcE6@anJczF+32lmDo3n18VK zwWEJqkY4o;c)bK7&=mLUN2MN!IXQhxQWU%tr<9WzK_zGrkwH}jqjJFp&My&#V#(Ct z1i(P)rC6EU7eY#BnLhl_XEZbx23aD)V}NRfBh;bhe5j2R?k0ZhLr~rjB}5j=jBq(r zp_@Vl!$yHHZwSNT#GqKjr2qZNe~9s*6ERme#fkA|2hw2o4i~ukkn4D}J0JJPCoNS; zP%?^$S{qk)M*)&gd*~`758nqddZ{j6QA6Jz*;qe=&7*UCTO%GB2}k?6u_X#TQFnlK zvPv!x6{b5{wY)R8o$--=%i>rMt#vw4PI8raR0-ktMQ{2~9$p5|E)38Y|U^x@h`Rnmtq3GHIunRQ67r zv_z!H{PRsVx{Z*KG-Ns5aZF>zf^L|cTrC1gD+umTl8+=?H8%jYb}H(VEd*gL*+#T~ z7AQa^cY$-ms2~#J?^p!wlCQY&F9*^FXqlMuaKO_Ui09Fcg%?!?Zglfli&eWz< zt*T3%CowA0%&L8RS5>E}n{;}Ws~VkZM~!AeZ{pN@sN7mb8Cq6>AvL8>BquC?165G^ zG!Q23Ydw2qNt>!nphrz9I@ik2tvV8@XLaj183ZFDigly5)SAv3d)db#mX3&e={prm zRu0(BvzFrE8=V%i@zSa^RBxkZ)m}5D<-m! zvbF81cSXC`0+rIDij0|di`(3>4w9*`EoF57ON(Ms&YseJ9Cpn}+kiHdzwkZic)ROM zCEk~~3f}L8b4$r?8gaPsy(&8=gki>sYft-QZ(iNo+uDU#kk)N++e8TC7|U2k9rH?V zLK>wR>v+d#`qo8>6r+8@IC!}uGVfw+WJo1h$w+SUke&SGC^u2c4O}vwtn4K$OG(Q| z;xdrD{ADOtSO*>kfl?2L!}iI2|0!!s!SJOs^+ znaYEnvj3qAjp#(rnb3**sTDOPa1~DBzdw z{AW+2`V)c{0+zLUg-@?K4}fMhpZCn@I;%R@eZF;(cfDb1=CiI2)#8r@avUT&U{paS zHZtS3>o_Lwf8?xmb`7cyWuw7%wWc+(brS4j&&0>5YIaJr-3F)Bq}65i^^tikJ$Ex1 z-ne#jyVv{daQ|={k^&9CvU=_*MEZAo5x2RerYSOm8$;}NU%!PEpKEeMhvu$`z%%{p z96vl_*``VG_HFQJPTbkTwz!-d{peoPyU5)}5+l*5T5>GgvO3Cm4mZ8=DZadyHktV> zbN~GAo6kB+6@$5lFXHpXBHiXymUYB-PIF|RIIcjSx6p?S^`9>#=@zbfoUxANmvg=A zdEU9auZ(k@X4vRpPS1{t-f~EXedzxw`q*=JXS1)IcTSgjBNqH6p3_?I_O5f>DJ}M? zQ@!jc?m5%TeE2}O_3cvK^4!CmZnobDc$M$+<+HqY^aQE%n7{g&jV*f4uhi;I54&F5 zO#0J<9p0N)a@0XT`!44kq5ZYJ)@5({AlZrczeW4+g`a!R%g?FO;rsE^ocwz`b}lS` z{+pwZ^1QF!_<&b_@S%T`nf*ETqi?+TTfb$5s~%g`?|$jg4}5_;9@6Ar|KfoU|NoQ^ ze)~O6Joxi3ecabn_LoMu_kGtFei#RP{Fe)MhkOUfd1cUk1Gs?hhkuagee&mZ+Q)tb zSYGdkfqPeh6i9jI2ZC!Bd9LPqTyti(7kCcXY1oDh8<=G;R(?wNg8rvz`;dZZVuKzS zbBG6nks@>W)@MIBf_Ud@Llti~=TA3Cc6V2RM`(gANL5n!R)eQ@4y1!6C|HWuG!2L! zTR4PX*iu;dQDXRSb2NpzcZFbxS6EktQ21PMNE<6if-1;-#)W-vhkEq~SE==RU$%RI z=v;!>hqE?A40vjL_*IFhJch_(hzNlyCxncsd9OEpOz1I2C4nCTa$eSaoBybZnRRqT z<#ycRgIj17;-_hyXo`~;i&52qYxjv2r-2tGd7XDJXvm4A$7zq}gS?nBc4%$D*n^FD ziMHj7fRljGiXL#|5it{*(UHB&VNOJIaN!l2O-sq2(Cx-)Bjs+Qw_ZM{f z2afK?hkIyiB{ykXCyY5rb`wd8boWB62$9AZkqHG=srHX2S$MCgbsRa1XV+uwh=coR zj_Q~UA^DIT=wc4(iMFR3F4>Pc*@lslj51(aDY<_@8I&{EYei|34gZOhW#^L!nS@B$ zc0);ov`3XcwTj|{L{@2!1eulfID_>T4MrK3)+Bi?H=Y;Roz%&MYc@Bp*$I(gvg=b>7r71lRSo_IjW;O%A-AMXgN1fJ}RU``k5Nz zCW}%mI7XyP%A_46qKr~SHrk|9%45A_29}UHmLNq`!=({W001HX3r#^oM?-IJAOr&t zF#rGn0atQqbaZ8IAYyqSM@dFQZ*F#Fa&%>KATlm9E;k@=W*|yoZXhx_EFdvCIWzz} DZ{iJR diff --git a/pkgs/games/paint-by-numbers/hattori/59.gif b/pkgs/games/paint-by-numbers/hattori/59.gif deleted file mode 100644 index d306cd0f47b0a56608ea221989994c72358ae6f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4189 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 diff --git a/pkgs/games/paint-by-numbers/hattori/6.gif b/pkgs/games/paint-by-numbers/hattori/6.gif deleted file mode 100644 index 54b547dc63c654151cc6eb9774d81fb8fe818111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2608 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 SAWC6wATl{DATc>PGypq|N+03? diff --git a/pkgs/games/paint-by-numbers/hattori/60.gif b/pkgs/games/paint-by-numbers/hattori/60.gif deleted file mode 100644 index 709f62fc8e8c387f3c1258420251bb11942367e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4505 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 diff --git a/pkgs/games/paint-by-numbers/hattori/61.gif b/pkgs/games/paint-by-numbers/hattori/61.gif deleted file mode 100644 index c6b236dd59f1a70387cef8032ae823cf77d1f27b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3616 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 diff --git a/pkgs/games/paint-by-numbers/hattori/62.gif b/pkgs/games/paint-by-numbers/hattori/62.gif deleted file mode 100644 index 371744c3ab78d8bfcea816db56b777dda76f19fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4295 zcmV;&5IFBgNk%w1VFdvW0e}Di|Ns90001li000050S*B`0{?`MsmtvdqMWqai?iOm z`wxbq_LS!71dYnDi>tuUYEU)Z;;(-9dk*{wV?31c7$hcVKpQ~jf*z#4Cqi~DW~bXB z)7w>oxyZ7)`W36wR&?}>Wl`H>H+eh9-q&Gv|9=+vpoi8au?H7{_*SFX;}qpc=R-J2 z7s&{zg$P*4`6(Dmq(W*{dTN@Ax~kgB`sx}BJ1bjDduyAE%PQKtWGIPAMhZD$cYGNP z*LaxB_@oToEKC_)XW5Aj>MJTYyu6neCLRu6MSd5Dtlp++=?LW=`DlFExanEwE&crc zyIpAniGTU{2|QTuT0ntCo;7>7D4jJv09RzNh_C|23;+1EG2=+kV8%ncbeSxP@}#N} zDv6CW_Ud9x3@t^z#Nkd_#C209`l;B0WyqIKUR(@Hb12b-6nU02q$FU+g-I1oohsC5 z)uuK_UWE!450`#F3l6l36eQZUF|xK@y5XzNYGmsI)fxgTT)AA&_JtcarQn)_UFI!J zI5FZ=GF<^?I230+bPuJb1;Mwh$IX@%9>x0@bL3z9(nZaDC3N1=Y$1GptNMeM(v(g! zkyCjiQQaCZ%VrH*H0anIP)l?etr+p;t38X*%RIXD>C~%R2W*_~PG>!@6VKlDVPD?f zJM*CpBmE!T<;A;x4*Y%dzwO;;dt+B0y`-& z9#ah#MIeO}dZ$>1yEL{+eWA(1;YuDt)*5p8O_JVg7mkQfg!XmEB7+d#W)6x8QdOUe zl8on@2Rg=>*@@&N^xurmsa2tbM$(7miZK>>SAwQ76D5GqS#YI;JRbR^l09h%=3-%n zr^rmv5yq04%z+r>fgjOkPki^On3{B1`q*P^7WpUHG&Ne8r)qr42_u$-ngt#=iZ04% zqmCj`Nt|=dRoRZj6!a*hgFeU!oJ#`g1zDetT4gqw8UZDuO9=U=iKX6^+o7Codg>Ws z-a00(y5`DjNwo%&>a44}so-RPewvA~VgGH(EU3Sh5v+Qp?vs;0Vm&owsMuoT>8q-8 z`s@jo5&4m|_t1C)tLSEH?jyEcdo8)LMjNgf)Ig-2Q(8jmdUUZm-VZ_Dh^s}y`( z-W2GLCdaIDiN_JUFReF&E9}g84rgJ?OZAHMt|TZOqS7a&=~#d9sY|h_-Y$G{lcau| zWN|fr2%NMa$4Rl#zX_d@&vj}I5Or#MJj}or%N+96Fr)qAn+4AMrc-6xoiX1y8%i{W zP9Gli(Q0b6xQ|Rf*Eohj$epa82LI*D*~NwDy)d1C(@nD5g7b6EdU`*++u&z2nWNyD zfI}qeC2x&2#(|@ilf=nQc6--x*)C(-86&Q1f5eB`v?)+`*n7oPE4#1MK;P{>rgQWs0k0z1pQk(uIDY?-uTArhy%_iu-%{|FyRBIOoRaZ3O%`a%IYuKKq zW}1%G#%kj;TL>-qm^*bKeK~83+IZ%@31*LccFSPhS|~#M32}%-6kolLh{Pl|N`>v~ zheNibL=#Ythu@N54^arjEdP>_ic$RG7C%_J(KU;OU%VpFx|jt8s*!+fT;pKSIEWjr z5Qp5Wqr$}4J}*v@c5u|<6hG#@%E4n$fAgapH`B*58ghFdqnsH5)~`o$F<6P*W0e5O zJ+bBRlG{SiBoA51Hj2`XqbwyY5{btSRu=*d37vRsRtUPnSXnnH3%U%C?{ z+{Wk2{TuW8D3l5(A;EM`=i$t?(y(~iH4=Q6i9&snCcU4w+lKF`%kXt*I#=#=J=s7W@2 z2J@cXyk|587D@IYZ2y|AOeVF;bR%La^Odah2^g#AmPs~GhavrFILSFqa~6tb(;MmM zAg9il-r|6rgDLYk@;IEfB!H6%M*0sv@f-3c6Nu_E;{;_n7akCsm$*9q&3ihP{L~Q+N2s&i(44#p#AXGgY zS2n6-aoM>F{K_K%M4w zZ{d~Kl-#RFm%27{ttIN2pc~PRR<(c3rSEE4q=V=_^q7tXDRrCsHPAZuyFgl*L$w#i zu?6t06HY8_r(0C=qIagXwdvD5ydn8o_jTxsU57I)TI>$CIuYBQV=Hyy$_f|72_CK) zqr0FOCw9U6^7y=krl@(pMH;Lp|9@N1GYT{bev{KP}?_aP^?m0JV@dGw;mf*t zgF)foW{*8z#TNO>??&AT)67g=_dC_v_3o?XY!qyRc^rM?_S^`L@NRpW%LyO%I*mu} zy;|HB(avfe-7W3XesbQ^9_GK>ywnGS`@WH0xwTCm5_igc=CzU#Nn$Msg3^5FJXe$+ zO#kG>+?ooPUDSEa;b`Ki`9f-sf+P6V`~6GDRej%o zMS7oW9`YuQ`QcLl`eMdj@pGUELC0Qp#J_&{O1FCM>$Ur>3tr~Q5B~B)e|(}pe)aE7 zjTn00dZ=4J+s-e#@udza5}!U&rw?%Vx$^qvi|hNGSAIUPf2`jF{wL*Mz4{g3`2XlX z>;8X#zV7u8djQCGcNa$lfl&Z+4&w)ZHUv9O#b~t0e+5W@xCcytAb$8za+9-t3|I#^ zw{77Pf$e90Kcx-WS0pU-bL$dV9;YAz=zac&d@h(NA!si$=yW!Sb>H`UeD`xan1BoD z8bG*#DI$cdhfe~PE&+ub+@gf{kSsyidAj9rB-nCP2!$QEYfZ#mjg?015>WXkg(*mZ zY=C`!Cx#;!WFFyzEZBtqWDidi79UtpFGz=#S9CO}DX>>Vy&z_4XIpdEG7A`in&XF7 z#)p4+h+}wMOSFgGAY%4{h?BR1^T!Q@c!-ARh!-}8O4o=|_lVFEi8u%>2mgm>8YFg} zl>#Dna+|bwg1CRAxLh@JiuIL>mZ*pu_(S+MdaxK)Ix>qRREwSHU}`uU<-~~LCX5#J zi)0pzM>Bz(h>XrCi#~^nDHd$*G>C9E2+2q$&8T8hq>4qDdJ5QpdRSE3D2=8lR;6c) z7)VUIxQs(nc-)AJ-{p;qg@K@Og2uRu=Xj5?sE(9|D&dGq+31hfm|VW|kDRlR0Lgr> zNQ?W2kRDi#V`gS$w}w|(edY*^5^0e}Bx@Mij(G?!@JNjj8Gs+jkoGu{30Z^aXHWCw zbQL*(v-XY128tsoeKSat#ix=KiISD3iK2*(%=mRZ36tT+Y&JHJ_5YTAlsJ#Tc$7gY zd`kIfOj&rSVR)5Di&NQ=x0I7tNpYC>5AsKS11XhZd6WHDh+@fdgLjffsg^?}ftTo( z1qYW_d5tTkjhk1GE!m4NsdDGSfnIr$`WBc~8I^MRlMX4E8tDgHxtM#2T#@LPT?v?> z$d-%P8HP!jGlq|v0f}kZn2Gt2dMS?**Ozg*mc15nr#YFaDViSHmaW-fV)qHCmy|-u zn01(mM%jl;bW3vBn78xZ1c`H3Q!aFNNHl0%Z-Ii1QmdND_w*2!Yir=2Uwo_wf}uKyUG--&;}X`A&~kmq@1 z@~NKN>7P3pZQCsLW3SdR({pZ3U|t5|yyhHQPApy%kBvU#BK zIfnH|Ma^lGA_`m$`IifNogIpmn<#8As*EjZoZtwe1$s@lhMC1Vm--2Q4>+SIcB8Sy zj4YaLYImP~!lSlnqd$tCIan6H)TArZ4d{9hPTnkLe`w2&9r&p6d~& z0y?Gu8l@*WoJKliYI>k#+NMgH4{La9Vmha6nx%u6rs=t+`N>{>iismim8$ubrAd(B z$$}A@qTkV_SsAHlS*UudMHGc*kIIlmdS|ZJpm<4=eE-)JR9dGndZbyFsGs_p*cfWs z$f-k_nL4?n4mz70*`GN&o@hsoRtTpQhMhc_oVZ%4&ZkkBx~jiAlfinJI(mNe_nC58m3F*=lX$daIb&ap=cU zDq5q^IiL08uIqU_W?6-#N~7HfmV!E7`AVSNig)VDrQjNk+WM}U%6tT?W4;)x!#a>f zNSHrRp?|876YH>+DsNc@u`wpGifXXMc&AB_v9&g`)9OHR7qUb;jU-F4GHR%_x~G6z zvkWUhBo$IR9&^4ZE{~X`-Egv^jgMD=Mc=tFQj{ zj7cl2NcnJ|*{NT;wFj%Lt;wkkiKHcarjTibX=trwOP6Q6vYOhbJbPOw6?!jgsk#cc zCKRL(GPQZzx0@QU(n_~t3x;<%xSoowL3_9)TAgousxhmWl>9Uo`?;3OFsV3$CM%PI+qoNSud3U!nv0D{cc_k=x+3|sYulZ`3UQDM zx-Z+cYuAcTd6xXSmPv}E+X}Sks;AqQg~X@41ADFP=)6^Xv3BbT{A!TFt0!KXvf7J; ziEFynYqNZty~69ew=1yERf&8`ez<$E=4E=B=}VUPI=^0rhtdm`vs=sophqL#f z`YWrWJDTg-tx<@;+^E1%>VZVra}{jC7mUFftickPkwXxz8w|n)IessOEtR7@A&kN) zY@SV2!j7uKFPy~#(yk8kat_=DPsF0(X7k~M%--;|YDJd-TDH;ZB=C+wsJi=wMNqJ!y_$c){gQqEv^v80nNo zq^wnEV$}!MW7no%Lz?}F_N=O~Y}=kwo3_+fh|0KH^(xh^Ua(8;!kC-K*~!3t%f4K> zck0!{cx?h6Itr2D#FQ&r7K@l}CTM~>vn^csa^1#=-NuEB`m}0SqBX33jqx$*y0XcF zhT1ynSe>N*-i|}1HgDUw!{+6iOZ+Zb%wDNS?|uD&@Iaf}aE z$%_Y%eSGfq?AyD~{hPK=ZrRWKGws+s`uh8W9{<%wpJx>`#~)Mh;1^zh2?>=Rc$>Wk zVT2MQm!L05&3Ddn(Al@4f(Cln;e86Frq+nCok${zDyC@4Qx!&Y;YM4%xZQ^~hKOU0 zPBGX^k3RkgWROC#Q^_Nm6q(eJV(7>uB_KAbA(Rm*86|-_$;SzI-`&WWl}}Px1dA(< zDQ1~u;sWLgQZ|T5j9m(|m0*`(6Q`G4rm1Ey)Ig!9F?_=L$a8;6GUzdCs6dfYGf<_II%nY&g7j%=k}!G-sZmt|QRk>MqBG%|1@3sJnXZ16szctB8uRDWj3Z23ymqKmQ2IE3)Mr*Fm$P5%}w^(iWE?jXYXw>R-Bk z3vRfV{bwPl*DAZ%u-fUC?tt9_d(XK?$_uQx9MF5pkPBZYa{ep1t zxY$Pfu79(V>2JjC!K!bTlSz!RWvBu*N2zfjXmFJ9HSAqm`W6f?$-+hmFqcvej54?A zdi&YJ_o|#@ybtf(YDX=BBx}!QLRqTEA9Q^FX!6p#YCY{(MRupfwqKGhHeYO)78TF3WK4J6u4&zfWOnb(_h?jCQ?k2FuRVCy zh4-qq;ecZ}BiDaFK6T_zChlnEmj7Q4rm@LvF60)N^ZV|WIlt{VhnItnwCJdpPWVix z3k|#6vCmEl=7+Do#wN^$-a6z3y-s?{9%E_r%9{nYMdVZT97gqy8`Z#!TNb0v!q<`|H!w{+s91f4`jh2UEP~ zMUQ*h3&YvoHyC0Buz>sPAE$l=K?ZiJOfv$KyWD*Q>$PjsXuZQ3( z7Tu6|mGMcDd?q4M6{kos-v6nvh|Qwh#j?dZCZaHP667M@*mW!~Lh)(ng5L3hI6162 z@ou*(+sp_k#?fg@j?aRl%dl8JD#i^qR}5rYd{xFKI!ldhYg`TW$VSI;FprBwW4$bC zMs1Och58F4ByT7a;&8~{XN;R#jG_B**teUl6w<#J>N7~4%UX5u+)ud08N<&%Z z$~bYYXI)R(ute$AWjPI~T%meYu8u&lu`>;0VT#H9AgX_it@_&RX19Ud?XGtn;5mzCiF4$Y%RIh|-t<;( zvL;*eRSa-Wmv-%?qG+*_u=^VA%gAgTzxmp-|wQBz`a0%-{wbQ2Zvb131%@9 zp7XmFKWfInt1*Cid|)8cSIG7ya*=;b1|nIZzhhh|jDs-W6@x;`Q#LY_4F?U^onaix zQ?Zb@^q4mqA-`1SLz&HNWC0`D$7^ojnf=>l3wt?W+L2xq?<_xqT)Dp|wqGRGgyW7W z+0K6s*#Dd1Y~2*v!KU(vk(M1oL)0C5%=}4SIz(rn?@aa4i#DmH4SeZ2v)RpQrqZOt zRB9!iI!|$yGoAf|=Q`sV3QMl_Guh~5=Dg2RwkA}s3q3|z(*$^oe%W;iT|dH<*Fnc_ z@2XjyXb|qOA7y3ljhp>s8k4%!AWrbJWz6jvwC1DChYWe#+5d%NE;#xTuie)O9!z33-zF^|3-g?=IzHt6Nz2~LmyM<33YQKj(>Vl6t;oI)&$P;+-o3H$i3m^JzJDu}1AN-aP zF8Nyv8}5K_J?lOH`iJYdDzsm{=^3YZtOuX%eYdf|5U=;)&#~ROcX-EU8TK~s` zoY5H%dusLncX_6I+NW9oNNh8vU5-?L&}V!E_6}W;T=yVJyZZeo}G>CRKh;sOr zfYc;!rz1{07lJ`3F+=z|n?iX=7=AMsUrbnfPB?#12!Covg>|EZ-ZoVG)`1{6cJjwp zO6Ou5I7e4^dS8f6^hSZArE%{Db8eW1B*%kZD25n?XiG+Dm}PmUrh;tvfn9icf~a*5 zSBGKPhJ+Y_i_uN2&;keyDRm$cMnUi=^0#T<2#$cVttT zi^7<8eOQdFNN}#G4>j0)97l3EIATzDfoTlgQm!gfk%zhM}N;afT<^q?PyrTScss9eb8uu??_tjn2+dajJ0Tlx2TNW zs9EM1klnYCCdiM0D3RRgkItx&75NR~xP#=#R1levM2L+_$BqE0kt!*RtGJH?>40;0 zkQv#M`UrSkhk$Z8k{el*9cg%GH*mqYlPu|tE_sv3Xp8Bni(rRUB>(At*GP{Z35)np zl4w|zHYtJlD360UhP=37%@}eP*&TVMc$HtNmTIVgrWS)|IguFHmvoqghv}4eH3shMAhycVn!Xjjp+sepr}<$(f4j znW3ngvB{Ua`IfzzjIb%3R)}k~shTipn!yR2UfGt%8GXd*kj5EHx2Yx4S(?nrouHYU zxT&43Nu5gRoY$#d=ZT)_sh;b}p6O+6;k9_}DWCIcb;aQcgCc@J=0%_T$)81eZzOb| z=+~bEnx4iI83&3_gyJ0w$_WJk03rViO+iCPLvL;%1OpH;00001S8{1|bY*TJVtF7( mNk&6&ZgypIbY*fNGA=VNHz03jAWC6wATl{DATc>PGypsGfAP8i diff --git a/pkgs/games/paint-by-numbers/hattori/64.gif b/pkgs/games/paint-by-numbers/hattori/64.gif deleted file mode 100644 index 366028c5881381a6e682c3238bf8a7581d98d1a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4072 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 diff --git a/pkgs/games/paint-by-numbers/hattori/65.gif b/pkgs/games/paint-by-numbers/hattori/65.gif deleted file mode 100644 index 588d0516917647139b757cdd9822ad86f75c9028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4199 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 aGA=VNHz03jAWC6wATl{DATc>PGyppopuQ>q diff --git a/pkgs/games/paint-by-numbers/hattori/68.gif b/pkgs/games/paint-by-numbers/hattori/68.gif deleted file mode 100644 index db0d4190e0e4a9739532b325046999de3cbbc0b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4002 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 IIXN@{J05!HCIA2c diff --git a/pkgs/games/paint-by-numbers/hattori/69.gif b/pkgs/games/paint-by-numbers/hattori/69.gif deleted file mode 100644 index e21860e16f22a6499a0a7c36b00cf294a55d9028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4448 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 diff --git a/pkgs/games/paint-by-numbers/hattori/7.gif b/pkgs/games/paint-by-numbers/hattori/7.gif deleted file mode 100644 index 158d4f109fbd3e38fb6f65994087634617b8351c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2595 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 diff --git a/pkgs/games/paint-by-numbers/hattori/71.gif b/pkgs/games/paint-by-numbers/hattori/71.gif deleted file mode 100644 index 260b5c9de9caa5b91d270cbef783c5ca77ac5cf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4664 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 diff --git a/pkgs/games/paint-by-numbers/hattori/72.gif b/pkgs/games/paint-by-numbers/hattori/72.gif deleted file mode 100644 index 40195de47fe0476213662af215daadb3a3eef4ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4041 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 diff --git a/pkgs/games/paint-by-numbers/hattori/73.gif b/pkgs/games/paint-by-numbers/hattori/73.gif deleted file mode 100644 index 51f7eef888abef24eafb7edc8d7cc958ded8c299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3867 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 dWpW@gE;BASAa7 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 WHz03jAWC6wATl{DATc>PGyprE#~jQ6 diff --git a/pkgs/games/paint-by-numbers/hattori/77.gif b/pkgs/games/paint-by-numbers/hattori/77.gif deleted file mode 100644 index d00f7b14f2918038b583e0d0ed4d2239996d03d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3976 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 diff --git a/pkgs/games/paint-by-numbers/hattori/78.gif b/pkgs/games/paint-by-numbers/hattori/78.gif deleted file mode 100644 index fd2ed23bf5ac67b5200bd2a6f4613643f99686e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4455 zcmV-t5t!~rNk%w1VGjWg0e}Di|Ns90001li0000F0S*B`0{?`Msmtw;f}FJ4i?iOm z`wxcVxIyNLra`kZ?eZ#dGDj?Z)cNh=hW_KhgfgOUm`W;@KtS_pwC$!yDzt}{UaQ4y zmwWs!$7Hb7OcjTnX?D;zd&S%GZmqRdyYFvpv|ScBwl!fT0XT(sIM>(5=w@~FI4Sw( zc-RQ3SO}?yCLBb-Mi2wg`dDQhWB*>8(M4B9VGF3^G zEK>sW#8IOoaT_K6%OG=&LYoJ1UfhY$X3(KDXTJMs&_zk4F`4poS^{cDsX5^_Gg^*R z)0#IiR87itDGaeP1P)aCHJe&Z(X4HSDby#|v~j&EHM?vq-efKNx>UKhkgLFi3-A4_ z3LsrVZ98dQX1HtQ$&{ncy-N}5x3$~aZ8OY*tWL0SiDEu`S#RdldcdjM2M6?N3yW(@ zU0pi#RMw+8Q`0)ppJyV0Ul*m|z4#7Q-JsoVW&?7R+S`-DFVWWu9giH53nUlN{MzaY-tepOj&C zWMvf(%9!4c9OB2DkvtB?<(C5%`3s97-U%3tcJ7I1pDsNaW0`D9r(T!i4GLzP1p>9$ zlV}MV+mdJ&dZCx^F$k%fbPlO0riyavO{k)dN@}S~G?8UAHmcg0ji#1*Afk+3xoCmY z&HCw6xxOk$tciYcCas`u6>P4);tCh9f&ci)ET7Ic3+20!ST3Y6`5S zjQ`e$@2TF7d#$_I7K>G}6cZd_#t3JNF++*a7-h&Jk4$oTnUc%cttd}fvRQJj{HU=q z(c4J197T68vOxl=bI-!PJY>8;x9FbCCl5>Xb~(d5*3j~5j5M5YI^F2hW5$VAv|2x# z%Zgj~<#j1xj{+!(UkV*?)GX__wAy1#Zxm zttuHfc`Yx_HsJyBcQMpCdgtNWb^qI3xZD_CuGrUHlU-OWV}DM1Vk!2i*yV279WG?D zDXz5RR13ao=AHT|yRc2>oj2uw@634cmI0nPp%E*?Z^Z=P9=mXF4(|M#nm6yQaaDqW zHjdf*>pS&5{ywLt8;TD+`Ho}VwCC#Q>7t4_tq*_F#xOg&ESNtnF!$AaZ)oF8%Zf7e zjSqZ3%hb1M<`~Z)u5z&Rz}h(Qz~PneFfo%@K6rP$cyUR9({mv0%ojZnMs0)7n;o_! z*PI9n4>^~jVERf|y84N3IWW9a*-WRW#GEaE9ot{r!e>3zagK(Tqg&q+m^Su6&uxC= zUj$7!K>pn?CssrSBff5xE&yR^Ep|K?6uBs`+~G)&ZKO*dO)y0vV())zuwoatNXSDbA%2vsp(QJM z3Q0Olk+SOD@glh}P%@Hmnsh)SFB7gsLegWaY~>@%RZ30*a#9czqXi+v%2(pDmb=tt zEGPL#tB}!N+tZ^0|A#;XBCl@090DdU3C(AEu9>3XK^_5y1a{HVmObQVF?&YLk8zBY z)Wns=#%Z`}BoTiZ@epccn5}^~BpJ4=Bu< z9kZPWW$40QvP^lzv;RNJ+(|)$AkAoMG^2jHs5R#qPKO3Eq!%=3KuxNzk&5(Szj35T zdkNERvU741lThUNDNa|7W1!uP>5l3oOF_&?(Q(^C?UfUXp5SRrawU2b);U3(u^wI;(C4TL3zO(-`*c~=Q0wz6K#YyTif z6}p}@tvdB9UJ;vFr*W{1ZrzV8`)Sw0t~Rwr9IO}(4QH_wt#Il+ah zagU4K-)8Qc82{AkQ#}jV;WE&+RC+B=?I~K#(zc0eyyD|Nh`a3u>u^8yZt5DC+_|;! zyt*}mYsg!(*HJgUK{Qt99{Z=zNtQN@rQcPp8dpe?G^Go4;e1gG-0UtHcaKw_y+V7$l!OpEPUp;7Ft>PD2ktGp* zTQqH2-wl3TQAka-V(HpPI?c-9u{`(f3nsq9MiS%l=u=Y38hK**HNn8_c?mUf!l5 z-QHA(y3m{!wUOEkHvQW8JCyxzV`=R^3k9l8%_Xppb2{C_V%X52jdZb}`{YrlX1wui z-9(YhWno)d!)0dmmah!aeA<-5jD9qgU))-0gF3~PeqIT8dlZGDn<2FucA(LmWn`DT z-SB3zz3*Kz6DF)+ks>aogS=#HdpgS7u8?|HeeZyW*E%~awZS`m?Onev zUvFy%7RX=!NP!1^)z^LC^a+G88bN`72$6iIc@8wh<_6(f#OGiLLhft z1`V%feD2p}M)Vm(CxYo`YV((S8>ky5$brC-U}o}v14u64w|N&8dGyxR& z$7@Mph@EGDeN&41Ly0?;Gk6q;erAA1=820~h)?Kvt9W~phi~3fi?Qd6?bnE*7mS5A zjKEinr;=nxn2dR~jOW*k5r|oL6paFieXpX8$-ROk6Q;+GWk4eanz(|hkD3Gi;Nd-xa2Z?$| z@{jLWJL>q5zqEz)m@g0sg|){c6lr?)$R>a|Y!T^q9odf{nJ6Nuk<=%VgXWRcf|C2k zjVsBGhG&unnSc1$ksH~PX+~@``GxgJbWK%`JIRtIIg#%+k(sA~_y5?7Mp=^_nUqW? zjZC?VNb!nAxs*qlkyBZ1{&?29s?GE5*f^KIxZ1xq_}ZmU&s02X>feDVLnLevRpqJPDbG zNtMY)nH6Z6!ibrN6`3xxnc-%WLn%<7sf?kym!%1jV)BQUV3%x3mTtLXqbU%$Nt&_w z6KF%5j%k~j`IRFHn_~HtwON>N>6#|FW@}k-YkP8MY zLf8)vx0^qDRPQwiIi!DkSKMR zX>)rDoM%R;eL0zjI*m`qFMb-Q^cJXd7paIjsiUZUX#b#qx`L@n+G$a$X3W{CU}~t9 z2dAcLWgeQK==qwTdV)--oSFKlt*NV^`Kr@br8gRVb*ZRxIf|t^p}YELc&e<+x{boQ zkU~mz_vc;A+N`H#t-hM8MEI)&DXmMF1;{$9*UF=!`KPFodgV%~mAS3S%BaB#t5w;p z7B#Pk6qD8nt?sI=!HJ}2d9Gesj>H->;@YCuI*`3`lfAl{7uTjsMX>gIrspV?efh7> z*rVSVn643ftLzG|`ns@>*{{m@vB=q(dxxc{I;FZvoXZ)P3)*dg#i_LF zvV3~8h$*v@im*V#DiVjL@9L=J%8*6-qbm!9X#Y4P1iG{P3aKh9s3_aBp1ONYTBlKK zwCRYJvbwGnsHz6*oiAIjp_;GeT0wS+ijyd?)mpYv%C$O+t?hTVyy|oV=U`z=v|2l; zo4T=!+P7BgGozZft6H*1i?VY2w_WTgNV4M z`L#3Ye>=6gU5i|v%eOGrs<1bS#hRG%*0~Cow4rOVt@yfX2XL~hy2c8&g$ldjsJoyG zsvjz~Q=6L&i?F_nwyV3MZA*$Eo2pK0ekV&AFsqgv>!uL}EYN$qy#l2Nx4gVtdpcUY zPdlEAxuL9jxgp!TV!OHGn7(FIxwNafoBvv=1q-!mcd#`onHbOS1|axyH7? zBkHqHsz`EszYr_7ZwtTF8+eY3udaxys5`FtTXz&pgYoOJ_e!#2+I#WJ!GL?X7bwB# z3c{8fz9W33g;=^EJev?qw@pcn%1ggC98noNy;sSMI6SI0e zeoMtfjKE_2vpM<3S!=f_oX06llHTXXe+!M@%V~C?GNj^#N$q9CXObVy(`p z^~ohxuU>8O+wC&f?6Nm@BfD`eI`|xpyQ60~93Awx#RsUD)|b?#xE3REB?AVzH#g%L zX;~&^BN(YShq?I(TFFWIGkPj08G2c|_^R?IyFxo_TZ?D*WA- zpMj4YJs8;vdNODTks*GA{td*l4`9D}7g&(6I0B;xi~k4FwUSeAoi>UVG=?wv(P8$tf+r zHhk)|U&i2=3T)~5CG6nD+3H?AX?L^ZyhnE028t?btHqrOuCAAPa^#qBZ*QLTBVynl zWS6}?UAb%TE77axSUSGuU8CpA2kn`D#`~siv;SWm9&6Y{R-S+9ac5q3d7bwkVFva! z*BuDuab127a+eitl2ON%cHJEaULp|^B1?!DlGlNU1R9kfb{|fqqJbeHc;a_=S=XR@ zH0o&La4!A`WROA*Nn~*`Vlh@boz$2{h9KIw-jh+jXVya;Zb&7M0*(ldheIBjW0+SK z`QnaZa-rI9J!(j1duN(CW|3=wc@Qe&tkPy}KIZA9dcnbGU!bIY$zP#2vS?_cqS2Y< zlH@d29iwmp78{e2Hn&Wsnr_Nzr<(#1QdsUd=V_@^PReDYQZkzAq^_>nB}}El;#!)c z+G^{YJ?2{HjJuk{tE#RbH|r~k9xG_F$p0>zS+Sf>=;)H+B#DNdOx|H<|ns%EzdTOMNZxCmPJW zOnlhF;MQ?1G$MzLv6MSQ`LjzacC{d7`>1;_8SrL;^d~)2YIK}#`usG87FO6XihHeU zFSiL(@|1#DKbG-qR5N&XkViV4n7d7y%`w?h2koVhb@PdL-g@u-r=?k73*CTKMh&%b zevhrEuHn9Qcptt+t1s7kVt2RPh5zHF<*6ZGn%vj^Ha<7pR-=7+fth>Bd6d3>Ox)0X z_kB8(Br6+pJou@7`|Cc;PK@S@H$-tNkb(@f-Gl4C^~N3(@B4cCMjm$JX-ls>tkoBv z_3w%^&#Jnfs6QrCzT` zxh-{lT3-A_$1}At4t-*JnD!)Bw(KCNR zXgmf&aD}C7)BRppGUV+Jh9}dTW+r$zTn#L4GQ?r#_BN*vGL2x7+fok?*hB6W&2Z@x zVy(QUwbnVYMID-=5ch?}EdOe8i|hi705zosE;0js!P=k-t2L|=`Y<&+B$gOYu*USX zN{tvy+8NDgNAJ85jx@wyAOGk_&g_v5Q;HD4I_JGQ5=@SX?1$%0lSUg25(0xsQsCxt zLON=pjJ@%e@JuwV$E`4uVVtBoYBnJqlF}niYg;P^_zrEM5tXd0RU0v7N+WnuUP^l2 z#zy4JzhF|7ms}I{l-8&sx-pkS2qYk%=}c!bbBqOBKC z*OcWPr@2XMdD4;s6WkXAL^D{vQ(da0QpdsJneRjG$npne9LePmfrWHt+z4a2R-;9m`GS34_t zlVMQ2=t|2fG^2(OabqQ)*rqDgxqWM*?sOE}+;-LuhOVb<3TpxnJH5g>bw`gqC_v$X z*{52TtZ2P#X-Vt92YuA5dBj<3-j`XZnpU!+Js)EI7fnFQwXQqKD^b`=BpAlAqkg@n zIFSh0mI~IkF#nw`Mh>RAq&uCf=jqECx@M~J1j zwG30Ha|cV_z^>P@ryVYafQ#Qj*{x7?HEVBk+q>^>Yp=3PVg1xvKuvnryeY+JP{sP( zA0ilm4_5He%nM$G&KI_|-E39Wsz{{Hx4jwNu6S8=V&=9`#dvJ)asX@}Lix6&CWUc; z8Qc+V8qr1Er7?>w>|!O3_#JpM@ML{F-XNn6$4V{obyqA!!XhukHyyG&rq#~mE;q`z zoidK0jN~wjdCVbxBpOKvVfZTf%NC@vdOe7wob8gQSAFk~D~xCRewEE{Uh@_*{Mq=T z7tRMRpZ}mi3|$5n5ttnww4VzdTI*`ryEe|RT}ifE*6AlU{Oukhi+fJ`c9+mc)^3}( zoZvj`IlR&huar@|VG4WLzi1}vcbTeE6Q38+5;k;fBeg(Mmspt74Rz(}d+bsF+DLDy zw6pJ8k!MT$t@L~JD2bitWXm?&eCGD9Wvxhtc6-*VE;j)=+~QfPbd?3JwYP+-v%qV-C@WfLoW(vOsz(ae@;1@Rxk8td zlmFOb-Q`@q7Z!O=f1X;S+nMP7R=Bw>LoL@{yy--(wyrTg=B#Ty>ksX^*TtxY_F*GB zRiN(I&yMy^IncOXRmGFgUdm#{eO7Zf)gbGRPP~t?lzM*_C6~zvzvEJpU+=pL;%;~_ zHbL!n|9jf?*oH^~p6(_{{Ne>)`Nu=vS(fM5-9N8+w2GyM{D zEQF=S-lL^QeCj9vX&<_t2@b^#@%mY_(>wn5wg-L#vj}^9NWLn|5B%^`zx#5b9_-T( zee@$={ViUfkhhnR6F|m#d-8p!1Fq=z&%bx?r{?m6Z-3XpiD5YE*-q9wr}0U(dH=hJ zzVJ;~-SEv77s@vbbARN8kASt0btaA5){kjdi1GN0+o+8< z$B*3zW;G~;k+^#3cZu%kkl-kP{}_%ONlA}5HS-99wy}@}d0OdMj1Xy%8~J<81uEn6 zY2RT>r-+iY)seZ#k|`;XSe1h!$&cgclI#d(4QY=PNqkn9ljt~q-auMX_nu%l62{n zb}5y8NR}ZvmxtDuMX8SNsBj>pOJT;N%nTX37@4$q2x)Nvnikx2%p$EpU<+LXZeoq z$)Vc!g4Btjd^w(!$)KZmozt)I~l!9rQXxe}xl4TDmrQYe6coU}z$)-KZbl!+_VG4bK zx|MR8qhku9N|=SwBcWzmsf>rBkoqZBs(Xw|rUTdk_nIE3~<3u2rkFpn{P{YoF6;i%ZM33hIfxu@&1hbu$Dy0K&;uSUwJqib?n8@GbW zub@jK>T$nGw6WLI=HsO>$EiKhKbs}%Bz+ao4#(jSnONA?tq(O=)0)L+rD{1rG|QvuS&TS`m)|inrVu< zsau;GE3r*0z_m)eG0cAqhJ$JJD1R{#JZ z{|ik)Lq|hzZXg5$5HSD%00CEWX>@dDZXjZLAV*0?LvL<&WpZ?7av(A;GcGqEZ)PA$ QVQwHYIV>PCIXN@{JGA|TJpcdz diff --git a/pkgs/games/paint-by-numbers/hattori/8.gif b/pkgs/games/paint-by-numbers/hattori/8.gif deleted file mode 100644 index d08fd358d0472972fc92e7c63b28e639805660c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2719 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 diff --git a/pkgs/games/paint-by-numbers/hattori/81.gif b/pkgs/games/paint-by-numbers/hattori/81.gif deleted file mode 100644 index 7ba0dc4edbf1e743eb4f35b64733c4ba1f92e464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1540 zcmV+f2K)I(Nk%w1VV3}x0Du4h|Ns90001li0001&0G9wj0{?`Msmq-Kqnxzbi?iO? z`41vNGcx6JD(OSEri+I1%)WMftFWHeI1L1?L^~hvcT5_W#GunLJVXtrh?FX!N+H*q zRSTGa!`!j*iPnzR;Wqp2j>G5jI{j|XIm0E(nJQb7WCybkzn%Vi^88sRCmNYGX%anpQz#9jHHIv@Me1o&s2r7s0F+SM z)UBq}Y@ynft3@(5vzoP8^&G@|YhB@^I0~p-pTvv_L`SffGJCk-T{Ife7h4K}WBp3Y z)XY(ljN?U1iZ(1`Gp%%y)wB6d`Ru-uA$#e+>KbKm z!j*Xl1;c6S=i}N`yKbM4zPjtShl~5%Ch`8e*`SXt{0G_=FM6hji`S9kMT)m5^R%OB zxK6rL?>wErud4y_Ls7^~(9470Job-mj(hiC-i|)#X2+en!nJ=zxB2!Hk3Y<)_rAaH z3CUrWdR+in*FU5A;eZGnpaQwaKmp>dWP^L(0mbLP3Igzgmtj}|+ZRFO$?ggI3!w;; zN5Xn7kbo6~V3M3Lznj5rDJrBM3$?b7djmUF@;4` zo|x_@#3lByiR2>=6(c7_BBEwdWn0W46q(q?npJOjU%a0Cwi7lCC1Q+23F8I>qCG3J z5sVF_5VT-e#U-4tjb%(%_+~c8DSD}XXM|a3%;>xL-LZ$y101^2g-CCV&rFDWq;*7y zk;p}*B8P;e9~W7&PF^y7;{v1!MdHDEof4HEbkQm`!a^FoGLxp9WhpgB!-O%il?(bL zpLUrsf*H_Yz>J$PLHMs?(k++7^g{sv03rViO+iCPLvL;%1OpH;00001S8{1|bY*TJ qVtF7(Nk&6&ZgypIbY*fNGA=VNHz03jAWC6wATl{DATc>PGyprB@9vub diff --git a/pkgs/games/paint-by-numbers/hattori/82.gif b/pkgs/games/paint-by-numbers/hattori/82.gif deleted file mode 100644 index b10842aba43706bb15cd61041b2dc26e237fbc0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2198 zcmV;H2x<36Nk%w1VaWi=0Du4h|Ns90001li0002V0LcJA0{?`Msmq-Kqnxzbi?iOm z`|gC|hy;zvpo^-o&k3jTI=A&JllorXeNF?~gt(xA<@y9Rupz-W`Zb|xTx63_~;l3IVo95 zd1;x6iD}rmwdW-<7sxl*W*Ul0cV`;sCJ0A*8rv$GHaZrjOPJeRmWNh?;oJ0S%tx$e z9G4vYru^)D`my_aD;?T=JczPaAc{_ZYW4o@F{Iqn_K_ILh` z{_k(vhkp737R+W19}a#A3F?|R&tWcw;;wW9RSe+4hyM_%ofy_IAw`X@=)f{K5@pAg zcF2`;STCl%nU7f7%wQ>^%t3Mz&AMU__ zU}FRRcOHWjPACjl7`lg-e-^eEpo8KJwjN@dorq#)eq98jXd;$ESXUO5=pj1KAwi>N zA8Ghv8&Sm=DUfLw4lQv3ao}PAk+orKms%e|cglK7|qLQjAs&*|I>7uKaTBED2 zvKLK@wH`Dpt*qJ#42!q!+ACI|ev0g|@c$IsXqOc_2MS}z+1TBJxdJ7Nv}O9SCbLb{ zV$x5+(n4-^zRB`!xvZ#*9Cs~xtKCWKa>K5;^WMu$k+aatFTVE1>+KEQ;P~t}3m$AR zdI*`vaC#0COiQ8?Pi$1GsOtKwsW5&;ro{`#N(9Co`zj;HkJ7j6I9#60@|#D3JX*>% zKn!!u5Ax`7UdisPtbS1Otcc7C0;@66h)Ov!GD-I zR{Kpjd1Nn+rHVYgROOH8I=pq?ivL=^8Op0=8&unvg_(JwO|Lw)*mZ)wL0?Kf9Cn6i zqAr!_XH!Y>8jnLAQ`!o1`&8|)gDEGO5SKn;?SZm{Aj_reYCKMudqpV7SDC3&^Kd@D z)$i7CuOrs^+RlCWj3r*jE8?FY_pliszY6)m|Bb8O@E?tM<+3w=`}y1dDT@B$|H&l( zg%5zX)1ClHG!+0U?QjRYoKo<|p9cOccM5Do?<8oGG> z@Qrj7p|IizM;4kfi+R*zAMN-@KrRpt-5O-Vpa`%XWQ!Py1Plz_2&^{l&O9KJLi=>k z#F0o6G<)RZF{n^UwN)!4R5Sv#oJGhM4sMHqoFgk+2}wWJQH@$#CNM-^hM4(|F!Wp3aWpPfK%4|j^n@-VXA#GU7BF<8l zIF#mTU}Ru}2+xLs&5jmL*Eq{aQ9X9lo)QJ=M%Oq}e=by!KO^WI ztp(99wv?VJoE$l23N@Fy5vH!3XijPRQ9&Mbrcq4kMPJE-kj}HH5anqsV{_7b^3bT? z6e>$!woah-l&bqQpvgw4Q>2O&lTpQ}54j3fgC50j6|Lz%g@`?^7?G>k9INZ@bVanz zp_OLK>q-F{R|q{cs3@)5TE99~ATCp?XEm&o5PMce@${`oWb0w;7g@NPa;}cOYsE5K zQjT_ZW1m&*UrqWsuVNOYlAVE51De{v3bdga6(v1Yq}tLl(VTVBVq;^=z|`gQw7bQv zY$3~9!sh05x&IxXOj`?t*Pe#C$6f7ip<58jy7P6-z2ro(tDJ!Tl;1!HHt0;LSkrRUzYHDfY}3lrnlibzI7RN1LEBXH`ct1! zPV9oK=u;~vxw4!cvYl#t3o{cL%xYe95r5of^$I!8Uy3lD$+BKF1LDPZ1_6orOP>Gs z8LP-#;WVBFJ!mNXxu+RUbb?nb<>@+_%Pd8+j|@ENCs*2)Hoj`6k-X)YcABi826djl zjOaEWq5uFP{|ik)Lq|hzZXg5$5HSD%00CEWX>@dDZXjZLAV*0?LvL<&WpZ?7av(A; YGcGqEZ)PA$VQwHYIV>PCIXN@{J5LfO4FCWD diff --git a/pkgs/games/paint-by-numbers/hattori/83.gif b/pkgs/games/paint-by-numbers/hattori/83.gif deleted file mode 100644 index b651aa1f032698e8267a941d037f617b4609d895..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4414 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 EJD{k?9RL6T diff --git a/pkgs/games/paint-by-numbers/hattori/84.gif b/pkgs/games/paint-by-numbers/hattori/84.gif deleted file mode 100644 index a167012a34a834ef5981813436fb796b52141e24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3614 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 diff --git a/pkgs/games/paint-by-numbers/hattori/85.gif b/pkgs/games/paint-by-numbers/hattori/85.gif deleted file mode 100644 index e9d710a4499141a7172f69ce943db10a0ca374fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4426 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�eikaoOWx>#%=7z zZw$x(ce_X+ym4&DUCJBP@F>=DDtGM1e|%6oC`@h#z<_MXAgUQ_rO1)dcIk5r1pojc z{|ik)Lq|hzZXg5$5HSD%00CEWX>@dDZXjZLAV*0?LvL<&WpZ?7av(A;GcGqEZ)PA$ QVQwHYIV>PCIXN@{J0SYb=l}o! diff --git a/pkgs/games/paint-by-numbers/hattori/86.gif b/pkgs/games/paint-by-numbers/hattori/86.gif deleted file mode 100644 index 744ae4571ef3c56ef4504720f27de319116d31e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4117 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 TW*|yoZXhx_EFdvCIWzz}boLk1 diff --git a/pkgs/games/paint-by-numbers/hattori/87.gif b/pkgs/games/paint-by-numbers/hattori/87.gif deleted file mode 100644 index f8f8c1ce2a844029c72cfa55a793d1151160eb49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3571 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 diff --git a/pkgs/games/paint-by-numbers/hattori/89.gif b/pkgs/games/paint-by-numbers/hattori/89.gif deleted file mode 100644 index 48657c13689b030d2115f3d4f059722abf0b0a18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4196 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 diff --git a/pkgs/games/paint-by-numbers/hattori/9.gif b/pkgs/games/paint-by-numbers/hattori/9.gif deleted file mode 100644 index 0cf522657aeb9d7838498f0131af595d522c87d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2483 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 PZXhx_EFdvCIWzz}PMN70 diff --git a/pkgs/games/paint-by-numbers/hattori/91.gif b/pkgs/games/paint-by-numbers/hattori/91.gif deleted file mode 100644 index 83b2e87f296b07c01490f7c897ae082b6d684aff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 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 diff --git a/pkgs/games/paint-by-numbers/hattori/92.gif b/pkgs/games/paint-by-numbers/hattori/92.gif deleted file mode 100644 index 2cb812e0d7f79d90b7db99e6cf19fc9edb49b94e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3887 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 MIV>PCIXN@{J2i;~bN~PV diff --git a/pkgs/games/paint-by-numbers/hattori/94.gif b/pkgs/games/paint-by-numbers/hattori/94.gif deleted file mode 100644 index 8eec54df9789a8a421bfb548dc757a401fbeb38c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4464 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 Cn%@Wj diff --git a/pkgs/games/paint-by-numbers/hattori/95.gif b/pkgs/games/paint-by-numbers/hattori/95.gif deleted file mode 100644 index a234a95d59b65a218872cdb91dc393914793c3e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4482 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 UZ)PA$VQwHYIV>PCIXN@{JE%(Y(EtDd diff --git a/pkgs/games/paint-by-numbers/hattori/96.gif b/pkgs/games/paint-by-numbers/hattori/96.gif deleted file mode 100644 index 07511d08571cf3363be220c290548518d033f6fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4304 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 diff --git a/pkgs/games/paint-by-numbers/hattori/97.gif b/pkgs/games/paint-by-numbers/hattori/97.gif deleted file mode 100644 index 63d2f902cc6976f7ac46e6c780467ced69e3c869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4475 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 diff --git a/pkgs/games/paint-by-numbers/paint-by-numbers.rkt b/pkgs/games/paint-by-numbers/paint-by-numbers.rkt deleted file mode 100644 index c8c301ea5b..0000000000 --- a/pkgs/games/paint-by-numbers/paint-by-numbers.rkt +++ /dev/null @@ -1,528 +0,0 @@ -#lang racket/base - -(require "gui.rkt" - (prefix-in solve: "solve.rkt") - "all-problems.rkt" - "problem.rkt" - "../show-scribbling.rkt" - framework - racket/gui) - -(provide game@) - -(application-preferences-handler void) -;; reset this after the framework sets it. -;; we don't want to open the preferences window, -;; because other games then cannot call -;; preferences:set-default - - -(define default-font (send the-font-list find-or-create-font 10 'roman 'normal 'normal #f)) -(preferences:set-default 'paint-by-numbers:font default-font (lambda (f) (is-a? f font%))) -(preferences:set-un/marshall 'paint-by-numbers:font - (lambda (font) - (list (send font get-point-size) - (send font get-family) - (send font get-style) - (send font get-weight) - (send font get-underlined))) - (lambda (lst) - (let ([size (first lst)] - [family (second lst)] - [style (third lst)] - [weight (fourth lst)] - [underline (fifth lst)]) - (cond - [(and (number? size) - (<= 1 size 72) - (memq family '(default decorative roman - script swiss modern symbol system)) - (memq style '(normal italic slant)) - (memq weight '(normal bold light)) - (boolean? underline)) - - (or (send the-font-list find-or-create-font size family style weight underline) - default-font)] - [else default-font])))) - -(define problems (car problemss)) - -(define game-name "Paint by Numbers") -(define editor-name "Paint by Numbers Designer") -(define biggest-editor 35) - -(define (setup-progress max) - (let* ([e (make-eventspace)] - [f (parameterize ([current-eventspace e]) - (make-object frame% "Solver Setup Progress"))] - [g (make-object gauge% #f max f)] - [counter 0]) - (send g min-width 300) - (send f show #t) - (lambda () - (set! counter (+ 1 counter)) - (cond - [(= counter max) - (collect-garbage) - (send f show #f)] - [else - (send g set-value counter)])))) - -(define show-this-help - (show-scribbling - '(lib "games/scribblings/games.scrbl") - "paint-by-numbers")) - -(define (configure-font frame) - (let ([font (get-font-from-user - "Choose a font for the labels" - frame - (preferences:get 'paint-by-numbers:font))]) - (when font - (preferences:set 'paint-by-numbers:font font)))) - -(define (size-font inc) - (let ([old-font (preferences:get 'paint-by-numbers:font)]) - (preferences:set 'paint-by-numbers:font - (if (send old-font get-face) - (send the-font-list find-or-create-font - (inc (send old-font get-point-size)) - (send old-font get-face) - (send old-font get-family) - (send old-font get-style) - (send old-font get-weight) - (send old-font get-underlined)) - (send the-font-list find-or-create-font - (inc (send old-font get-point-size)) - (send old-font get-family) - (send old-font get-style) - (send old-font get-weight) - (send old-font get-underlined)))))) - -(define (add-font-items frame menu) - (make-object menu-item% - "Choose Font" - menu - (lambda x (configure-font frame))) - (make-object menu-item% - "Make Board Bigger" - menu - (lambda x (size-font add1)) - #\b) - (make-object menu-item% - "Make Board Tinier" - menu - (lambda x (size-font sub1)) - #\t)) - -(define generic-frame% - (class (frame:standard-menus-mixin frame:basic%) - (inherit set-label get-label get-area-container) - (define filename #f) - (define/override (edit-menu:create-preferences?) #f) - - ;; don't open the preferences window, - ;; because other games then cannot call - ;; preferences:set-default - (define/override (edit-menu:preferences-callback item control) (void)) - - [define/public update-filename - (lambda (new-name) - (set! filename new-name) - - (let* ([short-name (if new-name - (let-values ([(_1 name _2) (split-path new-name)]) - name) - #f)] - [new-label (if short-name - (format "~a - ~a" short-name (get-label)) - game-name)]) - (unless (string=? new-label (get-label)) - (set-label new-label))))] - - [define/public get-pbn-filename (lambda () filename)] - - [define/public (do-save) (void)] - [define/public (get-canvas) (void)] - - [define/private save-as - (lambda () - (let ([fn (put-file)]) - (when fn - (update-filename fn) - (do-save))))] - - [define/override file-menu:new-string (lambda () "New Puzzle")] - [define/override file-menu:new-callback - (lambda (_1 _2) - (player))] - [define/override file-menu:between-new-and-open - (lambda (menu) - (make-object menu-item% "Design a Puzzle..." menu - (lambda (_1 _2) - (editor #f))) - (make-object menu-item% "Design a Puzzle from a Bitmap..." menu - (lambda (_1 _2) - (editor #t))) - ;(make-object separator-menu-item% menu) - )] - [define/override file-menu:save-callback - (lambda (_1 _2) - (if filename - (do-save) - (save-as)))] - [define/override file-menu:save-as-callback - (lambda (_1 _2) - (save-as))] - [define/override file-menu:open-callback - (lambda (_1 _2) - (let ([fn (get-file)]) - (when fn - (let* ([state (call-with-input-file fn read)] - [type (car state)]) - (case type - [(editor) - (let* ([name (cadr state)] - [problem - (make-problem name - (caddr state) - (cadddr state) - (list->vector (map list->vector (car (cddddr state)))))]) - (editor problem))] - [(player) - (let* ([name (cadr state)] - [problem - (make-problem name - (caddr state) - (cadddr state) - (car (cddddr state)))]) - (player problem (cadr (cddddr state))))] - [else - (message-box "Error" - (format "Unknown save file ~a" fn))])))))] - - [define/override edit-menu:undo-callback - (lambda (_1 _2) - (send (get-canvas) undo))] - - [define/override edit-menu:redo-callback - (lambda (_1 _2) - (send (get-canvas) redo))] - - (super-new (style '(no-resize-border))) - - [field [top-panel (make-object horizontal-panel% (get-area-container))] - [help-button - (make-object button% "Help" top-panel (lambda (_1 _2) (show-this-help)))]] - (send top-panel stretchable-height #f) - (send top-panel set-alignment 'right 'center))) - -(define pbn-frame% - (class generic-frame% - (init-field (problem (car problems))) - - (inherit get-pbn-filename) - [define/override do-save - (lambda () - (call-with-output-file (get-pbn-filename) - (lambda (port) - (pretty-print - (list 'player - (problem-name problem) - (problem-rows problem) - (problem-cols problem) - (problem-solution problem) - (send canvas get-grid)) - port)) - 'truncate - 'text))] - - (inherit can-close? show) - - (inherit stretchable-width stretchable-height update-filename) - [define/private set-problem - (lambda (prlmb) - (update-filename #f) - (send wrong-item enable (problem-solution prlmb)) - (send editor-item enable (problem-solution prlmb)) - (let ([rows (problem-rows prlmb)] - [cols (problem-cols prlmb)]) - (set! problem prlmb) - (when canvas (send canvas close-up)) - (set! canvas (instantiate paint-by-numbers-canvas% () - (parent canvas-panel) - (row-numbers rows) - (col-numbers cols))) - (send canvas-panel change-children (lambda (l) (list canvas)))) - (stretchable-width #f) - (stretchable-height #f))] - - [define/private show-wrong - (lambda () - (let loop ([i (length (problem-cols problem))]) - (unless (zero? i) - (let loop ([j (length (problem-rows problem))]) - (unless (zero? j) - (let* ([m (- i 1)] - [n (- j 1)] - [board-entry (get-entry m n)] - [real-answer (vector-ref (vector-ref (problem-solution problem) m) n)]) - (unless (or (eq? board-entry real-answer) - (eq? board-entry 'unknown) - (eq? real-answer 'unknown)) - (send canvas set-to-error m n))) - (loop (- j 1)))) - (loop (- i 1)))))] - - [define/private get-entry - (lambda (i j) - (send canvas get-rect i j))] - - [define/private set-entry - (lambda (i j nv) - (send canvas set-rect i j nv) - (send canvas paint-rect i j))] - - [define/private really-solve? - (lambda () - (gui-utils:get-choice - (format "~ - Solving can be a very computationally intense task;~ - \nyou may run out of memory and crash. ~ - \nReally continue? (Be sure to save your work!)") - "Yes" - "No" - "Really Solve?" - #f))] - - [define/private solve - (lambda () - (when (really-solve?) - (send canvas all-unknown) - (send canvas on-paint) - (solve:solve - (problem-rows problem) - (problem-cols problem) - (lambda (i j nv) (set-entry i j nv)) - setup-progress)))] - - (super-new (label game-name)) - - [define wrong-item #f] - [define solve-item #f] - [define editor-item #f] - (inherit get-menu-bar) - (let* ([mb (get-menu-bar)] - [pbn-menu (make-object menu% "Nonogram" mb)]) - (set! solve-item (make-object menu-item% "Solve" pbn-menu - (lambda (_1 _2) - (solve)) - #\l)) - (set! wrong-item (make-object menu-item% "Show Mistakes" pbn-menu - (lambda (_1 _2) - (show-wrong)) #\h)) - (set! editor-item (make-object menu-item% "Edit this Puzzle" pbn-menu - (lambda (_1 _2) - (editor problem)))) - - (make-object separator-menu-item% pbn-menu) - (add-font-items this pbn-menu)) - - (inherit-field top-panel help-button) - (inherit get-area-container) - [define gap (make-object horizontal-panel% top-panel)] - [define set-choice - (make-object choice% - "Set" - set-names - top-panel - (lambda (choice evt) - (set! problems (list-ref problemss (send choice get-selection))) - (send board-choice clear) - (for-each (lambda (problem) (send board-choice append (problem-name problem))) - problems) - (set-problem (car problems))))] - [define board-choice (make-object choice% - "Board" - (map problem-name problems) - top-panel - (lambda (choice evt) - (set-problem (list-ref problems (send choice get-selection)))))] - [define canvas/spacer-panel (make-object horizontal-panel% (get-area-container))] - [define canvas-panel (make-object vertical-pane% canvas/spacer-panel)] - [define canvas #f] - (send top-panel change-children (lambda (l) (list set-choice board-choice gap help-button))) - - (define/override get-canvas - (lambda () - canvas)) - - (define/augment on-close - (lambda () - (inner (void) on-close) - (when canvas (send canvas close-up)))) - - (set-problem problem) - (show #t))) - -(define editor-frame% - (class generic-frame% - (init-field indicator) - (inherit get-pbn-filename) - [define/override do-save - (lambda () - (let ([fn (get-pbn-filename)]) - (call-with-output-file fn - (lambda (port) - (pretty-print - (list 'editor - (let-values ([(base name dir?) (split-path fn)]) - name) - (send canvas get-row-numbers) - (send canvas get-col-numbers) - (let ([grid (send canvas get-grid)]) - (map (lambda (l) (map (lambda (x) (if (eq? x 'on) 'on 'off)) l)) grid))) - port)) - 'truncate - 'text)))] - - [define/private test-puzzle - (lambda () - (player - (make-problem "" - (send canvas get-row-numbers) - (send canvas get-col-numbers) - (send canvas get-grid))))] - - [define canvas #f] - [define/override get-canvas - (lambda () - canvas)] - - - [define/augment on-close - (lambda () - (inner (void) on-close) - (when canvas (send canvas close-up)))] - - (super-instantiate () (label editor-name)) - - (inherit get-area-container) - [define space/canvas-panel (make-object horizontal-panel% (get-area-container))] - [define canvas-panel (make-object vertical-pane% space/canvas-panel)] - - (cond - [(pair? indicator) - (when canvas - (send canvas close-up)) - (set! canvas - (instantiate design-paint-by-numbers-canvas% () - (parent canvas-panel) - (width (car indicator)) - (height (cdr indicator))))] - [(is-a? indicator bitmap%) - (when canvas - (send canvas close-up)) - (set! canvas - (instantiate design-paint-by-numbers-canvas% () - (parent canvas-panel) - (width (min biggest-editor (send indicator get-width))) - (height (min biggest-editor (send indicator get-height))))) - (when (or (> (send indicator get-width) biggest-editor) - (> (send indicator get-height) biggest-editor)) - (message-box - "Paint by Numbers" - (format "WARNING: Bitmap is larger than ~ax~a. Truncating." - biggest-editor biggest-editor))) - (send canvas set-bitmap indicator)] - [(problem? indicator) - (when canvas - (send canvas close-up)) - (set! canvas - (instantiate design-paint-by-numbers-canvas% () - (parent canvas-panel) - (width (length (problem-cols indicator))) - (height (length (problem-rows indicator))))) - (send canvas set-grid - (map vector->list (vector->list (problem-solution indicator))))]) - - (inherit get-menu-bar) - (let* ([mb (get-menu-bar)] - [pbn-menu (make-object menu% "Nonogram" mb)]) - (make-object menu-item% "Test Puzzle" pbn-menu (lambda (_1 _2) (test-puzzle))) - - (make-object separator-menu-item% pbn-menu) - (add-font-items this pbn-menu)))) - -(define (editor bitmap?) - (let* ([default 15] - [get-sizes - (lambda () - (let* ([d (make-object dialog% "Size")] - [m (make-object message% "How big should the designer be?" d)] - [wp (make-object horizontal-panel% d)] - [wm (make-object message% "Width" wp)] - [gw (make-object slider% #f 1 biggest-editor wp void default)] - [hp (make-object horizontal-panel% d)] - [hm (make-object message% "Height" hp)] - [gh (make-object slider% #f 1 biggest-editor hp void default)] - [bp (make-object horizontal-panel% d)] - [cancelled? #f] - [cancel (make-object button% "Cancel" bp (lambda (_1 _2) - (set! cancelled? #t) - (send d show #f)))] - [ok (make-object button% "OK" bp (lambda (_1 _2) (send d show #f)) '(border))]) - - (let ([label-width (max (send wm get-width) - (send hm get-width))]) - (send wm min-width label-width) - (send hm min-width label-width)) - - (send bp set-alignment 'right 'center) - - (send d show #t) - (if cancelled? - #f - (cons (send gw get-value) - (send gh get-value)))))] - [get-bitmap - (lambda () - (let* ([fn (get-file "Select a bitmap")] - [bm (make-object bitmap% fn)]) - (if (send bm ok?) - bm - (begin - (message-box - "Paint by Numbers" - (format (format "Unreadable file: ~a" fn))) - #f))))] - [indicator - (cond - [(boolean? bitmap?) - (if bitmap? - (get-bitmap) - (get-sizes))] - [(problem? bitmap?) - bitmap?])]) - - (when indicator - (send (make-object editor-frame% indicator) show #t)))) - -(define player - (case-lambda - [() (player (car problems))] - [(problem) - (let ([f (instantiate pbn-frame% () (problem problem))]) - (send f show #t))] - [(problem state) - (let ([f (instantiate pbn-frame% () (problem problem))]) - (send (send f get-canvas) set-grid state) - (send f show #t))])) - -(define game@ - (unit - (import) - (export) - (player) - ;(editor #f) - )) diff --git a/pkgs/games/paint-by-numbers/problem.rkt b/pkgs/games/paint-by-numbers/problem.rkt deleted file mode 100644 index 10f38749f5..0000000000 --- a/pkgs/games/paint-by-numbers/problem.rkt +++ /dev/null @@ -1,3 +0,0 @@ -#lang racket -(provide (struct-out problem)) -(define-struct problem (name rows cols solution) #:mutable) diff --git a/pkgs/games/paint-by-numbers/problems/directory b/pkgs/games/paint-by-numbers/problems/directory deleted file mode 100644 index 2d8ca7b0f4..0000000000 --- a/pkgs/games/paint-by-numbers/problems/directory +++ /dev/null @@ -1,31 +0,0 @@ -("games" - "misc" - "h1-30" - "h31-60" - "h61-90" - "h91-120" - "h121-138" - "k15x15" - "k15x20" - "k15x25" - "k20x15" - "k20x20" - "k20x25" - "k20x30" - "k25x15" - "k25x20" - "k25x25" - "k25x30" - "k25x35" - "k30x20" - "k30x25" - "k30x30" - "k30x35" - "k30x40" - "k35x25" - "k35x30" - "k35x35" - "k35x40" - "k40x30" - "k40x35" - "k40x40") diff --git a/pkgs/games/paint-by-numbers/problems/games b/pkgs/games/paint-by-numbers/problems/games deleted file mode 100644 index 625ebcdae1..0000000000 --- a/pkgs/games/paint-by-numbers/problems/games +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Games Magazine") (define problems (list (make-problem "Izay (1)" (quote ((2) (1 1) (4) (2 1) (3 1) (8) (8) (7) (5) (3))) (quote ((1) (2) (1 6) (9) (6) (5) (5) (4) (3) (4))) (quote (" x " " xx " "x xxxxxx " "xxxxxxxxx " " xxxxxx" " xxxxx" " xxxxx" " xxxx " " xxx " " xxxx "))) (make-problem "Oam (2)" (quote ((1) (2 3 1) (9) (8) (8) (3 2 1) (6 6) (9 4) (11 2) (13) (2 10) (7 11) (8 5 5) (8 4 3) (8 4 2) (2 5 5) (1 4 2 3 2) (2 1 4 2) (9 3) (7))) (quote ((5) (9) (7 2) (3 6 2) (3 6 2) (4 6 2) (4 6 2) (5 4 2) (6 1 2) (11 2) (14 2) (6 10) (6 10) (3 2 4 4) (8 2 2) (8 3 2) (4 2 3) (5 3 2) (2 4 2) (3))) (quote (" xxxxx " " xxxxxxxxx " " xxxxxxx xx " " xxx xxxxxx xx" " xxx xxxxxx xx" " xxxx xxxxxx xx" " xxxx xxxxxx xx" " xxxxx xxxx xx" " xxxxxx x xx" " xxxxxxxxxxx xx" " xxxxxxxxxxxxxx xx " "xxxxxx xxxxxxxxxx " " xxxxxx xxxxxxxxxx " " xxx xx xxxx xxxx " " xxxxxxxx xx xx " " xxxxxxxx xxx xx " " xxxx xx xxx " " xxxxx xxx xx " " xx xxxx xx " " xxx "))) (make-problem "Izuoh (3)" (quote ((2) (3) (3) (2) (2) (2) (4 2) (6 2) (6 3) (1 2 1 6) (2 2 9) (1 1 7) (1 1 5) (3 1 2) (2 6) (11) (13) (13) (4 10 2) (4 10 4) (4 10 4) (4 10 4) (4 9 4) (4 9 4) (3 8 3) (3 11 3) (3 3 2 3) (5 5 4 2) (3 1 10 4) (3 1 8 5))) (quote ((3) (5) (7) (7) (6 3) (6) (7 3) (7 5) (12 5) (3 1 1 3 5 1 3) (4 1 11 3) (4 12 2) (3 1 13 2) (19 3) (12 3) (16 2) (16 1) (3 12 2) (4 6 4) (4 1 8) (3 8 2) (4 8 1) (10 6) (11 3) (3))) (quote (" xxx" " xxxxx" " xxxxxxx" " xxxxxxx " " xxxxxx xxx" " xxxxxx " " xxxxxxx xxx " " xxxxxxx xxxxx" " xxxxxxxxxxxx xxxxx" " xxx x x xxx xxxxx x xxx" " xxxx x xxxxxxxxxxx xxx" " xxxx xxxxxxxxxxxx xx" " xxx x xxxxxxxxxxxxx xx" " xxxxxxxxxxxxxxxxxxx xxx" " xxxxxxxxxxxx xxx" " xxxxxxxxxxxxxxxx xx " " xxxxxxxxxxxxxxxx x " " xxx xxxxxxxxxxxx xx" " xxxx xxxxxx xxxx" " xxxx x xxxxxxxx" " xxx xxxxxxxx xx" " xxxx xxxxxxxx x" " xxxxxxxxxx xxxxxx " "xxxxxxxxxxx xxx " "xxx "))) (make-problem "Ijgnog (4)" (quote ((4) (5) (2 3) (2 6) (5 5) (6 5) (7 5) (8 8) (2 5 10) (2 6 12) (2 16 3) (1 2 14 3) (1 2 1 12 2) (1 1 2 11 2) (1 1 13 3) (1 1 1 3 5 4) (1 1 1 1 1 10) (1 1 1 1 8) (2 1 2 3) (1 2 2) (1 2 2) (1 1) (1 1) (3 1) (4))) (quote ((11) (7 3) (5 8) (10) (7 6) (11) (7 4) (9) (9) (5) (8) (9) (12 1) (16) (10 1) (8 5 1) (8 9) (9 4 1) (2 10 3 1) (10 4) (16) (2 10) (4 5) (2) (1))) (quote (" xxxxxxxxxxx " " xxxxxxx xxx " " xxxxx xxxxxxxx " " xxxxxxxxxx " " xxxxxxx xxxxxx " " xxxxxxxxxxx " " xxxxxxx xxxx " " xxxxxxxxx " " xxxxxxxxx " " xxxxx " " xxxxxxxx " " xxxxxxxxx " " xxxxxxxxxxxx x " " xxxxxxxxxxxxxxxx " " xxxxxxxxxx x " " xxxxxxxx xxxxx x" " xxxxxxxx xxxxxxxxx" " xxxxxxxxx xxxx x" "xx xxxxxxxxxx xxx x" "xxxxxxxxxx xxxx " "xxxxxxxxxxxxxxxx " "xx xxxxxxxxxx " " xxxx xxxxx " " xx " " x "))) (make-problem "Uhib (5)" (quote ((4) (5) (3 1) (5 1 2) (4 1 1) (4 5) (4 3) (6 1) (15) (17) (19) (3 19 4) (15 6 2) (7 8 6 5) (2 3 2 1) (2 2 2 2) (1 8 2) (4 3 2) (8 2 1 3) (2 4 1 4) (2 4 4) (1 12) (1 9) (1 7) (1))) (quote ((1 1) (1 1 2 5) (5 2) (4 3 2) (7 2 1) (11 2 2) (2 11 2) (4 7 2) (2 6 3) (7 2) (4 6 3) (9 3) (4 6 2) (1 1 6 3) (1 6 1 3) (6 1 1 3) (6 3 3) (4 2 3) (6 4 3) (7 1 3) (8 4) (8 4) (4 4) (11) (1 6) (2) (5) (1 1 1) (1 1) (1 1))) (quote (" x x " " x x xx xxxxx" " xxxxx xx " " xxxx xxx xx " " xxxxxxx xx x " "xxxxxxxxxxx xx xx " "xx xxxxxxxxxxx xx " "xxxx xxxxxxx xx " "xx xxxxxx xxx " " xxxxxxx xx " " xxxx xxxxxx xxx " " xxxxxxxxx xxx " " xxxx xxxxxx xx " " x x xxxxxx xxx " " x xxxxxx x xxx " " xxxxxx x x xxx " " xxxxxx xxx xxx " " xxxx xx xxx " " xxxxxx xxxx xxx " " xxxxxxx x xxx " " xxxxxxxx xxxx " " xxxxxxxx xxxx " " xxxx xxxx " " xxxxxxxxxxx " " x xxxxxx " " xx " " xxxxx " " x x x " " x x " " x x "))) (make-problem "Isaniew (6)" (quote ((4 1) (7 2) (3 6) (2 3) (2 4) (5) (7) (7) (3 3) (2 2 2) (1 2 4) (3 2 2) (2 3 2) (3 2) (4 2) (3 2) (2 2) (2 1 1) (3 2) (3 2) (3 1) (3 2) (5 3 1 4) (7 2 1 7) (8 3 1 10) (7 2 1 10) (2 3 2 2 4 4) (2 2 2 2 3) (4 4 5) (13))) (quote ((3) (5) (3 2) (4 1) (5 1) (5 2) (4 1) (3 1 1) (1 2 1) (3 2) (7 5 3) (2 5 2 11 3) (4 4 2 10 1 2) (8 2 4 3 5 1) (2 4 1 4 2 2 1 1) (4 4 3 2 4 2 1) (4 5 3 3 4 2) (4 7 5 2) (1 1 3 5 1) (1 1 5 1) (2 4 2) (2 5) (5) (3) (3))) (quote (" xxx " " xxxxx " " xxx xx " " xxxx x " " xxxxx x " " xxxxx xx" " xxxx x" " xxx x x" " x xx x" " xxx xx" " xxxxxxx xxxxx xxx" " xx xxxxx xx xxxxxxxxxxx xxx" "xxxx xxxx xx xxxxxxxxxx x xx" "xxxxxxxx xx xxxx xxx xxxxx x" "xx xxxx x xxxx xx xx x x" "xxxx xxxx xxx xx xxxx xx x" " xxxx xxxxx xxx xxx xxxx xx" " xxxx xxxxxxx xxxxx xx" " x x xxx xxxxx x " " x x xxxxx x " " xx xxxx xx " "xx xxxxx " " xxxxx " " xxx " " xxx ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/h1-30 b/pkgs/games/paint-by-numbers/problems/h1-30 deleted file mode 100644 index 3d5855ac7e..0000000000 --- a/pkgs/games/paint-by-numbers/problems/h1-30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Hattori 1 - 30") (define problems (list (make-problem "Hattori 1" (quote ((5) (1) (3 1) (8) (2 1) (1 6) (1 1 1) (3) (1) (10))) (quote ((1) (4 1) (2 3) (1 2 1) (1 1 1 1) (1 2 1 1) (4 1 1) (1 2 1 1) (1 1 1 1) (5 1))) (quote (" x" " xxxx x" " xx xxx" " x xx x" "x x x x" "x xx x x" "xxxx x x" "x xx x x" "x x x x" " xxxxx x"))) (make-problem "Hattori 2" (quote ((5 1 5) (5 2 6) (15) (4 5) (3 5 2) (3 6 1 2) (3 4 1 2) (3 3) (3 4) (1 1 1 1) (8) () (2) (1 9 1) (2 2 2))) (quote ((10 2) (9 1) (9) (4 2 1) (3 2 1 3) (1 3 1 3) (2 3 1 1) (3 3 1 1) (1 3 1 1) (2 1 1 1) (4 2 1) (4 2 1 1) (4 2) (9 1) (10 2))) (quote ("xxxxxxxxxx xx" "xxxxxxxxx x" "xxxxxxxxx " "xxxx xx x " "xxx xx x xxx" " x xxx x xxx" " xx xxx x x " "xxx xxx x x " " x xxx x x " " xx x x x " "xxxx xx x " "xxxx xx x x " "xxxx xx " "xxxxxxxxx x" "xxxxxxxxxx xx"))) (make-problem "Hattori 3" (quote ((11) (1 11) (2 3 4 2) (4 2 2) (3 4) (2 3 3 3) (2 1 1 3) (2 1 1 3) (2 3 4) (2 1 4) (3 3 4) (2 2 2 4) (4 6) (11) (9))) (quote ((9) (12) (1 2 4) (4 1 3) (3 1 4) (3 4 2 2) (2 3 2) (2 4 2 2) (3 1 4) (3 1 3) (4 4) (5 7) (2 10) (12) (9))) (quote (" xxxxxxxxx " " xxxxxxxxxxxx " "x xx xxxx " "xxxx x xxx" "xxx x xxxx" "xxx xxxx xx xx" "xx xxx xx" "xx xxxx xx xx" "xxx x xxxx" "xxx x xxx" "xxxx xxxx" "xxxxx xxxxxxx" "xx xxxxxxxxxx " " xxxxxxxxxxxx " " xxxxxxxxx "))) (make-problem "Hattori 4" (quote ((6) (3 2) (2 1) (2 2) (2 1) (1 1) (2 1) (5 1) (2 4 5) (1 4 2 4) (1 5 1 4) (7 1 5) (7 7) (5 7) (5))) (quote ((5) (2 3) (1 4) (8) (10) (2 7) (2 5) (2) (1 5) (2 2 3) (1 1 4) (1 12) (4 7) (2 7) (1 5))) (quote (" xxxxx " " xx xxx " " x xxxx " " xxxxxxxx " " xxxxxxxxxx " " xx xxxxxxx " " xx xxxxx " " xx " " x xxxxx " "xx xx xxx" "x x xxxx" "x xxxxxxxxxxxx" "xxxx xxxxxxx" "xx xxxxxxx" "x xxxxx "))) (make-problem "Hattori 5" (quote ((2 1) (11) (3 3) (2 4) (3 3) (2 2 2 3) (2 2 2 2) (2 1 1 2) (2 2 2 2) (3 2) (1 1 2) (1 4) (1 3 1 1) (1 1 1 2) (6))) (quote ((7) (8) (4 5) (3 1) (2 4 3) (1 2 1 1 1) (1 3) (1 1) (1 2 1 1) (1 4 1) (1 2) (4 1) (5 1) (10) (10))) (quote (" xxxxxxx " " xxxxxxxx " " xxxx xxxxx " "xxx x" "xx xxxx xxx" " x xx x x x" " x xxx" " x x" " x xx x x" " x xxxx x " " x xx " "xxxx x " " xxxxx x " " xxxxxxxxxx " " xxxxxxxxxx "))) (make-problem "Hattori 6" (quote ((4) (6 1) (2 1 1 2) (5 1 3) (5 1 2 1) (6 1 2 1) (6 3 1) (6 2 2) (4 1 1 2) (2 1 1) (2 2) (7) (1 1) (2 2) (6))) (quote ((1 1) (1 6) (1 7) (9) (8) (2 4) (1 1 6 1) (1 2 2) (8 4) (3 1 1) (2 1 2) (2 4) (2 1 1) (2 2 2) (6 2))) (quote (" x x " " x xxxxxx " " x xxxxxxx " " xxxxxxxxx " " xxxxxxxx " "xx xxxx " "x x xxxxxx x" "x xx xx" "xxxxxxxx xxxx" " xxx x x" " xx x xx" " xx xxxx" " xx x x " " xx xx xx " " xxxxxx xx "))) (make-problem "Hattori 7" (quote ((3) (5) (3 1) (3 3 1) (6 2 1) (7 3) (2 2 1) (1 1 1 1 1) (2 1 1 1 1) (1 1 2 1) (1 1 1) (13) (4 8) (9) (4 3))) (quote ((3 3) (3 2 4) (2 5) (3 2 4) (3 1 1 1) (3 2 4) (3 6) (5 4) (3) (2) (4 2) (6 2) (4 8) (2 1 1) (4))) (quote (" xxx xxx" " xxx xx xxxx" " xx xxxxx" " xxx xx xxxx" " xxx x x x " " xxx xx xxxx" " xxx xxxxxx" " xxxxx xxxx" " xxx " " xx " " xxxx xx " "xxxxxx xx " "xxxx xxxxxxxx " "xx x x " " xxxx "))) (make-problem "Hattori 8" (quote ((7) (6 2) (1 3 3) (2 2 2) (2 1) (3 2 1) (3 3 2 1) (1 4 2 1) (1 2 2) (2 2 6) (1 2 1) (1 1 3) (1 4 1) (2 5) (9))) (quote ((4) (3 1 5) (1 2 2 2) (1 2 1 1) (2 1 1 1) (2 3 1 1) (3 1 2 1) (1 1 2 3 1) (1 2 2 1 1) (1 1 2 1 1) (2 1 3) (2 2 1 1) (1 2 3 1) (2 2 1 1) (7 3))) (quote (" xxxx " " xxx x xxxxx " " x xx xx xx" " x xx x x" "xx x x x" "xx xxx x x" "xxx x xx x" "x x xx xxx x" "x xx xx x x" "x x xx x x" "xx x xxx" " xx xx x x " " x xx xxx x " " xx xx x x " " xxxxxxx xxx "))) (make-problem "Hattori 9" (quote ((3) (2 2) (1 2) (1 11) (1 2 4) (2 2 2 1) (3 3 1 1) (2 2) (1 1) (1 1) (7) (3 3) (2 2) (3 3) (3 3))) (quote ((5) (2 2) (1 1) (2 2 5) (5 8) (3 2 2 2) (1 1 1) (1 2 2 2) (1 8) (1 5) (4) (3) (2) (4) (1))) (quote (" xxxxx " "xx xx " "x x " "xx xx xxxxx" " xxxxx xxxxxxxx" " xxx xx xx xx" " x x x " " x xx xx xx" " x xxxxxxxx" " x xxxxx" " xxxx " " xxx " " xx " " xxxx " " x "))) (make-problem "Hattori 10" (quote ((7 1) (2 2 1) (1 1 3) (1 1 1 3) (5 2) (13) (15) (3 5) (2 7 1) (3 10) (3 7) (6 2) (2 4) (2 3 2) (1 3 1) (1 3 1) (1 3 1) (2 2) (2 2) (6))) (quote ((5) (5) (3 2) (2 5) (1 2 2 2) (10 2 2) (2 6 1 2 1) (1 7 1 4 1) (2 13 1) (14 1 1) (1 2 5 2) (2 3 2 2) (2 2 2 5) (7 3) (5 4))) (quote (" xxxxx " " xxxxx " " xxx xx " " xx xxxxx " "x xx xx xx " "xxxxxxxxxx xx xx" "xx xxxxxx x xx x" "x xxxxxxx x xxxx x" "xx xxxxxxxxxxxxx x" "xxxxxxxxxxxxxx x x" "x xx xxxxx xx" " xx xxx xx xx " " xx xx xx xxxxx " "xxxxxxx xxx " " xxxxx xxxx "))) (make-problem "Hattori 11" (quote ((4) (6) (6) (3 6) (3 2 6) (3 6 4) (4 7) (11) (2 13) (1 13) (14) (9 4) (9 2) (8) (7) (6) (5 1) (3 4 3) (5 3 4) (16))) (quote ((5) (4) (3 1) (3 2) (5 3) (8 2) (10 2) (12 2) (13 1) (1 12 1) (14 1) (1 1 12) (12) (3 8) (4 3 1) (6 4 1) (6 3 2) (6 3 3) (6 2 3) (4 4))) (quote (" xxxxx " " xxxx " " xxx x " " xxx xx " " xxxxx xxx" " xxxxxxxx xx" " xxxxxxxxxx xx" " xxxxxxxxxxxx xx" " xxxxxxxxxxxxx x" " x xxxxxxxxxxxx x" " xxxxxxxxxxxxxx x" " x x xxxxxxxxxxxx" " xxxxxxxxxxxx" " xxx xxxxxxxx" " xxxx xxx x" "xxxxxx xxxx x" "xxxxxx xxx xx" "xxxxxx xxx xxx" "xxxxxx xx xxx" " xxxx xxxx"))) (make-problem "Hattori 12" (quote ((5 7) (5 3 3) (4 2 7 2) (4 1 1) (3 1 1) (2 1 3 1) (1 1 1 1) (1 1 9 1) (13) (2 11) (2 13) (3 11 2) (16 1) (15 1) (15 1) (13 1) (12 2) (10 3) (12) (18))) (quote ((8 1) (6 2) (5 3 1) (4 4 1) (2 6 1) (6 1) (7 8 1) (2 12) (1 13) (3 13) (1 1 13) (1 1 1 13) (1 1 15) (1 1 1 13) (1 1 13) (3 10 2) (1 9 2) (2 3 3 3) (7 2 4) (7 1))) (quote ("xxxxxxxx x " "xxxxxx xx " "xxxxx xxx x" "xxxx xxxx x" "xx xxxxxx x" " xxxxxx x" " xxxxxxx xxxxxxxx x" " xx xxxxxxxxxxxx" " x xxxxxxxxxxxxx" "xxx xxxxxxxxxxxxx" "x x xxxxxxxxxxxxx" "x x x xxxxxxxxxxxxx" "x x xxxxxxxxxxxxxxx" "x x x xxxxxxxxxxxxx" "x x xxxxxxxxxxxxx" "xxx xxxxxxxxxx xx" " x xxxxxxxxx xx" " xx xxx xxx xxx" " xxxxxxx xx xxxx" " xxxxxxx x"))) (make-problem "Hattori 13" (quote ((2 2) (2 3) (3) (2 12) (2 15) (17) (18) (3 12) (4 1 13) (4 13) (8 7) (10 7) (11 7) (18) (18) (17) (14) (3) (3) (2))) (quote ((2 2 2) (2 7) (2 9) (2 11) (2 6) (3 1 7) (3 7) (14) (14) (7 6) (10 8) (10 7) (10 6) (14) (14) (14) (14) (14) (14) (3 2 2 2))) (quote (" xx xx xx " " xx xxxxxxx " "xx xxxxxxxxx " "xx xxxxxxxxxxx " " xx xxxxxx " " xxx x xxxxxxx " " xxx xxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxx xxxxxx " "xxxxxxxxxx xxxxxxxx" "xxxxxxxxxx xxxxxxx" " xxxxxxxxxx xxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxx xx xx xx "))) (make-problem "Hattori 14" (quote ((8) (9) (1 5) (1 1 3) (1 2) (2 2) (1 2 2) (3 3) (1 10) (12) (1 4 2 1) (1 5 6) (1 5 2 1) (1 6) (1 7) (1 3 3) (1 1 3 4) (1 6 3) (2 1 3 4) (19))) (quote ((3) (2) (1) (3 1 1) (2 11) (3 1 1) (5 2 7) (2 2 2 8) (2 1 14) (3 8 1) (3 11 2) (7 12) (6 2 1 6) (4 3 1 4) (2 5 1) (1 1) (1 1) (1 1) (3 1) (1 1))) (quote (" xxx " " xx" " x" " xxx x x" " xx xxxxxxxxxxx" " xxx x x" " xxxxx xx xxxxxxx" "xx xx xx xxxxxxxx" "xx x xxxxxxxxxxxxxx" "xxx xxxxxxxx x" "xxx xxxxxxxxxxx xx" "xxxxxxx xxxxxxxxxxxx" "xxxxxx xx x xxxxxx" "xxxx xxx x xxxx" "xx xxxxx x" " x x" " x x" " x x" " xxx x" " x x"))) (make-problem "Hattori 15" (quote ((1) (1 17) (3 1 1) (1 1 1 3 3 3 1) (1 1 1 3 1 1 1 1 1) (3 1 3 3 3 1) (1 3 1) (1 16) (1) (1) (1 9) (1 2 1 2) (1 2 1 1 1) (1 2 1 3 2) (2 16) (3 16) (1 4 7 3 1) (1 1 4 8) (1 2 1 8) (1 2 1))) (quote ((20) (1 1 2) (6 2) (1 2 1) (7 3) (1 1 5) (1 3 1 4 1) (1 3 1 2 5) (1 3 1 2 4) (1 1 1 4) (1 3 1 1 5) (1 1 1 1 7 1) (1 3 1 1 6) (1 1 1 6) (1 3 1 1 4 2) (1 1 1 1 1 6) (1 3 1 2 5) (1 1 8) (7 3 3) (5))) (quote ("xxxxxxxxxxxxxxxxxxxx" " x x xx " " xxxxxx xx " " x xx x " " xxxxxxx xxx " " x x xxxxx " " x xxx x xxxx x " " x xxx x xx xxxxx " " x xxx x xx xxxx " " x x x xxxx " " x xxx x x xxxxx " " x x x x xxxxxxx x" " x xxx x x xxxxxx" " x x x xxxxxx " " x xxx x x xxxx xx " " x x x x x xxxxxx " " x xxx x xx xxxxx " " x x xxxxxxxx " " xxxxxxx xxx xxx" " xxxxx "))) (make-problem "Hattori 16" (quote ((6) (10) (3 5 3) (8 7) (6 7 3) (2 8 7) (5 10 3) (1 5 4 1) (5 5) (3 3) (3 4 2) (3 5 3) (3 5 2) (13) (5) (6) (7) (7) (7) (5))) (quote ((5) (3 4) (10) (2 3 2) (7 2) (5 1 1) (7 1) (2 1 2 1) (7 4) (7 7) (3 3 9) (7 9) (5 1 9) (1 4 7) (7 1 5) (2 4 1 4) (4 2 2 3) (7 2) (3 4) (7))) (quote (" xxxxx " " xxx xxxx " " xxxxxxxxxx " " xx xxx xx " " xxxxxxx xx " " xxxxx x x " " xxxxxxx x " "xx x xx x " "xxxxxxx xxxx " "xxxxxxx xxxxxxx " "xxx xxx xxxxxxxxx " "xxxxxxx xxxxxxxxx " "xxxxx x xxxxxxxxx" " x xxxx xxxxxxx" " xxxxxxx x xxxxx" " xx xxxx x xxxx" " xxxx xx xx xxx" " xxxxxxx xx " " xxx xxxx " " xxxxxxx "))) (make-problem "Hattori 17" (quote ((9 9) (6 10) (5 11) (4 3 5) (2 1 3) (2 4 2) (1 3 6) (5 1 1 1) (2 2 1 3 1) (7 4 1) (7 4 2) (1 3 9) (1 2 4 6) (1 6 9) (1 4 7) (2 1 4 2) (5 3 4) (5 7) (5 10) (5 11))) (quote ((1 8) (2 4 4) (4 1 2 4) (8 2 4) (6 1 3 7) (4 8 4) (3 7 1) (1 2) (1 2) (2 2 2 1) (3 2 1 1 1 2) (7 8 2) (3 7 4 2) (3 1 1 2 3 3) (3 4 6 3) (4 1 4 3) (4 1 4 4) (5 1 4 4) (7 4 5) (7 6 5))) (quote ("x xxxxxxxx " "xx xxxx xxxx " "xxxx x xx xxxx" "xxxxxxxx xx xxxx" "xxxxxx x xxx xxxxxxx" "xxxx xxxxxxxx xxxx" "xxx xxxxxxx x" "x xx " "x xx " " xx xx xx x" " xxx xx x x x xx" "xxxxxxx xxxxxxxx xx" "xxx xxxxxxx xxxx xx" "xxx x x xx xxx xxx" "xxx xxxx xxxxxx xxx" "xxxx x xxxx xxx" "xxxx x xxxx xxxx" "xxxxx x xxxx xxxx" "xxxxxxx xxxx xxxxx" "xxxxxxx xxxxxx xxxxx"))) (make-problem "Hattori 18" (quote ((3 4) (1 3 2 1) (1 6 3 2) (1 1 2 1 1 6) (3 2 1 1) (1 1 1 1 2 1 1 1) (1 1 2 1 2 2 2) (1 1 2 1 1 2 1) (1 2 4 1 3) (1 16) (2 5 10) (8 4 2) (8 2 4) (5 2 1 4) (1 5 6) (2 7 3 2) (2 8 2) (2 3 5 1 1) (2 5 7 3) (2 5 5 4))) (quote ((5 7 6) (1 1 3 5) (2 3 3) (3 2 3 2) (2 1 6 2) (2 2 5 5) (2 2 11) (2 1 5 6) (3 3 4) (1 1 5 6) (1 1 3 6) (6 2 5) (1 2 3 4) (3 2 4 3) (1 1 8 2) (1 2 3 5) (1 2 2 5 1) (1 1 3 3 2) (3 10 2) (1 2 8 3))) (quote ("xxxxx xxxxxxx xxxxxx" "x x xxx xxxxx" "xx xxx xxx " " xxx xx xxx xx" " xx x xxxxxx xx" " xx xx xxxxx xxxxx" " xx xx xxxxxxxxxxx" " xx x xxxxx xxxxxx" "xxx xxx xxxx " "x x xxxxx xxxxxx " "x x xxx xxxxxx" "xxxxxx xx xxxxx" " x xx xxx xxxx" " xxx xx xxxx xxx" " x x xxxxxxxx xx" " x xx xxx xxxxx " " x xx xx xxxxx x" " x x xxx xxx xx" " xxx xxxxxxxxxx xx" " x xx xxxxxxxx xxx"))) (make-problem "Hattori 19" (quote ((2 2 2 3) (2 2 3 5) (2 2 3 5) (1 1 2 5) (2) (8 2 2) (10 3 2 1) (11 3 2 1) (11 2 1 1) (11) (11 5) (10 7) (6 7) (4 6) (5 6) (6 5) (7 6) (7 7) (7 7) (6 6))) (quote ((4 7) (3 14) (15) (4 15) (3 15) (8 6) (3 7 5) (4 7 4) (3 7) (1 6) (4 4) (5) (4 2 2) (4 4 2 3) (2 4 5 4) (10) (3 10) (4 10) (9) (3 7))) (quote ("xxxx xxxxxxx " "xxx xxxxxxxxxxxxxx " " xxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxxxx" "xxx xxxxxxxxxxxxxxx" " xxxxxxxx xxxxxx" " xxx xxxxxxx xxxxx" "xxxx xxxxxxx xxxx" "xxx xxxxxxx " " x xxxxxx " " xxxx xxxx " "xxxxx " "xxxx xx xx" "xxxx xxxx xx xxx" " xx xxxx xxxxx xxxx" " xxxxxxxxxx" " xxx xxxxxxxxxx" " xxxx xxxxxxxxxx" " xxxxxxxxx " " xxx xxxxxxx "))) (make-problem "Hattori 20" (quote ((3 3 5) (9 1) (2 16) (1 2 6 4) (1 1 1 1 6 4) (1 1 6 2) (1 1 5 1) (1 1 4 3) (2 1 2 2 4) (1 3 5) (9 5) (7 4) (6 3) (4 1 2) (3 7 1) (5 1 6 1) (1 1 1 1 6 1) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1) (3 3 3))) (quote ((3) (11) (2 1 1) (1 1 5) (2 1 10) (2 1 6 1) (4 5 5) (13 1) (3 5 5) (4 2 1) (5 7) (6 1) (7 3) (7 4) (6 3) (1 1 2 4) (1 3 4 3) (1 3 6 5) (1 4 7 1) (20))) (quote ("xxx " "xxxxxxxxxxx " "xx x x " " x x xxxxx " " xx x xxxxxxxxxx" " xx x xxxxxx x" "xxxx xxxxx xxxxx" "xxxxxxxxxxxxx x " "xxx xxxxx xxxxx" " xxxx xx x" " xxxxx xxxxxxx" " xxxxxx x " " xxxxxxx xxx " " xxxxxxx xxxx " " xxxxxx xxx " "x x xx xxxx " "x xxx xxxx xxx " "x xxx xxxxxx xxxxx" "x xxxx xxxxxxx x" "xxxxxxxxxxxxxxxxxxxx"))) (make-problem "Hattori 21" (quote ((4 10) (2 1 3) (1 1 10) (1 1 4) (1 1 4) (1 1 2 2) (1 1 2 2 2) (1 1 1 1 1 1) (1 1 6 1 1) (2 1 2 1 4 2) (6 1 2 1 4) (11 3) (1 4) (1 4) (1 4) (1 5) (1 6) (18) (18) (18))) (quote ((9) (2 2) (1 1 3) (1 1 3) (11 3) (10) (4 3) (2 2 1 3) (6 2 3) (2 2 1 3) (9 2 3) (7 4 3) (3 1 1 3) (1 1 4 3) (1 1 1 1 4) (1 1 1 5) (1 1 4 8) (1 1 1 11) (1 1 1 10) (1 1 1 10))) (quote (" xxxxxxxxx " "xx xx " "x x xxx" "x x xxx" "xxxxxxxxxxx xxx" " xxxxxxxxxx" " xxxx xxx" " xx xx x xxx" " xxxxxx xx xxx" " xx xx x xxx" "xxxxxxxxx xx xxx" "xxxxxxx xxxx xxx" "xxx x x xxx" "x x xxxx xxx" "x x x x xxxx" "x x x xxxxx" "x x xxxx xxxxxxxx" "x x x xxxxxxxxxxx" "x x x xxxxxxxxxx" "x x x xxxxxxxxxx"))) (make-problem "Hattori 22" (quote ((7) (3 1 7) (1 3 7) (2 2 8) (7 8) (4 1 8) (1 1 4 8) (2 3 8) (3 10) (14) (15) (15) (18) (16 1) (8 6) (7 5) (7 2 2) (2 2 1) (1) (1))) (quote ((2 10) (11) (9) (3 9) (3 8) (1 4 9) (2 2 1 9) (14) (3 1 6) (10) (9) (2 8 2) (1 14) (16) (16) (9 5) (9 1 2) (7 2) (6) (6))) (quote (" xx xxxxxxxxxx" " xxxxxxxxxxx " " xxxxxxxxx " " xxx xxxxxxxxx " " xxx xxxxxxxx " " x xxxx xxxxxxxxx " " xx xx x xxxxxxxxx " " xxxxxxxxxxxxxx " " xxx x xxxxxx " " xxxxxxxxxx " " xxxxxxxxx " "xx xxxxxxxx xx " "x xxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxx " "xxxxxxxxx xxxxx " "xxxxxxxxx x xx " "xxxxxxx xx " " xxxxxx " " xxxxxx "))) (make-problem "Hattori 23" (quote ((8 4) (10 1) (12 1 1) (3 1 1 2) (2 2 2 1 1 2) (2 1 1 1 1 2) (2 1 1 2) (2 1 1 1 1 1 2) (3 1 1 1 1 1 1) (2 6 1 1 2) (2 1 1 4) (2 9 4) (14 4) (15) (8 4 2) (8 2 2 1) (8 1 1 3) (2 5 1 2 1) (11 1) (10 5))) (quote ((9) (10) (5 1 5) (8 8) (4 1 9) (3 1 12) (3 2 1 1 9) (3 2 9) (3 1 1 3 2) (3 2 2 3 2) (3 1 1 1 3 2 2) (3 6 3) (9 4 2) (1 4 1) (5) (3) (13 1) (1 3 1 2 1) (1 5 4 3 1) (1 11 1 1))) (quote (" xxxxxxxxx " " xxxxxxxxxx " " xxxxx x xxxxx " " xxxxxxxx xxxxxxxx" "xxxx x xxxxxxxxx" "xxx x xxxxxxxxxxxx" "xxx xx x x xxxxxxxxx" "xxx xx xxxxxxxxx" "xxx x x xxx xx" "xxx xx xx xxx xx" "xxx x x x xxx xx xx" "xxx xxxxxx xxx" " xxxxxxxxx xxxx xx" " x xxxx x " " xxxxx " " xxx" "xxxxxxxxxxxxx x" "x xxx x xx x" "x xxxxx xxxx xxx x" "x xxxxxxxxxxx x x"))) (make-problem "Hattori 24" (quote ((5 3) (4 4 4) (1 2 10) (1 1 6 1 3) (1 1 2 1 6 2) (1 1 1 1 4) (3 1 1 1 1 1) (2 1 1 1 1 1) (2 3 4 4) (5 1 2 3 1) (1 3 1 1) (3 1 1 1) (5 3 1 2) (7 1 8) (10 1 1 1) (5 11) (3 7) (3 6 2) (3 7 1) (2 5))) (quote ((7) (1 3 6) (1 1 1 2 7) (2 1 7) (2 1 4) (1 1 4) (12) (1 1 1 4) (2 9 2) (4 1 2) (4 7 1) (5 2 1 1 3) (1 5 2 1 3) (1 1 1 7) (3 2 1 5) (1 1 5 5) (2 2 2 6) (4 4 1 2) (6 1 2 3) (2 16))) (quote (" xxxxxxx " " x xxx xxxxxx" " x x x xx xxxxxxx" " xx x xxxxxxx " " xx x xxxx " " x x xxxx " " xxxxxxxxxxxx " "x x x xxxx " "xx xxxxxxxxx xx " "xxxx x xx " "xxxx xxxxxxx x " "xxxxx xx x x xxx" " x xxxxx xx x xxx" " x x x xxxxxxx" " xxx xx x xxxxx" " x x xxxxx xxxxx" " xx xx xx xxxxxx " "xxxx xxxx x xx " "xxxxxx x xx xxx " "xx xxxxxxxxxxxxxxxx "))) (make-problem "Hattori 25" (quote ((6 7) (3 2 8) (3 2 2 4) (2 3 1 2 3) (2 1 1 1 4 3) (2 4 1 2 2) (2 2 1 1 3) (3 2 2 1) (4 2 1 2) (7 2 1) (2 1 1 1) (2 1 1 1) (2 3 1) (2 2 1) (2 5) (2 1 1) (2 2 1) (4 1 1) (18) (18))) (quote ((7) (9) (3 3 2) (2 2 3) (1 3 11) (1 1 1 11) (1 4 1 3) (2 2 2 2) (2 2 2) (6 2) (2) (2) (3 2 2) (8 6 4) (2 2 3 5 2) (2 1 3 1 2) (3 3 1 2) (5 1 12) (7 2) (5 2))) (quote (" xxxxxxx " " xxxxxxxxx " "xxx xxx xx" "xx xx xxx" "x xxx xxxxxxxxxxx" "x x x xxxxxxxxxxx" "x xxxx x xxx" "xx xx xx xx" " xx xx xx" " xxxxxx xx" " xx" " xx" "xxx xx xx" "xxxxxxxx xxxxxx xxxx" "xx xx xxx xxxxx xx" "xx x xxx x xx" "xxx xxx x xx" "xxxxx x xxxxxxxxxxxx" "xxxxxxx xx" " xxxxx xx"))) (make-problem "Hattori 26" (quote ((1 1 1 2) (2 2 2 2) (9 4) (1 1 1 3) (2 1 1 3 2) (3 1 1 1 4 2) (1 1 1 2 1 2) (1 4 5 1 2) (1 4 5 1 2) (1 8 1 3) (1 8 1 3) (1 8 1 3) (1 7 1 3) (2 7 2 3) (1 1 7 1 3) (2 7 2 3) (2 1 1 1 1 3) (7 2 9) (16) (1 1 6))) (quote ((2 1) (3) (5 2) (2 4 1) (7 2 2) (3 5 4) (2 2 9 2) (1 10 2) (2 2 7 2) (1 9 2) (1 2 10 1) (2 9 2) (15 3) (5 4) (2 3 3) (2 9 3) (2 3) (2 11) (20) (20))) (quote (" xx x " " xxx " " xxxxx xx " " xx xxxx x " " xxxxxxx xx xx " "xxx xxxxx xxxx " " xx xx xxxxxxxxx xx " " x xxxxxxxxxx xx" " xx xx xxxxxxx xx " " x xxxxxxxxx xx " " x xx xxxxxxxxxx x " " xx xxxxxxxxx xx " "xxxxxxxxxxxxxxx xxx" " xxxxx xxxx " " xx xxx xxx" "xx xxxxxxxxx xxx" " xx xxx" " xx xxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx"))) (make-problem "Hattori 27" (quote ((6) (8) (1 6) (10) (2 1 1 1 1) (2 1 1 1 1) (1 1 1 3) (3 3 1) (3 2) (1 2 2) (2 2 3 2) (2 3 3 2) (2 3 2 6) (5 3 7) (4 4 3 1) (7 2 3 3) (6 4 3 1 1) (9 3 2) (8 6) (11 5))) (quote ((11) (10) (7) (8) (4 3 5) (1 5 3 6) (1 1 1 2 2 3) (2 6 2 4) (4 1 3 2 1) (9 2 2 1) (4 1 2 2 1) (8 3) (4 1 3) (5 3 3) (7) (13) (7 2) (2 2 2) (1 1 3) (7))) (quote (" xxxxxxxxxxx" " xxxxxxxxxx" " xxxxxxx" " xxxxxxxx" " xxxx xxx xxxxx" " x xxxxx xxx xxxxxx" " x x x xx xx xxx" "xx xxxxxx xx xxxx" "xxxx x xxx xx x" "xxxxxxxxx xx xx x" "xxxx x xx xx x" "xxxxxxxx xxx " "xxxx x xxx " " xxxxx xxx xxx " " xxxxxxx " " xxxxxxxxxxxxx" " xxxxxxx xx" " xx xx xx" " x x xxx" " xxxxxxx"))) (make-problem "Hattori 28" (quote ((1 1) (5) (3 3) (8) (9) (1 1 3 3) (1 1 3 1) (4 4 1) (2 2 2 3 1) (5 2 2 1) (5 3 1) (6 3 1) (5 5 2) (4 3 3 2) (8 2 3 2) (7 3 6) (6 3 6) (5 3 6) (5 3 5) (7 4))) (quote ((2 1) (3 4 1) (3 1 5 1) (10 1) (14) (3 4) (4 4 1) (9 5 1) (8 5 1) (8 2 1) (2 2 6 6) (4 5 6) (4 4 5) (4 3) (3 7) (2 6) (5) (5) (7) (12))) (quote (" xx x " " xxx xxxx x " " xxx x xxxxx x " " xxxxxxxxxx x " " xxxxxxxxxxxxxx " " xxx xxxx " " xxxx xxxx x" " xxxxxxxxx xxxxx x" "xxxxxxxx xxxxx x" " xxxxxxxx xx x" "xx xx xxxxxx xxxxxx" " xxxx xxxxx xxxxxx" " xxxx xxxx xxxxx" " xxxx xxx " " xxx xxxxxxx" " xx xxxxxx" " xxxxx" " xxxxx" " xxxxxxx " " xxxxxxxxxxxx "))) (make-problem "Hattori 29" (quote ((2) (2) (2) (4) (3 2) (5 2 2) (1 1 2 2) (5 2 2) (5 2 4) (5 2 3) (6 2 2) (1 1 4 1) (1 1 2 3 1) (2 2 1 4) (2 2 3 1 2) (1 4 5 3) (1 17) (4 4 4 2) (5 5 5) (3 3))) (quote ((8) (6 2 1) (1 4 3) (1 4 5) (1 4 2 2) (15) (6) (2) (2 4) (4 2 1) (3 2 3 1) (3 2 5 1) (2 2 2 2 5) (1 2 3 2) (2 2 3) (2 2 5) (2 5 2) (2 2 5) (3 2 3) (7))) (quote (" xxxxxxxx " " xxxxxx xx x " " x xxxx xxx " " x xxxx xxxxx" " x xxxx xx xx" " xxxxxxxxxxxxxxx" " xxxxxx " " xx " " xx xxxx " " xxxx xx x " " xxx xx xxx x " " xxx xx xxxxx x " "xx xx xx xx xxxxx " "x xx xxx xx " " xx xx xxx " " xx xx xxxxx" " xx xxxxx xx" " xx xx xxxxx" " xxx xx xxx " " xxxxxxx "))) (make-problem "Hattori 30" (quote ((3 6) (6 7) (7 6) (19) (7 6) (3 3) (1 3) (2 4 4 1) (9 6 2) (1 2 2 1 3 2) (1 2 1 2 1 1 3 1) (1 2 2 1 3 1) (1 6 7 1) (1 4 5 1) (1 3 1) (1 3 5 1) (2 1 8) (3 7) (5 6 6) (5 4 5))) (quote ((3 9 2) (5 2 4) (12 3) (6 6 3) (5 2 2 2) (5 2 1 2) (4 2 2 1) (1 6 2 2) (1 4 3 2) (1 2 2) (1 5 2) (1 2 2 1) (2 1 2 1 2 1) (5 2 2 3) (5 7 4) (6 6 5) (7 4 5) (7 5) (4 4 4) (12))) (quote (" xxx xxxxxxxxx xx" " xxxxx xx xxxx" " xxxxxxxxxxxx xxx" "xxxxxx xxxxxx xxx" "xxxxx xx xx xx" "xxxxx xx x xx " " xxxx xx xx x " " x xxxxxx xx xx" " x xxxx xxx xx" " x xx xx" " x xxxxx xx" " x xx xx x " "xx x xx x xx x " "xxxxx xx xx xxx " "xxxxx xxxxxxx xxxx " "xxxxxx xxxxxx xxxxx" "xxxxxxx xxxx xxxxx" "xxxxxxx xxxxx" " xxxx xxxx xxxx" " xxxxxxxxxxxx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/h121-138 b/pkgs/games/paint-by-numbers/problems/h121-138 deleted file mode 100644 index 902681a520..0000000000 --- a/pkgs/games/paint-by-numbers/problems/h121-138 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Hattori 121 - 138") (define problems (list (make-problem "Hattori 121" (quote ((2) (3) (4) (5) (2 2) (2 2) (3) (8 3) (2 1 2 4) (3 1 2 1) (5 2 2 1) (1 4 2 1) (1 1 5) (3 3 5) (5 7) (6 6) (7 7) (17) (15) (13))) (quote ((3) (5) (6) (2 7) (4 7) (1 11) (3 1 1 4) (7 1 3) (4 3 2 3) (8 1 3) (4 1 1 4) (2 10) (3 7) (7) (6) (7) (10) (8) (2 2) (7))) (quote (" xxx " " xxxxx " " xxxxxx" " xx xxxxxxx" " xxxx xxxxxxx" " x xxxxxxxxxxx" " xxx x x xxxx" " xxxxxxx x xxx" "xxxx xxx xx xxx" "xxxxxxxx x xxx" " xxxx x x xxxx" " xx xxxxxxxxxx" " xxx xxxxxxx" " xxxxxxx" " xxxxxx" " xxxxxxx " " xxxxxxxxxx " " xxxxxxxx " " xx xx " " xxxxxxx "))) (make-problem "Hattori 122" (quote ((2 2 5) (2 2 7) (9 6 4) (1 1 1 1 8 1) (7 9 2) (7 10 3) (9 2 3 2) (12 1 2 2 2 3) (3 3 1 1 1 1 2) (2 2 1 1 2) (2 2 2 3 2 2) (2 2 1 3 2 2) (12 7 3) (1 2 2) (5 6) (2 1 1 1 4) (2 1 1 2 3 2) (1 1 3 4 2) (1 1 1 1 1 1) (1 1 1 1 1 1) (5 1 4 2) (5 1 1 1 3 4) (1 4 1 13) (1 2 4 3 3) (1 3 5 3) (1 1 1 6 2) (2 3 6 4) (2 8 5) (3 22) (1 12 8) (15 8) (11 7) (9 6) (12 6) (3 18 2) (2 18 3) (2 2 12 3 1) (1 2 7 1) (2 2 2 2) (10 8))) (quote ((1 1 6) (2 7 1 2 3) (13 1 2 2 2) (1 1 5 1 2 3 2 2 1) (6 1 2 1 1 1 1 1 1) (1 4 1 1 3 1 2 1) (6 1 2 1 1 1) (1 1 5 1 3 5 1 1) (13 14 1) (2 7 12 3) (1 1 5 13 2) (1 1 2 17 1) (2 1 1 12) (6 1 1 2 11) (3 3 9 11) (3 2 1 1 1 11) (4 1 8 1 4 5) (4 3 6 4 4) (4 1 3 2 2 3 4) (4 2 5 3 1 4) (5 4 7 1 5) (7 2 1 2 3 1 4 2) (2 8 4 1 1 9 1) (2 11 8 1) (3 5 2 8 1) (3 4 2 3 10 1) (3 4 2 2 2 8 1 1) (2 4 4 10 2 1) (4 8 2 2) (3 5 5))) (quote #f)) (make-problem "Hattori 123" (quote ((4 8) (5 1 9) (3 1 1 10) (3 1 1 3 8) (3 1 2 2 1 7) (1 1 2 1 1 1 2 5) (1 2 1 1 1 2 1 2) (1 1 2 1 2 1) (2 1 1 1 2) (2 2 1 2 1) (2 1 2 1 2) (2 1 1 1 1) (2 2 1 2 2) (2 2 1 1 1) (1 1 1 1 1) (2 3 2 2) (2 2 1 2) (2 2 2 2) (2 2 2 1) (2 2 1 2) (2 2 5) (8 6) (6 7) (6 7) (12 6))) (quote ((6) (1 4 1) (4 3 2) (1 2 2 2) (4 3 2) (1 2 3 2) (4 4 2) (1 2 4 2) (1 3 1) (4 2 1) (2 3 2 1) (1 2 1) (1 5 2 1) (4 3 4 3) (5 7) (2 10) (2 5) (4 2 4 2) (6 4 3 3) (5 3 2 4) (8 7) (6 4 5) (6 3 2 5) (7 3 2 5) (9 6))) (quote (" xxxxxx " " x xxxx x" " xxxx xxx xx" " x xx xx xx" " xxxx xxx xx" " x xx xxx xx" " xxxx xxxx xx" " x xx xxxx xx" " x xxx x" " xxxx xx x" "xx xxx xx x" "x xx x" "x xxxxx xx x" "xxxx xxx xxxx xxx " " xxxxx xxxxxxx " " xx xxxxxxxxxx " " xx xxxxx " "xxxx xx xxxx xx" "xxxxxx xxxx xxx xxx" "xxxxx xxx xx xxxx" "xxxxxxxx xxxxxxx" "xxxxxx xxxx xxxxx" "xxxxxx xxx xx xxxxx" "xxxxxxx xxx xx xxxxx " "xxxxxxxxx xxxxxx "))) (make-problem "Hattori 124" (quote ((8) (12) (14) (3 5) (1 3) (1 1 1 2) (9) (2 5 2) (2 2 2 2) (2 1 3 1 2) (1 1 3 1 1) (2 1 3 1 2) (2 2 2 2) (2 5 2) (9))) (quote ((2 3) (2 2 2) (3 2 2) (2 2 2) (3 1 5 1) (3 4 3) (3 2 3 2) (3 3 3 2) (3 2 3 2) (3 4 3) (4 1 5 1) (4 2 2) (4 2 2) (5 2 2) (4 3))) (quote (" xx xxx " " xx xx xx " " xxx xx xx " " xx xx xx" "xxx x xxxxx x" "xxx xxxx xxx" "xxx xx xxx xx" "xxx xxx xxx xx" "xxx xx xxx xx" "xxx xxxx xxx" "xxxx x xxxxx x" "xxxx xx xx" " xxxx xx xx " " xxxxx xx xx " " xxxx xxx "))) (make-problem "Hattori 125" (quote ((11) (11) (2 7) (6 5) (8 3) (3 5 2) (4 4 3 1) (3 3 5 1) (1 3 2 3 1) (3 2 3 1) (4 2 2 1) (2 2 1 4 1) (2 2 3 1) (4 1 2) (3 2 2 2) (3 1) (2) (2 2) (3 2) (2 4))) (quote ((3 2 6) (3 2 6) (2 3 2 2) (2 2 4) (3 2 2) (5) (7) (11) (12) (9 1) (6 3) (1 1 1 2) (2 2 2 2) (1 2 1 1 1) (1 2 2 2 1) (1 4 4 2) (2 6 2) (1 3 2) (2 4) (10))) (quote ("xxx xx xxxxxx " "xxx xx xxxxxx " "xx xxx xx xx " "xx xx xxxx " "xxx xx xx " "xxxxx " "xxxxxxx " "xxxxxxxxxxx " "xxxxxxxxxxxx " "xxxxxxxxx x" "xxxxxx xxx" " x x x xx " " xx xx xx xx" " x xx x x x" " x xx xx xx x" " x xxxx xxxx xx" " xx xxxxxx xx " " x xxx xx " " xx xxxx " " xxxxxxxxxx "))) (make-problem "Hattori 126" (quote ((2 2) (4 4) (12) (13) (3 1 1 1 3) (2 1 1 1 2) (1 7 1) (1 1) (2 2) (2 2) (3 3) (3 3) (9) (7) (5))) (quote ((5) (3 3) (3 3) (3 3) (7 3) (4 1 3) (3 1 3) (5 3) (2 1 3) (3 1 3) (7 3) (4 3) (4 3) (4 3) (5))) (quote (" xxxxx " " xxx xxx " " xxx xxx " " xxx xxx " "xxxxxxx xxx " "xxxx x xxx" " xxx x xxx" " xxxxx xxx" " xx x xxx" " xxx x xxx" "xxxxxxx xxx " "xxxx xxx " " xxxx xxx " " xxxx xxx " " xxxxx "))) (make-problem "Hattori 127" (quote ((4) (5) (5 6) (6 6) (15) (7 3 2) (7 2 3 2) (3 3 4 2) (2 13 1) (1 5 7 1) (1 5 4 1) (1 3 2 1) (1 1) (1 1 1 1) (1 1 1 2) (2 1 1 2) (2 2 2 2) (6 2 2) (16) (14))) (quote ((9) (1 3 3) (3 2 3) (5 2 3) (5 4 7) (10 4) (8 3) (8 2) (2 2 2) (4 1 2) (3 1 2 2) (4 2 2) (10 2) (11 3) (11 4) (3 1 5 4 2) (2 4 2) (2 3) (2 4) (9))) (quote (" xxxxxxxxx " " x xxx xxx " " xxx xx xxx " " xxxxx xx xxx" " xxxxx xxxx xxxxxxx" " xxxxxxxxxx xxxx" " xxxxxxxx xxx" " xxxxxxxx xx" " xx xx xx" " xxxx x xx" " xxx x xx xx" " xxxx xx xx" "xxxxxxxxxx xx" "xxxxxxxxxxx xxx" "xxxxxxxxxxx xxxx" "xxx x xxxxx xxxx xx" " xx xxxx xx" " xx xxx " " xx xxxx " " xxxxxxxxx "))) (make-problem "Hattori 128" (quote ((14 1) (4 8 1) (3 8 3) (3 1 1 7 1 1) (4 1 1 1 6 2 1) (4 3 1 6 1 1) (4 5 2 1) (4 4 5 1 1) (5 1 1 3 3) (4 4 1) (2 2) (5 7 1) (7 5 6) (4 3 3 3) (4 2 4) (7 4 1) (4 4 3 6 1) (4 2 6 3 2) (7 5 1 3) (2 2 1 1) (2 4 2) (1 1 2) (2 7) (3 8) (14))) (quote ((4) (6) (6 8) (9 6 3) (10 4 1 2) (3 6 3 1 1 2) (2 5 2 2 2) (1 3 3 1 2 1) (1 1 2 1 1 1) (1 3 3 2 2 1 1) (1 1 1 2 4 1) (3 2 1 1 1 1 2) (4 3 2 3 3) (6 2 3 4) (8 3 3 3) (9 3 1 3) (10 3 2 3) (9 1 1 2 4) (7 1 4 5) (2 7) (1 3) (5 1 5) (1 1 1 1 3 1) (4 1 2 3 2) (1 1 1 1 7))) (quote (" xxxx " " xxxxxx " " xxxxxx xxxxxxxx " " xxxxxxxxx xxxxxx xxx " "xxxxxxxxxx xxxx x xx " "xxx xxxxxx xxx x x xx" "xx xxxxx xx xx xx" "x xxx xxx x xx x" "x x xx x x x" "x xxx xxx xx xx x x" "x x x xx xxxx x" "xxx xx x x x x xx" "xxxx xxx xx xxx xxx" "xxxxxx xx xxx xxxx" "xxxxxxxx xxx xxx xxx" "xxxxxxxxx xxx x xxx" "xxxxxxxxxx xxx xx xxx" "xxxxxxxxx x x xx xxxx" " xxxxxxx x xxxx xxxxx" " xx xxxxxxx " " x xxx " " xxxxx x xxxxx " " x x x x xxx x " "xxxx x xx xxx xx " " x x x x xxxxxxx "))) (make-problem "Hattori 129" (quote ((3) (5) (5) (6) (5 6) (7 6) (4 3 6) (4 2 8) (4 2 10) (4 1 5 5) (4 2 7 4) (6 2 8 2) (3 1 12) (1 1 2 1 11 1) (1 1 2 11 1) (1 2 3 14) (1 6 14) (1 3 17) (1 5 17) (8 5 3) (1 5 1 1 1) (1 6 1 1 1) (11 1 1) (1 1 4 1 1 1) (4 3))) (quote ((5 11) (6 1 1) (15 1) (9 9) (3 3 7) (2 1 2 1 6) (3 1 1 1 1 6) (7 2 5) (3 1 2 3) (2 1 2 1) (1 1 8) (9 1) (13) (10 1) (12) (13) (14) (16) (18) (9 9) (10 8) (6 4 2 4) (4 6 5 1) (4 1 10) (2 6 1))) (quote (" xxxxx xxxxxxxxxxx " " xxxxxx x x " " xxxxxxxxxxxxxxx x " " xxxxxxxxx xxxxxxxxx " " xxx xxx xxxxxxx " " xx x xx x xxxxxx " " xxx x x x x xxxxxx " " xxxxxxx xx xxxxx " " xxx x xx xxx " " xx x xx x " " x x xxxxxxxx" " xxxxxxxxx x" " xxxxxxxxxxxxx" " xxxxxxxxxx x" " xxxxxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxx " "xxxxxxxxx xxxxxxxxx " "xxxxxxxxxx xxxxxxxx " "xxxxxx xxxx xx xxxx " " xxxx xxxxxx xxxxx x" " xxxx x xxxxxxxxxx" " xx xxxxxx x"))) (make-problem "Hattori 130" (quote ((3) (5 8) (6 9) (7 9) (7 5 3) (7 4 3) (5 3 2) (3 2 2) (2 1 1 1) (2 1 1) (1 1) (3 5 1) (1 5 1) (3 5 1) (7 1) (7 3 1) (6 4 1) (6 4 1 1) (13 6) (5 6))) (quote ((6 1 4) (6 2 1 4) (7 2 3 4) (6 1 4) (11 4) (6 4) (5 2 1) (1 1 1) (2 4 2) (3 4 4) (4 9) (5 9) (6 9) (7) (8 2) (2 3) (3 2) (3 2) (4 2) (15))) (quote ("xxxxxx x xxxx " "xxxxxx xx x xxxx " "xxxxxxx xx xxx xxxx " " xxxxxx x xxxx " " xxxxxxxxxxx xxxx " " xxxxxx xxxx " " xxxxx xx x " " x x x " " xx xxxx xx" " xxx xxxx xxxx" " xxxx xxxxxxxxx" " xxxxx xxxxxxxxx" " xxxxxx xxxxxxxxx" " xxxxxxx " " xxxxxxxx xx" " xx xxx" " xxx xx" " xxx xx" " xxxx xx" " xxxxxxxxxxxxxxx"))) (make-problem "Hattori 131" (quote ((4) (2 3) (1 4) (1 4 4) (6 6) (4 7) (7) (7) (4 6) (6 1 1) (2 5 3) (1 6 1 1) (1 6 2 1) (8 1) (7 2) (6 1) (9) (3) (1) (4))) (quote ((4) (2 2) (1 4) (6 4) (6 2 2) (4 2 5) (8) (9) (9) (8) (7) (1) (1) (3 1) (5 3 1) (9 4) (6 1 1 1) (6 3 3) (6 1) (7 1))) (quote (" xxxx " "xx xx " "x xxxx " "xxxxxx xxxx " "xxxxxx xx xx " " xxxx xx xxxxx " " xxxxxxxx " " xxxxxxxxx " " xxxxxxxxx " " xxxxxxxx " " xxxxxxx " " x " " x " " xxx x " " xxxxx xxx x " " xxxxxxxxx xxxx " " xxxxxx x x x" " xxxxxx xxx xxx" " xxxxxx x" " xxxxxxx x"))) (make-problem "Hattori 132" (quote ((3) (1 1) (1 1 6) (1 1 1 4) (1 1 2 5) (1 1 2 5) (1 1 9) (1 1 10) (1 1 3 1 3) (1 1 3 1 2) (1 1 2 1 3) (1 1 2 2) (5 1 2) (1 2 2 1) (1 2 7) (3 7 2) (5 1 7) (5 1 7) (5 14) (3 1))) (quote ((3) (5) (5) (5) (3) (4) (13 4) (1 1 1 1) (14 1 1) (7) (1 5) (6 4) (11 3) (1 6 2 3) (1 2 1 1 1 4) (1 6 1 5) (6 2 1) (9 1 1) (10 1 1) (6 2 2 1))) (quote (" xxx " " xxxxx" " xxxxx" " xxxxx" " xxx " " xxxx " "xxxxxxxxxxxxx xxxx " "x x x x " "xxxxxxxxxxxxxx x x " " xxxxxxx " " x xxxxx " " xxxxxx xxxx " " xxxxxxxxxxx xxx " " x xxxxxx xx xxx " " x xx x x x xxxx" " x xxxxxx x xxxxx " " xxxxxx xx x " " xxxxxxxxx x x " " xxxxxxxxxx x x " " xxxxxx xx xx x "))) (make-problem "Hattori 133" (quote ((3) (3 4 1) (7 4 5) (11 4 2 1) (15 2) (13 2) (14) (11) (17) (20) (22) (24) (24) (5 13 2) (16 1) (18) (19) (10 10) (9 11) (9 6 5) (9 6 4) (8 7 2) (7 6 1) (5 5) (3 3))) (quote ((1 3 3) (2 4 6) (2 5 8) (4 6 8) (5 6 9) (6 5 9) (6 5 9) (21) (20) (19) (1 16) (3 14 4) (17 7) (24) (23) (21) (17) (17) (2 11) (2 12) (2 4 7) (1 4 6) (1 4 5) (1 4 4) (3))) (quote (" x xxx xxx" " xx xxxx xxxxxx" " xx xxxxx xxxxxxxx" " xxxx xxxxxx xxxxxxxx " " xxxxx xxxxxx xxxxxxxxx " " xxxxxx xxxxx xxxxxxxxx " " xxxxxx xxxxx xxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxx " "x xxxxxxxxxxxxxxxx " "xxx xxxxxxxxxxxxxx xxxx" "xxxxxxxxxxxxxxxxx xxxxxxx" " xxxxxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxx " " xx xxxxxxxxxxx " " xx xxxxxxxxxxxx " " xx xxxx xxxxxxx " " x xxxx xxxxxx " " x xxxx xxxxx " " x xxxx xxxx " " xxx "))) (make-problem "Hattori 134" (quote ((4) (3 3 4) (2 2 6 5) (5 8 5) (2 1 8 3) (3 7 3) (4 7 3 3) (5 5 5 1 1) (1 3 4 6) (1 4 4 6) (1 3 2 3 1) (1 4 1 3) (1 3 4) (1 7 4) (1 3 2 2 2) (1 3 1 6) (1 7 4 2) (1 4 1 3 4) (1 2 12) (2 8 2 1) (3 1 1 1 4 7) (14 2 5) (12 3 3) (8 4 2) (5))) (quote ((2 2) (4 3) (1 20) (3 3 2) (8 4) (6 3) (7 4) (7 3) (7 4) (4 5 3) (8 1 3 3) (11 2 8) (10 4 4 1) (9 1 5 1) (6 5 2) (1 5 2 4) (1 2 1 2 4) (2 2 4 2) (3 2 6) (3 4 4 4) (3 4 3 6) (3 3 11) (12 1 2 2) (4 2 10) (14))) (quote (" xx xx " " xxxx xxx " " x xxxxxxxxxxxxxxxxxxxx " " xxx xxx xx " " xxxxxxxx xxxx " " xxxxxx xxx " " xxxxxxx xxxx " " xxxxxxx xxx " " xxxxxxx xxxx " " xxxx xxxxx xxx " " xxxxxxxx x xxx xxx " " xxxxxxxxxxx xx xxxxxxxx " " xxxxxxxxxx xxxx xxxx x" " xxxxxxxxx x xxxxx x" " xxxxxx xxxxx xx" "x xxxxx xx xxxx" "x xx x xx xxxx" "xx xx xxxx xx " "xxx xx xxxxxx " " xxx xxxx xxxx xxxx " " xxx xxxx xxx xxxxxx " " xxx xxx xxxxxxxxxxx " " xxxxxxxxxxxx x xx xx " " xxxx xx xxxxxxxxxx " " xxxxxxxxxxxxxx "))) (make-problem "Hattori 135" (quote ((1) (2 3 3) (9 7) (3 3 2 5) (2 4 1) (2 1) (1 1 2 1) (1 2 1) (1 6) (1 1 2) (1 1 2 1) (1 4) (1 1) (1 2) (3 6) (4 7) (14) (1 14 3) (1 11 3) (2 6))) (quote ((3) (2 1) (3 2) (3 4) (2 3 5) (4 5) (3 5) (13 3) (2 5) (2 3 5) (2 1 6) (2 13) (6 5) (1 1 1 5) (2 3 2 3 1) (3 2 1) (4 1) (3 3) (2 3) (1 3))) (quote (" xxx" " xx x" " xxx xx " " xxx xxxx " " xx xxx xxxxx " " xxxx xxxxx " " xxx xxxxx " " xxxxxxxxxxxxx xxx " " xx xxxxx " " xx xxx xxxxx " " xx x xxxxxx " " xx xxxxxxxxxxxxx " " xxxxxx xxxxx " " x x x xxxxx " " xx xxx xx xxx x" " xxx xx x" "xxxx x" " xxx xxx" " xx xxx" " x xxx"))) (make-problem "Hattori 136" (quote ((11) (6 6) (6 5) (9 8) (6 4) (5 3 3 4) (5 1 1 1 1 4) (5 4) (2 4 2) (3 2 2) (1 1 9 3) (1 7 4 1 1) (1 3 4 1) (6 2 2 2 1) (2 1 1 4) (9 6) (1 4 6) (1 4 2 2 1 1) (1 1 3 4 1) (4 7 4))) (quote ((4 5 1) (5 1 1 5) (6 3 1 1 1) (7 1 3 3) (8 7) (5 2 3 4) (4 4 4) (4 2 2 3 2) (2 1 1 2 1 1 1 1) (1 1 2 1 1 1 1 1 1) (1 1 1 1) (1 1 1 1 1 1 1) (2 1 2 1 2 1 1 1 1) (2 1 1 2 3 2) (4 2 4 4) (4 2 3 2 1) (8 5 2) (7 3 1 1 1) (6 1 1 4) (5 5 1))) (quote (" xxxx xxxxx x" " xxxxx x x xxxxx" " xxxxxx xxx x x x" " xxxxxxx x xxx xxx" " xxxxxxxx xxxxxxx " "xxxxx xx xxx xxxx " "xxxx xxxx xxxx " "xxxx xx xx xxx xx" "xx x x xx x x x x" "x x xx x x x x x x" "x x x x" "x x x x x x x" "xx x xx x xx x x x x" "xx x x xx xxx xx" "xxxx xx xxxx xxxx " "xxxx xx xxx xx x " " xxxxxxxx xxxxx xx" " xxxxxxx xxx x x x" " xxxxxx x x xxxx" " xxxxx xxxxx x"))) (make-problem "Hattori 137" (quote ((5 3) (3 3 2) (5 3) (4 1 4) (3 3 2) (8 1 1) (2 4 2 1 1) (11 2 2) (4 3 8) (2 10 4) (10 5 1) (8 10) (5 9 3) (3 9 6) (10 6 2) (6 12) (3 10 3) (10 5) (6 4) (7))) (quote ((5) (8) (10) (8 2 3) (6 10) (4 13) (11 2 4) (3 3 9 1) (3 15) (1 1 7 8) (1 2 7 2 1) (1 2 1 10) (2 4 7) (1 8 4) (2 8 1) (2 2 8) (3 6 4) (2 1 6 2) (1 2 3 5) (1 11))) (quote (" xxxxx " " xxxxxxxx " " xxxxxxxxxx " " xxxxxxxx xx xxx" " xxxxxx xxxxxxxxxx" " xxxx xxxxxxxxxxxxx" " xxxxxxxxxxx xx xxxx" " xxx xxx xxxxxxxxx x" "xxx xxxxxxxxxxxxxxx" "x x xxxxxxx xxxxxxxx" "x xx xxxxxxx xx x " "x xx x xxxxxxxxxx " "xx xxxx xxxxxxx " " x xxxxxxxx xxxx " " xx xxxxxxxx x " " xx xx xxxxxxxx " " xxx xxxxxx xxxx " "xx x xxxxxx xx " "x xx xxx xxxxx " "x xxxxxxxxxxx "))) (make-problem "Hattori 138" (quote ((6 1 1) (8 3 3 1) (3 2 1 2 5 2) (2 1 1 1 1 4 3 3) (1 1 1 1 1 2 6) (1 1 1 4) (2 3 1 1 2) (2 2 1) (6 1 3) (7 1 1) (8 3 1 2) (2 8 1) (2 3 3 6 1 2) (2 1 4 1 1 1) (2 5 4 1 1) (3 3 3 4 6) (8 4 1 1) (8 5 6) (3 3 2 1) (3 3 2 4 4) (3 3 1 6 6) (3 3 2 2 2 2 2) (3 3 2 2 5 2) (8 8 6) (8 4 4))) (quote ((7 16) (4 19) (3 3 10) (2 2 1 3 2 2) (2 1 6 9) (2 2 1 5 10) (3 6 10) (7 2 4 2) (1 2) (6 2) (16 7) (1 6 3 1) (2 1 4) (2 1 6) (2 6 2 2) (3 1 3 2 2) (3 1 3 6) (3 1 3 4) (3 1 1) (3 6 4) (3 1 1 1 6) (3 8 1 2 2) (4 1 1 1 2 2) (4 1 1 1 8) (4 1 1 3 4))) (quote (" xxxxxxx xxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxxxxxxxx" "xxx xxx xxxxxxxxxx" "xx xx x xxx xx xx" "xx x xxxxxx xxxxxxxxx" "xx xx x xxxxx xxxxxxxxxx" "xxx xxxxxx xxxxxxxxxx" " xxxxxxx xx xxxx xx" " x xx " " xxxxxx xx " "xxxxxxxxxxxxxxxx xxxxxxx " " x xxxxxx xxx x " " xx x xxxx " " xx x xxxxxx" " xx xxxxxx xx xx" " xxx x xxx xx xx" " xxx x xxx xxxxxx" "xxx x xxx xxxx " " xxx x x " " xxx xxxxxx xxxx " " xxx x x x xxxxxx" " xxx xxxxxxxx x xx xx" " xxxx x x x xx xx" " xxxx x x x xxxxxxxx" " xxxx x x xxx xxxx ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/h31-60 b/pkgs/games/paint-by-numbers/problems/h31-60 deleted file mode 100644 index 4ddf2d8d27..0000000000 --- a/pkgs/games/paint-by-numbers/problems/h31-60 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Hattori 31 - 60") (define problems (list (make-problem "Hattori 31" (quote ((8 7) (10 8) (10 9) (7 1 9) (5 2 3) (4 4 3) (4 1 3) (4 1 2 3) (4 2 1 2 1) (4 1 1) (4 1 1) (3 1 1 2) (3 1 2 1) (4 2) (4 1 3) (3 2 2) (3 1 2 2) (1 8 2) (19) (20))) (quote ((16 1) (17 2) (20) (11 2 2) (5 2) (4 2) (4 1 1 2) (3 2 3) (3 3) (3 3 2 4) (4 5 3) (4 2 5) (3 1 1 4) (4 1 3) (4 3) (4 1 1 2) (4 2 2) (8 2 2) (8 1 1 3) (13 1 3))) (quote (" xxxxxxxxxxxxxxxx x" "xxxxxxxxxxxxxxxxx xx" "xxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxx xx xx" "xxxxx xx" "xxxx xx" "xxxx x x xx" "xxx xx xxx" "xxx xxx" " xxx xxx xx xxxx" " xxxx xxxxx xxx" " xxxx xx xxxxx" " xxx x x xxxx" "xxxx x xxx" "xxxx xxx" "xxxx x x xx" "xxxx xx xx" "xxxxxxxx xx xx" "xxxxxxxx x x xxx" "xxxxxxxxxxxxx x xxx"))) (make-problem "Hattori 32" (quote ((11 5) (11 7) (11 7) (9 2 2) (7 3 3) (7 3 3) (7 3 3) (1 1 3 3) (1 1 4 4) (2 2 4 4) (1 1 4 4) (2 2 4 4) (1 1 4 4) (1 3 1 4 4) (1 1 1 4 4) (2 1 2 3 3) (2 1 2 3 3) (5 9) (3 9) (3 1 1))) (quote ((3) (4 5) (7 3 2) (10 2) (7 1 3) (7 7) (7 1 3) (10 2) (7 3 2) (4 5) (3) (16) (18) (19) (3 7 2) (3 2) (3 7 2) (19) (18) (16))) (quote ("xxx " "xxxx xxxxx " "xxxxxxx xxx xx " "xxxxxxxxxx xx " "xxxxxxx x xxx" "xxxxxxx xxxxxxx" "xxxxxxx x xxx" "xxxxxxxxxx xx " "xxxxxxx xxx xx " "xxxx xxxxx " "xxx " " xxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxxx " "xxx xxxxxxx xx " "xxx xx " "xxx xxxxxxx xx " "xxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxx"))) (make-problem "Hattori 33" (quote ((1 1 1 1) (3 3 3) (3 1 5 5) (6 6) (6 1) (4 3 2) (4 4 4) (4 11) (17) (18) (18) (16 1) (16 1) (4 5 4) (2 6 2) (3 2 2 1) (2 2 1 1) (1 1 1 1) (1 1 1 1) (2 2 2 2))) (quote ((2) (3) (11) (14) (1 11) (16) (9 1) (6 5) (9) (1 12 1) (2 16) (3 10) (2 9 1) (1 7 6) (1 9) (2 10 1) (3 14) (4 7) (3 3) (2 4))) (quote (" xx " " xxx " " xxxxxxxxxxx " "xxxxxxxxxxxxxx " " x xxxxxxxxxxx " "xxxxxxxxxxxxxxxx " " xxxxxxxxx x" " xxxxxx xxxxx" " xxxxxxxxx " " x xxxxxxxxxxxx x" " xx xxxxxxxxxxxxxxxx" "xxx xxxxxxxxxx " " xx xxxxxxxxx x" " x xxxxxxx xxxxxx" " x xxxxxxxxx " " xx xxxxxxxxxx x" " xxx xxxxxxxxxxxxxx" "xxxx xxxxxxx " " xxx xxx " " xx xxxx "))) (make-problem "Hattori 34" (quote ((10) (14) (13 1) (11 3) (14) (1 1) (15) (3 3 3 1 1) (1 1 1 1 1 1) (1 1 1 2 3) (1 11 1 2) (1 2 1) (2 5 1 1) (2 3 2 1) (5 2 1) (1 4 5 1) (1 4 7 1) (1 16 1) (8 11) (6 10))) (quote ((5) (6 1 2) (4 4 3) (1 5 7) (2 1 1 6) (3 2 1 5) (4 3 1 1 4) (4 2 1 2 2) (5 1 2 2 1) (5 1 1 2 2) (5 2 1 1 4) (5 3 1 5) (5 2 1 5) (5 1 2 6) (5 4 7) (3 3 3 5) (3 6 4) (4 1 3) (1 1 2 2) (3 10))) (quote (" xxxxx " " xxxxxx x xx" " xxxx xxxx xxx" " x xxxxx xxxxxxx" " xx x x xxxxxx" " xxx xx x xxxxx" " xxxx xxx x x xxxx" " xxxx xx x xx xx " "xxxxx x xx xx x " "xxxxx x x xx xx " "xxxxx xx x x xxxx" "xxxxx xxx x xxxxx" "xxxxx xx x xxxxx" "xxxxx x xx xxxxxx" "xxxxx xxxx xxxxxxx" "xxx xxx xxx xxxxx" "xxx xxxxxx xxxx" "xxxx x xxx" " x x xx xx" " xxx xxxxxxxxxx"))) (make-problem "Hattori 35" (quote ((3 3) (1 2 2 1) (1 4 2) (3 1 1 4) (4 3 2 2) (2 2 6 4 1) (8 11) (2 3 2 2 2 2) (5 2 3 3) (4 3 3 3) (1 2 3 2 1 1) (4 2 2 3) (2 1 2 2 4) (5 1 1 3) (1 4 5) (3 3 4 2) (19) (3 3 5 3) (4 4 5) (13))) (quote ((10) (5 3 2) (3 4 5) (2 9 3) (6 7) (8 3 2) (1 1 3 5) (2 2 5 2 1) (2 1 4 4) (8 1 2) (1 3 4) (8 4) (2 5 2 1) (1 1 5 5) (7 5 5) (6 3 2) (1 4 8) (4 7 3) (1 4 7) (3 4 3))) (quote (" xxxxxxxxxx " " xxxxx xxx xx " " xxx xxxx xxxxx " " xx xxxxxxxxx xxx " " xxxxxx xxxxxxx" "xxxxxxxx xxx xx" "x x xxx xxxxx" "xx xx xxxxx xx x" " xx x xxxx xxxx" " xxxxxxxx x xx" " x xxx xxxx" " xxxxxxxx xxxx" "xx xxxxx xx x" "x x xxxxx xxxxx" "xxxxxxx xxxxx xxxxx" " xxxxxx xxx xx" " x xxxx xxxxxxxx" " xxxx xxxxxxx xxx " " x xxxx xxxxxxx " " xxx xxxx xxx "))) (make-problem "Hattori 36" (quote ((3 3) (1 6 1) (1 7) (1 1 2) (1 2 2 1 2) (1 1 1 1 1) (2 2 1) (2 2 1) (1 2 2 2 1) (1 2 2 1 1) (1 1 1) (4 3 1 1) (2 1 1 1 1 1) (13 1 1) (1 1 1) (2 4 1 1) (11 1 1) (1 4 5 1) (1 1 1 1 1 1 1) (5 5 6))) (quote ((9) (2 3 2) (7 1 1 1 1) (1 2 3 4) (2 2 2 1 1 1) (1 1 1 1 1) (1 1 4) (1 1 2) (1 2 2 1 2 1) (2 1 2 3 4) (1 1 1 1 1) (7 3 2 1) (1 2 1 1 3) (1 2 1 1) (1 8 3) (1 1 1) (1 5) (2 1) (2 1) (16))) (quote (" xxxxxxxxx " " xx xxx xx " "xxxxxxx x x x x" "x xx xxx xxxx" "xx xx xx x x x" " x x x x x" " x x xxxx" " x x xx " " x xx xx x xx x" "xx x xx xxx xxxx" "x x x x x" "xxxxxxx xxx xx x" " x xx x x xxx" " x xx x x " " x xxxxxxxx xxx" " x x x" " x xxxxx" " xx x" " xx x" " xxxxxxxxxxxxxxxx"))) (make-problem "Hattori 37" (quote ((6) (2 3) (10) (1 1 1 1) (1 1 1 1) (8) (3 1 3) (15) (2 10 2) (1 8 1) (1 2 2 1 1) (2 1 2 9) (3 1 2 1 4 3) (1 2 2 3 3) (4 5 2) (2 8 1 3) (1 5 2 2) (2 3 1 2) (9 1 2) (4 2 7))) (quote ((4 5) (2 2 2 3) (2 1 1 2) (3 5 2) (10 2 1) (3 1 3 1 1 2) (1 4 3 1 1 4) (1 1 5 3 5) (1 4 3 1 2 2) (3 1 3 4) (3 1 10) (11 2) (1 3 4 4) (1 2 7 1) (1 3 1) (2 2 2) (4 5) (7 1) (5 1) (2))) (quote (" xxxx xxxxx" " xx xx xx xxx" " xx x x xx" " xxx xxxxx xx" " xxxxxxxxxx xx x " "xxx x xxx x x xx " "x xxxx xxx x x xxxx " "x x xxxxx xxx xxxxx" "x xxxx xxx x xx xx" "xxx x xxx xxxx " "xxx x xxxxxxxxxx " " xxxxxxxxxxx xx " " x xxx xxxx xxxx" " x xx xxxxxxx x" " x xxx x" " xx xx xx" " xxxx xxxxx" " xxxxxxx x" " xxxxx x" " xx "))) (make-problem "Hattori 38" (quote ((6 6) (9 8) (3 5 3) (2 2 1) (1) (1) (2 1) (1 4) (9 3) (11 2) (14 2) (8 3 2) (8 1 4 2) (8 5 3) (20) (12 7) (1 1 1 1 2 5) (1 1 1 1 3 4) (13 3) (16))) (quote ((2 6 1) (3 11) (2 8 2) (3 12) (2 8 2) (2 12) (2 8 2) (2 12) (3 3 2 2) (3 3 1 6) (2 1 4 6) (2 7 3) (3 5 2) (2 6 1) (2 5 1) (2 7) (2 2 6) (3 3 6) (2 11) (2 10))) (quote (" xx xxxxxx x " " xxx xxxxxxxxxxx" " xx xxxxxxxx xx" "xxx xxxxxxxxxxxx" "xx xxxxxxxx xx" "xx xxxxxxxxxxxx" "xx xxxxxxxx xx" "xx xxxxxxxxxxxx" "xxx xxx xx xx" " xxx xxx x xxxxxx" " xx x xxxx xxxxxx" " xx xxxxxxx xxx" "xxx xxxxx xx" "xx xxxxxx x" "xx xxxxx x" "xx xxxxxxx" "xx xx xxxxxx" "xxx xxx xxxxxx " " xx xxxxxxxxxxx " " xx xxxxxxxxxx "))) (make-problem "Hattori 39" (quote ((2) (1) (10 9) (10 7 1) (10 5 3) (8 8) (7 4 2) (7 2 2 4) (7 2 7) (2 1) (1) (1 4) (1 1 1) (1 2 1 1 1) (2 2 1 4 1) (2 1 1 4 2) (3 4 1 1) (1 1) (1 2 2 1) (18))) (quote ((15 1) (8 3) (7 2 1) (7 2 1) (7 3 2) (7 2) (7 1) (4 1) (3 4 1) (1 3 2 1 1 1) (2 2 1 3 1) (3 1 4 1) (4 1 3 1) (7 4 1) (7 1) (5 1 1) (2 4 2) (4 2 1 2) (1 5 1 1) (8 6))) (quote (" xxxxxxxxxxxxxxx x " " xxxxxxxx xxx " " xxxxxxx xx x" " xxxxxxx xx x" " xxxxxxx xxx xx" " xxxxxxx xx" " xxxxxxx x" " xxxx x" " xxx xxxx x" "x xxx xx x x x" "xx xx x xxx x" " xxx x xxxx x" " xxxx x xxx x" " xxxxxxx xxxx x" " xxxxxxx x" " xxxxx x x" " xx xxxx xx" " xxxx xx x xx" " x xxxxx x x" " xxxxxxxx xxxxxx"))) (make-problem "Hattori 40" (quote ((8) (3 8) (3 1 4 2) (4 1 1 2) (1 1 1 1 3 4) (1 1 1 1 3) (1 1 1 1 1) (1 1 4) (2 1 1) (1 5 2 1) (3 1 3 3) (3 1 3 1) (3 2 3 3) (3 3 1) (1 1 1 1 3) (1 5 1 1) (11 2) (1 1 3) (13 5) (13 6))) (quote ((2) (5 3 4) (1 9 2) (2 4 1 2) (1 2 3 2) (3 1 2 2) (1 4 2 2) (4 1 1 2 2) (1 2 3 2) (6 4 1 2) (1 8 2) (6 3 4) (3 2) (4) (5 4 1) (3 4 1 2) (2 1 1 5 2) (2 4 1 1 3) (3 1 1 1 4) (3 1 5))) (quote (" xx" " xxxxx xxx xxxx" " x xxxxxxxxx xx" " xx xxxx x xx" " x xx xxx xx" " xxx x xx xx" " x xxxx xx xx" " xxxx x x xx xx" " x xx xxx xx" " xxxxxx xxxx x xx" " x xxxxxxxx xx" " xxxxxx xxx xxxx" "xxx xx" "xxxx " "xxxxx xxxx x" "xxx xxxx x xx" "xx x x xxxxx xx" "xx xxxx x x xxx" "xxx x x x xxxx" "xxx x xxxxx"))) (make-problem "Hattori 41" (quote ((6 1 3) (5 1) (3) (2) (2 2 2) (1 4 4) (2 2 3 2) (5 6) (3 5) (2 3) (1 4 1) (1 2 3 3) (1 2 3 1) (2 2 1) (2 3) (2 5) (1 5) (1 6) (1 1 1 1 1 1 1 6) (1 1 1 1 1 1 1 6))) (quote ((6 10) (5 3) (3 2) (2 2) (2 4 2) (1 2 2) (5 2 2) (3 3) (2 2) (4) (1 4 2) (2 3) (4 2) (6) (2 3 3) (5 5) (3 5) (1 2 6) (1 1 6) (2 9))) (quote ("xxxxxx xxxxxxxxxx" "xxxxx xxx " "xxx xx" "xx xx " "xx xxxx xx" "x xx xx " " xxxxx xx xx" " xxx xxx " " xx xx" " xxxx " "x xxxx xx" " xx xxx " " xxxx xx" " xxxxxx " " xx xxx xxx" " xxxxx xxxxx" " xxx xxxxx" "x xx xxxxxx" "x x xxxxxx" "xx xxxxxxxxx"))) (make-problem "Hattori 42" (quote ((9) (3 6) (3 1 6) (4 1 1 4) (4 5) (6 1 7) (4 2 2 4) (3 6 3) (2 1 2 2 3) (1 1 1 1 2) (1 6 1) (1 4 2) (1 1 2) (3 2 2 3) (10 2 1) (9 1 1) (10 3 2) (15 1) (11 2 1) (7 3))) (quote ((2) (5 2) (7 4) (12 5) (6 7) (2 6 6) (1 2 2 2 6) (2 1 2 10) (4 5 7) (3 3 2 6) (9 1 2 4) (6 2 3 3) (6 2 3) (10 2) (6 3) (4 2) (5) (2 2) (1 1 1) (7))) (quote (" xx " " xxxxx xx " " xxxxxxx xxxx " "xxxxxxxxxxxx xxxxx " "xxxxxx xxxxxxx " "xx xxxxxx xxxxxx " "x xx xx xx xxxxxx" "xx x xx xxxxxxxxxx" "xxxx xxxxx xxxxxxx" "xxx xxx xx xxxxxx" "xxxxxxxxx x xx xxxx" "xxxxxx xx xxx xxx" " xxxxxx xx xxx" " xxxxxxxxxx xx " " xxxxxx xxx " " xxxx xx " " xxxxx " " xx xx" " x x x" " xxxxxxx"))) (make-problem "Hattori 43" (quote ((5) (3 3 3) (1 2 4 1) (2 10) (1 1 3 1) (2 1 3 2 2 1) (2 1 5 1 1 1) (2 7 1) (3 7 3 2) (3 7 3 2) (4 6 2 2) (4 7 2) (5 11) (5 1 4 3) (3 4 3 3 2) (4 2 3 2) (2 3 1) (2 2 1) (2 1) (5))) (quote ((3 3) (3 4) (9) (8) (6 3) (5 9) (3 3 5) (1 5 1) (2 7 1 1) (1 10 1 1) (1 11 6) (13 2 1) (2 1 7 1) (3 1 3) (2 2 2 4) (2 3 4) (3 2 3 1 2) (1 1 1 3) (3 7) (8 2))) (quote (" xxx xxx " " xxx xxxx " " xxxxxxxxx " " xxxxxxxx " " xxxxxx xxx " " xxxxx xxxxxxxxx " " xxx xxx xxxxx " " x xxxxx x " "xx xxxxxxx x x" "x xxxxxxxxxx x x" "x xxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxx xx x" "xx x xxxxxxx x" " xxx x xxx " " xx xx xx xxxx " " xx xxx xxxx " " xxx xx xxx x xx " " x x x xxx " " xxx xxxxxxx " " xxxxxxxx xx "))) (make-problem "Hattori 44" (quote ((5) (5 6) (2 2 6 1) (6 6 2) (8 5 3) (2 1 1 5 5) (11 6) (4 5 7) (13) (9) (4 6) (5 3 4) (4 5 1 2) (2 4 3 3) (1 5 1 3) (6 2 3) (6 3 3) (5 3 2) (4 3 1) (3 3))) (quote ((4 4 4) (4 3 5) (2 2 3 6) (7 3 5) (4 1 3 5) (1 8 5) (4 4 5) (4 8) (7) (6 2 4) (3 4 7) (3 6 5) (4 5) (5 2 2) (5 3 2) (4 4 2) (4 4 3) (3 5 3) (2 5 3) (5 3))) (quote (" xxxx xxxx xxxx" " xxxx xxx xxxxx" " xx xx xxx xxxxxx" " xxxxxxx xxx xxxxx " " xxxx x xxx xxxxx " " x xxxxxxxx xxxxx " " xxxx xxxx xxxxx " " xxxx xxxxxxxx " " xxxxxxx " " xxxxxx xx xxxx" " xxx xxxx xxxxxxx" " xxx xxxxxx xxxxx" " xxxx xxxxx " " xxxxx xx xx " "xxxxx xxx xx " "xxxx xxxx xx " "xxxx xxxx xxx " "xxx xxxxx xxx " "xx xxxxx xxx " " xxxxx xxx "))) (make-problem "Hattori 45" (quote ((8 3) (3 11) (9 1 3) (1 6) (2 7 2) (2 1 4) (4 5 3) (3 5) (1 2 3 2) (1 6) (11 1) (3 5) (3 6 3) (4 6 4) (4 15) (3 7 4) (8 3) (1 2 5) (5 5) (4))) (quote ((1) (1 1 1) (1 2 1) (2 3 2 3) (3 3 1 1 1) (2 1 1 4 2) (2 1 1 6 1) (4 4 3 1) (4 4 6) (11 7) (8 8) (8 9) (2 6 9) (2 1 3 9) (2 1 1 2 1 4) (2 1 1 3) (3 2) (1 1 1 5 1) (1 1 1 1 1 5) (1 1 1 1 1 1 5))) (quote (" x " " x x x " " x xx x " " xx xxx xx xxx " " xxx xxx x x x " " xx x x xxxx xx " " xx x x xxxxxx x " "xxxx xxxx xxx x " "xxxx xxxx xxxxxx " "xxxxxxxxxxx xxxxxxx " "xxxxxxxx xxxxxxxx " "xxxxxxxx xxxxxxxxx " "xx xxxxxx xxxxxxxxx " "xx x xxx xxxxxxxxx " "xx x x xx x xxxx" " xx x x xxx" " xxx xx" "x x x xxxxx x" "x x x x x xxxxx " "x x x x x x xxxxx "))) (make-problem "Hattori 46" (quote ((5) (4 8) (15) (3 10) (2 9) (1 1 1 1 3 5) (1 1 6 2 4) (1 2 2 4 3) (4 4 3 1) (3 2 1 2 3 1) (1 1 4 3 2) (1 2 2 1 2 2) (2 5 2 1) (3 6 1) (10 4 2) (6 5 1) (2 2 2) (2 2 2) (5 6) (2 13))) (quote ((10) (2 2 3) (2 1 3 2 1) (2 2 1 2 2) (2 3 2 2 1) (2 1 3 1 5) (2 8 5) (2 3 3 2 2) (1 2 3 1 3 1) (3 2 1 2 2 1) (6 2 1 3 3) (14 1 2) (12 3 2) (5 3 2) (5 2 3 2) (5 3 2 2) (6 1 1 1 1) (5 2 1) (5 3 1) (5 3 1))) (quote (" xxxxxxxxxx " " xx xx xxx " " xx x xxx xx x" " xx xx x xx xx" " xx xxx xx xx x " " xx x xxx x xxxxx " " xx xxxxxxxx xxxxx " " xx xxx xxx xx xx" " x xx xxx x xxx x" " xxx xx x xx xx x" "xxxxxx xx x xxx xxx" "xxxxxxxxxxxxxx x xx" "xxxxxxxxxxxx xxx xx" "xxxxx xxx xx" "xxxxx xx xxx xx" " xxxxx xxx xx xx" " xxxxxx x x x x" " xxxxx xx x" " xxxxx xxx x" " xxxxx xxx x"))) (make-problem "Hattori 47" (quote ((12) (2 3) (1 8 3) (1 3 3 2) (1 2 2 2) (1 2 2 2) (1 3 2) (11 3) (7 7) (3 3) (3 2) (1 1) (3 1) (2 1 2 1 1) (6 2 1 1) (2 1 5 5 1) (2 1 1 1 1 1 1 1) (2 1 1 2 1 1 1) (2 3 3) (2 2))) (quote ((7) (7) (6 1) (2 1 4) (1 7 1) (1 7 3) (1 2 5 1 2) (1 1 2 5 1 2 1) (1 1 2 4 1 2) (1 1 2 4) (1 1 2 2) (1 2 1 2) (1 1 1 1) (1 1 2 4) (2 1 1) (1 1 3) (2 1 1) (1 3 4) (9 2) (17))) (quote (" xxxxxxx" " xxxxxxx" " xxxxxx x " "xx x xxxx " "x xxxxxxx x " "x xxxxxxx xxx " "x xx xxxxx x xx " "x x xx xxxxx x xx x " "x x xx xxxx x xx " "x x xx xxxx " "x x xx xx " "x xx x xx " "x x x x " "x x xx xxxx " "xx x x " " x x xxx " " xx x x " " x xxx xxxx " " xxxxxxxxx xx" " xxxxxxxxxxxxxxxxx"))) (make-problem "Hattori 48" (quote ((5 3) (10 1 1) (5 4) (3) (7 3) (14) (16) (5 4) (4 3) (3 3 3 2) (1 1 3 2 2 1) (1 1 4 1 3 1) (1 1 4 1 3 1) (1 4 4 2) (1 3) (2 4) (3 6) (18) (16) (12))) (quote ((1 10) (1 3 4) (1 4 3) (1 4 3) (1 3 2 3) (3 3 1 1 3) (3 3 1 3 3) (3 3 5 3) (3 3 5 3) (3 3 3 3) (3 3) (3 4 3) (3 2 1 3) (2 1 3 4) (2 5 4) (4 3 3) (6 4) (5 3 4) (1 2 3 4) (3 8))) (quote (" x xxxxxxxxxx " " x xxx xxxx " " x xxxx xxx " " x xxxx xxx" " x xxx xx xxx" "xxx xxx x x xxx" "xxx xxx x xxx xxx" "xxx xxx xxxxx xxx" "xxx xxx xxxxx xxx" "xxx xxx xxx xxx" " xxx xxx" " xxx xxxx xxx" " xxx xx x xxx" " xx x xxx xxxx" " xx xxxxx xxxx" " xxxx xxx xxx " " xxxxxx xxxx " "xxxxx xxx xxxx " "x xx xxx xxxx " "xxx xxxxxxxx "))) (make-problem "Hattori 49" (quote ((2 2) (2 2) (3 3 3 3) (5 8 5) (3 3 3 3) (2 1 1 4 1 1 2) (2 1 8 1 2) (1 2 2 1) (1 1 1 1 1 1 1 1) (2 2 1 1) (1 1 1 1 2 1 1) (2 1 1 1 1) (1 1 1 1) (1 4 1) (9) (7 7) (1 7 1) (13 1) (4 4) (5 5))) (quote ((3) (7 1) (7 1 1 2) (1 5) (8 1 3) (1 1 3 1 3) (6 5 1) (1 4 4) (1 2 9) (1 2 1 5) (1 2 2 2 2) (1 2 1 5) (1 2 3 4) (9 4) (1 1 4 1) (10 1 3) (1 1 2) (7 5) (7 1 1 2) (3 1))) (quote (" xxx " "xxxxxxx x" "xxxxxxx x x xx" " x xxxxx" " xxxxxxxx x xxx" " x x xxx x xxx" " xxxxxx xxxxx x " " x xxxx xxxx " " x xx xxxxxxxxx " " x xx x xxxxx " " x xx xx xx xx " " x xx x xxxxx " " x xx xxx xxxx " " xxxxxxxxx xxxx " " x x xxxx x " " xxxxxxxxxx x xxx" " x x xx" "xxxxxxx xxxxx" "xxxxxxx x x xx" " xxx x"))) (make-problem "Hattori 50" (quote ((1 1) (1 1) (2 15 1) (3 2 2) (3 1 4 2) (2 5 1) (2 1 3 3 1) (1 7 2) (1 1 5 1) (2 1 6) (3 9) (5 5 3) (6 4 3) (4 2 5) (1 2 1 6) (2 1 3 6) (1 2 4 6) (1 3 3 6) (2 1 3 3 1) (4 2 2))) (quote ((8 3) (5 2 2) (2 1 1 1 3 1) (1 1 4 3) (1 6 3) (1 1 1 3 1) (1 1 1 4) (1 2 4) (1 5 2) (1 6 4) (1 1 6 5) (1 2 8 4) (5 6) (6 4 5) (1 5 1 6) (1 9) (1 8) (1 7) (2 5 1) (7 2))) (quote ("xxxxxxxx xxx" " xxxxx xx xx" " xx x x x xxx x" " x x xxxx xxx" " x xxxxxx xxx " " x x x xxx x " " x x x xxxx " " x xx xxxx " " x xxxxx xx " " x xxxxxx xxxx " " x x xxxxxx xxxxx" " x xx xxxxxxxx xxxx" " xxxxx xxxxxx " " xxxxxx xxxx xxxxx " " x xxxxx x xxxxxx " " x xxxxxxxxx " " x xxxxxxxx " " x xxxxxxx " " xx xxxxx x" "xxxxxxx xx"))) (make-problem "Hattori 51" (quote ((1 1 3 3) (4 2 4) (6 6) (3 1 7) (1 2 1 8) (3 2 1 8) (2 1 8) (4 1 9) (2 1 13) (2 1 2 6) (1 3 1 2) (1 3 2 1) (4 2 1) (2 3) (3 2) (7) (1 1) (2 1 2) (4 1) (5))) (quote ((1 1 3) (1 5) (8) (2 7) (3 2 3) (2 2 1 1 1) (1 1 2 2 2) (9 1 1 1) (2 1 2 4) (1 1 1 2) (3 1 1) (3 5) (5 2 1 1) (7 2 1) (10 2) (10 3) (12) (9) (9) (10))) (quote (" x x xxx " " x xxxxx " "xxxxxxxx " " xx xxxxxxx " "xxx xx xxx " " xx xx x x x " "x x xx xx xx " "xxxxxxxxx x x x " "xx x xx xxxx " " x x x xx" " xxx x x" " xxx xxxxx" " xxxxx xx x x" " xxxxxxx xx x" "xxxxxxxxxx xx " "xxxxxxxxxx xxx " "xxxxxxxxxxxx " " xxxxxxxxx " " xxxxxxxxx " " xxxxxxxxxx "))) (make-problem "Hattori 52" (quote ((5 6) (2 4 2) (2 6 2) (2 2 2 2) (2 2 2 1 1) (1 2 2 2 1 1) (1 2 2 1 2 1) (1 2 3 5 4) (1 3 2 1 1 1) (1 8 4 1) (1 3 1 3 1) (1 2 1 1 1 1) (1 1 2 2 2 1) (1 13 1) (7 2 1 1) (3 2 1) (2 2 3 2) (2 1 1 2 3) (4 1 1) (2 1 1))) (quote ((12) (2 3) (2 7) (2 3 2 2 2) (2 5 2 2) (1 7 1 2) (1 3 1 3 3) (1 5 1) (2 7) (5 1 2) (10 2) (3 1 2 3 1) (1 1 2 1 1 1 2) (1 1 2 1 1 1 1) (1 2 2 1 2 2) (2 4 1 1 1 1) (2 1 1 1) (2 3 3) (5 2) (13))) (quote (" xxxxxxxxxxxx " " xx xxx " " xx xxxxxxx " " xx xxx xx xx xx " "xx xxxxx xx xx" "x xxxxxxx x xx" "x xxx x xxx xxx " "x xxxxx x " "xx xxxxxxx " " xxxxx x xx " "xxxxxxxxxx xx " "xxx x xx xxx x " "x x xx x x x xx " "x x xx x x x x " "x xx xx x xx xx " "xx xxxx x x x x " " xx x x x " " xx xxx xxx" " xxxxx xx " " xxxxxxxxxxxxx"))) (make-problem "Hattori 53" (quote ((1 1 1) (3 1 1 1) (1 3 3 3) (4 4 1) (11) (4 4 3) (1 1 2 1 2 1 1 1 1) (4 3 3 3) (2 4 4 4 1) (1 1 2 1 2 1 2 2) (4 3 3 3) (18) (2 2) (1 1 1 1 1 1 1 1) (15) (3 3) (3 4 3 3) (2 2 2 3) (2 1 3 1 3 1 2) (1 2 1 1 1 2 1))) (quote ((1 5 4) (3 2 3 4) (1 2 8) (1 2 2 2 2) (3 2 1 2 2 1) (4 2 1 1 1 2) (4 2 2 2 1 1) (4 2 3 1 1 2) (1 4 2 2 2) (3 2 1 1 2) (1 5 2 1 2) (5 2 2 1 2) (3 2 3 2 1 1) (3 2 2 1 1 2) (3 2 1 2 2 1) (1 2 1 2 2) (1 3 7) (3 1 4 3) (1 6 3) (3))) (quote (" x xxxxx xxxx" "xxx xx xxx xxxx " " x xx xxxxxxxx " " x xx xx xx xx " " xxx xx x xx xx x" " xxxx xx x x x xx" " xxxx xx xx xx x x " " xxxx xx xxx x x xx" "x xxxx xx xx xx " " xxx xx x x xx" "x xxxxx xx x xx " " xxxxx xx xx x xx" " xxx xx xxx xx x x " " xxx xx xx x x xx" " xxx xx x xx xx x" " x xx x xx xx " " x xxx xxxxxxx " " xxx x xxxx xxx " " x xxxxxx xxx " " xxx"))) (make-problem "Hattori 54" (quote ((3 3) (7 1 1 1 1) (2 2 3 3) (2 2 1 1) (2 3 2 2 1) (1 2 2 1 1 1) (1 2 2 2 1 1) (1 1 1 2 1 4) (1 1 3 1 7) (1 1 1 2 2 6) (1 1 2 1 1 8) (1 2 1 3 5) (2 2 2 2 6) (1 3 1 7) (2 1 7) (3 10) (14) (12 1) (12 2) (12 4))) (quote ((9 1) (2 3 1) (2 6 2 2) (2 2 2 1 2) (1 2 3 2 2 2) (1 1 2 1 1 4) (1 2 2 2 4) (1 2 4 4) (1 2 4) (2 3 5) (2 11) (2 2 5) (3 2 5) (3 3 1 6) (1 3 3 6) (3 14) (11 1) (3 10 1) (1 14 2) (3 6 3))) (quote (" xxxxxxxxx x" " xx xxx x" " xx xxxxxx xx xx" " xx xx xx x xx" " x xx xxx xx xx xx" " x x xx x x xxxx" " x xx xx xx xxxx" " x xx xxxx xxxx" " x xx xxxx" " xx xxx xxxxx" " xx xxxxxxxxxxx" " xx xx xxxxx" " xxx xx xxxxx " "xxx xxx x xxxxxx " "x xxx xxx xxxxxx " "xxx xxxxxxxxxxxxxx " " xxxxxxxxxxx x" "xxx xxxxxxxxxx x" "x xxxxxxxxxxxxxx xx" "xxx xxxxxx xxx"))) (make-problem "Hattori 55" (quote ((2 4 2) (4 7 4) (1 14 1) (1 11 1) (2 11 2) (1 2 4 1 1) (1 3 4 2 2) (2 11 1) (1 9 1) (1 13 1) (1 1 7 3) (5 6 1) (1 2 5 2) (3 2 3 2 1) (1 1 3 1) (2 1 5 1) (2 1 5 1 1) (1 1 1 1) (1 1 1 1 1 1 1 1) (7 7))) (quote ((4 5 2) (2 4 1 4) (2 1 1) (2 9) (1 3 1) (6 1 2) (8 1 1 1) (4 5 2 2 2) (5 6 2 1) (12 5) (17) (16) (14 4) (4 6 1) (3 4 2 2) (6 1 1 1) (2 1 2) (1 3 1) (2 3 1 8) (5 5))) (quote (" xxxx xxxxx xx " "xx xxxx x xxxx " "xx x x " " xx xxxxxxxxx" " x xxx x" " xxxxxx x xx" " xxxxxxxx x x x" " xxxx xxxxx xx xx xx" "xxxxx xxxxxx xx x" "xxxxxxxxxxxx xxxxx" "xxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxx xxxx" " xxxx xxxxxx x" " xxx xxxx xx xx" " xxxxxx x x x" " xx x xx" " x xxx x" "xx xxx x xxxxxxxx" "xxxxx xxxxx "))) (make-problem "Hattori\n56" (quote ((2 3) (2 4) (2 5) (8) (11) (2 7) (4 1 2 4) (11 1) (2 9 1) (1 8 1) (1 6 2) (1 6 1) (1 8 1) (8 1 2 3) (7 2 1 2) (5 1 3) (1 2) (2 2 1) (4 1) (2))) (quote ((6) (2 2) (2 4 1) (10 2) (10 1) (10 1) (9 2) (10 1) (2 6) (1 3 3) (1 4 6) (8 1) (6) (1 4 4) (9 4) (7 2) (7 2) (6 2) (4 1) (1))) (quote (" xxxxxx " " xx xx " " xx xxxx x " " xxxxxxxxxx xx " " xxxxxxxxxx x " " xxxxxxxxxx x " " xxxxxxxxx xx " " xxxxxxxxxx x " " xx xxxxxx " " x xxx xxx " " x xxxx xxxxxx" " xxxxxxxx x" "xxxxxx " "x xxxx xxxx " " xxxxxxxxx xxxx " "xxxxxxx xx " "xxxxxxx xx " "xxxxxx xx " " xxxx x " " x "))) (make-problem "Hattori 57" (quote ((2 6) (3 1 1 4) (3 2 3 3) (6 7) (6 2) (5 2 2 3) (3 1 2 1 3) (3 1 1 2 2) (11 2 1) (4 3 5) (1 2 9 3) (2 6 5 1) (5 3 3 1) (1 5 3 1) (1 2 2 5) (9 3 1) (2 2 3 1) (2 14 1) (2 2 2) (2 2 3))) (quote ((2 3 2) (4 1 2 4) (6 1 2 2 2) (7 2 1 2 1) (5 2 1 2 1 2) (2 3 1 1 1 1 3) (1 3 1 1 1 1 1 1) (2 1 6 1) (2 10) (1 6 3) (1 4 1) (1 1 1 1) (2 1 4 1) (1 2 2 4 1) (1 2 7 2) (1 1 2 9 1) (2 1 1 2 7 1) (4 2 1 2 2 3) (6 1 1 2 1) (5 2 3 4))) (quote (" xx xxx xx " " xxxx x xx xxxx " " xxxxxx x xx xx xx" " xxxxxxx xx x xx x" " xxxxx xx x xx x xx " "xx xxx x x x x xxx" "x xxx x x x x x x" " xx x xxxxxx x " " xx xxxxxxxxxx " " x xxxxxx xxx " " x xxxx x " " x x x x " " xx x xxxx x " "x xx xx xxxx x " "x xx xxxxxxx xx " "x x xx xxxxxxxxx x" "xx x x xx xxxxxxx x" "xxxx xx x xx xx xxx" "xxxxxx x x xx x " " xxxxx xx xxx xxxx "))) (make-problem "Hattori\n58" (quote ((1 2 2) (1 2 1) (5 3) (4 2) (3 1) (3 1) (7 2 1) (1 8 6) (3 9) (3 6 2 3) (9 8) (5 6 1) (2 8 1) (10) (12) (1 8) (1 9) (1 2 4) (1 2) (2 4))) (quote ((3 2) (2 1) (1 2 3) (5 2) (5 2) (4 2 1) (7 6) (1 7 1) (3 9) (2 6 2 3) (9 8) (4 6 1) (2 7 1) (10 1) (11) (2 8) (2 9) (1 2 5) (1 2) (2 3))) (quote ("xxx xx " " xx x " "x xx xxx " "xxxxx xx " " xxxxx xx " " xxxx xx x" " xxxxxxx xxxxxx" "x xxxxxxx x " "xxx xxxxxxxxx " " xx xxxxxx xx xxx " " xxxxxxxxx xxxxxxxx" " xxxx xxxxxx x" " xx xxxxxxx x" " xxxxxxxxxx x" " xxxxxxxxxxx " " xx xxxxxxxx " " xx xxxxxxxxx " " x xx xxxxx " " x xx " " xx xxx "))) (make-problem "Hattori 59" (quote ((6) (2 2) (2 2 6) (1 2 2 1 2 2) (1 1 1 1 1 1) (1 2 8) (2 2 2 1 1) (8 1 2) (3 3 2 1) (3 2 1 2) (2 2 1 1) (1 14) (2 3 4) (1 2 4) (1 2 2 4) (4 3 4) (3 4 4) (3 4 4) (9 3) (3 4 2))) (quote ((5 2) (2 2 2) (2 1 3) (1 2 4) (1 3 9) (1 2 1 2 5) (1 1 1 1 5) (2 3 1 2 1) (2 7 1 1) (4 4 4) (2 5) (12) (6 9) (2 1 1) (1 1 9) (1 1 9) (1 1 8) (1 1 9) (2 1 3) (5))) (quote (" xxxxx xx " " xx xx xx " "xx x xxx " "x xx xxxx " "x xxx xxxxxxxxx" "x xx x xx xxxxx" "x x x x xxxxx" "xx xxx x xx x " " xx xxxxxxx x x " " xxxx xxxx xxxx" " xx xxxxx" " xxxxxxxxxxxx" " xxxxxx xxxxxxxxx" " xx x x " " x x xxxxxxxxx" " x x xxxxxxxxx" " x x xxxxxxxx " " x x xxxxxxxxx " " xx x xxx " " xxxxx "))) (make-problem "Hattori\n60" (quote ((3) (2 2 6) (1 1 3 8) (2 2 2 9) (2 2 1 1 10) (1 1 2 2 1 4) (2 2 2 5 3) (3 1 3 1 1 1 1 1) (2 2 4 1 3 1) (1 1 5 1 1) (5 1 1 1) (1 1 3 2) (2 1 4 1) (2 1 3) (2 1 1) (2 3 5) (2 1 1 3) (5 1 8) (1 10) (2 9))) (quote ((3 3) (4 3 3) (2 1 1 1 2 2) (1 1 1 3 1 2) (2 4 3 2 3) (3 1 1 1 3 1) (1 1 1 2 2) (2 5 1) (3 11) (2 1) (1 4) (9 2) (3 1 1 3) (3 3 5 3) (4 1 1 2 1 3) (4 3 2 1 3) (5 1 1 3) (7 5) (6 1 4) (12 4))) (quote (" xxx xxx " " xxxx xxx xxx " "xx x x x xx xx " "x x x xxx x xx " "xx xxxx xxx xx xxx" " xxx x x x xxx x" " x x x xx xx " " xx xxxxx x " " xxx xxxxxxxxxxx " " xx x " " x xxxx " " xxxxxxxxx xx" " xxx x x xxx" " xxx xxx xxxxx xxx" " xxxx x x xx x xxx" " xxxx xxx xx x xxx" " xxxxx x x xxx" " xxxxxxx xxxxx" " xxxxxx x xxxx" " xxxxxxxxxxxx xxxx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/h61-90 b/pkgs/games/paint-by-numbers/problems/h61-90 deleted file mode 100644 index 474752a32b..0000000000 --- a/pkgs/games/paint-by-numbers/problems/h61-90 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Hattori 61 - 90") (define problems (list (make-problem "Hattori 61" (quote ((6) (2 3) (5 1 3) (6 4) (10) (11) (1 8) (1 7) (1 5 1) (1 5 3) (2 5 4) (3 4 5) (4 4 6) (5 4 5) (5 3 5) (3 2 2 5) (1 2 5) (2 5) (2 7) (11 2))) (quote ((1) (2) (2) (2 5) (4 5) (6 6 1) (1 11 1) (1 1 2 3 1) (1 2 2 1) (7 3 2 1) (7 5 3) (14 2) (13 1) (7 3 2) (5 2 2) (4 10) (2 10) (12) (11) (8))) (quote (" x " " xx " " xx " " xx xxxxx " " xxxx xxxxx " "xxxxxx xxxxxx x" "x xxxxxxxxxxx x" "x x xx xxx x" "x xx xx x" "xxxxxxx xxx xx x" "xxxxxxx xxxxx xxx" " xxxxxxxxxxxxxx xx" " xxxxxxxxxxxxx x" " xxxxxxx xxx xx" " xxxxx xx xx" " xxxx xxxxxxxxxx" " xx xxxxxxxxxx " " xxxxxxxxxxxx " " xxxxxxxxxxx" " xxxxxxxx"))) (make-problem "Hattori 62" (quote ((3 5 2) (1 3 1 1 3) (2 3 1 1 3) (1 2 1 3) (1 1 2 4) (2 3 1 4) (2 1 5) (5 1 5) (3 1 2 2 5) (9 2 5) (8 1 5) (5 2 2 5) (4 1 2 5) (2 1 1 1 1 5) (1 8 1 7) (5 1 2 6) (1 1 1 6) (1 1 6) (1 4 2 4) (4 1))) (quote ((6) (6 1) (2 5 2) (12 1) (4 1 3 2 2) (1 1 4 4 1) (2 1 1 3 1 2) (1 2 5 3 1) (2 1 2 1 2) (1 2 1) (3 1) (1 1 3 3) (1 2 2 2 2 1) (1 5 3 3) (5 4) (13) (15) (18) (19) (17))) (quote (" xxxxxx " " xxxxxx x " " xx xxxxx xx " " xxxxxxxxxxxx x" "xxxx x xxx xx xx" "x x xxxx xxxx x" "xx x x xxx x xx" " x xx xxxxx xxx x " " xx x xx x xx " " x xx x " "xxx x " "x x xxx xxx " "x xx xx xx xx x " "x xxxxx xxx xxx" "xxxxx xxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxx "))) (make-problem "Hattori 63" (quote ((5) (7) (1 1) (2 2) (1 1) (1 1 1) (7) (9) (2 4 2) (16) (3 4 3) (5) (3 2) (2 2) (2 2) (3 2) (1 3 1) (20) (1 1) (1 1))) (quote ((1 4) (1 1) (2 1) (1 1) (1 1) (2 1) (3 1 1) (1 2 1 4 1) (8 1 5 1) (2 1 7 1) (2 7 2) (2 1 12) (18) (1 2 1 1) (3 1) (2 1) (1 1) (2 1) (1 1) (1 4))) (quote (" x xxxx" " x x " " xx x " " x x " " x x " " xx x " " xxx x x " " x xx x xxxx x " "xxxxxxxx x xxxxx x " "xx x xxxxxxx x " "xx xxxxxxx xx " "xx x xxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxx " " x xx x x " " xxx x " " xx x " " x x " " xx x " " x x " " x xxxx"))) (make-problem "Hattori\n64" (quote ((4) (19) (1 5) (3) (9) (2 1 4 2) (2 1 3 1 2) (1 1 3 9 1) (1 5 7 2 1) (1 1 2 3 2) (3 3 3) (2 1 4) (7) (1 1 1) (11 1) (1 1 1) (1 1 1) (12 5 1) (2 3 3 3 1) (3 4 2 2))) (quote ((1 5 2 3) (2 2 2 1 3) (2 2 8 1 1) (2 1 1 1 1 1) (2 1 2 3 1 2) (1 7 1 1 3) (1 1 6 1 3) (1 2 2 1 1 1) (1 12 1 1) (11 1 2) (1 8 1 2) (1 2 3) (1 2 1) (2 2 3) (2 2 2) (2 1 4) (2 3 2) (2 1 2 4) (1 2 1 1) (3 3))) (quote (" x xxxxx xx xxx" "xx xx xx x xxx" "xx xx xxxxxxxx x x" "xx x x x x x " "xx x xx xxx x xx " " x xxxxxxx x x xxx" " x x xxxxxx x xxx" " x xx xx x x x" " x xxxxxxxxxxxx x x" " xxxxxxxxxxx x xx " " x xxxxxxxx x xx " " x xx xxx" " x xx x" " xx xx xxx " " xx xx xx " " xx x xxxx " " xx xxx xx " " xx x xx xxxx " " x xx x x" " xxx xxx"))) (make-problem "Hattori 65" (quote ((4 3) (3 1 4) (3 6) (12) (8) (8) (1 1 7 3) (2 1 5 1) (6 1 5) (1 2 2 1 2 1) (1 1 2 1 2 3) (2 1 2) (5) (3) (6) (1 1 2 1 2 3) (1 1 1 2 1 2 1) (1 1 3 1 5) (5 3 1) (1 1 5 3))) (quote ((5 4) (2 2) (2 3) (5 2) (1 1 4) (1 2 1) (4 2 2) (1 5 2 2) (8 2 2 1) (1 5 3 2) (17) (5 3 2) (6 2 1 1) (7 2 2) (6 2 2) (4 2 2) (3 1 1) (2 5 3 1) (1 1 1 1 1 1) (1 1 1 1 3))) (quote (" xxxxx xxxx " " xx xx" " xx xxx " " xxxxx xx" " x x xxxx " " x xx x " "xxxx xx xx " "x xxxxx xx xx " "xxxxxxxx xx xx x" "x xxxxx xxx xx" " xxxxxxxxxxxxxxxxx" " xxxxx xxx xx" " xxxxxx xx x x" "xxxxxxx xx xx " "xxxxxx xx xx " "xxxx xx xx " " xxx x x " " xx xxxxx xxx x" " x x x x x x" " x x x x xxx"))) (make-problem "Hattori 66" (quote ((4 6) (2 3) (3 1 4 2) (2 4 1) (2 1 3 3) (2 1 3) (2 1 3 3 7) (1 5 9) (2 1 3 3 7) (1 2 1 3) (2 1 2 2) (1 3 2) (3 1 3 1 1) (3 2 3) (4 6 3) (3) (9) (2 6) (3 1 2) (11))) (quote ((1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (1 1 1 1) (1 5 1) (3 2) (2 4 2) (1 4 1) (2 3 2) (1 2 1 1) (1 3 3 3 1 2) (1 5 5 1 3) (1 3 3 2 1 4) (2 1 2 1 1) (1 3 1 1 1) (2 3 1 4) (3 3 2 5 1) (14 1) (6 5 1) (5 4) (3 4))) (quote ("x x x x x x x x " "x x x x x x x x " "x x x x " "x xxxxx x " " xxx xx " " xx xxxx xx " " x xxxx x " "xx xxx xx " "x xx x x " "x xxx xxx xxx x xx" "x xxxxx xxxxx x xxx" "x xxx xxx xx x xxxx" "xx x xx x x" " x xxx x x x" " xx xxx x xxxx" " xxx xxx xx xxxxx x" " xxxxxxxxxxxxxx x" " xxxxxx xxxxx x" " xxxxx xxxx" " xxx xxxx"))) (make-problem "Hattori 67" (quote ((3 4 2) (3 6 2) (2 8 1) (1 2) (8) (2 5 1 3) (2 5 1 2 2) (4 1 1 2) (3 4 1 2 1) (1 1 7 1 3) (3 5 1 1 1) (11 2 2) (1 1 4 1 1) (3 7 3) (4 3 1) (4 1 1) (1 4 3 2) (1 1 6 1 1 2) (1 2 12) (2 2 1 2 2))) (quote ((6 3) (1 2 1 1) (2 6 3) (4 2 1 2) (3 8 1) (2 12) (14) (15) (1 4 3 1 3) (2 3 1 1 1 2) (3 2 5 3) (5 2) (9 1 1) (3 1 3 5) (2 1 3 1 1 1) (1 3 1 1 4) (1 1 2) (2 2 1 1 2) (2 2 1 1 1 2) (10))) (quote (" xxxxxx xxx" " x xx x x" " xx xxxxxx xxx " "xxxx xx x xx" "xxx xxxxxxxx x" "xx xxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxxxx" " x xxxx xxx x xxx " " xx xxx x x x xx " "xxx xx xxxxx xxx" "xxxxx xx" "xxxxxxxxx x x " "xxx x xxx xxxxx " " xx x xxx x x x " " x xxx x x xxxx" "x x xx" "xx xx x x xx " " xx xx x x x xx " " xxxxxxxxxx "))) (make-problem "Hattori 68" (quote ((8) (3 2 2) (2 1 1 2) (2 2 1 1) (1 1 2 2) (1 6 3) (2 2 1 3 2) (5 3 4) (1 4 7) (1 9) (1 9) (1 6 3) (1 6 2) (1 2 2) (2 2 1) (2 2 1) (3 2 1) (6 1) (4 6) (6 5))) (quote ((4) (2 2) (2 2) (1 3) (2 3) (1 1 1 2) (2 1 1) (4 1 7 1) (1 6 2 2) (1 1 2 2) (1 2 1 4 1 2) (2 1 1 7 4) (2 1 8 1 1) (5 5 3) (2 6 3) (8 3) (5 3) (5 2) (5 2) (9))) (quote (" xxxx " " xx xx " " xx xx " " x xxx " "xx xxx " "x x x xx " "xx x x " "xxxx x xxxxxxx x" "x xxxxxx xx xx" "x x xx xx" "x xx x xxxx x xx" "xx x x xxxxxxx xxxx" " xx x xxxxxxxx x x" " xxxxx xxxxx xxx " " xx xxxxxx xxx " " xxxxxxxx xxx" " xxxxx xxx" " xxxxx xx" " xxxxx xx" " xxxxxxxxx"))) (make-problem "Hattori 69" (quote ((7) (2 2) (1 1) (10) (6 1 1 6) (4 1 2 2 1 3) (2 2 3 2) (1 6 2 2 2 1) (3 1 1 2) (1 1) (1 3 2) (4 1 1 1 1 4) (1 1 2 2 1) (2 3 7 1) (2 1 1 1) (3 1 3 2) (3 3 1 3) (1 3 1 3) (2 4 4 1) (17 2))) (quote ((12 3) (3 1 1 4 2) (2 2 1 3 1) (2 1 2 1 4) (1 1 1 3 3) (5 1 1 2) (3 2 2 2) (2 1 2 2 1 1) (1 1 1 1 1 3 1) (1 3 1 1 1 1) (1 1 1 1 1) (1 3 1 1) (1 1 1 2 1 1 1) (2 1 2 2 1 1) (6 3 3 2) (1 1 1 1 2) (1 1 1 3) (2 1 1 3) (3 1 1 3 1) (6 6 2))) (quote (" xxxxxxxxxxxx xxx" " xxx x x xxxx xx" " xx xx x xxx x" " xx x xx x xxxx" " x x x xxx xxx" " xxxxx x x xx" " xxx xx xx xx" "xx x xx xx x x" "x x x x x xxx x" "x xxx x x x x" "x x x x x" "x xxx x x" "x x x xx x x x" "xx x xx xx x x" " xxxxxx xxx xxx xx" " x x x x xx" " x x x xxx" " xx x x xxx " " xxx x x xxx x" " xxxxxx xxxxxx xx"))) (make-problem "Hattori 70" (quote ((10) (3 3) (3 2) (2 5 1) (1 8 1) (2 2 5 1) (1 1 1 1 3 2) (1 1 2 1) (3 2 1 1 3 2) (1 2 5 1 3) (8 3 3) (13) (4 6) (8) (11) (1 1 1 1) (1 1 1 1) (1 3 2) (8) (1 1))) (quote ((3) (4 1) (3 4) (2 3 1) (1 5) (2 4 9) (1 2 7 1) (2 2 1 10) (1 2 2 1 2 3) (1 2 1 10) (1 2 6 1) (1 3 2 9) (1 4 2 1 3) (1 3 5 1) (1 2 1 3) (1 1 3) (2 1) (1 2) (2 3) (5))) (quote (" xxx " " xxxx x " " xxx xxxx " " xx xxx x " " x xxxxx " " xx xxxx xxxxxxxxx " " x xx xxxxxxx x " "xx xx x xxxxxxxxxx " "x xx xx x xx xxx" "x xx x xxxxxxxxxx " "x xx xxxxxx x " "x xxx xx xxxxxxxxx " "x xxxx xx x xxx" "x xxx xxxxx x " "x xx x xxx " "x x xxx " "xx x " " x xx " " xx xxx " " xxxxx "))) (make-problem "Hattori 71" (quote ((1 1 4) (2 3 7) (3 1 9) (2 3 5) (1 5 2) (7 1) (1 1 1 2) (1 3 1 2) (1 3 1 3) (1 1 2 1) (8 4) (2 2 1 2) (2 2 3) (2 3 2 3) (2 1 1 1 2 2) (1 2 2 2 2 3 1) (1 2 1 1 2 1 1 1) (1 2 1 1 2 1 1 1) (1 1 1 1 1 1) (1 5 1 1 1))) (quote ((5 6) (3 2) (1 2 3) (2 3) (7) (2 1 6) (1 3 2 1 1 1 1) (9 1 2 1) (1 3 2 1 1 1 1) (2 1 6) (1 6) (2 2 3) (3 2 3) (4 2) (5 7) (5 2) (4 4 5) (2 4 2) (1 3 5) (2 4 7))) (quote ("xxxxx xxxxxx" " xxx xx " " x xx xxx " " xx xxx " " xxxxxxx " " xx x xxxxxx" " x xxx xx x x x x" "xxxxxxxxx x xx x" " x xxx xx x x x x" " xx x xxxxxx" " x xxxxxx " " xx xx xxx " " xxx xx xxx " "xxxx xx " "xxxxx xxxxxxx" "xxxxx xx " "xxxx xxxx xxxxx" " xx xxxx xx " " x xxx xxxxx " " xx xxxx xxxxxxx"))) (make-problem "Hattori\n72" (quote ((2 5 5) (3 1 1 1) (4 3 3 2) (5 1 3 1 3) (5 7 4) (5 3 4) (4 1 1 3) (1 1 1 1) (1 10) (5 2) (7) (8) (7 2) (8 2 2 1) (6 3 2 1) (4 1 2 3) (3 1 1) (1 1) (1 1 1 1) (4 4))) (quote ((4 3 3) (5 1 4) (5 1 4 2) (5 1 3 1) (4 2 3 1) (3 1 8) (1 4 1 2) (1 1 4) (1 3 1 4) (1 1 1 5) (7 6) (3 2 1 2) (7 1 1 1) (1 1 1 1 1 2) (1 3 1 2 5) (1 4 2 1) (1 3 2 1) (4 2 2) (4 1) (4 3))) (quote ("xxxx xxx xxx " "xxxxx x xxxx " " xxxxx x xxxx xx" " xxxxx x xxx x" " xxxx xx xxx x" " xxx x xxxxxxxx" "x xxxx x xx " "x x xxxx " "x xxx x xxxx " "x x x xxxxx " "xxxxxxx xxxxxx " " xxx xx x xx " "xxxxxxx x x x " "x x x x x xx " "x xxx x xx xxxxx" "x xxxx xx x" "x xxx xx x" " xxxx xx xx" " xxxx x " " xxxx xxx "))) (make-problem "Hattori 73" (quote ((2) (3 4) (5 4) (9) (6) (4 3) (3 2 3) (5 3) (10 5) (12) (1 1 1 1 1) (1 1 1 1 2 1) (1 1 1 2 3 2) (5 2 3 2) (12 3) (1 2 1 1 3) (1 4 1 4) (12 5) (10 6) (7))) (quote ((1) (1 9) (2 2 2 2) (1 2 4 2) (8 2 2) (18) (4 3 5) (4 3 3 3) (3 12) (2 2 1 2) (1 2 3 2) (1 2 4 2) (2 9) (1 1 1) (1 1 2) (2 3 3) (1 1 1 4) (1 2 1 6) (2 1 1 8) (1 1 1 10))) (quote (" x " " x xxxxxxxxx " " xx xx xx xx " " x xx xxxx xx " " xxxxxxxx xx xx " " xxxxxxxxxxxxxxxxxx " " xxxx xxx xxxxx " " xxxx xxx xxx xxx " " xxx xxxxxxxxxxxx " " xx xx x xx " " x xx xxx xx " " x xx xxxx xx " " xx xxxxxxxxx " " x x x" " x x xx" " xx xxx xxx" " x x x xxxx" " x xx x xxxxxx" "xx x x xxxxxxxx" "x x x xxxxxxxxxx"))) (make-problem "Hattori 74" (quote ((6 5) (5 5) (1 1 1 1) (5 4) (5 5) (12) (10) (11) (13) (4 3) (3 2 2 2) (2 1 1 1 1 1) (2 1 1) (2 4 4) (2 2 3 1) (2 4 1) (15) (1 3) (1 1) (20))) (quote ((1 2 1) (2 4 1) (6 3 2 2) (2 7 2 1 1) (2 7 3 1) (9 1 3 1) (6 1 2 1) (4 2 1 4) (4 2 1 1) (5 2 1 1) (8 1 1 1 1) (2 6 1 2 1) (2 6 2 2 1) (6 3 3 1) (2 9 1) (1 2 2 1 1) (2 1 1) (1 1 1) (3 1) (1))) (quote ("x xx x" "xx xxxx x" "xxxxxx xxx xx xx" "xx xxxxxxx xx x x" "xx xxxxxxx xxx x" "xxxxxxxxx x xxx x" " xxxxxx x xx x" " xxxx xx x xxxx" " xxxx xx x x" " xxxxx xx x x" " xxxxxxxx x x x x" "xx xxxxxx x xx x" "xx xxxxxx xx xx x" "xxxxxx xxx xxx x" "xx xxxxxxxxx x" "x xx xx x x" " xx x x" " x x x" " xxx x" " x"))) (make-problem "Hattori 75" (quote ((7 1 1) (9 3 2) (1 4 5 3) (2 1 3 10) (2 1 2) (1 9) (1 2 3 4) (1 3 1 2) (6 1 2) (5 4 1) (2 7 2 1) (7 1 3) (3 2 2 2) (1 2 1 1 1) (11 2) (1 4 1 1 2) (6 1 2) (1 1 1 3) (1 2 7) (1 12))) (quote ((7 3) (2 2 1 2 4) (2 1 1 3) (2 2 1 1 7 1) (2 9 2) (3 3 2 6) (4 3 1 1 1) (5 2 1 1 2 1) (6 3 1 1) (2 3 1 2) (1 1 1 8) (2 1 1 2) (3 1 1 2) (4 1 2 2) (3 2 4 3) (2 5 2 2) (1 2 2 2) (2 2 2 2) (3 2 2 2) (4 7))) (quote (" xxxxxxx xxx " "xx xx x xx xxxx" "xx x x xxx " "xx xx x x xxxxxxx x" "xx xxxxxxxxx xx" "xxx xxx xx xxxxxx" "xxxx xxx x x x" "xxxxx xx x x xx x" " xxxxxx xxx x x" " xx xxx x xx" " x x x xxxxxxxx" " xx x x xx" " xxx x x xx" "xxxx x xx xx" " xxx xx xxxx xxx" " xx xxxxx xx xx " " x xx xx xx " " xx xx xx xx " " xxx xx xx xx " "xxxx xxxxxxx "))) (make-problem "Hattori 76" (quote ((1 1 3) (3 3 1 1) (1 7 1 4) (3 3 1) (1 8) (2 1 1 2 2) (1 2 2 1 2) (1 1 1) (1 7 1 1) (1 2 2 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 2 2 1 1) (1 7 1 1) (2 1 1) (11 1) (1 1 1 2) (2 4 6 1) (1 1 1 1 1 1 1) (3 3 5))) (quote ((10) (6 2) (1 1 4 1) (3 1 2 2 3) (1 2 1 1 1 3) (1 1 2 1 1 1) (1 1 1 1 3) (1 1 2 1 1 1) (1 2 1 1 1 1) (3 1 2 2 1 3) (2 1 4 1 1) (5 1 3) (11 2) (1 1) (1 3) (1 1 1) (3 1 4) (1 1 2 1) (7 4) (1 11))) (quote (" xxxxxxxxxx " "xxxxxx xx " " x x xxxx x " " xxx x xx xx xxx " " x xx x x x xxx" " x x xx x x x" " x x x x xxx" " x x xx x x x " " x xx x x x x " " xxx x xx xx x xxx" "xx x xxxx x x" " xxxxx x xxx" " xxxxxxxxxxx xx " " x x " " x xxx" " x x x" "xxx x xxxx" "x x xx x" "xxxxxxx xxxx" " x xxxxxxxxxxx "))) (make-problem "Hattori\n77" (quote ((14) (4 5) (1 1 3) (3 2) (4 1) (5 3) (4 1 4) (1 2 4) (2 1 2) (5 1 4) (1 5 1) (1 6 3) (4 2 1) (10 2 1 1) (1 10 2) (2 2 2 1 1) (3 1 2 2 1) (4 2 2 2) (11 4) (12 2))) (quote ((1) (1 1 2) (2 1 2) (2 1 1 2) (4 1 2 2) (1 2 7) (1 1 4 3) (2 3 11) (2 5 6 3) (3 3 4 2) (2 3 1 3 3) (1 6 2 6) (1 1 1 3 1) (1 2 2 1 1) (1 4 1 4) (2 2 2 3 1) (2 2 1 2 1) (3 1 2 2) (4 3 4) (5 1 2))) (quote (" x" " x x xx" " xx x xx" " xx x x xx" " xxxx x xx xx" " x xx xxxxxxx" "x x xxxx xxx" "xx xxx xxxxxxxxxxx" "xx xxxxx xxxxxx xxx" "xxx xxx xxxx xx" "xx xxx x xxx xxx" "x xxxxxx xx xxxxxx" "x x x xxx x " "x xx xx x x" "x xxxx x xxxx" "xx xx xx xxx x " "xx xx x xx x " "xxx x xx xx " "xxxx xxx xxxx " "xxxxx x xx "))) (make-problem "Hattori 78" (quote ((8) (2 2) (1 1) (1 1 2) (1 1 1 4) (1 1 3 3) (3 11 2) (3 1 2 2) (3 1 2 2) (1 12 3) (1 1 2 2 1 4) (1 1 1 1 1 1) (1 1 1 1) (3 2 2 2 3) (1 1 2 2 1 1 1) (4 8 3) (1 4 4 1) (2 1 1 1) (1 4) (4 1 1 1))) (quote ((3 5) (8 1 3) (3 3 1) (2 1) (13 1 1) (2 1 1 2 1) (1 1 2 3) (1 1 3 1 1 1) (1 1 1 3) (1 1 1 3) (1 1 3 1) (1 3 2 1 1 1) (2 1 1 3) (13 2) (5 1) (2 2 1 2) (2 1 4 1) (3 5 1 1) (7 6) (5))) (quote (" xxx xxxxx " " xxxxxxxx x xxx" " xxx xxx x" " xx x" " xxxxxxxxxxxxx x x" "xx x x xx x " "x x xx xxx " "x x xxx x x x" "x x x xxx " "x x x xxx " "x x xxx x " "x xxx xx x x x" "xx x x xxx " " xxxxxxxxxxxxx xx " " xxxxx x " " xx xx x xx" " xx x xxxx x " " xxx xxxxx x x " " xxxxxxx xxxxxx " " xxxxx "))) (make-problem "Hattori 79" (quote ((1 1 1 1 1 1) (1 1 1 1 2 2 2) (1 2 2 1 3 1 1) (3 1 2 2 4) (2 1 2 4) (2 3 2) (4 1 2) (3 2 2) (4 9) (1 4 6) (2 2 1) (2 3 2) (3 2 1 3) (2 3 4) (1 3) (2 1 1) (4 5) (6 5) (6 7 3) (4 3))) (quote ((4 3 2) (2 1 2 2) (4 1 2 3) (3 2 2 1 4) (2 2 2 4) (9 6) (3 5 2) (2 1 2) (2 1 1) (3 3 1 1) (4 3 2) (2 2 1 1 2) (3 4 3 2) (8 2) (2 2 4 1) (2 1 3 2) (2 2 3) (3 6) (2 1 2 1 1) (2 3))) (quote ("xxxx xxx xx" " xx x xx xx" " xxxx x xx xxx" "xxx xx xx x xxxx" " xx xx xx xxxx " " xxxxxxxxx xxxxxx " "xxx xxxxx xx " " xx x xx " " xx x x " " xxx xxx x x " " xxxx xxx xx" "xx xx x x xx" " xxx xxxx xxx xx" " xxxxxxxx xx " " xx xx xxxx x " "xx x xxx xx " " xx xx xxx " " xxx xxxxxx " "xx x xx x x " " xx xxx "))) (make-problem "Hattori 80" (quote ((7) (1 1 1) (15) (2 2 2 2) (2 3 2) (3 1 4) (3 1 4) (3 3 4) (2 1 2 2) (1 1) (1 1) (1 1) (1 1) (4 1 3) (1 2 1 1 3) (2 2 1 1 1 1) (2 3 1 1 3) (2 1 1 1 1) (2 5 1) (2 3))) (quote ((5) (6 3) (2 3 1 2) (1 1 2) (1 2 2) (1 2 2) (1 1 2 1) (4 1) (1 3 10) (3 4) (1 3 2) (4 11) (1 1 1 1) (1 6) (1 1 1) (1 6) (2 3 1 1) (6 4) (5) (3))) (quote (" xxxxx " " xxxxxx xxx " " xx xxx x xx " " x x xx " " x xx xx " " x xx xx" "x x xx x" "xxxx x " "x xxx xxxxxxxxxx " "xxx xxxx " "x xxx xx " "xxxx xxxxxxxxxxx " "x x x x " " x xxxxxx " " x x x " " x xxxxxx" " xx xxx x x" " xxxxxx xxxx" " xxxxx " " xxx "))) (make-problem "Hattori 81" (quote ((1 1 1) (2 1 2) (7) (7) (5) (1 1 1) (2 1 2) (4 1 3) (10) (6))) (quote ((4) (3) (3 3) (5 3) (3 2) (10) (3 2) (5 3) (3 3) (4))) (quote (" xxxx " " xxx " " xxx xxx" "xxxxx xxx" " xxx xx" "xxxxxxxxxx" " xxx xx" "xxxxx xxx" " xxx xxx " " xxxx "))) (make-problem "Hattori 82" (quote ((1) (2) (3) (2) (4) (4 1) (5 2) (6 2) (7 3) (8 4) (15) (1) (15) (13) (11))) (quote ((1 1) (2 2) (3 3) (4 3) (5 3) (6 3) (7 3) (8 3) (15) (2 1 1 3) (1 6 3) (5 3) (3 3) (2 2) (1 1))) (quote (" x x " " xx xx " " xxx xxx" " xxxx xxx" " xxxxx xxx" " xxxxxx xxx" " xxxxxxx xxx" " xxxxxxxx xxx" "xxxxxxxxxxxxxxx" " xx x x xxx" " x xxxxxx xxx" " xxxxx xxx" " xxx xxx" " xx xx " " x x "))) (make-problem "Hattori 83" (quote ((1 1 1 1 12) (1 1 13) (1 1 14) (1 15) (1 16) (1 1) (1 5 7) (2 2 8) (1 1 1 1 1 8) (1 1 1 1 1 2 5) (1 1 1 3) (1 1 1 1 1 2) (1 3 1 1 2 2) (1 2 2 3 1 2) (1 1 1 1 1 2 2) (2 1 1 1 1 1) (1 1 2 2 5 1) (1 1 1 2 1 1) (1 7 3 4) (10))) (quote ((3 2 3) (3 3) (1 4 4) (2 2 1 3 1) (2 1 1 2 2 1) (4 1 1) (1 3 1 2 2 1) (4 2 1 4 1) (5 4 3) (5 3) (5 1 4) (5 9) (5 3 2) (5 11 1) (5 3 1 1 1) (5 4 2 1 1) (5 4 1 1 2) (5 5 4) (5 9 2) (5 14))) (quote ("xxx xx xxx " " xxx xxx " "x xxxx xxxx " " xx xx x xxx x " "xx x x xx xx x " " xxxx x x " "x xxx x xx xx x " " xxxx xx x xxxx x " "xxxxx xxxx xxx " "xxxxx xxx " "xxxxx x xxxx" "xxxxx xxxxxxxxx" "xxxxx xxx xx" "xxxxx xxxxxxxxxxx x" "xxxxx xxx x x x" "xxxxx xxxx xx x x" "xxxxx xxxx x x xx" "xxxxx xxxxx xxxx" "xxxxx xxxxxxxxx xx" "xxxxx xxxxxxxxxxxxxx"))) (make-problem "Hattori 84" (quote ((2) (3) (2 2) (4 2) (2 3 2) (8 1 2) (10 4) (2 16) (4 3 3 2) (3 3 3 1) (3 3 2) (4 3) (10) (3 4) (1 3 3 1) (2 2 3 2) (3 3 5) (5 4) (16) (12))) (quote ((2 3) (4 3) (5 3) (2 2 2) (8 4) (2 6 6) (2 13 2) (2 10 2) (2 8 2) (4 2 2) (4 1 2) (4 1 2) (4 2 2) (1 4 2) (9 2) (13) (4 4) (3 3) (4 3) (4 3))) (quote (" xx xxx " " xxxx xxx " " xxxxx xxx " " xx xx xx " "xxxxxxxx xxxx" "xx xxxxxx xxxxxx" " xx xxxxxxxxxxxxx xx" " xx xxxxxxxxxx xx" " xx xxxxxxxx xx" " xxxx xx xx" " xxxx x xx" " xxxx x xx" " xxxx xx xx" " x xxxx xx" " xxxxxxxxx xx" " xxxxxxxxxxxxx" " xxxx xxxx " " xxx xxx " " xxxx xxx " " xxxx xxx "))) (make-problem "Hattori\n85" (quote ((1 1 1 1 1 1) (1 1 1 5 1 1) (1 1 9 1) (1 4 1 4) (6 6) (8 8) (10 9) (2 4 1 3 2) (1 1 1 1 1) (5 1) (8 1 6) (9 1 8) (5 1 1 8) (4 3 1 1 4) (3 1 1 1 3 3) (3 1 1 2 1 2) (4 3 1 1 2 1) (3 1 1 2 1) (1 2 1 2 2) (6 2 1 2))) (quote ((3 3 6) (3 8) (3 3 9 1) (3 5 4) (2 4 4 1) (5 3 1) (1 6 3 2 1 1) (7 2 1 1 2) (2 3 9) (2 1) (4 13) (2 1 1) (2 2 2 3) (6 6 3) (1 7 3 1 1 1) (5 3 3) (2 4 4) (3 5) (2 4 6 2) (4 9))) (quote (" xxx xxx xxxxxx " " xxx xxxxxxxx " "xxx xxx xxxxxxxxx x" " xxx xxxxx xxxx" "xx xxxx xxxx x" " xxxxx xxx x" "x xxxxxx xxx xx x x" " xxxxxxx xx x x xx" " xx xxx xxxxxxxxx " " xx x " "xxxx xxxxxxxxxxxxx" " xx x x" " xx xx xx xxx " " xxxxxx xxxxxx xxx" "x xxxxxxx xxx x x x " " xxxxx xxx xxx " "xx xxxx xxxx " " xxx xxxxx " " xx xxxx xxxxxx xx" " xxxx xxxxxxxxx"))) (make-problem "Hattori 86" (quote ((3 6 1) (3 6 3) (4 6 1) (4 9 2) (3 6 3) (3 6 3) (3 6) (2) (6) (2 2 2 3) (3 2 2 4) (3 1 1 1 4) (2 1 3 2 1 3) (3 1 1 2) (5 4) (8 2 7) (6 2 5) (6 1 1 5) (6 5) (13))) (quote ((4 4 3) (5 4 5) (7 2 5) (5 7) (3 7) (1 10) (2 1 2) (7 2 1 1 1 1) (7 1 3 1) (7 1 1 2 1) (7 1 2 1) (7 1 2 1) (7 2 1 1 1 1) (1 2 1 2) (1 10) (2 7) (2 1 2 5) (1 2 4 5) (2 1 1 4 3) (1 1 4))) (quote ("xxxx xxxx xxx " "xxxxx xxxx xxxxx " "xxxxxxx xx xxxxx " " xxxxx xxxxxxx" " xxx xxxxxxx" " x xxxxxxxxxx" " xx x xx" "xxxxxxx xx x x x x" "xxxxxxx x xxx x" "xxxxxxx x x xx x" "xxxxxxx x xx x" "xxxxxxx x xx x" "xxxxxxx xx x x x x" " x xx x xx" " x xxxxxxxxxx" " xx xxxxxxx" " xx x xx xxxxx " " x xx xxxx xxxxx " "xx x x xxxx xxx " " x x xxxx "))) (make-problem "Hattori 87" (quote ((5 5) (1 1 1 1) (3 1 3 1) (3 1 3 1) (1 1 3 1 2) (13) (15) (17) (3 2 12) (20) (5) (20) (11 4) (9 4 3) (8 5 2) (7 8) (3 11) (3 3 8) (3 3 6) (4 4 7))) (quote ((2 1 1) (3 2 1) (4 3 2) (8 1 4 3) (1 2 5 8) (1 8 7 1) (1 3 1 6 1) (10 5 2) (6 5 3) (10 8) (1 2 5 7) (1 8 2 1 1) (1 5 1 5 1) (10 1 7) (6 1 7) (7 7) (7 6) (7 5) (11) (9))) (quote (" xx x x" " xxx xx x" " xxxx xxx xx" "xxxxxxxx x xxxx xxx" "x xx xxxxx xxxxxxxx " "x xxxxxxxx xxxxxxx x" "x xxx x xxxxxx x" "xxxxxxxxxx xxxxx xx" " xxxxxx xxxxx xxx" "xxxxxxxxxx xxxxxxxx " "x xx xxxxx xxxxxxx " "x xxxxxxxx xx x x" "x xxxxx x xxxxx x" "xxxxxxxxxx x xxxxxxx" " xxxxxx x xxxxxxx" " xxxxxxx xxxxxxx" " xxxxxxx xxxxxx" " xxxxxxx xxxxx" " xxxxxxxxxxx " " xxxxxxxxx "))) (make-problem "Hattori 88" (quote ((4 4 5) (1 2 2 1 6) (1 1 1 8) (1 1 1 5) (3 2 2 2 1) (1 1 1 2 5) (2 3 2 1 3) (1 1 1 1 1 1) (2 4 1 3) (5 2 1 1) (1 3 1 1) (1 3 1 1 4) (6 2 2 1 2) (1 1 1 4 1 3) (1 2 5 2) (4 1 2) (1 3 4) (2 1 1) (1 1 5) (1 11))) (quote ((5 4) (1 3 4 1) (1 1 4 1 4) (2 2 4 3) (4 1 2) (3 6) (2 2 1) (3 2 3 1) (4 2 3 4) (2 3 4 1) (1 2 1 2 1) (1 2 5 1) (5 2) (2 2) (14 2) (4 1 2 2) (4 4 2 5) (3 2 1 3 1 1) (3 4 1 1 1 1) (3 1 1 1))) (quote ("xxxxx xxxx " "x xxx xxxx x " "x x xxxx x xxxx " "xx xx xxxx xxx" " xxxx x xx " " xxx xxxxxx " " xx xx x " " xxx xx xxx x " " xxxx xx xxx xxxx" "xx xxx xxxx x" "x xx x xx x" "x xx xxxxx x" "xxxxx xx" " xx xx" " xxxxxxxxxxxxxx xx" "xxxx x xx xx" "xxxx xxxx xx xxxxx" "xxx xx x xxx x x" "xxx xxxx x x x x" "xxx x x x "))) (make-problem "Hattori 89" (quote ((9) (4 4) (4 3) (5 4) (4 4 2) (4 2 2 5 3) (4 1 1 5 2) (4 2 2 5 2) (4 9) (4 5 2) (2 1 2 5 1) (2 1 2 2 2 1) (2 2 1) (6 1) (1 1) (2 1 1 1 1) (2 2 5 1) (3 2 2 1 1) (1 2 2 2 1) (10 6))) (quote ((9) (10) (9 3) (13 1 1) (4 2 2 1) (2 1 1 1 2 1) (1 3 2 3 2) (1 2 1 3) (1 1 1 1 2 1) (2 3 2 2 1) (4 2 1) (12 2) (10 2) (9 3) (8 1 2) (6 4) (1 1 1) (2 1 2 1) (6 1) (15))) (quote (" xxxxxxxxx " " xxxxxxxxxx " " xxxxxxxxx xxx" "xxxxxxxxxxxxx x x" "xxxx xx xx x" "xx x x x xx x" "x xxx xx xxx xx" "x xx x xxx" "x x x x xx x" "xx xxx xx xx x" "xxxx xx x" "xxxxxxxxxxxx xx" " xxxxxxxxxx xx " " xxxxxxxxx xxx " " xxxxxxxx x xx" " xxxxxx xxxx" " x x x" " xx x xx x" " xxxxxx x" " xxxxxxxxxxxxxxx"))) (make-problem "Hattori 90" (quote ((2 6) (11) (3 9) (3 1 1 1 2) (2 1 1 1 1) (3 1 2) (1 1 1 1 1) (1 2 2 1 2) (1 2 1 1) (2 6 3) (2 6 5) (13 2) (5 4 3) (4 4 5) (1 7) (6 3) (7 2) (14) (4 10 4) (4 4))) (quote ((5 2) (1 2 2) (5 2 2) (3 2 1 3) (3 6 1) (3 5 3) (2 5 4) (7 5 4) (3 6 5) (5 3 1 4) (3 2 3 4) (5 3 4) (3 5 2) (3 6 1 2) (3 3 3 2 3) (4 2 6) (6 3) (5 2) (2 2) (2))) (quote (" xxxxx xx" " x xx xx" " xxxxx xx xx" " xxx xx x xxx" " xxx xxxxxx x " "xxx xxxxx xxx " "xx xxxxx xxxx " " xxxxxxx xxxxx xxxx " "xxx xxxxxx xxxxx " "xxxxx xxx x xxxx " "xxx xx xxx xxxx " "xxxxx xxx xxxx " "xxx xxxxx xx " "xxx xxxxxx x xx " " xxx xxx xxx xx xxx " " xxxx xx xxxxxx " " xxxxxx xxx" " xxxxx xx" " xx xx" " xx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/h91-120 b/pkgs/games/paint-by-numbers/problems/h91-120 deleted file mode 100644 index cefe0a927c..0000000000 --- a/pkgs/games/paint-by-numbers/problems/h91-120 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Hattori 91 - 120") (define problems (list (make-problem "Hattori 91" (quote ((5 5) (1 1 1 1) (1 1) (7) (4 1 2 2 3) (6 1 1 1 5) (4 3 1 3 3) (3 7 2) (2 1 1 1) (1 1 3 1 1) (1 1 1) (2 1 3 1 2) (18) (2 3 2) (2 1 4 1 1) (1 6 1) (2 5 2 2) (2 2 4 2 2) (4 3 3) (1 2 1))) (quote ((7) (5 2 3) (4 3 2) (3 2 2) (2 1 2 1 2) (2 2 1 1) (1 1 1 2) (1 5 1 2) (1 1 1 1 2) (5 3 7) (5 10) (4 3 9) (1 2 1 1 2 3) (1 5 1 2) (1 1 1 2) (2 2 1 2) (2 1 2 1 2) (3 1 2) (4 3 2) (7 4))) (quote (" xxxxxxx " " xxxxx xx xxx " " xxxx xxx xx " " xxx xx xx " " xx x xx x xx" "xx xx x x " "x x x xx " "x xxxxx x xx " "x x x x xx " "xxxxx xxx xxxxxxx " " xxxxx xxxxxxxxxx " "xxxx xxx xxxxxxxxx" "x xx x x xx xxx" "x xxxxx x xx " "x x x xx " "xx xx x xx " " xx x xx x xx" " xxx x xx " " xxxx xxx xx " " xxxxxxx xxxx "))) (make-problem "Hattori 92" (quote ((5) (5 2) (7 4) (8 5) (9 6) (9 6) (9 8) (1 7 8) (1 4 8) (4 2 7) (1 2 3 6) (2 2 1 5 5) (2 1 1 2 2 5) (1 2 1 5 5) (1 2 2 3 6) (3 2 6) (1 2 7) (4 1 6) (1 1 4) (1 1 3))) (quote ((4) (2 2 1) (9 5) (5 1 1) (6 1 1 2 1) (7 1 4 1) (7) (8 5) (10 2) (10 3 2) (1 3 5 4) (1 2 2) (1 3 5 4) (10 3 5) (10 6) (17) (16) (15) (13) (9))) (quote (" xxxx " " xx xx x " " xxxxxxxxx xxxxx" " xxxxx x x " " xxxxxx x x xx x " " xxxxxxx x xxxx x " " xxxxxxx " " xxxxxxxx xxxxx " " xxxxxxxxxx xx " "xxxxxxxxxx xxx xx " "x xxx xxxxx xxxx" "x xx xx " "x xxx xxxxx xxxx" "xxxxxxxxxx xxx xxxxx" " xxxxxxxxxx xxxxxx" " xxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxx "))) (make-problem "Hattori 93" (quote ((8 3) (3 1 3 1) (2 3 1) (1 2 2 4) (1 3 1 5) (2 1 1 2 1) (1 2 1 3) (1 2 2) (2 3 1) (3 1 3 2) (8 3) (5 9) (2 4 1) (2 9) (2 6 2) (2 1 4 1 1) (2 9 1) (2 1 1 1) (13 1) (15 3))) (quote ((9) (3 1 3 1) (2 3 2) (1 2 2) (1 2 10) (2 1 1 11) (1 3 2 2) (2 2 2 2 2) (3 3 3 1 2) (3 1 3 9) (7 6 2) (6 2) (1 4 2) (4 4) (1 1 1 2) (1 1 1 2 1) (7 1 2) (5 2 3 6) (1 2 1 1 1) (1 2 1 1))) (quote (" xxxxxxxxx " "xxx x xxx x" "xx xxx xx" "x xx xx" "x xx xxxxxxxxxx" "xx x x xxxxxxxxxxx" "x xxx xx xx" "xx xx xx xx xx" "xxx xxx xxx x xx" " xxx x xxx xxxxxxxxx" " xxxxxxx xxxxxx xx" " xxxxxx xx" " x xxxx xx" " xxxx xxxx" " x x x xx" " x x x xx x" " xxxxxxx x xx " "xxxxx xx xxx xxxxxx" "x xx x x x" "x xx x x"))) (make-problem "Hattori 94" (quote ((3 5) (2 1 2 1) (2 3 2 1) (2 2 3 1) (2 2 4 1) (2 2 3 1 3) (1 2 4 2 1 2) (1 3 2 5 1) (1 2 3 2 1) (2 4 2 1) (1 1) (2 3 2 1) (1 1 1 2 1) (1 3 2 1) (1 2 1) (1 2 1) (1 1 2 2 1) (3 3 6 2) (5 3 3) (6 10))) (quote ((7) (3 2) (6 3) (4 2) (3 2 3 2) (2 3 1 1 3) (1 4 3 1 1) (6 1 2 1) (2 2 1 1 2) (2 4 1 2) (2 4 2 3) (1 5 1 3 1 1) (1 3 2 6 1) (1 2 2 2 1) (8 1 1 1) (2 1) (5 1) (1 1 2) (2 3) (14))) (quote (" xxxxxxx " " xxx xx " " xxxxxx xxx " " xxxx xx" " xxx xx xxx xx" "xx xxx x x xxx" "x xxxx xxx x x" "xxxxxx x xx x" " xx xx x x xx" " xx xxxx x xx " "xx xxxx xx xxx" "x xxxxx x xxx x x" "x xxx xx xxxxxx x" "x xx xx xx x" "xxxxxxxx x x x" " xx x" " xxxxx x" " x x xx" " xx xxx" " xxxxxxxxxxxxxx"))) (make-problem "Hattori 95" (quote ((3 9) (1 2 1 1 1 2) (1 1 1 2) (5 1 3 1) (4 1 1) (13) (13) (2 3) (8 3) (11 2) (2 5) (11 1) (1 1 1 1 5) (2 1 1 1 2) (2 2 3) (5 2 2) (2 1 4 1 2) (3 4 2 2 2) (6 1 2 5) (3 2 5 2 2))) (quote ((4 3) (1 1 4) (2 2 5) (5 1 1) (4 2 3 3) (4 7 3) (1 5 1 3) (4 2 2 3 2) (1 3 2 1 1 1) (2 1 2 2 4 2 1) (1 1 2 2 1 1 2 1) (2 1 2 2 1 1 1) (1 3 2 3 2) (4 2 2 1 2) (3 3 4 3) (4 6 2) (5 3 2) (3 1 2 1) (3 5) (4))) (quote ("xxxx xxx" "x x xxxx" "xx xx xxxxx" " xxxxx x x " " xxxx xx xxx xxx" " xxxx xxxxxxx xxx" "x xxxxx x xxx " "xxxx xx xx xxx xx " "x xxx xx x x x" "xx x xx xx xxxx xx x" "x x xx xx x x xx x" "xx x xx xx x x x" "x xxx xx xxx xx" "xxxx xx xx x xx " "xxx xxx xxxx xxx " " xxxx xxxxxx xx" " xxxxx xxx xx" " xxx x xx x " " xxx xxxxx" " xxxx"))) (make-problem "Hattori 96" (quote ((4 4) (2 3) (5 8) (3 10) (3 3 1 4) (3 2 2 2 1 1) (3 2 1 1 1) (3 2 1 1 2) (4 2 1 3) (4 1 3) (9 5) (4 6) (14) (1 1 1 2 4) (3 2 3) (6 3 3) (13 3) (4 1 4 4) (3 2 4 1 1) (4 2 5 4))) (quote ((2) (9 1) (1 8 4) (1 9 5) (3 4 5) (1 4 4 4) (2 6 3 3 1) (1 3 9 2) (1 2 1 1 1 4) (1 2 3 1 2 1 1) (3 1 1 1 1 2) (2 3 1 2 4) (2 1 1 5) (3 11) (4 10) (2 6) (5 4 3) (8 1) (7 1) (7))) (quote (" xx " "xxxxxxxxx x" "x xxxxxxxx xxxx" "x xxxxxxxxx xxxxx" "xxx xxxx xxxxx" " x xxxx xxxx xxxx " "xx xxxxxx xxx xxx x" "x xxx xxxxxxxxx xx" "x xx x x x xxxx " "x xx xxx x xx x x" " xxx x x x x xx" " xx xxx x xx xxxx" " xx x x xxxxx" " xxx xxxxxxxxxxx" " xxxx xxxxxxxxxx " " xx xxxxxx " " xxxxx xxxx xxx" " xxxxxxxx x" " xxxxxxx x" " xxxxxxx"))) (make-problem "Hattori 97" (quote ((7 3 2) (2 6 3) (12 2 4) (3 6 1) (2 4 3 3) (2 1 1 1 1) (3 1 3) (1 1 1 1) (1 2 3 2) (2 1 4 2) (1 1 1 1) (2 2 3 2) (1 2 1 2) (2 2 2 2) (1 2 2 1 1) (1 2 4 2) (1 2 3 4) (1 5 2 3) (2 1 1 1) (16 1))) (quote ((8 5) (6 3 1 2) (3 3 4 1) (1 1 2 1 1) (1 1 2 1 1) (1 1 2 2 1) (1 1 1 1 2 2 1) (1 1 2 2 2 1 1) (1 1 1 5 1 1 1) (10 1 1 1 1) (3 2 1 1 1) (5 2 2 1) (2 2 4 1) (5 4) (3 1 1) (1 1) (1 4) (8 3) (3 1 1 4 7) (3 3 1 1 1))) (quote (" xxxxxxxx xxxxx " " xxxxxx xxx x xx" " xxx xxx xxxx x" "x x xx x x" "x x xx x x" "x x xx xx x" "x x x x xx xx x" "x x xx xx xx x x" "x x x xxxxx x x x" "xxxxxxxxxx x x x x" " xxx xx x x x" "xxxxx xx xx x" "xx xx xxxx x" "xxxxx xxxx" " xxx x x" " x x" " x xxxx" " xxxxxxxx xxx " "xxx x x xxxx xxxxxxx" "xxx xxx x x x "))) (make-problem "Hattori 98" (quote ((3) (7) (2 3 3) (8 1 4) (2 3 5) (10) (9) (3 4) (4 10) (3 10) (3 9) (2 4 4) (2 15) (2 15) (3 13) (4 5 5) (7 7) (18) (17) (13))) (quote ((1 1 8) (3 11) (1 3 5) (1 2 5) (1 2 3 4) (1 1 4 4) (3 5 4) (5 7 3) (6 3 4 3) (2 2 3 4 3) (2 1 2 3 4 3) (2 2 3 4 3) (6 3 4 3) (9 3 4) (8 4 4) (7 9) (5 8) (8) (6) (4))) (quote (" x x xxxxxxxx " " xxx xxxxxxxxxxx " " x xxx xxxxx " " x xx xxxxx" " x xx xxx xxxx" " x x xxxx xxxx" " xxx xxxxx xxxx" " xxxxx xxxxxxx xxx" " xxxxxx xxx xxxx xxx" "xx xx xxx xxxx xxx" "xx x xx xxx xxxx xxx" "xx xx xxx xxxx xxx" " xxxxxx xxx xxxx xxx" " xxxxxxxxx xxx xxxx" " xxxxxxxx xxxx xxxx" " xxxxxxx xxxxxxxxx" " xxxxx xxxxxxxx " " xxxxxxxx " " xxxxxx " " xxxx "))) (make-problem "Hattori 99" (quote ((8) (14) (14) (14) (8 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 4) (4 6) (6 7) (7 7) (7 6) (6 4) (4))) (quote ((3) (5) (5) (6) (6) (5) (17) (4) (4) (4) (4) (4) (5) (5 3) (4 5) (4 5) (4 6) (4 6) (4 5) (17))) (quote (" xxx " " xxxxx" " xxxxx" " xxxxxx" " xxxxxx" " xxxxx " " xxxxxxxxxxxxxxxxx " " xxxx " " xxxx " " xxxx " " xxxx " " xxxx " "xxxxx " "xxxxx xxx " "xxxx xxxxx " "xxxx xxxxx " "xxxx xxxxxx " "xxxx xxxxxx " "xxxx xxxxx " "xxxxxxxxxxxxxxxxx "))) (make-problem "Hattori 100" (quote ((3 7) (4 9 2) (4 10 1) (4 1 6 1) (5 1 1 1 2 1) (5 1 1 1 2 1) (5 7 2 1) (16 1) (11 1) (3 8 2) (2 1 11) (2 14) (3 13) (5 11) (3 6 3 3) (2 4 2 4 1) (1 3 2 7) (6 4 2 5) (3 3 2 2 1) (4 3 2))) (quote ((7 3 3) (7 5 1 2) (8 1 3 2) (7 2 2 2) (4 3 2 1) (1 3 3 1) (3 2 3 2) (3 2 2 3) (9 5 2) (3 9 2) (3 1 12) (3 10 2) (14 4) (4 11 1) (4 1 10) (4 12) (8 4 5) (6 2 2 2 1) (1 3 2 2) (10 2 2))) (quote ("xxxxxxx xxx xxx " "xxxxxxx xxxxx x xx " "xxxxxxxx x xxx xx " " xxxxxxx xx xx xx " " xxxx xxx xx x" " x xxx xxx x" " xxx xx xxx xx" " xxx xx xx xxx" " xxxxxxxxx xxxxx xx " "xxx xxxxxxxxx xx " "xxx x xxxxxxxxxxxx " "xxx xxxxxxxxxx xx" "xxxxxxxxxxxxxx xxxx" "xxxx xxxxxxxxxxx x" "xxxx x xxxxxxxxxx " "xxxx xxxxxxxxxxxx " " xxxxxxxx xxxx xxxxx" " xxxxxx xx xx xx x" " x xxx xx xx " " xxxxxxxxxx xx xx "))) (make-problem "Hattori 101" (quote ((5) (7) (9) (1 1 1 1) (1 1) (1 2 1) (2 2) (1 4 1 1) (6 4 7) (1 2 4 2 2) (1 4 4 7) (1 1 1 1 1 1) (3 1 1 1 1) (4 8 1 1) (1 3 1) (1 7 1) (1 4 4 1) (2 9 2) (1 5 5 1) (11))) (quote ((1) (6 3) (1 2 2) (1 4) (1 1 1 2) (1 3 2 4) (11 7) (3 1 1 5) (4 7 5) (3 1 4 1 1 1 1) (4 1 4 1 5) (3 7 5) (6 7) (6 1 4) (3 3 2) (1 1) (1 1) (1 1 2) (3 5) (4))) (quote (" x " " xxxxxx xxx " " x xx xx " " x xxxx " " x x x xx" " x xxx xx xxxx" " xxxxxxxxxxx xxxxxxx" "xxx x x xxxxx" "xxxx xxxxxxx xxxxx" "xxx x xxxx x x x x" "xxxx x xxxx x xxxxx" "xxx xxxxxxx xxxxx" " xxxxxx xxxxxxx" " xxxxxx x xxxx" " xxx xxx xx" " x x " " x x " " x x xx " " xxx xxxxx " " xxxx "))) (make-problem "Hattori 102" (quote ((2 7) (1 5 3) (2 7 2 2 1) (1 2 2 2 2 1) (1 2 2 3 1) (1 2 4 6) (4 6 5) (3 6 4) (1 4 1) (3 1 3 1) (6 5 1) (7 5 2) (3 5 3 1) (1 1 1 6 2) (1 2 1 2 3) (1 4 1 5 1) (1 4 4 3) (7 1) (1 1) (4))) (quote ((1 5) (5 1) (1 9) (3 4 3 2) (6 3 1 2) (3 2 2) (2 2 8) (4 9 2) (4 4 3 1 1) (3 4 2 1 1) (1 5 6 1) (1 2 2 2 5 1) (1 2 4 5) (3 4 2) (1 2 4 2) (2 4 2 1) (6 4) (5 3 1) (7 3) (4))) (quote (" x xxxxx " " xxxxx x " "x xxxxxxxxx " "xxx xxxx xxx xx " " xxxxxx xxx x xx " " xxx xx xx " " xx xx xxxxxxxx " "xxxx xxxxxxxxx xx " "xxxx xxxx xxx x x " "xxx xxxx xx x x" "x xxxxx xxxxxx x" "x xx xx xx xxxxx x" "x xx xxxx xxxxx" "xxx xxxx xx " " x xx xxxx xx " " xx xxxx xx x " " xxxxxx xxxx " " xxxxx xxx x " " xxxxxxx xxx " " xxxx "))) (make-problem "Hattori 103" (quote ((7) (2 2) (1 2 2 1) (1 1 1 1) (1 5 1) (1 1 1 1) (9) (9) (1 1 2) (9 4) (9 4) (9 2) (9) (1 1 7) (9 7) (10 2) (1 1 2) (10 2) (9 2) (9 2))) (quote ((3) (1 1) (1 1) (1 4) (1 2 1) (12 2 3) (2 2 4 2 3) (1 1 4 4 2 3) (1 3 2 7 3) (1 1 2 3 1 3) (1 3 2 3 1 3) (1 1 4 3 1 3) (2 2 3 5) (11 2 2) (2) (2 2) (4 7) (4 7) (2 2) (2))) (quote (" xxx " " x x " " x x " " x xxxx " " x xx x " " xxxxxxxxxxxx xx xxx" "xx xx xxxx xx xxx" "x x xxxx xxxx xx xxx" "x xxx xx xxxxxxx xxx" "x x xx xxx x xxx" "x xxx xx xxx x xxx" "x x xxxx xxx x xxx" "xx xx xxx xxxxx" " xxxxxxxxxxx xx xx" " xx " " xx xx " " xxxx xxxxxxx" " xxxx xxxxxxx" " xx xx " " xx "))) (make-problem "Hattori 104" (quote ((11) (1 1) (1 1) (2 1 1 1) (5 1) (3 1) (5 1) (7 1) (9 1) (9 1) (8 1) (6 4 1) (1 3 1) (3 2 3 1) (2 1 4 1) (1 3 5 1) (1 1 4 1) (5 5) (7 4 1) (9 5))) (quote ((3) (3) (6) (2 3) (1 1 3) (3 1 2) (2 1 2 2) (1 5 1) (2 6 1) (1 8) (12) (1 7 2) (1 2 6 1 1) (1 5 1 1) (1 9 2) (1 9) (1 8) (1 5) (1 1) (19))) (quote (" xxx" " xxx" " xxxxxx" " xx xxx" " x x xxx" " xxx x xx" " xx x xx xx" " x xxxxx x" " xx xxxxxx x" "x xxxxxxxx " "xxxxxxxxxxxx " "x xxxxxxx xx " "x xx xxxxxx x x" "x xxxxx x x" "x xxxxxxxxx xx" "x xxxxxxxxx" "x xxxxxxxx" "x xxxxx " "x x " "xxxxxxxxxxxxxxxxxxx "))) (make-problem "Hattori 105" (quote ((3) (2 6) (2 2 2) (2 2 2) (13) (1 2) (1 3 3 1) (1 1 1 1 1 1) (1 3 3 1) (3 1) (1 4 1) (1 4 1 1) (1 1 2 1 2 1) (1 1 2 1 1 1) (4 2 3 1) (1 2) (2 1) (3 2) (4 2) (11))) (quote ((6) (1 1) (7 3) (3 3) (2 1 3 2) (2 1 1 1 1 1) (1 1 3 4 2) (2 1 4 1) (2 1 3 1 1) (4 1 1 2) (1 2 3 5 1) (1 1 1 1 1) (2 1 1 3 1) (3 1 1 1) (3 1) (11 1) (3 1) (3) (2) (1))) (quote (" xxxxxx " " x x " " xxxxxxx xxx " " xxx xxx " " xx x xxx xx " "xx x x x x x " "x x xxx xxxx xx " "xx x xxxx x " " xx x xxx x x " " xxxx x x xx" " x xx xxx xxxxx x" " x x x x x" " xx x x xxx x" " xxx x x x" " xxx x" " xxxxxxxxxxx x" " xxx x" " xxx" " xx" " x"))) (make-problem "Hattori 106" (quote ((3 3 4) (2 1 3 1 2 1) (1 9 1 4) (13 1) (9 4) (3 4 1) (1 2 3 1 4) (1 7 1 1 2 1) (2 1 3 2 4 1) (2 1 1 2 1) (2 1 2 2 1) (1 1 1 4) (1 1 1 1 1) (2 1 2 3) (1 1 1 1) (1 1 1 4) (1 3 1 2 1) (1 5 1 4) (1 7 1 2 1) (13 4))) (quote ((1 1 6) (3 4 4 1) (1 1 2 1) (8 1) (5 2 2) (1 3 1 3) (5 2 4) (4 13) (5 2 4) (1 3 2 3) (5 1 2) (7 1) (1 1 3 1) (3 1 4 1) (1 4 6) (1) (20) (1 1 1 6 1 5) (1 1 1 1 3 1 1 1) (1 1 1 6 5))) (quote (" x x xxxxxx " " xxx xxxx xxxx x" " x x xx x" " xxxxxxxx x" "xxxxx xx xx" "x xxx x xxx" "xxxxx xx xxxx" " xxxx xxxxxxxxxxxxx" "xxxxx xx xxxx" "x xxx xx xxx" "xxxxx x xx" " xxxxxxx x" " x x xxx x" " xxx x xxxx x" " x xxxx xxxxxx " " x " "xxxxxxxxxxxxxxxxxxxx" "x x x xxxxxx x xxxxx" "x x x x xxx x x x" "x x x xxxxxx xxxxx"))) (make-problem "Hattori 107" (quote ((1) (1 5) (1 1 1 1) (1 8) (1 4 1 2) (1 14) (1 4 9 1) (1 1 1 3) (2 12 2) (5 2 1 2 6) (8 8) (1 2 2 2 2 3) (1 13) (1 4 4) (1 1 1 1) (1 1 1 1) (1 7) (1 1 1) (1 3 3) (1 1 1))) (quote ((3) (19) (2) (2 5) (3 6) (4 1 1 2) (15 1) (1 3 6 4) (1 1 2 1 1 1 1) (7 2 1 3) (1 1 2 1 1 1 1) (1 4 6 4) (15 1) (2 1 1 2) (2 6) (2 4) (2 2) (5) (6) (1 1 1))) (quote (" xxx " " xxxxxxxxxxxxxxxxxxx" " xx " " xx xxxxx " " xxx xxxxxx " " xxxx x x xx " " xxxxxxxxxxxxxxx x " " x xxx xxxxxx xxxx" " x x xx x x x x " "xxxxxxx xx x xxx " " x x xx x x x x " " x xxxx xxxxxx xxxx" " xxxxxxxxxxxxxxx x " " xx x x xx " " xx xxxxxx " " xx xxxx " " xx xx " " xxxxx " " xxxxxx " " x x x "))) (make-problem "Hattori\n108" (quote ((11 7) (1 2 1 1 9) (1 1 1 3 10) (6 2 1 10) (1 4 1 10) (1 4 1 1 5) (1 1 3 1 1) (1 2 1 2 1 4 3) (3 1 3 4 3) (1 1 1 2 1 1 1) (11 4 3) (1 1) (1 1 6) (1 1 1 6) (1 4 1 4) (1 2 1 2 2) (3 1 1 5) (5 3 1 1) (6 2 1 1 1) (6 2 1 11) (2 4 1 8) (1 4 2 8) (12 12) (4 1 8) (4 3 2 1) (4 3 2 2 1) (4 1 8 1) (4 1 1) (4 4 1) (6 15))) (quote ((16 4) (1 1 1 1 8) (2 1 2 1 3 7) (4 3 1 3 8) (1 3 1 4 1 4) (11 6 1 2) (1 3 1 8 1) (1 2 2 1 6 2) (1 2 2 1 3 5) (1 1 1 1 2 2 1 1) (11 6 1 2 2) (1 1 3 1) (2 5 2 1) (2 2 2 1) (5 1 1 1) (3 1 1 1 1) (15 1 1 1 1) (4 4 2 5 1 1) (5 2 1 2 1 5 1 1) (5 4 3 1 8 1) (6 3 1 8 1) (6 3 8 1) (6 4 3 5 1) (6 2 1 2 5 1) (6 4 11))) (quote ("xxxxxxxxxxxxxxxx xxxx " "x x x x xxxxxxxx " "xx x xx x xxx xxxxxxx " "xxxx xxx x xxx xxxxxxxx" "x xxx x xxxx x xxxx" "xxxxxxxxxxx xxxxxx x xx" "x xxx x xxxxxxxx x" "x xx xx x xxxxxx xx" "x xx xx x xxx xxxxx" "x x x x xx xx x x " "xxxxxxxxxxx xxxxxx x xx xx" " x x xxx x" " xx xxxxx xx x" " xx xx xx x" " xxxxx x x x" " xxx x x x x" " xxxxxxxxxxxxxxx x x x x" " xxxx xxxx xx xxxxx x x" "xxxxx xx x xx x xxxxx x x" "xxxxx xxxx xxx x xxxxxxxx x" "xxxxxx xxx x xxxxxxxx x" "xxxxxx xxx xxxxxxxx x" "xxxxxx xxxx xxx xxxxx x" "xxxxxx xx x xx xxxxx x" "xxxxxx xxxx xxxxxxxxxxx"))) (make-problem "Hattori 109" (quote ((11 7) (13 11) (16 13) (31) (9 18) (7 17) (4 1 1 1 2 8) (3 1 1 1 1 2 6) (3 2 3 1 2 2 6) (3 1 1 2 2 5) (5 2 1 8 4) (4 2 3 1 1 1 4) (3 3 1 1 1 3) (4 4 1 2 5) (1 7 6 1 2) (2 1 2 2 1 2 3) (4 1 2 2 2 5) (4 11 4 1) (10 2 2 1 3) (20 1 1 2) (2 4 3 3 3 2 4) (1 2 4 2 2 5 1) (1 5 1 1 1 2 3 1 1) (1 1 5 6 1 2 5) (1 1 5 4 1 1 1 1) (1 1 1 5 1 1 1) (1 1 5 5 1) (1 3 4 2 1) (1 2 3 6 1) (4 4 3 3 2 1) (17 12) (10 7 9))) (quote ((8 8 1) (10 3 2 2) (13 4 4) (7 4 4 3) (6 2 4 6 3) (6 1 8 3) (6 8 2) (5 2 5 2) (5 1 2 1 2 3 2) (4 1 1 3 4 3) (4 3 1 4 6 1 2) (4 2 1 1 3 2 5) (4 4 21) (4 8 2) (4 1 2 1 2 10) (12 1 3 9) (4 18) (7 6 5 2) (13 1 1 3 2 2) (5 1 1 7 4) (6 1 3 1 4) (6 4 1 2 2 3 2 2) (6 2 2 1 2 2) (6 1 4 2 4) (7 1 1 2 2 3 3) (7 1 1 1 1 2) (9 2 1 1 2) (9 1 2 3 1 2) (11 1 1 2 4 1) (13 2 2 1 1 1) (16 2 1 1) (13 10))) (quote (" xxxxxxxx xxxxxxxx x" " xxxxxxxxxx xxx xx xx" " xxxxxxxxxxxxx xxxx xxxx" "xxxxxxx xxxx xxxx xxx" "xxxxxx xx xxxx xxxxxx xxx" "xxxxxx x xxxxxxxx xxx" "xxxxxx xxxxxxxx xx" "xxxxx xx xxxxx xx" "xxxxx x xx x xx xxx xx" "xxxx x x xxx xxxx xxx" "xxxx xxx x xxxx xxxxxx x xx " "xxxx xx x x xxx xx xxxxx" "xxxx xxxx xxxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxx xx" " xxxx x xx x xx xxxxxxxxxx" " xxxxxxxxxxxx x xxx xxxxxxxxx" " xxxx xxxxxxxxxxxxxxxxxx" " xxxxxxx xxxxxx xxxxx xx" " xxxxxxxxxxxxx x x xxx xx xx " " xxxxx x x xxxxxxx xxxx" "xxxxxx x xxx x xxxx" "xxxxxx xxxx x xx xx xxx xx xx" "xxxxxx xx xx x xx xx" "xxxxxx x xxxx xx xxxx" "xxxxxxx x x xx xx xxx xxx" "xxxxxxx x x x x xx" "xxxxxxxxx xx x x xx" " xxxxxxxxx x xx xxx x xx" " xxxxxxxxxxx x x xx xxxx x " " xxxxxxxxxxxxx xx xx x x x " " xxxxxxxxxxxxxxxx xx x x " " xxxxxxxxxxxxx xxxxxxxxxx "))) (make-problem "Hattori 110" (quote ((2 2 8 5) (3 1 2 1 4 1 1 3) (1 3 8 7 2) (3 4 2 2 4 4 2) (2 1 5 2 2 5 4) (2 1 5 1 5 3) (4 1 2) (4 3 2) (4 2) (4 6 2) (5 10 3) (1 8 1) (30) (1 5 5 6 7 1) (11 3 1 2 1) (3 8 8 1) (1 23) (1 2 9 9 1) (1 3 10 5 2 1) (1 6 1 2 3 1 1 2 1) (3 2 14 1 1 1) (1 1 2 13 1 2 1) (1 1 4 6 1 1) (2 1 2 7 2 1) (2 2 1 1 1) (2 2 2 2) (1 5 2 2) (1 4 2 2) (1 5 2 2) (1 7 3 2) (1 10 7 2) (30))) (quote ((2 4 5) (3 5 2 2 1) (1 8 1 2 2 1) (12 1 4 1) (2 1 4 2 1) (1 1 1 6 2 1) (2 2 7 3) (1 2 3 1 2 1 5) (4 1 8 5) (5 6 2 2 5) (2 2 8 1 1 6) (4 10 2 1 4) (5 12 1 3) (1 1 7 3 2 2) (1 2 3 10 2 2) (1 2 5 4 4 2) (2 4 5 6 1 1) (2 1 5 1 6 1) (2 1 5 3 4 1) (2 1 5 8 1) (1 2 5 3 5 2) (1 2 3 9 2 2) (5 1 7 4 1 2) (4 9 1 1 3) (2 2 2 4 2 1 6) (4 8 1 5) (4 2 3 2 2) (1 2 5 1 1 1) (1 2 3 2 1) (2 2 1 1 2 1) (16 1 7) (11 14))) (quote ("xx xxxx UUUUUUUUUUUUUUU " "xxx xxxxx xx UUUUUUUUUUUUUUU " " x xxxxxxxx x UUUUUUUUUUUUUU x" " xxxxxxxxxxxx UUUUUUUUUUUUUU x" " xx x xxxx UUUUUUUUUUUU x" " x x x xxxxxx UUUUUUUUUU x" "xx xx xxxxxxx xxx" "x xx xxx x xx x xxxxx" " xxxx x xxxxxxxx xxxxx" " xxxxx xxxxxx xx xx xxxxx" " xx xx xxxxxxxx x x xxxxxx" " xxxx xxxxxxxxxx xx x xxxx" " xxxxx xxxxxxxxxxxx x xxx" " x x xxxxxxx xxx xx xx" "x xx xxx xxxxxxxxxx xx xx" "x xx xxxxx xxxx xxxx xx" "xx xxxx xxxxx xxxxxx x x" "xx x xxxxx x xxxxxx x" "xx x xxxxx xxx xxxx x" "xx x xxxxx xxxxxxxx x" "x xx xxxxx xxx xxxxx xx" "x xx xxx xxxxxxxxx xx xx" " xxxxx x xxxxxxx xxxx x xx" " xxxx xxxxxxxxx x x xxx" " xx xx xx xxxx xx x xxxxxx" " xxxx xxxxxxxx x xxxxx" " xxxx xx xxx xx xx" "x xx xxxxx x x x" "x xx xxx xx x" "xx xx x x xx x" "xxxxxxxxxxxxxxxx x xxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxx"))) (make-problem "Hattori 111" (quote ((7) (1 1 2 6) (2 2 1 7) (5 1 8) (8 1 9) (5 1 10) (3 1 10) (2 2 6) (5) (1 4) (1 1 6) (3 1 8) (4 1 1 7) (1 3 1 1 1 3) (3 1 1 1 2) (6 3 1 1) (1 2 2 1 4 1) (8 3 6) (3 2 1 1 10) (8 1 6) (5 3 12) (2 4 2 1 5) (4 4 1 8) (6 1 2 3 1) (3 2 1 1 4) (1 3 4 1 1 1 2) (4 2 1 1 2 2 1) (2 8 4) (7 2) (2 1 1 1 3))) (quote ((2 9 3 4) (3 2 2 8 2) (1 4 10 5) (7 2 3 5 2) (3 3 5 3) (4 5 4) (3 2 5 2) (2 4 1 3 1) (4 1 3) (1 4) (7 1 3) (2 2 6 2) (1 8 1 4 3) (1 1 4 1 4) (2 2 4 1 1 1 2) (9 2 2 1 1) (8 3 1 3 1 4) (8 4 4 2 2) (7 4 6 1 1) (7 5 13) (5 14 4) (5 4 8) (4 1 5 1) (3 1 1 2) (2 5))) (quote (" xx xxxxxxxxx xxx xxxx " " xxx xx xx xxxxxxxx xx " " x xxxx xxxxxxxxxx xxxxx " " xxxxxxx xx xxx xxxxx xx " " xxx xxx xxxxx xxx " " xxxx xxxxx xxxx " " xxx xx xxxxx xx " " xx xxxx x xxx x" " xxxx x xxx" " x xxxx " " xxxxxxx x xxx" "xx xx xxxxxx xx " "x xxxxxxxx x xxxx xxx" "x x xxxx x xxxx " "xx xx xxxx x x x xx" "xxxxxxxxx xx xx x x " "xxxxxxxx xxx x xxx x xxxx " "xxxxxxxx xxxx xxxx xx xx " " xxxxxxx xxxx xxxxxx x x" " xxxxxxx xxxxx xxxxxxxxxxxxx" " xxxxx xxxxxxxxxxxxxx xxxx" " xxxxx xxxx xxxxxxxx " " xxxx x xxxxx x " " xxx x x xx " " xx xxxxx "))) (make-problem "Hattori\n112" (quote ((3 6) (9 4) (1 1 1 5) (2 2 2 3) (1 1 1 1) (1 2 1) (15 1) (4 1 4) (3 1 4) (3 5) (7) (6 1) (7 2) (8 1 3) (7 3 3) (1 2 1 1 6) (1 3 4) (1 2 1) (1 1 2) (20))) (quote ((1 1) (2 1) (3 1) (1 4 1 1) (1 9 1) (3 1 7 1) (2 2 1 5 1) (3 15) (2 2 1 7 1) (3 1 7 1) (1 5 4 1) (1 4 1) (3 6) (2 2 2 1) (1 1 1 3 1) (1 2 1 1) (3 1 3 2) (6 7) (4 5 1) (7 3 2 1))) (quote (" x x" " xx x" " xxx x" " x xxxx x x" " x xxxxxxxxx x" " xxx x xxxxxxx x" "xx xx x xxxxx x" "xxx xxxxxxxxxxxxxxx" "xx xx x xxxxxxx x" " xxx x xxxxxxx x" " x xxxxx xxxx x" " x xxxx x" " xxx xxxxxx" " xx xx xx x" "x x x xxx x" "x xx x x" "xxx x xxx xx" "xxxxxx xxxxxxx" "xxxx xxxxx x" "xxxxxxx xxx xx x"))) (make-problem "Hattori 113" (quote ((9) (1 3) (1 1 1 3) (4 1 1) (1 4 1 1 1) (2 1 3 1) (4 2 6) (1 3 1) (1 1 1 1) (1 3 7 1) (8 1) (1 7 1) (10) (3 1 2 1) (5 1 4) (5 1 1) (5 7) (3 1 1) (1 1) (10 5 3))) (quote ((3 1) (2 5 1) (1 1 1 1 5 1) (1 2 5 1) (1 1 3 1) (1 1 1) (6 1) (1 1 1) (1 1 1) (3 1 1 1) (1 3 9) (1 1 2 4 1 1) (1 1 2 4 4) (1 1 1 4 1 1) (1 2 4 4) (3 2 4 1 1) (5 1 9) (3 1 3 1) (1 1 1 1) (9 1))) (quote (" xxx x" " xx xxxxx x" " x x x x xxxxx x" " x xx xxxxx x" " x x xxx x" " x x x" " xxxxxx x" " x x x" " x x x" "xxx x x x" "x xxx xxxxxxxxx " "x x xx xxxx x x" "x x xx xxxx xxxx" "x x x xxxx x x" "x xx xxxx xxxx" "xxx xx xxxx x x" "xxxxx x xxxxxxxxx " "xxx x xxx x" " x x x x" " xxxxxxxxx x"))) (make-problem "Hattori 114" (quote ((8 7) (10 7) (12 1 1) (4 1 1 1) (3 1 1 3) (3 1 1 1 1 4) (2 3 4 3 3) (2 1 4) (3 1 3 2) (2 1 2) (2 3 1 2) (2 3 2) (2 3 2 2) (6 1 3) (5 3 5) (6 2 2) (7 2 2 1) (3 8 1 6) (3 7 3 1 1 1) (3 6 2 5 4) (4 4 3 8 2) (6 1 4 5) (4 5) (2 4) (1 4))) (quote ((6 7) (9 9) (5 4 11) (4 6 4) (3 1 8 2 1) (3 1 9) (3 2 1 1 5) (3 1 2 5) (3 2 1 1 4 1) (3 1 1 1 3 4) (3 1 1 2 2 5) (11 1 2 6) (1 2 2 7) (4 2) (2 2 3) (3 3 3) (3 2 1 1 3) (8 2 1 2 3) (2 2 1 5) (2 2 3 2) (2 2 1 1 1) (2 3 1 2) (2 3 3) (6 2) (3))) (quote (" xxxxxx xxxxxxx " " xxxxxxxxx xxxxxxxxx " " xxxxx xxxx xxxxxxxxxxx " "xxxx xxxxxx xxxx " "xxx x xxxxxxxx xx x" "xxx x xxxxxxxxx " "xxx xx x x xxxxx " "xxx x xx xxxxx " "xxx xx x x xxxx x " "xxx x x x xxx xxxx" "xxx x x xx xx xxxxx" " xxxxxxxxxxx x xx xxxxxx" " x xx xx xxxxxxx" " xxxx xx " " xx xx xxx " " xxx xxx xxx " " xxx xx x x xxx " "xxxxxxxx xx x xx xxx " "xx xx x xxxxx " "xx xx xxx xx " "xx xx x x x " "xx xxx x xx " "xx xxx xxx " "xxxxxx xx " " xxx "))) (make-problem "Hattori 115" (quote ((11 12 4) (1 12 3) (1 2 1 12 3) (1 2 1 1 4 3 2 3) (1 1 2 1 1 1 1 2) (6 6 2 2 3 1) (1 9 4) (3 1 7 3 6) (1 1 1 4 2 2 8) (3 2 2 3 9) (4 3 4 10 4) (7 10 1 1) (2 1 2 8 2 1) (2 1 2 9 1 1) (3 4 2 1 2 4) (1 3 5 1 2) (1 1 1 2 1 1 1 3) (1 1 1 1 11 2) (1 1 1 1 2 2 2 2) (1 3 3 2 1 2 1 1) (3 5 3 2 3 1 1) (2 2 2 1 2 7 1) (2 1 2 2 5 4) (2 2 2 4 2 4) (7 8 5))) (quote ((1 4 2 8) (1 1 2 2 3) (1 9 4 2 2) (1 2 1 1 3 5 2) (1 1 3 1 1 2 1) (1 2 3 1 2 1) (1 2 2 1 5) (1 3 5 1 2) (1 1 1 1 2 2 1) (1 1 2 2 5 2) (4 4 1 2 1 2 2) (4 1 3 3) (4 1 3 3 1) (2 3 1 4 2) (3 3 4) (12 6 3) (4 7 4 2) (4 1 5 1 2 1) (6 1 4 1 2 1) (3 2 4 1 1 1) (6 2 4 3 1) (4 1 5 7) (4 6 1 5) (3 8 1 2) (12 2 1 2) (2 5 4 4) (1 6 3 2 4) (4 7 1 1 5) (5 4 1 3 2) (6 7 6 1))) (quote ("x xxxx xx xxxxxxxx " "x x xx xx xxx " "x xxxxxxxxx xxxx xx xx " "x xx x x xxx xxxxx xx" "x x xxx x x xx x" "x xx xxx x xx x" "x xx xx x xxxxx" "x xxx xxxxx x xx" "x x x x xx xx x" "x x xx xx xxxxx xx" "xxxx xxxx x xx x xx xx " " xxxx x xxx xxx " " xxxx x xxx xxx x" "xx xxx x xxxx xx" "xxx xxx xxxx" "xxxxxxxxxxxx xxxxxx xxx" "xxxx xxxxxxx xxxx xx" "xxxx x xxxxx x xx x" "xxxxxx x xxxx x xx x" "xxx xx xxxx x x x" "xxxxxx xx xxxx xxx x " "xxxx x xxxxx xxxxxxx " "xxxx xxxxxx x xxxxx " "xxx xxxxxxxx x xx " "xxxxxxxxxxxx xx x xx " " xx xxxxx xxxx xxxx" "x xxxxxx xxx xx xxxx" "xxxx xxxxxxx x x xxxxx" "xxxxx xxxx x xxx xx" "xxxxxx xxxxxxx xxxxxx x"))) (make-problem "Hattori 116" (quote ((3 2) (7) (9) (9) (6) (2 3 2) (4 2) (12 1) (15) (5 11) (3 11) (3 13) (2 13) (2 14) (16) (15) (9 5) (8 4) (7 4) (11))) (quote ((8) (11) (3 6) (3 7) (2 8) (2 9) (2 9) (11 1) (10 1) (10 2) (14) (2 15) (3 14) (3 11) (6 10) (6 8) (6 7) (4 5) (7) (1 6))) (quote (" xxxxxxxx " " xxxxxxxxxxx" " xxx xxxxxx" " xxx xxxxxxx" " xx xxxxxxxx" " xx xxxxxxxxx" " xx xxxxxxxxx" " xxxxxxxxxxx x" " xxxxxxxxxx x" " xxxxxxxxxx xx" " xxxxxxxxxxxxxx" " xx xxxxxxxxxxxxxxx" " xxx xxxxxxxxxxxxxx " " xxx xxxxxxxxxxx " "xxxxxx xxxxxxxxxx " "xxxxxx xxxxxxxx " "xxxxxx xxxxxxx " " xxxx xxxxx " "xxxxxxx " "x xxxxxx "))) (make-problem "Hattori 117" (quote ((15 3) (15 4) (2 3 1 3 2 4) (2 1 5 1) (15 2 3) (3 3 2 2 1 2) (3 3 1 1 3) (14 3 1) (15 1 2 2) (5 6 1 1 1) (18 1 3) (5 5 2 5) (7 7 7) (7 7 6) (15 5) (15 4) (15 5) (15 8) (15 1 2) (3 1 2) (3 1 2) (3 8) (3 2) (3 4) (7 4))) (quote ((19) (19) (2 15) (3 1 12) (3 1 12 1) (3 1 2 1 7 1) (2 5 1 13) (9 1 11) (2 5 1 13) (3 1 2 1 7 1) (3 1 12 1) (3 1 12) (2 15) (6 12) (5 11) (1 2) (1 1) (2 5 5) (2 1 2 1 1) (4 2 1 1) (7 2 1) (2 3 7 1 2) (5 12 1 2) (3 3 1 15) (3 1 15))) (quote ("xxxxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxxx " "xx xxxxxxxxxxxxxxx " "xxx x xxxxxxxxxxxx " "xxx x xxxxxxxxxxxx x" "xxx x xx x xxxxxxx x" "xx xxxxx x xxxxxxxxxxxxx" "xxxxxxxxx x xxxxxxxxxxx" "xx xxxxx x xxxxxxxxxxxxx" "xxx x xx x xxxxxxx x" "xxx x xxxxxxxxxxxx x" "xxx x xxxxxxxxxxxx " "xx xxxxxxxxxxxxxxx " "xxxxxx xxxxxxxxxxxx " "xxxxx xxxxxxxxxxx " " x xx " " x x " " xx xxxxx xxxxx " " xx x xx x x " " xxxx xx x x " " xxxxxxx xx x " " xx xxx xxxxxxx x xx" "xxxxx xxxxxxxxxxxx x xx" "xxx xxx x xxxxxxxxxxxxxxx" "xxx x xxxxxxxxxxxxxxx"))) (make-problem "Hattori 118" (quote ((11) (12) (7 1) (6 2 2) (6 2 1) (4 1) (5 2 2) (8 1 3) (11 1) (8 5 3) (7 9) (6 5 2) (6 4 1) (6 1 1) (6 4 2) (6 4 1 1) (6 4 2 2) (6 4 2 2) (5 4 2 1) (3 11))) (quote ((10) (12) (13) (14) (14) (14) (5) (3 2 6) (5 2 3 6) (7 1 3 6) (20) (6 3 1) (5 2 2 1) (5 2 2 1) (3 2 3) (2 2 2 2) (2 2 1 6 1) (2 1 1 3 1) (4 4 2) (2 4 2))) (quote (" xxxxxxxxxx " " xxxxxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxxx" " xxxxxxxxxxxxxx" " xxxxxxxxxxxxxx" " xxxxx " " xxx xx xxxxxx" " xxxxx xx xxx xxxxxx" "xxxxxxx x xxx xxxxxx" "xxxxxxxxxxxxxxxxxxxx" "xxxxxx xxx x" "xxxxx xx xx x" "xxxxx xx xx x" "xxx xx xxx" "xx xx xx xx" "xx xx x xxxxxx x" "xx x x xxx x" "xxxx xxxx xx " "xx xxxx xx "))) (make-problem "Hattori 119" (quote ((12) (1 11) (3 3 3) (1 1 1 1) (1 1 1) (3 1 3 1 3 3) (3 1 1 5 2 1) (2 13 5) (7 5 3 4) (11 3 5) (3 2 2 3 7) (5 3 9) (8 1 1 4) (4 5 5 3) (3 3 2 1 2) (3 2 1 2) (4 3 2 2) (5 4) (9 1 2 3) (2 7 12) (1 6 6 5) (2 2 3 5 1) (3 2 2 2 2 2) (7 2 6 2) (8 3 7) (4 7 9) (3 3 2 4 5) (2 2 1 3 5) (2 3 2 3 4) (8 4 1))) (quote ((3 6 6) (1 1 7 9) (3 2 3 1 2 7) (2 2 4 1 3 2) (6 3 7 2 1) (3 14 3 1) (4 1 7 9 2) (2 1 1 1 2 5 6) (4 1 7 4 5) (3 8 3 2 1) (6 3 3 4 2 2) (2 2 5 10) (1 3 2 4 6) (3 3 1 3 1) (7 2 5) (5 2 6) (3 1 2 2 7) (7 9) (3 1 10) (7 1 1 1 3) (5 1 11) (7 13) (9 2 3 4) (1 1 6 2 2 3) (3 4 5 4))) (quote ("xxx xxxxxx xxxxxx " "x x xxxxxxx xxxxxxxxx " "xxx xx xxx x xx xxxxxxx " "xx xx xxxx x xxx xx" "xxxxxx xxx xxxxxxx xx x" "xxx xxxxxxxxxxxxxx xxx x" "xxxx x xxxxxxx xxxxxxxxx xx" "xx x x x xx xxxxx xxxxxx" "xxxx x xxxxxxx xxxx xxxxx" "xxx xxxxxxxx xxx xx x" "xxxxxx xxx xxx xxxx xx xx" "xx xx xxxxx xxxxxxxxxx " " x xxx xx xxxx xxxxxx " " xxx xxx x xxx x" " xxxxxxx xx xxxxx" " xxxxx xx xxxxxx" " xxx x xx xx xxxxxxx" " xxxxxxx xxxxxxxxx " " xxx x xxxxxxxxxx " " xxxxxxx x x x xxx " " xxxxx x xxxxxxxxxxx " " xxxxxxx xxxxxxxxxxxxx " " xxxxxxxxx xx xxx xxxx " " x x xxxxxx xx xx xxx " " xxx xxxx xxxxx xxxx"))) (make-problem "Hattori 120" (quote ((2) (2 2 3) (3 2 4 3 3) (3 2 6 6) (3 4 4 4 1) (9 5 1) (17 1) (17 1) (16 2) (18) (16) (13) (11) (9) (8) (2 3) (3 2 2) (1 3 1) (1 2 2) (1 3 3) (2 14) (15) (12) (10) (8))) (quote ((5) (1 2) (1 2 1) (2 5) (4 7) (5 2 5) (5 2 5) (5 1 5) (7 1 5) (9 1 5) (11 1 5) (2 11 5) (1 1 10 5) (3 10 5) (5 8 1 5) (5 8 2 5) (3 8 5) (1 1 9) (2 9) (13) (11) (9) (3 2) (2 3) (8))) (quote (" xxxxx " " x xx " " x xx x " " xx xxxxx " " xxxx xxxxxxx " " xxxxx xx xxxxx " " xxxxx xx xxxxx" " xxxxx x xxxxx" " xxxxxxx x xxxxx" " xxxxxxxxx x xxxxx" " xxxxxxxxxxx x xxxxx" " xx xxxxxxxxxxx xxxxx" " x x xxxxxxxxxx xxxxx" " xxx xxxxxxxxxx xxxxx" "xxxxx xxxxxxxx x xxxxx " "xxxxx xxxxxxxx xx xxxxx " " xxx xxxxxxxx xxxxx " " x x xxxxxxxxx " " xx xxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxx " " xxxxxxxxx " " xxx xx " " xx xxx " " xxxxxxxx ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k15x15 b/pkgs/games/paint-by-numbers/problems/k15x15 deleted file mode 100644 index f7a5c8d0d9..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k15x15 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 15x15") (define problems (list (make-problem "19980519-KHA (1)" (quote ((2 2) (4 4) (6 6) (15) (1 2 1 2 1 1) (2 2 1 1 1) (2 3 2 1 1) (1 3 3 1) (13) (11) (9) (7) (5) (3) (1))) (quote ((5) (2 2 1) (3 2) (4 2 3) (12) (4 7) (2 7) (2 7) (2 7) (4 7) (12) (4 3) (6 2) (2 1) (5))) (quote (" xxxxx " " xx xx x " " xxx xx " "xxxx xx xxx " "xxxxxxxxxxxx " " xxxx xxxxxxx " " xx xxxxxxx " " xx xxxxxxx" " xx xxxxxxx " " xxxx xxxxxxx " "xxxxxxxxxxxx " "xxxx xxx " " xxxxxx xx " " xx x " " xxxxx "))) (make-problem "19980805-BER (2)" (quote ((1 13) (1 1 1) (1 1 9 1) (1 1 1) (1 3 9) (1 1 1 1) (1 1 11) (1 1) (1 11 1) (1 1 3) (1 1 7 1) (1 1 1 1 1) (1 1 5 1 3) (1 1) (14))) (quote ((15) (1) (3 3 5 1) (1 1 1 1) (1 5 1 3 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 5) (1 1 1 1 1 1) (1 1 1 1 2 1 1) (1 1 1 1 1 1) (13))) (quote ("xxxxxxxxxxxxxxx" " x" "xxx xxx xxxxx x" "x x x x" "x xxxxx x xxx x" "x x x x x x x" "x x x x x x x x" "x x x x x x x x" "x x x x x x x x" "x x x x x x x" "x x x x x xxxxx" "x x x x x x" "x x x x xx x x" "x x x x x x" "xxxxxxxxxxxxx "))) (make-problem "19980828-PAU (3)" (quote ((4 4) (6 6) (1 1 1 1) (3 3) (4 5 4) (1 1 1 1) (1 1 1) (1) (3) (3) (3 5 3) (2 2) (3 3) (9) (7))) (quote ((1) (2 1 1) (2 1 3) (2 3 4) (2 1 1 3) (2 3 1 2) (2 1 3 2) (1 5 2) (2 1 3 2) (2 3 1 2) (2 1 1 3) (2 3 4) (2 1 3) (2 1 1) (1))) (quote (" x " " xx x x " "xx x xxx " "xx xxx xxxx " "xx x x xxx" "xx xxx x xx" " xx x xxx xx" " x xxxxx xx" " xx x xxx xx" "xx xxx x xx" "xx x x xxx" "xx xxx xxxx " "xx x xxx " " xx x x " " x "))) (make-problem "19990211bJAM (4)" (quote ((3 2) (2 2 2) (2 4) (2 3) (2 5 2) (2 1 1 1 2) (3 5 3) (1 1 1 1 1) (1 5 1) (1 1) (1 4 1) (1 1 1 1) (1 1 1 1) (1 1 1 1) (1 1 1 1))) (quote ((1) (2) (11) (2) (2 5) (2 5 1) (2 1 1 1 1) (1 5 5) (2 1 1 1) (2 5) (2) (5) (15) (2) (1))) (quote (" x " " xx " " xxxxxxxxxxx" " xx " " xx xxxxx" " xx xxxxx x " "xx x x x x " "x xxxxx xxxxx" "xx x x x " " xx xxxxx " " xx " "xxxxx " "xxxxxxxxxxxxxxx" " xx " " x "))) (make-problem "19990221bFRA (5)" (quote ((1) (1 1) (2 2) (3 3) (4 4) (5 5) (6 6) (7 7) (1) (1) (15) (13) (11) (9) (9))) (quote ((1 1) (2 2) (3 3) (4 5) (5 5) (6 5) (7 5) (1 7) (7 5) (6 5) (5 5) (4 5) (3 3) (2 2) (1 1))) (quote (" x x " " xx xx " " xxx xxx " " xxxx xxxxx" " xxxxx xxxxx" " xxxxxx xxxxx" " xxxxxxx xxxxx" "x xxxxxxx" " xxxxxxx xxxxx" " xxxxxx xxxxx" " xxxxx xxxxx" " xxxx xxxxx" " xxx xxx " " xx xx " " x x "))) (make-problem "19990421aMIJ (6)" (quote ((3) (3) (2) (4 4) (1 1 2) (1 1) (13) (1 1) (12) (1 1) (14) (1 1) (1 3 1) (4 3) ())) (quote (() (7) (1 1 1 1 1) (1 1 1 1 1) (1 1 1 1 1) (1 1 1 1 1) (1 1 1 1 2) (2 1 1 1 1 1) (4 1 1 1 1) (2 1 1 1 1 1) (1 1 1 1 1 1) (1 1 1 1 1) (1 3 1 1) (1 1 3) (1 1))) (quote (" " " xxxxxxx " " x x x x x " " x x x x x " " x x x x x " " x x x x x " " x x x x xx " " xx x x x x x " "xxxx x x x x " "xx x x x x x " "x x x x x x " " x x x x x " " x xxx x x " " x x xxx " " x x "))) (make-problem "19990527cDRA (7)" (quote ((3 4) (1 2) (1 6 1) (1 11) (5 4) (4 2 4) (3 3 3) (1 1 3 1 2) (1 2 2 1) (1 1 2 2) (3 7 3) (4 5 4) (5 5) (15) (15))) (quote ((15) (1 3 5) (1 4 1 5) (3 2 4) (2 2 3) (2 2 2) (2 3 2 2) (2 3 2 2) (2 2 2 2) (2 2 2) (3 2 3) (1 3 3 4) (1 4 1 5) (2 4 6) (3 10))) (quote ("xxxxxxxxxxxxxxx" "x xxx xxxxx" "x xxxx x xxxxx" " xxx xx xxxx" " xx xx xxx" " xx xx xx" " xx xxx xx xx" " xx xxx xx xx" " xx xx xx xx" " xx xx xx" " xxx xx xxx" "x xxx xxx xxxx" "x xxxx x xxxxx" "xx xxxx xxxxxx" "xxx xxxxxxxxxx"))) (make-problem "19990723aDAH (8)" (quote (() () (6 6) (1 3 1) (1 1) (3 3) (2 2 2 2) (9) (9) (1 5 1) (1 3 1) (1 1 1) (1 1) (9) ())) (quote ((4) (1 1) (1 2) (1 8) (1 2 1) (1 4 1) (1 5 1) (1 5 1) (1 5 1) (1 4 1) (1 2 1) (1 8) (1 2) (1 1) (4))) (quote (" xxxx " " x x " " x xx " " x xxxxxxxx " " x xx x " " x xxxx x " " x xxxxx x " " x xxxxx x " " x xxxxx x " " x xxxx x " " x xx x " " x xxxxxxxx " " x xx " " x x " " xxxx "))) (make-problem "19990723bDAH (9)" (quote ((4 6) (2 4 2) (1 2 2) (1 1 2 1) (1 1 4 1) (1 1 1 2 1) (1 6 1) (1 1 2 2) (1 1 2 2) (1 1 1 2) (2 2 1 2) (1 1 1 1) (4 4) (1 1 1 1) (1 1 1 1))) (quote ((10) (2 5) (1 1) (1 1) (2 5) (10) (2 1) (2 1 7) (1 5 1) (1 2 2 1) (1 4 5) (1 2 2) (2 2) (2 2) (6))) (quote (" xxxxxxxxxx " "xx xxxxx" "x x " "x x " "xx xxxxx" " xxxxxxxxxx " " xx x " "xx x xxxxxxx" "x xxxxx x " "x xx xx x " "x xxxx xxxxx" "x xx xx " "xx xx " " xx xx " " xxxxxx "))) (make-problem "19990728-DAH (10)" (quote ((5 5) (3 5 3) (2 4 3 2) (1 4 2 1) (1 1 5 1 1) (3 5 2) (4 4 1) (5 6) (1 1 1 1) (1 1 1 1) (1 7 2 1) (1 8 1 1) (2 8 2) (3 5 3) (5 5))) (quote ((5 5) (3 5 3) (2 4 2 2) (1 1 3 3 1) (1 2 2 3 1) (4 1 4) (5 1 4) (1 4 5) (1 4 4) (2 5 3) (1 1 3 1 1 1) (1 2 1 1 1) (2 3 1 2 2) (3 5 3) (5 5))) (quote ("xxxxx xxxxx" "xxx xxxxx xxx" "xx xxxx xx xx" "x x xxx xxx x" "x xx xx xxx x" " xxxx x xxxx " " xxxxx x xxxx " " x xxxx xxxxx " " x xxxx xxxx " " xx xxxxx xxx " "x x xxx x x x" "x xx x x x" "xx xxx x xx xx" "xxx xxxxx xxx" "xxxxx xxxxx"))) (make-problem "19990917aMAT (11)" (quote ((2 3 2) (1 5 1) (2 1 2) (3 3) (1 1 1 1) (1 1 5 2 1) (1 3 4 1) (3 4) (2 2) (2 2) (2 2) (2 2) (11) (1 2 2 1) (3 3))) (quote (() (2 1) (1 1 1 1) (2 6 1 1) (1 2 9) (6 3) (2 1 1 1) (3 1 1) (2 1 1 1) (6 3) (1 2 9) (2 6 1 1) (3 1 1) (1 1 1) (2))) (quote (" " " xx x " " x x x x" "xx xxxxxx x x" "x xx xxxxxxxxx" " xxxxxx xxx " "xx x x x " "xxx x x " "xx x x x " " xxxxxx xxx " "x xx xxxxxxxxx" "xx xxxxxx x x" " xxx x x" " x x x " " xx "))) (make-problem "19990917bMAT (12)" (quote ((3 2) (4 2) (7 2) (1 11) (1 7) (1 1 4) (7 3) (2 1 2 3) (1 1 1 1 3) (7 3) (7 3) (3) (3) (5) (15))) (quote ((1 1) (1 1 1) (11 1) (3 2 2 1) (3 1 3 1) (3 2 2 1) (2 1 3 1) (2 2 1 1) (8 1) (2 1) (2 2) (3 2) (12) (15) (15))) (quote (" x x" "x x x" "xxxxxxxxxxx x" "xxx xx xx x" " xxx x xxx x" " xxx xx xx x" " xx x xxx x" " xx xx x x" " xxxxxxxx x" " xx x" " xx xx" " xxx xx" " xxxxxxxxxxxx" "xxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxx"))) (make-problem "19990917cMAT (13)" (quote ((1) (1 1) (11) (1 5 1) (1 7 1) (1 1) (1 1 5 1) (1 1) (1 1 5 1) (1 1) (1 1 5 1) (1 1) (1 1 5 1) (1 1) (11))) (quote (() () (13) (1 1) (1 1 1 1 1 1 1) (3 1) (4 1 1 1 1 1) (1 3 1 1 1 1 1) (4 1 1 1 1 1) (3 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1) (13) () ())) (quote (" " " " " xxxxxxxxxxxxx" " x x" " x x x x x x x" " xxx x" " xxxx x x x x x" "x xxx x x x x x" " xxxx x x x x x" " xxx x x x x x" " x x x x x x x" " x x" " xxxxxxxxxxxxx" " " " "))) (make-problem "19990917dMAT (14)" (quote ((9 3) (1 1 3) (1 1 3) (2 2 3) (3 3 5) (5 2 1 2) (5 1 1 1) (1 1 1 2 1) (1 1 1 1 1) (1 1 2 2) (1 1 1 5) (1 1 1 3) (1 3 1 3) (7 3) (9 3))) (quote ((1 1) (5 5) (1 4 2 2) (1 4 3) (1 2 1 5) (1 4 3) (1 4 2 2) (5 5) (1 5 1) (2 2) (5 1 5) (8 5) (5 5) (2 2) (5))) (quote ("x x" "xxxxx xxxxx" "x xxxx xx xx" "x xxxx xxx" "x xx x xxxxx" "x xxxx xxx" "x xxxx xx xx" "xxxxx xxxxx" "x xxxxx x" " xx xx " "xxxxx x xxxxx" "xxxxxxxx xxxxx" "xxxxx xxxxx" " xx xx " " xxxxx "))) (make-problem "19990917eMAT (15)" (quote ((3) (1 2) (2) (1) (2) (1) (5) (5 5) (7 5) (9 5) (1 1 5) (7 5) (1 1 3) (9 3) (7 3))) (quote ((2 2) (2 1 2) (3 1 2) (3 1 2) (3 1 2) (3 1 2) (1 3 1 2) (1 2 1 2) (1 2 2) (2) (2 6) (3 9) (11) (9) (6))) (quote (" xx xx " " xx x xx" " xxx x xx" " xxx x xx" " xxx x xx" " xxx x xx" " x xxx x xx" "x xx x xx" "x xx xx " "xx " " xx xxxxxx " " xxx xxxxxxxxx" " xxxxxxxxxxx" " xxxxxxxxx" " xxxxxx "))) (make-problem "19990918aMAT (16)" (quote ((5) (3) (9) (2 2) (2 3 2) (2 1 1 1 2) (2 2 2 2) (2 3 2) (2 2 1 2 2) (2 2 2 2) (2 3 2) (2 2 2 2) (2 2 2 2) (3 3) (13))) (quote (() (11) (12) (2 2) (1 1 1 1) (1 1 2 2 2 1) (3 1 2 3 1) (3 2 2 1 1) (3 1 2 3 1) (1 1 2 2 2 1) (1 1 1 1) (2 2) (12) (11) ())) (quote (" " " xxxxxxxxxxx" " xxxxxxxxxxxx" " xx xx" " x x x x" "x x xx xx xx x" "xxx x xx xxx x" "xxx xx xx x x" "xxx x xx xxx x" "x x xx xx xx x" " x x x x" " xx xx" " xxxxxxxxxxxx" " xxxxxxxxxxx" " "))) (make-problem "19990918bMAT (17)" (quote ((1 1) (5) (1 1 1 1 1) (2 5 1 1) (1 2 3 2 1) (2 3 3 1) (2 1 1 2) (4 4) (1 1) (4 4) (3 3 2) (2 2 2 2) (2 2 1) (3 1 1) (1))) (quote ((2 1) (2 2) (2 2 1 1) (2 1 2 1) (2 1 1 2) (3 5 2) (2 3 3) (4 1) (2 3 3) (3 5 2) (2 1 1 3) (3 1 2) (2 2) (4 3) ())) (quote (" xx x " " xx xx " " xx xx x x " " xx x xx x " " xx x x xx " " xxx xxxxx xx " "xx xxx xxx " " xxxx x " "xx xxx xxx " " xxx xxxxx xx " " xx x x xxx" " xxx x xx " " xx xx " " xxxx xxx " " "))) (make-problem "19990918cMAT (18)" (quote ((2 3) (2 3) (4) (2) (4) (15) (1 3 1 1) (1 5 1 1 1) (1 2 1 2 1 1) (1 3 3 1 1 1) (1 1 3 1 1 1) (1 1 1 1 1 1) (1 3 1 1) (15) (1 1))) (quote ((9) (1 2) (1 3 1) (1 1 3 1 1) (2 3 2 2) (2 5 1 2) (6 2 2) (4 3 1 1) (2 2 3 1) (1 1 1) (2 9) (1 1 1) (1 1 1 1 1 1) (1 2) (9))) (quote (" xxxxxxxxx " " x xx" " x xxx x " "x x xxx x x " "xx xxx xx xx " " xx xxxxx x xx " " xxxxxx xx xx " " xxxx xxx x x " " xx xx xxx x " " x x x " "xx xxxxxxxxx " "x x x " "x x x x x x " " x xx" " xxxxxxxxx "))) (make-problem "19990918dMAT (19)" (quote ((1) (3) (1) (1) (5) (9) (13) (15) (1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1) (3 1 3) (3 1 3) (3 1 3) (15))) (quote ((1 1) (9) (2 4) (10) (3 1) (4 1 1) (1 4 1) (15) (1 4 1) (4 1 1) (3 1) (10) (2 4) (9) (1 1))) (quote (" x x" " xxxxxxxxx" " xx xxxx" " xxxxxxxxxx" " xxx x" " xxxx x x" " x xxxx x" "xxxxxxxxxxxxxxx" " x xxxx x" " xxxx x x" " xxx x" " xxxxxxxxxx" " xx xxxx" " xxxxxxxxx" " x x"))) (make-problem "19990918eMAT (20)" (quote (() (3) (8) (4 1 2) (1 1 1 1) (2 2 6) (12) (1 8) (1 11) (1 13) (3 5 3) (1 1 2 2) (2 1 2 2) (5 4) (6))) (quote ((6) (3 3) (1 1 2 2) (1 4 1) (2 5 2) (13) (1 5 2) (2 6 1) (11 1) (2 10) (1 5 2) (2 2 2 1) (3 3 2) (5) (3))) (quote (" xxxxxx " " xxx xxx " " x x xx xx " " x xxxx x " " xx xxxxx xx" " xxxxxxxxxxxxx" " x xxxxx xx" " xx xxxxxx x" " xxxxxxxxxxx x" " xx xxxxxxxxxx" " x xxxxx xx " " xx xx xx x " " xxx xxx xx " " xxxxx " " xxx "))) (make-problem "19990918fMAT (21)" (quote ((1 1) (2 1 1 2) (2 1 1 2) (3 3 3) (4 3 4) (15) (15) (15) (4 3 4) (3 3 3) (2 1 2) (2 1 2) (1 1 1) (1 1 1) (1))) (quote ((3) (7) (11) (14) (5) (3) (9) (12) (9) (3) (5) (14) (11) (7) (3))) (quote (" xxx " " xxxxxxx " " xxxxxxxxxxx " "xxxxxxxxxxxxxx " " xxxxx " " xxx " " xxxxxxxxx " " xxxxxxxxxxxx" " xxxxxxxxx " " xxx " " xxxxx " "xxxxxxxxxxxxxx " " xxxxxxxxxxx " " xxxxxxx " " xxx "))) (make-problem "19990918gMAT (22)" (quote ((1 1) (1 2) (1 4) (1 5) (1 6) (8 2) (9) (10) (1 9) (1 10) (2 1 1 1) (1 1 1 1 1) (1 1 1 2 1) (2 1 1 1) (1))) (quote ((2) (1 1) (1 1) (7) (6) (5 3) (5) (15) (5) (6 1) (11) (7 2) (4 5) (4) (3))) (quote (" xx " " x x " " x x " " xxxxxxx " " xxxxxx " " xxxxx xxx " " xxxxx " "xxxxxxxxxxxxxxx" " xxxxx " " xxxxxx x " " xxxxxxxxxxx " "xxxxxxx xx " " xxxx xxxxx " " xxxx " " xxx "))) (make-problem "19990918hMAT (23)" (quote ((4) (6) (12 1) (12 1) (2 1 2 6) (6) (4) () (3) (2 2) (2 1 2) (1 13) (2 1 2 1 1) (2 2 2 2) (3))) (quote ((2 3) (3 2 2) (3 2 1 2) (2 1 3 1) (3 2 1 2) (2 5) (3 3) (3 1) (2 1) (5 1) (7 1 1) (7 3) (2 3 1) (2 3 3) (5 1 1))) (quote (" xx xxx " " xxx xx xx " " xxx xx x xx" " xx x xxx x" " xxx xx x xx" " xx xxxxx " " xxx xxx " " xxx x " " xx x " " xxxxx x " "xxxxxxx x x " "xxxxxxx xxx " "xx xxx x " "xx xxx xxx " " xxxxx x x "))) (make-problem "19990918iMAT (24)" (quote ((2 1) (1 2 1) (1 1 1) (1 1) (3) (7) (9) (2 8) (1 9) (1 9) (11) (11) (11) (9) (7))) (quote (() (6) (2 4) (2 7) (10) (11) (13) (1 11) (1 10) (1 10) (1 8) (1 6) (1) (2 1) (1))) (quote (" " " xxxxxx " " xx xxxx " " xx xxxxxxx" " xxxxxxxxxx" " xxxxxxxxxxx" " xxxxxxxxxxxxx" " x xxxxxxxxxxx" "x xxxxxxxxxx" "x xxxxxxxxxx" " x xxxxxxxx " " x xxxxxx " " x " "xx x " " x "))) (make-problem "19990918jMAT (25)" (quote ((3 3) (2 2 2 1) (1 3) (1) (1 4) (1 6) (1 9) (2 9) (2 10) (10 3) (13) (8 5) (10) (2 10) (1))) (quote ((3 3) (2 3 3) (2 4) (1 4) (2 5) (2 6) (12) (2 8) (2 9) (1 7 2) (2 8 1) (5 2 1) (8 1) (7 1) (6))) (quote (" xxx xxx" " xx xxx xxx " "xx xxxx " "x xxxx " "xx xxxxx " " xx xxxxxx " " xxxxxxxxxxxx " " xx xxxxxxxx " "xx xxxxxxxxx " "x xxxxxxx xx " "xx xxxxxxxx x " " xxxxx xx x " " xxxxxxxx x " " xxxxxxx x " " xxxxxx "))) (make-problem "19990918kMAT (26)" (quote ((1 1 2) (3 1 2) (1 3 1 2 2) (7 1 1) (3 1 1) (3 1 1) (1 2 2) (6 2 3) (2 6 1) (1 3) (1 4) (6) (2 3) (2 3) (3))) (quote ((3) (2 2 1) (1 1 4) (6 8) (11) (6 5) (1 2 4) (2 1 3) (2 2) (3 2) (2 2) (1 1) (2 2) (2 2) (5))) (quote (" xxx " " xx xx x" " x x xxxx" "xxxxxx xxxxxxxx" " xxxxxxxxxxx " "xxxxxx xxxxx " " x xx xxxx " " xx x xxx " " xx xx " " xxx xx " " xx xx " "x x " "xx xx " " xx xx " " xxxxx "))) (make-problem "19990918lMAT (27)" (quote ((5) (2 2) (2 5 2) (2 2 2 2) (4 1 4) (5 2 5) (1 1 3 1 1) (5 3 5) (1 2 2 1) (6 1 4) (4 2 5) (3 4 4) (11) (3 4) (5))) (quote ((5) (3 1 3) (4 1 4) (2 2 1 5) (1 8 2) (1 2 2 4) (1 1 1 3 1) (1 1 3 4 1) (1 1 4 4) (1 2 1 1 3) (1 3 2 4) (2 10) (4 1 4) (3 1 3) (5))) (quote (" xxxxx " " xxx x xxx " " xxxx x xxxx " " xx xx x xxxxx " " x xxxxxxxx xx " "x xx xx xxxx" "x x x xxx x" "x x xxx xxxx x" "x x xxxx xxxx" "x xx x x xxx" " x xxx xx xxxx " " xx xxxxxxxxxx " " xxxx x xxxx " " xxx x xxx " " xxxxx "))) (make-problem "19990918mMAT (28)" (quote ((15) (5 1) (4 3 5) (1 4 3 2) (3 2 1) (1 2 1 1 1) (1 4 3 2) (7 7) (1 6 6) (1 6 6) (2 7) (12) (1 2 5) (3 6 4) (15))) (quote ((1 2 4 3) (1 1 1 2) (1 1 1 3 3) (1 2 7 1) (2 2 6 2) (10 1 2) (10 1 2) (3 2 1 2) (2 5 2 2) (1 3 6 2) (1 2 7 1) (1 1 8) (1 1 1 8) (1 2 9) (2 12))) (quote ("x xx xxxx xxx" "x x x xx" "x x x xxx xxx" "x xx xxxxxxx x" "xx xx xxxxxx xx" "xxxxxxxxxx x xx" "xxxxxxxxxx x xx" "xxx xx x xx" "xx xxxxx xx xx" "x xxx xxxxxx xx" "x xx xxxxxxx x" "x x xxxxxxxx" "x x x xxxxxxxx" "x xx xxxxxxxxx" "xx xxxxxxxxxxxx"))) (make-problem "19990918nMAT (29)" (quote ((7) (1) (6) (7) (3 1) (3 1) (3 1) (8) (9) (8) (4 3) (2 3 2 2) (3 3 1 1 1) (1 1 1 1 1) (2 2))) (quote ((1 1) (1 1) (1 2) (1 1 1) (1 1 1) (1 2) (13) (11) (10) (2 4 2) (2 3 1 1) (8 1 1) (1 4 2) (5) (1 4))) (quote ("x x " "x x " "x xx " "x x x" "x x x" "x xx " "xxxxxxxxxxxxx " " xxxxxxxxxxx " " xxxxxxxxxx " " xx xxxx xx " " xx xxx x x" " xxxxxxxx x x" " x xxxx xx " " xxxxx " " x xxxx "))) (make-problem "19990918oMAT (30)" (quote ((2) (3) (1 1) (1 2 4) (1 1 2 1) (1 1 2 1) (1 1 2 2 1) (1 2 2 3) (2 8) (14) (4 5 2) (2 2 3 2 1) (1 1 1 1 1 1) (1 1 1 1 1) (2 2))) (quote ((1 2) (5 1 4) (2 2 3) (3 2 2) (7 1 1) (4 1 1) (2 2) (9) (11) (1 4) (1 3 2) (6 1 1) (3 1 1) (4 2) (1 2))) (quote (" x xx " "xxxxx x xxxx " "xx xx xxx " " xxx xx xx " " xxxxxxx x x" " xxxx x x" " xx xx " " xxxxxxxxx " " xxxxxxxxxxx " " x xxxx " " x xxx xx " " xxxxxx x x" " xxx x x" " xxxx xx " " x xx "))) (make-problem "19990920aMAT (31)" (quote ((4) (1 1) (1 1) (1 1) (3 1 1) (15) (1 9 1) (6 2 1) (5 3 5) (4 5 4) (4 5 4) (4 5 4) (5 3 5) (1 4 6) (15))) (quote ((10) (2 6 1) (11) (11) (4 3) (3 3 2) (2 5 1) (2 5 1) (2 5 1) (3 3 2) (9 3) (1 1 7) (1 1 7) (6 7) (10))) (quote (" xxxxxxxxxx" " xx xxxxxx x" " xxxxxxxxxxx" " xxxxxxxxxxx" " xxxx xxx" " xxx xxx xx" " xx xxxxx x" " xx xxxxx x" " xx xxxxx x" " xxx xxx xx" "xxxxxxxxx xxx" "x x xxxxxxx" "x x xxxxxxx" "xxxxxx xxxxxxx" " xxxxxxxxxx"))) (make-problem "19990920bMAT (32)" (quote ((2 1 1) (1 1 1 1) (3 1 1) (1 1 1 1) (1 1) (2 1 1 2) (3 3) (4 1 4) (13) (9) (1 1) (11) (11) (11) (9))) (quote ((1) (3) (1 3 4) (2 5 4) (1 4 2 4) (1 1 2 4) (1 1 2 4) (2 3 4) (2 1 2 4) (2 4) (4 2 4) (2 5 4) (3 4) (3) (1))) (quote (" x " " xxx " " x xxx xxxx " " xx xxxxx xxxx" "x xxxx xx xxxx" "x x xx xxxx" " x x xx xxxx" " xx xxx xxxx" "xx x xx xxxx" " xx xxxx" " xxxx xx xxxx" "xx xxxxx xxxx" " xxx xxxx " " xxx " " x "))) (make-problem "19990920cMAT (33)" (quote ((1) (5) (1 3) (5) (2 2) (5) (1 3) (5) (2 2) (5) (6 1) (8 1) (9 1) (10) (6 3))) (quote (() (2) (3) (3) (4) (5) (15) (1 3 7) (3 3 6) (14) (14) (1) (1 1) (1) ())) (quote (" " " xx" " xxx" " xxx" " xxxx" " xxxxx" "xxxxxxxxxxxxxxx" " x xxx xxxxxxx " " xxx xxx xxxxxx" " xxxxxxxxxxxxxx" " xxxxxxxxxxxxxx" " x " " x x " " x " " "))) (make-problem "19990920dMAT (34)" (quote ((2) (3) (4 1) (3 1 2) (1 3 1 1) (1 1 1 1) (1 1 1 1) (1 1 2 1 1) (2 1 1 1 2) (1 4 1) (3 3) (6) (2) (2) (6))) (quote (() (2) (3) (4 1) (1 1 2) (3 1 1 1) (4 3 1 1) (1 1 2 1 4) (1 1 1 4) (2 1 1 2 1) (1 4 1 1) (3 3) (6) () ())) (quote (" " " xx " " xxx " " xxxx x " " x x xx " " xxx x x x" " xxxx xxx x x" " x x xx x xxxx" "x x x xxxx" "xx x x xx x" " x xxxx x x" " xxx xxx " " xxxxxx " " " " "))) (make-problem "19990920eMAT (35)" (quote ((2) (1 1) (2 1) (15) (1 10) (1 2 2 1) (1 1 1 2 1 1) (1 4 2 1 1) (1 1 2 1 1) (1 1 1 1 1) (1 1 1 1) (1 1 2) (1 1) (1 1) (1 1))) (quote ((12) (1) (1 8) (1 2) (1 1 1) (5) (2) (8) (8 1) (1 2 1 1) (1 2 3 1) (1 2 1) (8) (2) (2))) (quote (" xxxxxxxxxxxx" " x " " x xxxxxxxx" " x xx " " x x x " " xxxxx " " xx " " xxxxxxxx " " xxxxxxxx x " "x xx x x " "x xx xxx x " " x xx x " " xxxxxxxx " " xx " " xx "))) (make-problem "19990923-MAT (36)" (quote ((5 5) (4 5 4) (3 1 1 3) (2 9 2) (1 1 5 1 1) (9) (2 2) (2 2) (2 2) (2 2) (1 2 2 1) (2 2 2 2) (3 2 2 3) (4 4) (5 5))) (quote ((5 5) (4 4) (3 1 3) (2 3 3 2) (1 2 3 2 1 1) (1 4 3) (1 3 1) (1 3 1) (1 3 3) (1 5 2 1) (1 2 2 3 1) (2 3 1 2) (3 3) (4 4) (5 5))) (quote ("xxxxx xxxxx" "xxxx xxxx" "xxx x xxx" "xx xxx xxx xx" "x xx xxx xx x x" " x xxxx xxx " " x xxx x " " x xxx x " " x xxx xxx " " x xxxxx xx x " "x xx xx xxx x" "xx xxx x xx" "xxx xxx" "xxxx xxxx" "xxxxx xxxxx"))) (make-problem "19990924aMAT (37)" (quote ((1) (1 1 1 1) (3 1 1 3) (1 1 1 5 1 1) (8 2 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 2 1 2 1) (1 1 1 1 1 1) (1 1 1 1 1 1) (1 1 9 1) (1 3 2 2 3))) (quote ((12) (1) (13) (2 1 1) (13) (1 1 1) (8 2) (1 2 2) (1 1 4) (1 2 2) (8 2) (1 1) (13) (2 1) (13))) (quote (" xxxxxxxxxxxx" " x " " xxxxxxxxxxxxx" " xx x x" " xxxxxxxxxxxxx" " x x x " " xxxxxxxx xx" " x xx xx" "x x xxxx " " x xx xx" " xxxxxxxx xx" " x x " " xxxxxxxxxxxxx" " xx x" " xxxxxxxxxxxxx"))) (make-problem "19990924bMAT (38)" (quote ((15) (6 7) (6 7) (9 2 1) (7 2 1 1) (5 1 3 1 1) (5 1 4 1) (2 1 1 4 1) (2 2 4 1) (2 3 3 2) (1 2 2 1 2) (3 2 2 2 1) (3 1 2 2 1) (3 1 1 7) (3 1 1 7))) (quote ((9 5) (10 4) (7 1 4) (7) (8 1 2) (5 4) (1 12) (1 1) (15) (3 11) (4 5 2) (5 3 5) (3 1 4) (3 2 2) (15))) (quote ("xxxxxxxxx xxxxx" "xxxxxxxxxx xxxx" "xxxxxxx x xxxx" "xxxxxxx " "xxxxxxxx x xx" "xxxxx xxxx " "x xxxxxxxxxxxx" "x x " "xxxxxxxxxxxxxxx" "xxx xxxxxxxxxxx" "xxxx xxxxx xx" "xxxxx xxx xxxxx" "xxx x xxxx" "xxx xx xx" "xxxxxxxxxxxxxxx"))) (make-problem "19990924cMAT (39)" (quote ((2) (2 2) (1 1 4) (1 2 1 2) (1 2 1 2) () (4 4) (7 1 2 1) (1 2 2 2 1) (1 4 1 2 1) (6 4) (6 1 1) (8 1 1) (8 1 1) (8 2 2))) (quote ((2 3) (2 1 5) (1 2 6) (1 2 9) (1 2 9) (1 2 6) (2 1 5) (2 3) (2) (1 1) (1 1 5) (5 5) (5 5) (1 1 5) (3 1))) (quote (" xx xxx" " xx x xxxxx" " x xx xxxxxx" " x xx xxxxxxxxx" " x xx xxxxxxxxx" " x xx xxxxxx" " xx x xxxxx" " xx xxx" " xx " " x x" " x x xxxxx" "xxxxx xxxxx " "xxxxx xxxxx " " x x xxxxx" " xxx x"))) (make-problem "19990924dMAT (40)" (quote ((3 3) (5 5) (7 7) (7 7) (7 7) (5 5) (3 3) (11) (6 1 2 2) (13) (7 5) (10 2) (1 1 1) (1 1 1) (1 1 1))) (quote ((3) (5 2) (12) (12) (12 1) (5 7) (3 5) (1 6) (3 5) (5 1 1 3) (12 1) (12) (7 2) (5 4) (3 4))) (quote (" xxx " " xxxxx xx " "xxxxxxxxxxxx " "xxxxxxxxxxxx " "xxxxxxxxxxxx x" " xxxxx xxxxxxx " " xxx xxxxx " " x xxxxxx" " xxx xxxxx " " xxxxx x x xxx " "xxxxxxxxxxxx x" "xxxxxxxxxxxx " "xxxxxxx xx " " xxxxx xxxx " " xxx xxxx "))) (make-problem "19990924eMAT (41)" (quote ((1 10) (8) (2 2 4) (1 1 4 3) (7 3) (1 6 3) (1 8 2) (2 9 2) (3 8 2) (4 7 1) (6 6 1) (7 3 1) (9 1 2) (10 2) (12 1))) (quote ((1 10) (8) (2 7) (1 1 6) (2 3 5) (1 5 5) (1 6 4) (2 8 3) (11 3) (12 2) (2 10 1) (3 6 1) (6 2 2) (9 2) (12 1))) (quote ("x xxxxxxxxxx" " xxxxxxxx" " xx xxxxxxx" " x x xxxxxx" " xx xxx xxxxx" "x xxxxx xxxxx" "x xxxxxx xxxx" "xx xxxxxxxx xxx" "xxxxxxxxxxx xxx" "xxxxxxxxxxxx xx" "xx xxxxxxxxxx x" "xxx xxxxxx x" "xxxxxx xx xx " "xxxxxxxxx xx " "xxxxxxxxxxxx x"))) (make-problem "19990925-MAT (42)" (quote ((9 4) (9 1 2) (10 2 1) (10 1 1) (6 1) (5 1 4) (4 1 4) (4 1 4) (4 4) (4 5) (2 6) (2 10) (1 1 10) (1 2 10) (2 11))) (quote ((11 2) (11 1 1) (10 1 1) (10 3) (6 1) (5 2 4) (4 1 4) (4 4) (4 4) (2 5) (1 6) (1 2 10) (1 1 11) (2 10) (4 10))) (quote ("xxxxxxxxxxx xx" "xxxxxxxxxxx x x" "xxxxxxxxxx x x " "xxxxxxxxxx xxx " "xxxxxx x" "xxxxx xx xxxx" "xxxx x xxxx" "xxxx xxxx" "xxxx xxxx" " xx xxxxx" " x xxxxxx" "x xx xxxxxxxxxx" "x x xxxxxxxxxxx" "xx xxxxxxxxxx" "xxxx xxxxxxxxxx"))) (make-problem "19990927aMAT (43)" (quote ((12) (12) (2 7) (2 5) (2 1) (2 7) (2 1 1 4) (2 1 1 2) (2 1 1 1 2) (2 1 1 2) (2 9 2) (2 9 2) (2 7) (2 5) (12))) (quote ((15) (15) (2 1) (2 1 3 1) (3 2 1 3 1) (4 1 1 5) (4 1 5) (7 1 5) (4 1 5) (4 3 5) (3 1 1 3 1) (2 1 3 1) (2) (5) (4))) (quote ("xxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxx" "xx x" "xx x xxx x" "xxx xx x xxx x" "xxxx x x xxxxx" "xxxx x xxxxx" "xxxxxxx x xxxxx" "xxxx x xxxxx" "xxxx xxx xxxxx" "xxx x x xxx x" "xx x xxx x" " xx " " xxxxx " " xxxx "))) (make-problem "19990927bMAT (44)" (quote (() (2) (1 2) (2 2) (6 3) (3 3 1) (4 4 2) (15) (1 7 1) (3 5 3) (2 2 3 2 2) (1 1 1 3 1 1 1) (2 2 2 2) (3 3) ())) (quote ((2 2 3) (5 2 2) (4 1 1 1) (4 2 2) (1 3 3) (1 1 3) (1 5) (2 6) (2 7) (7) (5 3) (1 1 2 2) (3 1 1 1) (2 2 2) (2 3))) (quote (" xx xx xxx " " xxxxx xx xx " " xxxx x x x " " xxxx xx xx " " x xxx xxx " " x x xxx " " x xxxxx " " xx xxxxxx " " xx xxxxxxx " " xxxxxxx " " xxxxx xxx " " x x xx xx " " xxx x x x " " xx xx xx " " xx xxx "))) (make-problem "19990927cMAT (45)" (quote (() (10) (2 1) (1 1) (1 1) (1 1) (2 2) (2 3 2) (13) (1 3 1) (13) (1 1 1 1 1 1 1 1) (2 1 1 1 1 1 2) (1 1 1 1 1 1 1 1) (15))) (quote ((4) (5 1 1) (5 2 2) (1 1 1 1 1) (1 1 2 2) (2 1 1 1 1) (1 5 2) (1 4 1 1) (1 5 2) (1 1 1 1 1) (1 1 2 2) (1 1 1 1 1) (1 5 2 2) (1 1 5 1 1) (2 4))) (quote (" xxxx" " xxxxx x x" " xxxxx xx xx" " x x x x x" " x x xx xx" " xx x x x x" " x xxxxx xx" " x xxxx x x" " x xxxxx xx" " x x x x x" " x x xx xx" " x x x x x" " x xxxxx xx xx" " x x xxxxx x x" " xx xxxx"))) (make-problem "19990927dMAT (46)" (quote ((3) (2 2) (1 1) (1 1) (1 2) (3 3) (2 2 2) (1 2 6) (1 10) (2 2 2) (4 2) (2 2) (2) (2) (1))) (quote ((4 1) (2 3) (1 1) (1 1) (1 2) (4) (3 2) (2 3 6) (1 10) (2 2 2) (4 2) (2) (2) (2) (1))) (quote (" xxxx x " " xx xxx " " x x " " x x " " x xx " " xxxx " " xxx xx " "xx xxx xxxxxx " "x xxxxxxxxxx" "xx xx xx " " xxxx xx " " xx " " xx " " xx " " x "))) (make-problem "19990930-TPV (47)" (quote (() (13) (1 11) (13) (13) (13) (13) (13) (13) (2 4) (2 3 4) (2 3 4) (2 3 4) (1 3 4) ())) (quote (() (12) (1 11) (8) (8 4) (8 4) (8 4) (8) (8) (8) (13) (13) (13) (13) ())) (quote (" " " xxxxxxxxxxxx " " x xxxxxxxxxxx " " xxxxxxxx " " xxxxxxxx xxxx " " xxxxxxxx xxxx " " xxxxxxxx xxxx " " xxxxxxxx " " xxxxxxxx " " xxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxx " " "))) (make-problem "19991001aMAT (48)" (quote ((2) (4) (4 2) (2 5) (7) (2 4) (4) (6) (1 5) (5) (5 1) (6 2) (2 4 1) (3 4 2) (2 2 3))) (quote ((2) (2 1) (1 2) (4 1 1) (2 2 1 2) (6 1 2) (13) (9 1) (11) (8) (6) (4) (1) (2 2) (3))) (quote (" xx " " xx x " " x xx " " xxxx x x" "xx xx x xx" "xxxxxx x xx " " xxxxxxxxxxxxx " " xxxxxxxxx x" " xxxxxxxxxxx" " xxxxxxxx " " xxxxxx " " xxxx" " x" " xx xx" " xxx "))) (make-problem "19991001bMAT (49)" (quote ((2) (1 2) (1 1 2) (1 4) (1 3) (13) (3 11) (2 8 1) (3 7 2) (13) (3 2) (3 2) (3 2) (3 2) (2 1))) (quote ((3) (5) (6 3) (1 3) (2 5) (5 3) (5 3) (5 2) (2 5) (1 7) (11 1) (7 6) (3 1 1 1) (2 2) (3))) (quote (" xxx " " xxxxx " " xxxxxx xxx " " x xxx " " xx xxxxx " " xxxxx xxx " " xxxxx xxx" " xxxxx xx" " xx xxxxx " "x xxxxxxx " "xxxxxxxxxxx x " " xxxxxxx xxxxxx" " xxx x x x " " xx xx " " xxx "))) (make-problem "19991001cMAT (50)" (quote ((3) (3) (3) (3) (9) (5 3) (3) (1 1 1) (1 1 1 1) (1 1 1 1 1) (1 1 1 1) (1 1 1 1 1) (1 1) (1 1) (2 2))) (quote (() (1) (1) (2 1 1) (1 1 1 1) (2 1 1 4) (3 3 1 1) (3 4 1 1) (3 3 1 1) (2 1 1 4) (1 1 1 1) (2 1 1) (1) (1) ())) (quote (" " " x " " x " " xx x x " " x x x x" " xx x x xxxx" "xxx xxx x x " "xxx xxxx x x " "xxx xxx x x " " xx x x xxxx" " x x x x" " xx x x " " x " " x " " "))) (make-problem "19991001dMAT (51)" (quote ((1 3) (2 4) (1 2) (2 3) (1 4) (2 4) (4 4) (1 5) (2 1 2) (3 1 1 1) (1 1 1 1 1 1) (1 1 2) (3 2 1) (2 2 1) (1 3))) (quote ((4) (2 4 3) (3 1 2 2) (4) (2 1) () (1) () (5) (1 2) (4 1 1 2) (7 2 1) (9 3) (2 8) (2))) (quote (" xxxx " "xx xxxx xxx" " xxx x xx xx " " xxxx " " xx x " " " " x " " " " xxxxx " " x xx " " xxxx x x xx" " xxxxxxx xx x" "xxxxxxxxx xxx" "xx xxxxxxxx " "xx "))) (make-problem "19991010bTPV (52)" (quote ((1) (1) (2 1) (1 4) (2 3 2 1) (6 6) (14) (12) (12) (11) (3 2) (3 2) (5) (3) (2 2))) (quote ((2 3) (6) (6) (8) (9) (6 2) (5 1 1) (1 4 3) (1 1 4 3) (1 1 7 2) (9 1) (7) (1 2) (3) (1))) (quote (" xx xxx " " xxxxxx " " xxxxxx " " xxxxxxxx " " xxxxxxxxx " " xxxxxx xx " " xxxxx x x" " x xxxx xxx" "x x xxxx xxx " " x x xxxxxxx xx" " xxxxxxxxx x" " xxxxxxx " " x xx " " xxx " " x "))) (make-problem "19991012-PIX (53)" (quote ((2) (2 2) (6 7) (3 1 1 4) (4 1 3) (11 3) (1 6 2) (2 2 3) (2 2 2) (2 2 2) (1 1 1) (2 2 2) (15) (15) (15))) (quote ((2 4 3) (5 1 3) (5 3) (5 3) (1 5 4) (2 10) (2 3) (2 3) (2 1 3) (1 1 4) (1 2 7) (4 3 3) (8 3) (8 4) (4 7))) (quote (" xx xxxx xxx" " xxxxx x xxx" " xxxxx xxx" " xxxxx xxx" " x xxxxx xxxx" " xx xxxxxxxxxx" " xx xxx" " xx xxx" " xx x xxx" " x x xxxx" " x xx xxxxxxx" "xxxx xxx xxx" "xxxxxxxx xxx" " xxxxxxxx xxxx" " xxxx xxxxxxx"))) (make-problem "19991112-SHE (54)" (quote ((9) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (9) (11) (7 1) (11) (1) (9) (2 2 2 2) (13))) (quote (() (1) (3 2) (11 3) (1 4 1 1) (1 4 3) (1 4 3) (1 4 1 1) (1 4 3) (1 2 1 3) (1 2 3 1) (9 1 3) (3 2) (1) ())) (quote (" " " x" " xxx xx" "xxxxxxxxxxx xxx" "x xxxx x x" "x xxxx xxx" "x xxxx xxx" "x xxxx x x" "x xxxx xxx" "x xx x xxx" "x xx xxx x" "xxxxxxxxx x xxx" " xxx xx" " x" " ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k15x20 b/pkgs/games/paint-by-numbers/problems/k15x20 deleted file mode 100644 index 62fe5265e4..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k15x20 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 15x20") (define problems (list (make-problem "19990127aLLO (1)" (quote ((6 2) (1 1 6) (1 1 2 2) (2 2 1 1) (1 2 1) (6 1 4 1) (1 1 1 1 1) (1 1 1 1) (3 1 1 1 1 1) (1 1 1 1) (5 1 1 1 1) (1 1 1 1 1 1) (3 1 1 1 1) (1 1 1 1) (1 1 1 1 1 1) (6 1 1 1) (1 1 1 1 1) (1 2 2 1) (5 4 1) (1 1 2 1))) (quote ((4 2 1 1 3 2) (1 1 1 1 1 1 1) (1 1 1 3 1 1) (1 1 1 1 1 3) (1 1 1 1 3 1 1) (4 1 3) () (16) (2 2) (1 10 2) (2 2 2) (2 2 2) (1 13) (2) (18))) (quote ("xxxx xx x x xxx xx" "x x x x x x x " "x x x xxx x x " "x x x x x xxx" "x x x x xxx x x " "xxxx x xxx " " " " xxxxxxxxxxxxxxxx " " xx xx " " x xxxxxxxxxx xx" "xx xx xx" "xx xx xx " " x xxxxxxxxxxxxx " " xx " " xxxxxxxxxxxxxxxxxx"))) (make-problem "19990127bLLO (2)" (quote ((3) (5) (7) (1 7) (2 4) (7) (5) (5) (5) (8) (6 2) (2 3 1 1) (2 2 2) (8) (5) (5) (5) (7) (7) (5))) (quote ((1) (3) (2 2) (2 3 1) (1 2 3 1 2) (3 15) (4 6 8) (4 5 1 7) (11 8) (19) (4 2) (2) () () ())) (quote (" x " " xxx " " xx xx " " xx xxx x " " x xx xxx x xx " " xxx xxxxxxxxxxxxxxx" "xxxx xxxxxx xxxxxxxx" "xxxx xxxxx x xxxxxxx" "xxxxxxxxxxx xxxxxxxx" " xxxxxxxxxxxxxxxxxxx" " xxxx xx " " xx " " " " " " "))) (make-problem "19990421bMIJ (3)" (quote (() (1 1 1) (2 2) (1 1 1) (2 1) (1 1) (1 1) (1) (1) (1 1 1 1) (3 1 3) (3 4) (1 3) (1 2) (1 1 1) (2 1 1) (2 1) (1 1) (15) (15))) (quote ((2) (1 2) (3 1 2) (10) (3 1 2) (5 1 2) (1 1 1 2) (1 1 13) (1 1 3 2) (5 3 2) (2 2) (2 2) (2) (2) (2))) (quote (" xx" " x xx" " xxx x xx" " xxxxxxxxxx" " xxx x xx" " xxxxx x xx" " x x x xx" " x x xxxxxxxxxxxxx" " x x xxx xx" " xxxxx xxx xx" " xx xx" " xx xx" " xx" " xx" " xx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k15x25 b/pkgs/games/paint-by-numbers/problems/k15x25 deleted file mode 100644 index 47002fcf84..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k15x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 15x25") (define problems (list (make-problem "19990804aVAC (1)" (quote ((3) (4) (4 4) (7 3) (7 3) (2 2 2) (1 2) (4 2) (7) (8) (2 1 3) (1 2) (2 2) (2 2) (1 1 1 2) (1 1 1 2) (1 1 1 1 2) (6 2 1) (1 1 1 4) (1 3 1 4) (1 1 3 1) (1 6 2) (1 4 2) (1 2 2) (1 2))) (quote ((2 5) (3 1 1) (4 6 1 1) (3 4 3 1 1) (3 2 1 1 2 1) (4 2 6 3) (7 3) (4 3 1) (3 3 3 1) (2 3 1 1) (3 3 2) (5 14 2) (7 10 1) (4 3) (3))) (quote (" xx xxxxx " " xxx x x " " xxxx xxxxxx x x " " xxx xxxx xxx x x " " xxx xx x x xx x" " xxxx xx xxxxxx xxx " " xxxxxxx xxx " " xxxx xxx x" " xxx xxx xxx x" "xx xxx x x " "xxx xxx xx " "xxxxx xxxxxxxxxxxxxx xx " " xxxxxxx xxxxxxxxxx x " " xxxx xxx " " xxx ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k20x15 b/pkgs/games/paint-by-numbers/problems/k20x15 deleted file mode 100644 index 4f19653b0e..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k20x15 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 20x15") (define problems (list (make-problem "19990524-KHO (1)" (quote ((1) (2 2 1) (1 1 2) (3 1) (5 2) (3 3 1) (8 1) (19) (1 14) (1 13) (13) (2 1 1 3 3) (4 1 1 2 2) (4 1 1 1 1) (2 1 1 2 2))) (quote ((2) (3 1 4) (1 4 4) (1 4 2) (3 2) (6 1) (12) (1 7 1) (1 8) (4) (4) (4) (5) (6 1) (8) (4) (6 1) (3 8) (3 5) (4))) (quote (" xx " " xxx x xxxx" " x xxxx xxxx" " x xxxx xx " " xxx xx " " xxxxxx x" " xxxxxxxxxxxx " " x xxxxxxx x" " x xxxxxxxx " " xxxx " " xxxx " " xxxx " " xxxxx " " xxxxxx x" " xxxxxxxx" " xxxx " " xxxxxx x" "xxx xxxxxxxx" " xxx xxxxx " " xxxx ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k20x20 b/pkgs/games/paint-by-numbers/problems/k20x20 deleted file mode 100644 index 00210e9b32..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k20x20 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 20x20") (define problems (list (make-problem "19980407-KVL (1)" (quote ((10 8) (9 6) (5 5 5) (6 7 4) (6 9 3) (4 2 2 1 1 3) (5 3 2 1 1 3) (5 2 2 1 2 2) (4 2 2 1 2 2) (5 3 7 2) (5 1 2 1 3) (2 1 1 7 3) (3 1 6 4) (3 1 8 3) (2 6 5 2) (3 4 3 2) () (2 3 3 3 3 1) (2 3 3 3 3 1) ())) (quote ((16 2) (16 2) (11 2 1) (12 1 2) (5 2 2 2 2) (2 2 5 2) (2 5 2) (2 6 2 2) (2 4 2 2 2) (1 3 4 2) (8 3) (8 4 2) (1 3 1 5 2) (1 14 2) (2 2 1 5) (3 6 1 2 2) (4 3 1 2) (7 4 2) (16) (16 2))) (quote ("xxxxxxxxxxxxxxxx xx " "xxxxxxxxxxxxxxxx xx " "xxxxxxxxxxx xx x " "xxxxxxxxxxxx x xx " "xxxxx xx xx xx xx " "xx xx xxxxx xx " "xx xxxxx xx " "xx xxxxxx xx xx " "xx xxxx xx xx xx " "x xxx xxxx xx " " xxxxxxxx xxx " " xxxxxxxx xxxx xx " "x xxx x xxxxx xx " "x xxxxxxxxxxxxxx xx " "xx xx x xxxxx " "xxx xxxxxx x xx xx " "xxxx xxx x xx " "xxxxxxx xxxx xx " "xxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxx xx "))) (make-problem "19980501aGOS (2)" (quote ((7 7) (5 5) (3 3) (2 2) (2 2) (1 2 2 1) (1 4 4 1) (2 1 2 1) (2 2) () (2 2) (4 4) (1 1 4 1 1) (1 2 1 1 2 1) (1 3 3 1) (2 4 2) (2 2) (3 3) (5 5) (7 7))) (quote ((7 7) (5 5) (3 3) (2 1 2) (2 3 2) (1 2 1 1 1) (1 4 4 1) (2 1 1 1) (2 4) (1 1) (1 1) (2 4) (4 1 1) (1 2 1 4 1) (1 2 1 1 1) (2 3 2) (2 1 2) (3 3) (5 5) (7 7))) (quote ("xxxxxxx xxxxxxx" "xxxxx xxxxx" "xxx xxx" "xx x xx" "xx xxx xx" "x xx x x x" "x xxxx xxxx x" " xx x x x " " xx xxxx " " x x " " x x " " xx xxxx " " xxxx x x " "x xx x xxxx x" "x xx x x x" "xx xxx xx" "xx x xx" "xxx xxx" "xxxxx xxxxx" "xxxxxxx xxxxxxx"))) (make-problem "19980608-JEN (3)" (quote ((3 2 2 1) (1 2 2 2) (1 1) (1 1) (1 2 1) (1 2 1 3) (1 1 3 1 1) (1 1 2 1 1) (1 2 2 3) (1 1 1) (1 1 3) (2 1 3) (5 1 3) (1 5 1 3) (3 4 4) (4 1 4) (5 6) (7) (5) (4))) (quote ((15) (1 2 1) (2 2 1 2) (1 1 1 1 1) (1 1 1 2 1) (1 1 1 2) (1 1 1 1) (1 3 1 1) (1 1 2 2 1) (1 1 1 1 2) (1 3 1 3) (6 12) (1 1 4) (3 5) (5) (8) (8) (5) () ())) (quote ("xxxxxxxxxxxxxxx " "x xx x " "xx xx x xx " " x x x x x " "x x x xx x " "x x x xx " " x x x x " " x xxx x x " "x x xx xx x " "x x x x xx " " x xxx x xxx" "xxxxxx xxxxxxxxxxxx" " x x xxxx" " xxx xxxxx" " xxxxx " " xxxxxxxx " " xxxxxxxx " " xxxxx " " " " "))) (make-problem "19980907-KEV (4)" (quote (() (7 2 3) (8 2 4) (2 2 4 1 1) (2 2 4 4) (2 2 1 1 3) (2 2 4 1 2) (5 2 1 1 1 2) (4 5 3 2) () () (1 1 2 3 2) (1 1 2 4 3) (1 1 4 1 1 2) (1 1 4 4 2) (1 1 1 1 1 3 2) (1 1 1 4 1 2 2) (5 1 1 1 6) (3 2 3 5) ())) (quote ((2 7) (2 2 2) (4 2 4) (2 4 2) (2 2 7) (2 1) (8 6) (8 4 1) (2 1 4 1) (2 1 6) (6 1) (4 1 8) (4 1 2 2) (6 2 3) (1 3 3) (8 2) (2 2 2 2) (2 3 4 2) (3 3 2 4) (2 2 2))) (quote (" xx xxxxxxx " " xx xx xx " " xxxx xx xxxx " " xx xxxx xx " " xx xx xxxxxxx " " xx x " " xxxxxxxx xxxxxx " " xxxxxxxx xxxx x " " xx x xxxx x " " xx x xxxxxx " " xxxxxx x " " xxxx x xxxxxxxx " " xxxx x xx xx " " xxxxxx xx xxx " " x xxx xxx " " xxxxxxxx xx " " xx xx xx xx " " xx xxx xxxx xx " " xxx xxx xx xxxx " " xx xx xx "))) (make-problem "19990126aLLO (5)" (quote ((1 1 1) (2 1 2) (1 2 1) (1 1 1) (2 2 2) (1 1 1) (1 1 1) (2 2 2) (1 1 1) () (11) (2 2 3) (2 4 1) (4 5 1) (17 1) (15 3) (13) (11) (2 7 2) (17))) (quote ((1) (4 2) (6 1) (2 2 5 1) (4 2 1 5 1) (4 1 6) (1 6) (3 1 6) (3 2 1 6) (4 1 6) (1 6) (2 4 1 6) (4 2 1 5 1) (2 5 1) (6 1) (4 1) (3 1) (2 2 2) (1 1 1) (5))) (quote (" x " " xxxx xx" " xxxxxx x" "xx xx xxxxx x" " xxxx xx x xxxxx x" " xxxx x xxxxxx" " x xxxxxx" "xxx x xxxxxx" " xxx xx x xxxxxx" " xxxx x xxxxxx" " x xxxxxx" "xx xxxx x xxxxxx" " xxxx xx x xxxxx x" " xx xxxxx x" " xxxxxx x" " xxxx x" " xxx x" " xx xx xx" " x x x " " xxxxx "))) (make-problem "19990211aJAM (6)" (quote (() (4 4) (2 3 3 2) (1 2 2) (2 1 1 2) (2 2) (2) (4) (4) (4) (6) (6) (2) () (9) (11) (3 3) (2 5 3) (2 3 3) ())) (quote (() (2) (2 1) (1 2) (1 2 2) (2 2 2) (1 3) (2 2 2) (2 5 2 1) (7 2 2) (7 2 2) (2 5 2 2) (2 2 2 1) (1 2) (2 3) (1 2 3) (1 2 3) (2 2) (1 1) ())) (quote (" " " xx " " xx x " " x xx " " x xx xx " " xx xx xx " " x xxx " " xx xx xx " " xx xxxxx xx x " " xxxxxxx xx xx " " xxxxxxx xx xx " " xx xxxxx xx xx " " xx xx xx x " " x xx " " xx xxx " " x xx xxx " " x xx xxx " " xx xx " " x x " " "))) (make-problem "19990214bFRA (7)" (quote ((20) (1 3 3 2) (3 4 1 1) (3 4 1) (3 4 1) (3 5 2) (3 6 3) (3 7 4) (3 8 5) (1 7 6) (20) (20) (1 4 3 5 3) (1 3 3 3 3) (1 2 4 1 4) (1 1 1 5 5) (1 2 6 6) (1 3 6 6) (1 4 6 6) (20))) (quote ((20) (1 7 2 1) (1 7 3 5) (1 4 4) (1 7 5 3) (1 7 6 2) (12 1) (20) (2 15) (1 14) (1 5 6) (1 5 5) (2 5 4) (3 5 1) (2 5 4) (1 5 5) (1 5 6) (1 14) (2 15) (20))) (quote ("xxxxxxxxxxxxxxxxxxxx" "x xxxxxxx xx x" "x xxxxxxx xxx xxxxx" "x xxxx xxxx" "x xxxxxxx xxxxx xxx" "x xxxxxxx xxxxxx xx" "xxxxxxxxxxxx x" "xxxxxxxxxxxxxxxxxxxx" "xx xxxxxxxxxxxxxxx" "x xxxxxxxxxxxxxx" "x xxxxx xxxxxx" "x xxxxx xxxxx" "xx xxxxx xxxx" "xxx xxxxx x" "xx xxxxx xxxx" "x xxxxx xxxxx" "x xxxxx xxxxxx" "x xxxxxxxxxxxxxx" "xx xxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990306-RMA (8)" (quote ((1) (8) (6 1 2) (5 2 2) (5 2 2) (5 3 3) (5 4 3) (2 1 1 5 1 3) (2 1 2 5) (1 1 1) (1) (1) (1) (1) (1) (1) (1) (1) (1 1) (3))) (quote ((1) (3) (3) (5) (5) (5) (4 1 2) (3 1 1) (2 2 1) (2 3 6) (1 10) (8) (1 3) (2 1) (2 1) (3 1) (6) (4) (3) (2))) (quote (" x " " xxx " " xxx " " xxxxx " " xxxxx " " xxxxx " " xxxx x xx" " xxx x x" " xx xx x" " xx xxx xxxxxx " " x xxxxxxxxxx " "xxxxxxxx " " x xxx " " xx x " " xx x " " xxx x " " xxxxxx " " xxxx " " xxx " " xx "))) (make-problem "19990412-RAB (9)" (quote (() (9) (1 1 1 1 3) (9 2) (1 3 1) (2 1 1 1 3) (2 1 1 1 2) (1 1 3) (9 3) (1 1 1 4 9) (12 1 1 1 1) (1 12) (3 1 1) (2 1 1 1 1 2) (2 1 1 2 1 2) (2 1 1) (14) (2 1 1 1 1 1 1) (12) ())) (quote ((3 3) (1 1 2 1 1) (3 2 3) (1 1 1 1) (10) (1 1 1 1 4) (3 2 10) (1 1 3 1 2) (11 2 1 1) (1 1 3 3) (4 2 7 1) (1 7 3) (6 1 2 1 1) (3 1 3) (1 1 1 1) (10) (1 1 1 1) (3 2 3) (1 1 2 1 1) (3 3))) (quote (" xxx xxx " " x x xx x x " " xxx xx xxx " " x x x x " " xxxxxxxxxx " " x x x x xxxx " " xxx xx xxxxxxxxxx " " x x xxx x xx " " xxxxxxxxxxx xx x x " " x x xxx xxx " " xxxx xx xxxxxxx x " " x xxxxxxx xxx " " xxxxxx x xx x x " " xxx x xxx " " x x x x " " xxxxxxxxxx " " x x x x " " xxx xx xxx " " x x xx x x " " xxx xxx "))) (make-problem "19990806-ELS (10)" (quote (() (1 1) (2 2) (3 3) (4 4) (4 4) (4 4) (4 4) (4 4) (3 3) (5) (3) (5) (11) (2 1 1 2) (2 1 1 2) (1 2 2 1) (1 2 2 1) (4 4) ())) (quote (() (4) (4 4) (4 2 1) (4 2 1) (4 1 2) (4 1 2) (4 5) (6) (4) (6) (4 5) (4 1 2) (4 1 2) (4 2 1) (4 2 1) (4 4) (4) () ())) (quote (" " " xxxx " " xxxx xxxx " " xxxx xx x " " xxxx xx x " " xxxx x xx " " xxxx x xx " " xxxx xxxxx " " xxxxxx " " xxxx " " xxxxxx " " xxxx xxxxx " " xxxx x xx " " xxxx x xx " " xxxx xx x " " xxxx xx x " " xxxx xxxx " " xxxx " " " " "))) (make-problem "19990929-LSA (11)" (quote ((4 3) (3 5 2) (2 9 1) (1 11) (1 13) (1 2 1) (8 5) (9 5) (3 3 1 1) (4 4 2 2) (9 5) (9 5) (5 2 4) (6 5) (13) (4 4) (1 4 4 1) (2 8 1) (3 5 3) (5 7))) (quote ((5) (3) (2) (1 5) (11 4) (2 10 3) (3 2 8 2) (3 2 8 1) (4 2 9 1) (4 6 2 3) (12 1 2) (12 1 2) (4 2 3) (3 14) (3 2 9 1) (2 2 7 2) (4 7 2) (1 6 4) (2 1) (3 1))) (quote ("xxxxx " "xxx " "xx " "x xxxxx " " xxxxxxxxxxx xxxx" " xx xxxxxxxxxx xxx" " xxx xx xxxxxxxx xx" " xxx xx xxxxxxxx x" " xxxx xx xxxxxxxxx x" " xxxx xxxxxx xx xxx " " xxxxxxxxxxxx x xx " " xxxxxxxxxxxx x xx " " xxxx xx xxx " " xxx xxxxxxxxxxxxxx" " xxx xx xxxxxxxxx x" " xx xx xxxxxxx xx" " xxxx xxxxxxx xx" "x xxxxxx xxxx" "xx x" "xxx x"))) (make-problem "19991002aTPV (12)" (quote (() () (6) (2 2 3) (1 1 1 3 1) (1 2 1) (2 3 1) (3 4 1) (3 3 1) (4 3 4 1) (5 9) (6 7) (7 4) (6 3) (7 4) (7 3) (6 3) (6) () ())) (quote (() () (6) (10) (1 10) (1 8) (2 7) (1 7) (1 1 6) (3 2 4) (2 2 3) (1 1 1 2 1) (10 2) (9 3) (1 11) (1 7) (2 5) (6) () ())) (quote (" " " " " xxxxxx " " xxxxxxxxxx " " x xxxxxxxxxx " " x xxxxxxxx " " xx xxxxxxx " " x xxxxxxx " " x x xxxxxx " " xxx xx xxxx " " xx xx xxx " " x x x xx x " " xxxxxxxxxx xx " " xxxxxxxxx xxx " " x xxxxxxxxxxx " " x xxxxxxx " " xx xxxxx " " xxxxxx " " " " "))) (make-problem "19991119bKHO (13)" (quote ((4 4) (3 2 1 1 1 1 1 3) (2 2 1 1 1 1 2) (2 1 1 1 1 1 1 2 2) (1 1 1 1 1 1 1 1 1 2) (1 1 1 1 1 2 1 2) (1 1 1 1 1 1 1 2 2) (2 13 3) (3 4) (3 4) (3 4) (3 4) (3 4) (4 5) (4 5) (5 6) (6 7) (8 9) (9 10) (20))) (quote ((20) (4 13) (2 1 1 12) (1 2 1 1 7) (2 1 2 5) (1 1 1 4) (1 1 2 3) (1 1 1 1 3) (1 2 2) (1 1 1 1 1) (1 1 2 2) (1 1 1 1 3) (1 2 3) (1 1 1 1 4) (1 2 1 5) (1 1 2 7) (1 5 12) (2 13) (20) (20))) (quote ("xxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxx" "xx x x xxxxxxxxxxxx" "x xx x x xxxxxxx" " xx x xx xxxxx" " x x x xxxx" " x x xx xxx" " x x x x xxx" " x xx xx" " x x x x x" " x x xx xx" " x x x x xxx" " x xx xxx" " x x x x xxxx" " x xx x xxxxx" " x x xx xxxxxxx" "x xxxxx xxxxxxxxxxxx" "xx xxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k20x25 b/pkgs/games/paint-by-numbers/problems/k20x25 deleted file mode 100644 index af66c63476..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k20x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 20x25") (define problems (list (make-problem "19980620-KKA (1)" (quote (() (1) (3) () () () () (1) (2) (1) (2) (2) (2 1 1) (2 3 2) (1 2 4 1 1) (1 2 1 1 2 1) (1 1 2 2 1 1 2) (1 4 1 4 4) (20) () (11 1 3 1) (1 1 1 1 1 1 1 1) (1 3 1 2 1 3 1) (1 1 1 1 1 1 1) (1 3 1 1 1 1 3 1))) (quote ((1 1) (5 5) (1 1) (5 5) (1 2 2 1 1 1) (2 2 1 1 1) (6 1) (1 1 1 1 5) (2 2 1 1 1) (1 4 2 3 5) (4 2 1 1 1) (1 2 1 2) (3) (3 2 5) (2 4) (1 3 1) (5 1 1 1) (3 1 3) (2) (2 3 1))) (quote (" x x " " xxxxx xxxxx" " x x " " xxxxx xxxxx" " x xx xx x x x" " xx xx x x x" " xxxxxx x " " x x x x xxxxx" " xx xx x x x " " x xxxx xx xxx xxxxx" " xxxx xx x x x " " x xx x xx" " xxx " " xxx xx xxxxx" " xx xxxx " " x xxx x" " xxxxx x x x" " xxx x xxx" " xx " " xx xxx x"))) (make-problem "19991113cBAR (2)" (quote ((3 1 2 1) (2 3 2 3 2) (17 1) (19) (19) (12 7) (8 2 1 5) (4 1 5) (3 4) (6 7) (2 3 3 4) (3 2 2 4) (4 5) (4 6) (5 3 6) (4 5 6) (5 1 6) (4 5 5) (4 3 3 3) (2 3) (5 6) (8 7) (17) (13 1) (1 2 3 3))) (quote ((1 5 4 3 1) (21) (23) (7 1 7 5) (5 1 3 4) (7 2 1 4) (8 2 1 4) (7 2 1 2 3) (4 2 1 4) (7 4 3) (6 2 1 3) (4 2 1 2 3) (5 2 1 4) (7 2 1 5) (5 1 4 5) (8 7 3) (24) (22) (18) (1 4 2 6))) (quote (" x xxxxx xxxx xxx x " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxx x xxxxxxx xxxxx" " xxxxx x xxx xxxx " "xxxxxxx xx x xxxx" "xxxxxxxx xx x xxxx" "xxxxxxx xx x xx xxx " " xxxx xx x xxxx" "xxxxxxx xxxx xxx" " xxxxxx xx x xxx" " xxxx xx x xx xxx " "xxxxx xx x xxxx" "xxxxxxx xx x xxxxx" " xxxxx x xxxx xxxxx" " xxxxxxxx xxxxxxx xxx " "xxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxx " " x xxxx xx xxxxxx "))) (make-problem "19991113gBAR (3)" (quote (() () (4 4) (8 6) (14 3) (3 7 2) (3 5 2) (6 2) (6 2) (6 3) (6 4) (8 4) (14) (14) (10 3) (14) (16) (18) (3 14) (3 14) (4 13) (4 11) (3 9) (12) (10))) (quote ((2 4) (3 6) (3 9) (4 5 4) (4 8 4) (4 10 2) (2 16 2) (3 18) (21) (21) (21) (21) (3 3 10) (3 13) (3 12) (2 12) (2 4 6) (3 4 4) (9) (7))) (quote (" xx xxxx " " xxx xxxxxx " " xxx xxxxxxxxx " " xxxx xxxxx xxxx " " xxxx xxxxxxxx xxxx" " xxxx xxxxxxxxxx xx" " xx xxxxxxxxxxxxxxxx xx" " xxx xxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxx" " xxx xxx xxxxxxxxxx" " xxx xxxxxxxxxxxxx" " xxx xxxxxxxxxxxx " " xx xxxxxxxxxxxx " " xx xxxx xxxxxx " " xxx xxxx xxxx " " xxxxxxxxx " " xxxxxxx "))) (make-problem "19991115cBAR (4)" (quote ((8 9) (8 8) (4 2 5 1) (4 2 3 1) (4 2 2 1) (1 2 1 1 2) (1 3 1 3) (1 1 3) (1 1 3 2 1) (2 5 1 1) (4 2 4 1) (2 2 4 2 2) (1 1 5 3) (4 2 5) (2 4 4) (1 2 5 2) (4 3 1) (2 1 1 1) (1 2 2 1) (1 2 1 2 1) (2 1 1 4) (5 1 4) (4 2 4) (4 4 5) (5 7 5))) (quote ((13 10) (5 3 2 5) (5 1 1 4) (6 1 1 4) (2 2 1 1 2 1) (2 1 1 1 1) (3 2 1 1) (4 1 5 1 1) (2 3 3 2 2) (2 2 3 2 2) (9 3) (1 3 1 3 7) (3 7 2 1) (7 5) (5) (4 2 1 2 2) (3 1 2 6) (2 2 3 5) (2 3 5 5) (18 6))) (quote ("xxxxxxxxxxxxx xxxxxxxxxx" "xxxxx xxx xx xxxxx" "xxxxx x x xxxx" "xxxxxx x x xxxx" "xx xx x x xx x" "xx x x x x " "xxx xx x x" "xxxx x xxxxx x x" " xx xxx xxx xx xx" " xx xx xxx xx xx" " xxxxxxxxx xxx" "x xxx x xxx xxxxxxx" "xxx xxxxxxx xx x" "xxxxxxx xxxxx " "xxxxx " "xxxx xx x xx xx" "xxx x xx xxxxxx" "xx xx xxx xxxxx" "xx xxx xxxxx xxxxx" "xxxxxxxxxxxxxxxxxx xxxxxx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k20x30 b/pkgs/games/paint-by-numbers/problems/k20x30 deleted file mode 100644 index 39ee55fc4c..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k20x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 20x30") (define problems (list (make-problem "19991007aKHO (1)" (quote ((1 1 1 1 1) (1 5 1) (8 2) (8) (8) (2 2) (1 1) (2 2) (1 6 1) (2 8 2) (1 1) (1 2 2 1) (1 1 1 1 1 1) (1 4 4 1) (3 4 4 3) (1 1 1 1 1 1 1 1) (1 1 2 2 2 1 1) (2 1 4 1 2) (3 4 3) (1 4 1) (1 2 1) (2 2) (14) (2 2) (1 2 4 2 1) (1 6 1) (1 1) (14) (5 5) (7 7))) (quote ((3) (1 2 1) (1 1 2) (21) (1 3 3 3) (2 3 4 1 1 3) (4 1 1 2 1 1 1 3) (1 3 2 1 2 1 1 1 1 1) (4 2 4 3 1 2 1) (5 2 5 1 2 1) (4 2 5 1 2 1) (5 2 4 3 1 2 1) (4 2 1 2 1 1 1 1 1) (1 3 1 1 2 1 1 1 3) (1 3 4 1 1 3) (2 3 3 3) (21) (1 1 2) (1 2 1) (3))) (quote (" xxx " " x xx x" " x x xx" " xxxxxxxxxxxxxxxxxxxxx" "x xxx xxx xxx" " xx xxx xxxx x x xxx" " xxxx x x xx x x x xxx" "x xxx xx x xx x x x x x" " xxxx xx xxxx xxx x xx x " "xxxxx xx xxxxx x xx x " " xxxx xx xxxxx x xx x " "xxxxx xx xxxx xxx x xx x " " xxxx xx x xx x x x x x" "x xxx x x xx x x x xxx" " x xxx xxxx x x xxx" " xx xxx xxx xxx" " xxxxxxxxxxxxxxxxxxxxx" " x x xx" " x xx x" " xxx "))) (make-problem "19991007bKHO (2)" (quote ((20) (1 1) (1 16 1) (1 16 1) (1 2 2 1) (1 2 2 1) (1 5 2 1) (1 2 6 1) (1 2 1 1 2 1) (1 2 3 2 1) (1 2 1 1 2 1) (1 3 1 1 1 1 1 2 1) (1 2 1 1 1 1 1 3 1) (1 16 1) (1 16 1) (1 1) (1 6 1) (1 2 1) (1 2 4 1) (1 2 2 4 1) (1 6 4 2 1) (1 6 4 1) (1 2 2 1) (1 2 1) (1 1 1 1) (1 1 1 1 1) (1 2 2 1 1 1) (1 1 1 1 1) (1 1 1 1) (20))) (quote ((30) (1 1) (1 13 2 1) (1 13 2 1) (1 2 1 1 2 6 1) (1 2 1 3 6 1) (1 2 1 1 1 2 2 1 1) (1 2 1 3 1 2 1 1) (1 2 4 2 1 1) (1 2 1 3 1 1 1) (1 2 2 2 1 2 1 1) (1 2 3 1 4 1) (1 2 1 1 2 1 4 1) (1 2 1 3 2 1 1 1) (1 2 1 1 2 2 1 1 2) (1 2 1 3 4 1 1 1) (1 13 4 1 1 2) (1 13 2 1 1 1) (1 1) (30))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x x" "x xxxxxxxxxxxxx xx x" "x xxxxxxxxxxxxx xx x" "x xx x x xx xxxxxx x" "x xx x xxx xxxxxx x" "x xx x x x xx xx x x" "x xx x xxx x xx x x" "x xx xxxx xx x x" "x xx x xxx x x x" "x xx xx xx x xx x x" "x xx xxx x xxxx x" "x xx x x xx x xxxx x" "x xx x xxx xx x x x" "x xx x x xx xx x x xx" "x xx x xxx xxxx x x x" "x xxxxxxxxxxxxx xxxx x x xx" "x xxxxxxxxxxxxx xx x x x" "x x" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19991113bBAR (3)" (quote ((6) (8) (10) (3 8) (1 2 1) (12) (1 1 1 3) (1 6 1) (1 2) (1 4 1) (3 2 4) (5 6) (7 8) (19) (4 10 3) (4 11 3) (17 1) (2 14 1) (1 2 1 1 1 1) (3 15) (14) (14) (13) (11) (4 5) (1 1 2 1) (4 4) (5 5) (6 6) (6 6))) (quote ((5) (5 1) (5 1) (3 6 1) (1 1 5 6) (4 7 3 4 2) (2 3 8 5 3) (4 1 1 7 11) (4 3 1 6 6 4) (4 1 1 2 5 6 4) (4 1 1 2 17) (4 3 1 5 5) (4 1 1 14) (3 2 7 11) (5 10 6 4) (3 8 6 4) (4 2 11) (6 6 3) (5 1 2) (7))) (quote (" xxxxx " " xxxxx x " " xxxxx x " " xxx xxxxxx x " " x x xxxxx xxxxxx " " xxxx xxxxxxx xxx xxxx xx" " xx xxx xxxxxxxx xxxxx xxx" "xxxx x x xxxxxxx xxxxxxxxxxx" "xxxx xxx x xxxxxx xxxxxx xxxx" "xxxx x x xx xxxxx xxxxxx xxxx" "xxxx x x xx xxxxxxxxxxxxxxxxx" "xxxx xxx x xxxxx xxxxx " "xxxx x x xxxxxxxxxxxxxx " " xxx xx xxxxxxx xxxxxxxxxxx" " xxxxx xxxxxxxxxx xxxxxx xxxx" " xxx xxxxxxxx xxxxxx xxxx" " xxxx xx xxxxxxxxxxx" " xxxxxx xxxxxx xxx" " xxxxx x xx" " xxxxxxx ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k25x15 b/pkgs/games/paint-by-numbers/problems/k25x15 deleted file mode 100644 index 663c3d6bd1..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k25x15 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x15") (define problems (list (make-problem "19990709-DAH (1)" (quote ((25) (1 1) (1 3 1) (1 3 1 3 1) (1 3 1 1 1 1) (1 1 1 1 1 1) (1 1 1 1 1 1) (1 1 1 3 1 1) (1 1 3 4 3 1) (1 3 4 4 4 1) (1 4 4 2 4 1) (1 4 2 2 1) (1 2 1) (1 1) (25))) (quote ((15) (1 1) (1 2 1) (1 4 1) (1 4 1) (1 8 1) (1 1 1) (1 1 2 1) (1 1 4 1) (1 1 4 1) (1 8 1) (1 1) (1 1) (1 2 1) (1 4 1) (1 4 1) (1 8 1) (1 1 1) (1 1 2 1) (1 1 4 1) (1 1 4 1) (1 8 1) (1 1) (1 1) (15))) (quote ("xxxxxxxxxxxxxxx" "x x" "x xx x" "x xxxx x" "x xxxx x" "x xxxxxxxx x" "x x x" "x x xx x" "x x xxxx x" "x x xxxx x" "x xxxxxxxx x" "x x" "x x" "x xx x" "x xxxx x" "x xxxx x" "x xxxxxxxx x" "x x x" "x x xx x" "x x xxxx x" "x x xxxx x" "x xxxxxxxx x" "x x" "x x" "xxxxxxxxxxxxxxx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k25x20 b/pkgs/games/paint-by-numbers/problems/k25x20 deleted file mode 100644 index 92de45d2ad..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k25x20 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x20") (define problems (list (make-problem "19980410-GOS (1)" (quote (() (9) (3 1 4 3) (4 2 1 3 4) (2 1 11 4) (4 2 3 2 1 1) (1 1 2 1 3 1 2 1 1) (2 1 2 3 2 5) (5 5 5 1 1) (3 1 4 3 2 1 1 1) (5 4 3 4 5) (1 4 1 4 2) (1 1 2 1 1 1 2 2 1) (2 1 2 3 3 2 4) (3 3 1 1 1 3 3) (3 1 1 1 3) (2 3 2) (2 2) (7) ())) (quote ((7) (6 2) (2 3 1) (3 1 5) (1 7) (3 4) (2 11) (1 7 3) (1 2 3 1 3) (4 1 3 1 2) (1 1 1 3 1) (1 4 2 1 1 1) (7 4 3 1) (2 4 2 1 1 1) (4 1 3 1) (4 1 3 1 2) (1 2 3 1 3) (1 5 1 3) (2 11) (3 4) (9) (2 1 5) (1 1 1 3) (3 2 2) (7))) (quote (" xxxxxxx " " xxxxxx xx " " xx xxx x " " xxx x xxxxx " " x xxxxxxx " " xxx xxxx " " xx xxxxxxxxxxx " " x xxxxxxx xxx " " x xx xxx x xxx " " xxxx x xxx x xx " " x x x xxx x " " x xxxx xx x x x " " xxxxxxx xxxx xxx x " " xx xxxx xx x x x " " xxxx x xxx x " " xxxx x xxx x xx " " x xx xxx x xxx " " x xxxxx x xxx " " xx xxxxxxxxxxx " " xxx xxxx " " xxxxxxxxx " " xx x xxxxx " " x x x xxx " " xxx xx xx " " xxxxxxx "))) (make-problem "19981116-JAM (2)" (quote ((10) (17) (4 9 3) (4 2 7 2 3) (3 4 5 3 4) (3 4 5 3 4) (4 4 5 3 4) (4 2 5 2 5) (5 6 6) (6 4 2 7) (12 11) (11 10) (10 9) (5 6 5 5) (5 13 4) (4 15 3) (1 1 13 1 1) (5 11 5) (5 5) (8 7))) (quote ((10) (15) (14 2) (14 3) (3 7 4) (2 3 4 1 3) (1 4 7 2) (1 5 8 1) (3 4 9 1) (4 10 1) (12 5 1) (11 5) (9 4) (9 4 1) (11 5 1) (4 3 5 1) (3 3 8 1) (2 5 8 1) (1 5 8 2) (2 5 1 3) (14 3) (14 2) (13 2) (14) (7))) (quote (" xxxxxxxxxx " " xxxxxxxxxxxxxxx " " xxxxxxxxxxxxxx xx " " xxxxxxxxxxxxxx xxx" " xxx xxxxxxx xxxx" " xx xxx xxxx x xxx" " x xxxx xxxxxxx xx" " x xxxxx xxxxxxxx x" "xxx xxxx xxxxxxxxx x" "xxxx xxxxxxxxxx x" "xxxxxxxxxxxx xxxxx x" "xxxxxxxxxxx xxxxx " "xxxxxxxxx xxxx " "xxxxxxxxx xxxx x" "xxxxxxxxxxx xxxxx x" "xxxx xxx xxxxx x" "xxx xxx xxxxxxxx x" "xx xxxxx xxxxxxxx x" " x xxxxx xxxxxxxx xx" " xx xxxxx x xxx" " xxxxxxxxxxxxxx xxx " " xxxxxxxxxxxxxx xx " " xxxxxxxxxxxxx xx " " xxxxxxxxxxxxxx " " xxxxxxx "))) (make-problem "19981119-MSS (3)" (quote ((3 1 3 1 1 1 1 1) (1 1 1 1 1 2 1 1 1 1) (1 1 1 3 1 2 1 1) (1 1 1 1 1 1 1 1 2) () (3) (2 3) (2 2 3) (1 2 2 3) (1 2 2 3) (4 3 1 2) (1) (8 1) (16) (25) (24) (21) (16) (11) (4))) (quote ((1 1 4) (4 1 4) (1 1 4) (3 5) (4 5) (4 5) (1 4 5) (4 1 6) (1 4 5) (4 5) (3 1 5) (1 1 5 5) (3 5 6) (5 6) (4 1 6) (1 9) (1 5) (4 5) (6) (4 6) (6) (2 6) (1 1 5) (1 1 3) (1))) (quote ("x x xxxx " "xxxx x xxxx " "x x xxxx " " xxx xxxxx " "xxxx xxxxx " " xxxx xxxxx " "x xxxx xxxxx " "xxxx x xxxxxx " "x xxxx xxxxx " " xxxx xxxxx " " xxx x xxxxx " "x x xxxxx xxxxx " " xxx xxxxx xxxxxx " " xxxxx xxxxxx " "xxxx x xxxxxx " " x xxxxxxxxx " " x xxxxx " "xxxx xxxxx " " xxxxxx" "xxxx xxxxxx" " xxxxxx" " xx xxxxxx" "x x xxxxx " " x x xxx " " x "))) (make-problem "19990126bLLO (4)" (quote ((2 2 1) (3 7) (6 2 2 5) (6 4 4 2) (4 4 1) (3 2 2 1) (2 3 2) (1 2 3) (1 3 2) (3 2 3) (5 1 3) (7 2) (7 2) (7 2) (5 2) (25) (3) (20 3) (3) (18 2))) (quote ((1 1 1) (1 1 1 1) (2 1 1 1) (3 1 1 1) (3 3 1 1 1) (2 6 1 1) (2 7 1 1) (1 7 1 1) (1 7 1 1) (6 1 1) (3 3 1 1 1) (2 1 1 1) (2 1 1 1) (3 1 1 1) (3 1 1 1) (3 3 1 1 1) (1 1 4 1 1 1) (3 5 1 1 1) (7 1 1) (1 2 1 1) (8 1) (4 6 5) (2 13) (1 2 10) (4 1))) (quote (" x x x" " x x x x" " xx x x x" " xxx x x x" " xxx xxx x x x" " xx xxxxxx x x" " xx xxxxxxx x x" " x xxxxxxx x x" " x xxxxxxx x x" " xxxxxx x x" " xxx xxx x x x" " xx x x x" " xx x x x" " xxx x x x" " xxx x x x" " xxx xxx x x x" " x x xxxx x x x" "xxx xxxxx x x x" "xxxxxxx x x " " x xx x x " "xxxxxxxx x " "xxxx xxxxxx xxxxx" " xx xxxxxxxxxxxxx" "x xx xxxxxxxxxx " " xxxx x ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k25x25 b/pkgs/games/paint-by-numbers/problems/k25x25 deleted file mode 100644 index 598fb79e32..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k25x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x25") (define problems (list (make-problem "19980522-SDN (1)" (quote ((1 1) (1 1 1) (1 1 3) (3 3) (1 1 3) (1 1 5) (5) (7) (7) (9) (11) (15) (17) (19) (19) (19) (17) (15) (11) (7 1) (1 1 1) (3 1 1) (5 3) (9 1 1) (9 1 1))) (quote (() (5) (1 1) (5 3) (5) (7) (7) (9) (10 2) (13 2) (15 3) (18 4) (25) (18 4) (15 3) (13 2) (10 2) (9) (7) (7) (5) (3) (5) (1 1) (5))) (quote (" " " xxxxx " "x x " " xxxxx xxx " " xxxxx " " xxxxxxx " " xxxxxxx " " xxxxxxxxx " " xxxxxxxxxx xx" " xxxxxxxxxxxxx xx" " xxxxxxxxxxxxxxx xxx" " xxxxxxxxxxxxxxxxxx xxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxx xxxx" " xxxxxxxxxxxxxxx xxx" " xxxxxxxxxxxxx xx" " xxxxxxxxxx xx" " xxxxxxxxx " " xxxxxxx " " xxxxxxx " " xxxxx " " xxx " " xxxxx" " x x " " xxxxx"))) (make-problem "19980909-YEN (2)" (quote ((10 10) (8 5 8) (5 9 5) (4 7 4 4) (3 7 4 3) (2 7 3 2) (2 8 4 2) (2 9 5 2) (1 16 1) (1 15 1) (14) (12) (11) (9) (7) (1 5 1) (1 4 1) (2 3 1 2) (2 3 3 2) (2 3 5 2) (3 2 3 3) (4 2 1 4) (5 5) (8 8) (10 10))) (quote ((10 10) (8 5 8) (5 9 5) (4 15 4) (3 17 3) (2 19 2) (2 13 1 2) (2 12 2) (1 12 1) (1 12 1) (4 7 1) (3 6 3) (2 4 5) (3 4 3) (4 5 1) (1 8 1) (1 8 1) (2 5 2) (2 2) (2 2) (3 3) (4 4) (5 5) (8 8) (10 10))) (quote ("xxxxxxxxxx xxxxxxxxxx" "xxxxxxxx xxxxx xxxxxxxx" "xxxxx xxxxxxxxx xxxxx" "xxxx xxxxxxxxxxxxxxx xxxx" "xxx xxxxxxxxxxxxxxxxx xxx" "xx xxxxxxxxxxxxxxxxxxx xx" "xx xxxxxxxxxxxxx x xx" "xx xxxxxxxxxxxx xx" "x xxxxxxxxxxxx x" "x xxxxxxxxxxxx x" " xxxx xxxxxxx x " " xxx xxxxxx xxx " " xx xxxx xxxxx " " xxx xxxx xxx " " xxxx xxxxx x " "x xxxxxxxx x" "x xxxxxxxx x" "xx xxxxx xx" "xx xx" "xx xx" "xxx xxx" "xxxx xxxx" "xxxxx xxxxx" "xxxxxxxx xxxxxxxx" "xxxxxxxxxx xxxxxxxxxx"))) (make-problem "19990924-VAL (3)" (quote (() () (1) (1) (1) (10) (12) (6 3 3) (3 2 1 1 1 2) (2 1 1 1 1 2 1) (1 3 3 4) (6 7) (7 2 4) (2 7 2 1) (2 10 1) (6 8) (5 7) (2 7 2) (1 7 1) (11) (4 4) (4 4) (2 6) (1 5) (5))) (quote (() () () () () (3 4) (3 7) (3 3 5) (3 8 4) (4 14) (5 11 1) (3 5 8) (4 3 7 3) (1 3 15) (5 14) (3 2 10) (2 9 4) (3 11) (3 3 3) (3 5) () () () () ())) (quote (" " " " " " " " " " " xxx xxxx " " xxx xxxxxxx " " xxx xxx xxxxx " " xxx xxxxxxxx xxxx " " xxxx xxxxxxxxxxxxxx " " xxxxx xxxxxxxxxxx x" " xxx xxxxx xxxxxxxx" " xxxx xxx xxxxxxx xxx" " x xxx xxxxxxxxxxxxxxx" " xxxxx xxxxxxxxxxxxxx" " xxx xx xxxxxxxxxx " " xx xxxxxxxxx xxxx " " xxx xxxxxxxxxxx " " xxx xxx xxx " " xxx xxxxx " " " " " " " " " " "))) (make-problem "19991020aSHE (4)" (quote ((20 2) (3 14 2) (2 11 2) (1 9 3) (2 9 3) (3 9 4) (12 4) (8 5) (7 6) (6 7) (5 8) (5 9) (7 9) (7 6) (7 4) (3 2 3) (2 4 3) (3 3 3) (1 6) (2 6) (1 6) (2 1 6) (2 1 8) (1 11) (13))) (quote ((25) (3 14 1 2 1) (2 11 1 2) (1 9 3) (2 10 2) (3 6 3 3) (9 4 4) (8 2 3) (7 2 5) (7 9) (7 9) (7 7) (6 7) (5 5) (4 4) (3 3) (2 6) (2 6) (1 6) (1 7) (7) (9) (10) (13) (13))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxx" "xxx xxxxxxxxxxxxxx x xx x" "xx xxxxxxxxxxx x xx" "x xxxxxxxxx xxx" "xx xxxxxxxxxx xx" "xxx xxxxxx xxx xxx" "xxxxxxxxx xxxx xxxx" "xxxxxxxx xx xxx" "xxxxxxx xx xxxxx" "xxxxxxx xxxxxxxxx" "xxxxxxx xxxxxxxxx" "xxxxxxx xxxxxxx" "xxxxxx xxxxxxx" "xxxxx xxxxx " "xxxx xxxx " "xxx xxx " "xx xxxxxx " "xx xxxxxx " "x xxxxxx " "x xxxxxxx " " xxxxxxx " " xxxxxxxxx " " xxxxxxxxxx " "xxxxxxxxxxxxx " "xxxxxxxxxxxxx ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k25x30 b/pkgs/games/paint-by-numbers/problems/k25x30 deleted file mode 100644 index 0592c351ef..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k25x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x30") (define problems (list (make-problem "19980714-GAS (1)" (quote (() (3) (4) (4) (5) (4) (3) (4 2 4) (8 8) (20) (21) (20) (20) (20) (19) (19) (19) (19) (20) (21) (21) (22) (22) (20) (18) (16) (14) (3 3) () ())) (quote (() (8) (13) (15) (17) (18) (20) (21) (21) (21) (19) (19) (4 18) (5 18) (5 19) (5 19) (4 21) (2 21) (21) (20) (6 8) (4 6) (2 4) (2) ())) (quote (" " " xxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxx " " xxxx xxxxxxxxxxxxxxxxxx " " xxxxx xxxxxxxxxxxxxxxxxx " " xxxxx xxxxxxxxxxxxxxxxxxx " " xxxxx xxxxxxxxxxxxxxxxxxx " " xxxx xxxxxxxxxxxxxxxxxxxxx " " xx xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxx " " xxxxxx xxxxxxxx " " xxxx xxxxxx " " xx xxxx " " xx " " "))) (make-problem "19980716cGAS (2)" (quote (() (7) (3 3) (2 3 2) (2 3 3 2) (1 2 2 1) (1 2 2 1) (1 1 1 1) (1 1 1 1) (1 1 7 1 1) (1 2 2 1) (3 3) (2 2) (2 5 2) (1 4 4 1) (2 5 5 2) (1 2 7 2 1) (1 3 5 3 1) (1 6 6 1) (1 5 5 1) (1 1 2 2 1 1) (1 5 5 1) (1 6 6 1) (2 3 5 3 2) (1 2 7 2 1) (2 5 5 2) (2 4 4 2) (2 5 2) (3 3) (9))) (quote (() () (9) (3 3) (2 2) (9 5 2) (2 1 4 4 2) (2 6 5 5 1) (1 2 1 2 7 2 2) (2 2 1 3 5 3 1) (1 1 1 6 6 1) (1 2 1 5 5 1) (1 1 1 1 2 2 1 1) (1 2 1 5 5 1) (1 1 1 6 6 1) (2 2 1 3 5 3 1) (1 2 1 2 7 2 2) (2 6 5 5 1) (2 1 4 4 2) (9 5 2) (2 2) (3 3) (9) () ())) (quote (" " " " " xxxxxxxxx " " xxx xxx " " xx xx " " xxxxxxxxx xxxxx xx " " xx x xxxx xxxx xx " " xx xxxxxx xxxxx xxxxx x " " x xx x xx xxxxxxx xx xx" " xx xx x xxx xxxxx xxx x" " x x x xxxxxx xxxxxx x" " x xx x xxxxx xxxxx x" " x x x x xx xx x x" " x xx x xxxxx xxxxx x" " x x x xxxxxx xxxxxx x" " xx xx x xxx xxxxx xxx x" " x xx x xx xxxxxxx xx xx" " xx xxxxxx xxxxx xxxxx x " " xx x xxxx xxxx xx " " xxxxxxxxx xxxxx xx " " xx xx " " xxx xxx " " xxxxxxxxx " " " " "))) (make-problem "19980802-JON (3)" (quote (() (1) (3) (4) (4) (4) (3) (2) (7 6) (18) (20) (22) (21) (20) (19) (19) (19) (19) (19) (20) (21) (21) (21) (19) (19) (17) (15) (13) (4 4) ())) (quote (() (10) (13) (16) (18) (19) (20) (21) (21) (21) (21) (19) (19) (3 19) (25) (4 21) (4 21) (4 21) (2 20) (19) (5 7) (3 5) (1 2) () ())) (quote (" " " xxxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxx " " xxx xxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxx " " xxxx xxxxxxxxxxxxxxxxxxxxx " " xxxx xxxxxxxxxxxxxxxxxxxxx " " xxxx xxxxxxxxxxxxxxxxxxxxx " " xx xxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxx " " xxxxx xxxxxxx " " xxx xxxxx " " x xx " " " " "))) (make-problem "19990723-KHO (4)" (quote ((8 8) (6 6) (4 5 4) (3 7 3) (2 9 2) (1 6 1 1) (1 5 3 1) (4 4) (4 4) (2 4) (3) (3) (3 3) (5 5) (13) (15) (3 9 1) (3 9 3) (3 2 1 4) (3 1 2 3 3) (3 5 5 1) (3 11 1) (3 9 3) (1 3 7 3 1) (1 3 3 1) (2 11 2) (3 8 3) (4 4) (6 6) (8 8))) (quote ((7 7) (5 5) (4 4) (3 5 3) (2 7 2) (2 9 2) (1 3 3 1) (1 4 3 3 1 3 1) (6 6 3 3) (7 6 4 2) (7 7 5 2) (5 9 5 2) (4 5 5 4 2) (3 5 6 1 3 2) (3 4 6 5 2) (2 3 6 5 2) (2 4 1 3 2) (1 3 5 3 1) (1 2 4 3 1) (2 1 3 2 2) (2 1 3 2) (3 3) (4 4) (5 5) (7 7))) (quote ("xxxxxxx xxxxxxx" "xxxxx xxxxx" "xxxx xxxx" "xxx xxxxx xxx" "xx xxxxxxx xx" "xx xxxxxxxxx xx" "x xxx xxx x" "x xxxx xxx xxx x xxx x" " xxxxxx xxxxxx xxx xxx " " xxxxxxx xxxxxx xxxx xx " " xxxxxxx xxxxxxx xxxxx xx " " xxxxx xxxxxxxxx xxxxx xx " " xxxx xxxxx xxxxx xxxx xx " " xxx xxxxx xxxxxx x xxx xx " " xxx xxxx xxxxxx xxxxx xx " " xx xxx xxxxxx xxxxx xx " " xx xxxx x xxx xx " "x xxx xxxxx xxx x" "x xx xxxx xxx x" "xx x xxx xx xx" "xx x xxx xx" "xxx xxx" "xxxx xxxx" "xxxxx xxxxx" "xxxxxxx xxxxxxx"))) (make-problem "19990920-LLO (5)" (quote ((6) (4 4) (3 3) (2 2) (2 2 2) (2 2 2) (1 2 1) (2 2 2) (1 2 1) (1 4 1) (22) (3 3) (22) (22) (1 1) (1 5 1) (2 2) (20) (12) (8 5) (4 7) (1 2 4 4) (1 2 3 3) (1 2 3 5) (1 2 3 3) (1 2 4 4) (1 2 7) (1 2 5) (1 2) (1 2))) (quote ((4 5) (3 4 2) (2 4 1) (2 4 1) (2 1 2 1) (1 1 2 2) (2 1 1 2 2) (1 2 1 2 3) (2 2 1 2 3) (2 2 2 2 13) (1 4 2 4) (1 3 2 13) (2 2 2 13) (2 1 2 3) (1 1 2 1 3) (2 1 2 1 2) (1 1 2 1 2 5) (2 1 2 1 1 7) (2 4 1 1 9) (2 4 1 3 3) (3 4 2 2 1 2) (4 5 3 1 3) (9) (7) (5))) (quote (" xxxx xxxxx " " xxx xxxx xx " " xx xxxx x " " xx xxxx x " " xx x xx x " " x x xx xx " " xx x x xx xx " " x xx x xx xxx " "xx xx x xx xxx " "xx xx xx xx xxxxxxxxxxxxx" "x xxxx xx xxxx " "x xxx xx xxxxxxxxxxxxx" "xx xx xx xxxxxxxxxxxxx" "xx x xx xxx " " x x xx x xxx " " xx x xx x xx " " x x xx x xx xxxxx " " xx x xx x x xxxxxxx " " xx xxxx x x xxxxxxxxx " " xx xxxx x xxx xxx " " xxx xxxx xx xx x xx " " xxxx xxxxx xxx x xxx " " xxxxxxxxx " " xxxxxxx " " xxxxx ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k25x35 b/pkgs/games/paint-by-numbers/problems/k25x35 deleted file mode 100644 index 44a14ce7d6..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k25x35 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x35") (define problems (list (make-problem "19981015bGAS (1)" (quote (() (21) (1 1) (1 15 1) (1 1 1 1) (1 1 1 1) (1 15 1) (1 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 3 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 3 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 3 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 3 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 1 1 1) (1 1 1 1) (1 7 3 1 1 1) (1 1 1 1 1 1 1 1) (1 7 3 3 1) (1 1) (21) ())) (quote (() () (33) (1 1) (1 1) (1 4 3 3 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 3 3 3 3 3 1 1 1) (1 1 1 1 1 1) (1 1 1 3 3 3 3 3 1 1 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 3 3 3 3 3 3 1) (1 1 1 1) (1 1 1 3 3 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 3 3 3 3 3 3 1) (1 1 1 1) (1 1 1 3 3 3 3 7 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 4 3 3 3 3 7 1) (1 1) (1 1) (33) () ())) (quote (" " " " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " x x " " x x " " x xxxx xxx xxx xxx xxx xxx xxx x " " x x x x x x x x x x x x x x x x " " x x x xxx xxx xxx xxx xxx x x x " " x x x x x x " " x x x xxx xxx xxx xxx xxx x x x " " x x x x x x x x x x x x x x x x " " x x x xxx xxx xxx xxx xxx xxx x " " x x x x " " x x x xxx xxx xxx xxx xxx xxx x " " x x x x x x x x x x x x x x x x " " x x x xxx xxx xxx xxx xxx xxx x " " x x x x " " x x x xxx xxx xxx xxx xxxxxxx x " " x x x x x x x x x x x x x x " " x xxxx xxx xxx xxx xxx xxxxxxx x " " x x " " x x " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " " " "))) (make-problem "19990527dDRA (2)" (quote ((25) (25) (20 2) (8 7 2) (7 1 1 1 5 1) (6 1 1 1 4 1) (5 1 1 1 1 1 2) (5 1 1 1 1 1 2) (5 1 1 1 1 1 2) (5 1 1 1 1 1 2 1 1) (5 1 1 1 1 1 2 2 2) (5 1 1 1 1 1 4 2) (5 1 1 1 1 1 5 3) (5 1 1 1 1 1 5 3) (5 1 1 1 1 1 5 3) (5 1 1 1 5 3) (4 4 1 1 5 3) (3 8 5 3) (2 12 5 3) (1 12 5 3) (1 8 1 5 3) (1 3 4 2 5 3) (1 3 2 3 5 3) (1 3 5 3 5 3) (1 3 5 3 5 3) (1 3 5 3 5 3) (1 9 3 4 2) (1 9 3 3 1) (1 9 13) (1 9 13) (11 13) (11 13) (11 13) (25) (25))) (quote ((35) (19 5) (18 1 14) (17 2 14) (16 3 14) (6 5 9) (5 9 5 13) (4 5 13) (3 11 6 12) (3 5 12) (3 12 5 12) (3 5 2) (3 13 3 13) (4 2 14) (5 11 1 15) (6 7) (35) (35) (6 24) (4 18 7) (2 1 14 7) (2 7) (2 1 14 7) (4 18 7) (6 24))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxx xxxxx" "xxxxxxxxxxxxxxxxxx x xxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxx xx xxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxx" "xxxxxx xxxxx xxxxxxxxx" "xxxxx xxxxxxxxx xxxxx xxxxxxxxxxxxx" "xxxx xxxxx xxxxxxxxxxxxx" "xxx xxxxxxxxxxx xxxxxx xxxxxxxxxxxx" "xxx xxxxx xxxxxxxxxxxx" "xxx xxxxxxxxxxxx xxxxx xxxxxxxxxxxx" "xxx xxxxx xx" "xxx xxxxxxxxxxxxx xxx xxxxxxxxxxxxx" "xxxx xx xxxxxxxxxxxxxx" "xxxxx xxxxxxxxxxx x xxxxxxxxxxxxxxx" "xxxxxx xxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxx xxxxxxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxxxxxxx xxxxxxx" "xx x xxxxxxxxxxxxxx xxxxxxx" "xx xxxxxxx" "xx x xxxxxxxxxxxxxx xxxxxxx" "xxxx xxxxxxxxxxxxxxxxxx xxxxxxx" "xxxxxx xxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990607bDRA (3)" (quote (() (4 1 1 4 1 1) (1 1 1 1 1 2 1) (4 1 1 1 4 1 1 1) (1 2 2 1 1 1 2) (4 1 1 1 1 1 1) () () () () () (3) (2 2) (7) (3) (3) (3) (3) (3) (3) (3) (2 3) (2 2 4 3) (2 10 3) (12 1 3) (3 7 2 3) (3 4 8) (4 8) (15) (13) (10) () () () ())) (quote (() () (3 1) (1 1 1 4) (1 1 1 5) (1 3 5) (4 4) (5 5 4) (1 3 4) (1 4 3) (1 5 3) (5 5 3) (3 5 3) (5 5 4 4) (1 1 1 4 2 5) (1 1 3 3 1 6) (5 2 3 7) (1 3 4) (5 1 3 4) (1 10) (1 8) (1 6) (5) () ())) (quote (" " " " " xxx x " " x x x xxxx " " x x x xxxxx " " x xxx xxxxx " " xxxx xxxx " " xxxxx xxxxx xxxx " " x xxx xxxx " " x xxxx xxx " " x xxxxx xxx " " xxxxx xxxxx xxx " " xxx xxxxx xxx " " xxxxx xxxxx xxxx xxxx " " x x x xxxx xx xxxxx " " x x xxx xxx x xxxxxx " " xxxxx xx xxx xxxxxxx " " x xxx xxxx " " xxxxx x xxx xxxx " " x xxxxxxxxxx " " x xxxxxxxx " " x xxxxxx " " xxxxx " " " " "))) (make-problem "19991010cTPV (4)" (quote ((25) (3 1 1 9) (2 8) (2 8) (2 9) (3 3 10) (3 2 7) (3 2 6) (3 3 6) (3 2 7) (4 3 8) (5 2 5) (4 3 2 4) (4 2 3) (3 1 3) (3 4) (3 5) (2 7) (2 1 2 7) (2 2 4 8) (2 2 4 8) (2 6 7) (2 3 5) (2 3) (2 2 2) (2 1 3 2) (3 1 4 2) (3 3 1 4 2) (4 4 1 3 3) (5 5 2 4) (6 5 9) (7 5 9) (8 3 10) (10 11) (25))) (quote ((35) (35) (2 12 9) (1 4 7) (1 1 6) (1 5) (2 2 4) (1 2 3) (1 1 2 2) (1 2 1 2) (1 2 4 3 1) (1 5 5 1) (2 1 5 1 6 1) (1 2 3 7 1) (1 1 1 5 2) (1 1 1 1 1 3) (2 2 2 2 8) (6 2 2 2 6) (7 2 1 5 3 5) (11 2 5 4 5) (12 2 7 5 5) (13 8 4 6) (24 7) (35) (35))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xx xxxxxxxxxxxx xxxxxxxxx" "x xxxx xxxxxxx" "x x xxxxxx" "x xxxxx" "xx xx xxxx" "x xx xxx" "x x xx xx" "x xx x xx" "x xx xxxx xxx x" "x xxxxx xxxxx x" "xx x xxxxx x xxxxxx x" "x xx xxx xxxxxxx x" "x x x xxxxx xx" "x x x x x xxx" "xx xx xx xx xxxxxxxx" "xxxxxx xx xx xx xxxxxx" "xxxxxxx xx x xxxxx xxx xxxxx" "xxxxxxxxxxx xx xxxxx xxxx xxxxx" "xxxxxxxxxxxx xx xxxxxxx xxxxx xxxxx" "xxxxxxxxxxxxx xxxxxxxx xxxx xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k30x20 b/pkgs/games/paint-by-numbers/problems/k30x20 deleted file mode 100644 index f2f32653e3..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k30x20 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x20") (define problems (list (make-problem "19981106-KVL (1)" (quote (() (1 1) (2 2) (8) (8) (2 2 2) (10 8) (15 6) (19 4) (21 2 1) (22 3) (28) (17 10) (3 10 3 4 2) (3 6 2 2 3 3) (3 5 3 4) (12 3 6) (9 2 4) () ())) (quote (() (3) (6) (8) (5 3) (7 2) (8 2) (8 2) (9 2) (9 2) (9 2) (9 2) (8 3) (8 3) (8 3) (7 3) (7 2) (7 1) (5 5) (11) (6 1) (4 5 1 2) (7 6 2) (3 3 5 2) (7 3 3) (7 3 2) (3 3 3 3) (7 7) (4 5) ())) (quote (" " " xxx " " xxxxxx " " xxxxxxxx " " xxxxx xxx " " xxxxxxx xx " " xxxxxxxx xx " " xxxxxxxx xx " " xxxxxxxxx xx " " xxxxxxxxx xx " " xxxxxxxxx xx " " xxxxxxxxx xx " " xxxxxxxx xxx " " xxxxxxxx xxx " " xxxxxxxx xxx " " xxxxxxx xxx " " xxxxxxx xx " " xxxxxxx x " " xxxxx xxxxx " " xxxxxxxxxxx " " xxxxxx x " " xxxx xxxxx x xx " " xxxxxxx xxxxxx xx " " xxx xxx xxxxx xx " " xxxxxxx xxx xxx " " xxxxxxx xxx xx " " xxx xxx xxx xxx " " xxxxxxx xxxxxxx " " xxxx xxxxx " " "))) (make-problem "19990311-FRA (2)" (quote (() (2) (2) (2) (3) (4) (27) (27) (27) (4) (4 1) (4 1) (6 1 3) (3 1 1) (3 1 1 3 1 1 1) (1 3 1 1 2 1 3 1) (1 3 1 2 1 1 1) (1 1 1 3) (1 1 1) (1 3))) (quote (() (1) (8 1) (9 6) (10 1) (11) (2 3 1) (1 3) (3) (3) (3 6) (3 1 1) (3 3) (3) (3 1 3) (3 1 1 1) (3 5) (3) (3 4) (3 1) (3 1) (3 4) (3) (3 3 1) (3 1 1 1) (3 5) (3) (3 4 1) (3) ())) (quote (" " " x " " xxxxxxxx x " " xxxxxxxxx xxxxxx" " xxxxxxxxxx x " " xxxxxxxxxxx " " xx xxx x " " x xxx " " xxx " " xxx " " xxx xxxxxx " " xxx x x " " xxx xxx " " xxx " " xxx x xxx " " xxx x x x " " xxx xxxxx " " xxx " " xxx xxxx " " xxx x " " xxx x " " xxx xxxx " " xxx " " xxx xxx x" " xxx x x x" " xxx xxxxx" " xxx " " xxx xxxx x " " xxx " " "))) (make-problem "19990601cDRA (3)" (quote (() (3 1 3 1) (1 1 1 1) (2 1 2 3 1 2 1 1 2 3) (1 1 1 2 1 1 1 1 1 2) (1 1 1 3 1 1 2 2 1 1) () () (26) (2 2 7) (2 6 2 1) (9 1 1 1 2 1) (1 1 1 1 1 2 1) (1 2 2 1) (1 2 2 1) (1 1 1 1 1 1) (2 2 11 2 7) (2 2) () ())) (quote ((5) (1 1 1 6) (1 1 1 1) (1 1 1) (1 3 4 1 2) (4 1 2) (3 1 1 1) (1 1 1 1) (1 1 1) (3 1 2 1) (3 1 1 1) (1 1 1 4 1) (1 1 1) (3 1) (1 3 1) (5 1 1 1) (1 1 4 1) (3 1 1 1) (1 1 3 1) (3 1 2) (2 2 1 2) (1 2 1) (3 2 2 1) (2 2 1) (3 2 1) (1 1 3 1) (1 2 1) (5 4) (2 1) (2 1))) (quote (" xxxxx " " x x x xxxxxx " " x x x x " " x x x " " x xxx xxxx x xx " " xxxx x xx " " xxx x x x " " x x x x " " x x x " " xxx x xx x " " xxx x x x " " x x x xxxx x " " x x x " " xxx x " " x xxx x " " xxxxx x x x " " x x xxxx x " " xxx x x x " " x x xxx x " " xxx x xx " " xx xx x xx " " x xx x " " xxx xx xx x " " xx xx x " " xxx xx x " " x x xxx x " " x xx x " " xxxxx xxxx " " xx x " " xx x "))) (make-problem "19991106-BDH (4)" (quote ((7) (9) (6 3) (6 3) (13) (16) (1 13) (2 10) (3 7) (5 5 7) (23) (7 10 5) (7 8 6) (8 7) (25) (25) (25) (24) (22) (20))) (quote ((8) (12) (12) (12) (11) (10) (10) (1 7) (2 6) (4 6) (4 6) (4 6) (4 6) (4 6) (4 3 6) (7 4 6) (13 6) (12 6) (11 7) (20) (2 16) (2 16) (9 10) (7 8) (6 6) (3) (3) (2) (1) (1))) (quote (" xxxxxxxx " " xxxxxxxxxxxx " " xxxxxxxxxxxx " " xxxxxxxxxxxx" " xxxxxxxxxxx" " xxxxxxxxxx" " xxxxxxxxxx" " x xxxxxxx" " xx xxxxxx" " xxxx xxxxxx" " xxxx xxxxxx" " xxxx xxxxxx" " xxxx xxxxxx" " xxxx xxxxxx" " xxxx xxx xxxxxx" " xxxxxxx xxxx xxxxxx" "xxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxx xxxxxx" "xxxxxxxxxxx xxxxxxx" "xxxxxxxxxxxxxxxxxxxx" "xx xxxxxxxxxxxxxxxx" "xx xxxxxxxxxxxxxxxx" "xxxxxxxxx xxxxxxxxxx" " xxxxxxx xxxxxxxx " " xxxxxx xxxxxx " " xxx " " xxx " " xx " " x " " x ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k30x25 b/pkgs/games/paint-by-numbers/problems/k30x25 deleted file mode 100644 index 5a111b9373..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k30x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x25") (define problems (list (make-problem "19980715-GAS (1)" (quote ((30) (30) (30) (13 15) (12 14) (12 14) (12 14) (12 14) (12 14) (13 15) (13 12) (7 6) (4 3) (1 1) (1 2) (3 1 3 4) (3 3 4 3) (2 4 4 3) (2 3 3 2) (1 2 2 1 2) (1 1 1 1 3 1) (3 4 1) (4 5) () ())) (quote ((11 7) (11 4) (11 2) (12) (13) (14) (13 2) (13 3) (12 2) (12 1 1) (11 3) (11 4) (4 2 6) (3) (3) (4 2) (11 6) (11 5) (11 4) (11 2 1) (12 2) (12 3) (13 4) (13 3) (13) (12) (11 1) (10 3) (10 6) (10 9))) (quote ("xxxxxxxxxxx xxxxxxx " "xxxxxxxxxxx xxxx " "xxxxxxxxxxx xx " "xxxxxxxxxxxx " "xxxxxxxxxxxxx " "xxxxxxxxxxxxxx " "xxxxxxxxxxxxx xx " "xxxxxxxxxxxxx xxx " "xxxxxxxxxxxx xx " "xxxxxxxxxxxx x x " "xxxxxxxxxxx xxx " "xxxxxxxxxxx xxxx " "xxxx xx xxxxxx " "xxx " "xxx " "xxxx xx " "xxxxxxxxxxx xxxxxx " "xxxxxxxxxxx xxxxx " "xxxxxxxxxxx xxxx " "xxxxxxxxxxx xx x " "xxxxxxxxxxxx xx " "xxxxxxxxxxxx xxx " "xxxxxxxxxxxxx xxxx " "xxxxxxxxxxxxx xxx " "xxxxxxxxxxxxx " "xxxxxxxxxxxx " "xxxxxxxxxxx x " "xxxxxxxxxx xxx " "xxxxxxxxxx xxxxxx " "xxxxxxxxxx xxxxxxxxx ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k30x30 b/pkgs/games/paint-by-numbers/problems/k30x30 deleted file mode 100644 index 0d4745b5bf..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k30x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x30") (define problems (list (make-problem "19981106-GAS (1)" (quote (() () (5 6) (1 2 2 1) (2 12 2) (1 2 2 1) (3 3) (1 3 3 1) (1 1 1 1 1 1) (2 1 3 3 1 2) (1 1 3 1 3 1 1) (1 4 1 4 1) (1 2 1 2 1) (1 1 1) (1 1 1) (1 3 1) (2 7 2) (1 3 1) (2 1 1 2) (2 2 11 2 2) (2 2 1 1 1 2 2) (1 2 1 2 1) (2 1 1 1 1) (1 7 1) (1 1) (1 1) (1 1 6 1) (1 1 1 1) (1 1 1 2) (25))) (quote (() () (8) (3 1) (3 8 2 1) (1 6 4 1) (1 1 1 4) (1 1 1 1) (2 1 2 1 1) (3 1 1 1 1) (1 1 4 3 1) (1 1 4 1 1 1) (1 5 1 5 1) (1 1 1 1 1) (1 3 1 1 1) (1 8 5 1) (1 3 1 1 1) (1 1 1 1 3) (1 5 1 5 1 1) (1 1 4 1 1 1 1) (2 1 4 3 1 1) (2 1 1 1 1 1 1) (1 1 2 1 1 1) (1 1 1 1 1) (1 1 1 1) (1 6 4 1) (3 8 2 2) (9) () ())) (quote #f)) (make-problem "19981230-SQU (2)" (quote (() () (4 4) (6 6) (8 8) (9 9) (9 9) (8 8) (7 6 7) (5 8 5) (10) (13) (14) (14) (18) (2 14 2) (2 14 2) (2 16 2) (2 2 12 2 2) (1 2 10 2 1) (4 3 2 3 4) (2 2 6 2 2) (4 2 2 2 4) (1 2 1 2 1 2 1) (2 1 2 2 2 1 2) (2 2 2 2 2) (2 2 2 2) (2 2 2 2) (2 2 2 2) (30))) (quote ((1) (3 1) (5 3 3 1) (7 2 3 2 1) (7 2 3 2 1) (8 2 2 2 2 1) (8 2 2 2 3) (7 1 2 2) (6 7 3 1) (5 8 2 2 1) (12 2 1) (12 2 1) (14 3) (12 1 2) (18 1) (18 1) (12 1 2) (14 3) (12 2 1) (12 2 1) (5 8 2 2 1) (6 6 3 1) (7 1 2 2) (8 2 2 2 3) (8 2 2 2 2 1) (7 2 3 2 1) (7 2 3 2 1) (5 3 3 1) (3 1) (1))) (quote (" x" " xxx x" " xxxxx xxx xxx x" " xxxxxxx xx xxx xx x" " xxxxxxx xx xxx xx x" " xxxxxxxx xx xx xx xx x" " xxxxxxxx xx xx xx xxx" " xxxxxxx x xx xx" " xxxxxx xxxxxxx xxx x" " xxxxx xxxxxxxx xx xx x" " xxxxxxxxxxxx xx x" " xxxxxxxxxxxx xx x" " xxxxxxxxxxxxxx xxx" " xxxxxxxxxxxx x xx" " xxxxxxxxxxxxxxxxxx x" " xxxxxxxxxxxxxxxxxx x" " xxxxxxxxxxxx x xx" " xxxxxxxxxxxxxx xxx" " xxxxxxxxxxxx xx x" " xxxxxxxxxxxx xx x" " xxxxx xxxxxxxx xx xx x" " xxxxxx xxxxxx xxx x" " xxxxxxx x xx xx" " xxxxxxxx xx xx xx xxx" " xxxxxxxx xx xx xx xx x" " xxxxxxx xx xxx xx x" " xxxxxxx xx xxx xx x" " xxxxx xxx xxx x" " xxx x" " x"))) (make-problem "19990104-FRA (3)" (quote ((7) (7) (7) (7) (7) (7) (8) (9) (18) (19) (30) (11 1 3 8) (12 4 1 9) (11 5 10) (10 5 10) (10 4 1 9) (9 3 3 8) (25) (3 20) (1 17) (15) (12) (10) (7) (7) (5) (4) (5) (3) ())) (quote ((2) (3) (4) (6) (7) (8) (9) (10) (9) (8) (19) (11 8) (11 9) (11 5) (11 11) (11 11) (25) (5 4 9) (5 2 12) (5 13) (4 2 13) (3 4 12) (17 2) (15) (14) (13) (13) (12) (10) (9))) (quote (" xx " " xxx " " xxxx " " xxxxxx " " xxxxxxx " " xxxxxxxx " " xxxxxxxxx " " xxxxxxxxxx " " xxxxxxxxx " " xxxxxxxx " "xxxxxxxxxxxxxxxxxxx " "xxxxxxxxxxx xxxxxxxx " "xxxxxxxxxxx xxxxxxxxx " "xxxxxxxxxxx xxxxx " "xxxxxxxxxxx xxxxxxxxxxx " "xxxxxxxxxxx xxxxxxxxxxx " "xxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxx xxxx xxxxxxxxx " " xxxxx xx xxxxxxxxxxxx " " xxxxx xxxxxxxxxxxxx " " xxxx xx xxxxxxxxxxxxx " " xxx xxxx xxxxxxxxxxxx " " xxxxxxxxxxxxxxxxx xx " " xxxxxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxx " " xxxxxxxxxx " " xxxxxxxxx "))) (make-problem "19990708-VEG (4)" (quote ((1 1 3 1 1 3 1 1) (1 1 1 1 2 2 1 5) (3 1 1 1 1 1 2 5) (1 1 1 1 1 1 1 3) (1 1 3 1 1 3 1) () () () () (1) (3) (5 1) (7 1) (10) (11) (13) (15) (2 2) (2 2 2 2) (2 2 2 2) (2 2) (2 2) (12 3 9) (1 1 1 3 3 3 1 1) (2 2 2 2 3 2 2 2) (1 1 1 3 3 3 1 1) (30) (13) (1 1) (1 1))) (quote ((5 2 2) (1 1 1 1) (5 1 1 1) (2 2) (5 1 1 1) (1 1 1 1 1) (5 2 2) (1 1 1) (5 1 1 1) (1 1 2 2) (1 13) (1 14) (5 4 2) (5 2 2) (5 6 2 2) (1 1 1 7 6) (1 1 8 6) (7 2 6) (6 2 3) (5 2 1) (2 4 3) (4 17 1) (4 13) (4 1 2 2) (2 1 1 1) (1 1 1) (2 2) (1 1 1) (1 1 1) (2 2))) (quote ("xxxxx xx xx " " x x x x " "xxxxx x x x " " xx xx " "xxxxx x x x " "x x x x x " "xxxxx xx xx " " x x x " "xxxxx x x x " " x x xx xx " " x xxxxxxxxxxxxx " " x xxxxxxxxxxxxxx " "xxxxx xxxx xx " " xxxxx xx xx " "xxxxx xxxxxx xx xx " "x x x xxxxxxx xxxxxx " "x x xxxxxxxx xxxxxx " " xxxxxxx xx xxxxxx " " xxxxxx xx xxx " " xxxxx xx x" " xx xxxx xxx " "xxxx xxxxxxxxxxxxxxxxx x" " xxxx xxxxxxxxxxxxx " "xxxx x xx xx " " xx x x x " " x x x " " xx xx " " x x x " " x x x " " xx xx "))) (make-problem "19990729-WHO (5)" (quote ((3) (1 2) (1 5) (1 1 1 4) (1 1 1 3) (1 1 1 2) (1 5) (1 3) (1 2) (1 1) (1 1) (1 1) (3 2) (12 5) (13 6) (14 8) (15 9) (16 9) (16 10) (16 10) (16 9) (16 9) (8 7 9) (8 16) (27) (26) (25) (22) (15) (5))) (quote (() (3) (6) (12) (13) (14) (15) (16) (16) (17) (9 6) (9 6) (17) (17) (16) (16) (17) (17) (28) (1 5) (28) (2 3 16) (6 15) (1 1 15) (5 14) (3 13) (2 11) (1 10) (7) (2))) (quote (" " " xxx " " xxxxxx " " xxxxxxxxxxxx " " xxxxxxxxxxxxx " " xxxxxxxxxxxxxx " " xxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxx" " xxxxxxxxx xxxxxx" " xxxxxxxxx xxxxxx" " xxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxxxxxxxxxxxx " "x xxxxx " "xxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xx xxx xxxxxxxxxxxxxxxx " " xxxxxx xxxxxxxxxxxxxxx " " x x xxxxxxxxxxxxxxx " " xxxxx xxxxxxxxxxxxxx " " xxx xxxxxxxxxxxxx " " xx xxxxxxxxxxx " " x xxxxxxxxxx " " xxxxxxx " " xx "))) (make-problem "19990820-DAH (6)" (quote (() (7 1 8) (1 4 2 1 2 1) (1 2 3 1 1 1 1) (1 2 4 1 1 1 1) (1 3 5 1 2 1) (1 2 1 2 1 1 1 1) (3 2 1 2 2) (3 2 8) () () (8 4) (8 3 4 2 2) (2 2 2 3 2) (1 1 1 1 3) (1 2 1 1 1 2) (1 1 1 1) (8 1 1 2) (6 2) () () (6 3) (1 1 2 1 1 1) (1 1 1 4 2 1 1) (1 1 1 1 2 2 1) (1 1 1 5 3 2) (6 1 1 1 2 2) (4 2 1 2) (1 2 1 6) ())) (quote (() (7 6) (1 1 2 1 6 1) (1 1 1 1 2 1 2) (2 1 1 1 1 1 3) (2 1 1 1 1 1 1 3) (8 1 1 2 1 2) (7 2 1 6 1) (6) () () (3 6) (3 2 1 2) (6 2 1 1 1 1 1) (4 1 1 1 1 1) (4 2 1 1 1 1) (5 3 1 1 1 1 1) (1 1 3 2 3 1) (3 2) () () (8 6) (1 2 1 5) (1 2 1 1 2 1) (2 1 1 1 2 2 2) (2 1 1 1 2 2 1 1 1) (1 2 1 1 4 1 3) (1 2 2 1 1) (8 3) ())) (quote #f)) (make-problem "19990821-ICO (7)" (quote (() () (1 1 1 1 1) (2 1 1 1 1) (2 2 1 1 1 1) (1 2 1 4 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 7) (6 4 3 5) (6 2 2 3) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (1 1 3 3 1 1 3 1 1 3) (1 1 1 1 2 1 1 1 1 1) (1 1 1 3 1 2 3 1 1 3) (1 1 1 1 1 1 1 1 1 1) (3 1 3 1 1 3 1 2 3) ())) (quote ((9) (2 5) (19 1) (24) (2) (9 1) (5) (1) (6) (8 5) (21 1 1) (21 1 1) (8) (6 5) (1) (1) (5) (22) (24 1) (8 1 1 1) (1 3) () (10 5) (2) (12 5) (13 1) (12) (2 3 1) (10 1 1 1) (1 3))) (quote (" xxxxxxxxx " " xx xxxxx " " xxxxxxxxxxxxxxxxxxx x " " xxxxxxxxxxxxxxxxxxxxxxxx " " xx " " xxxxxxxxx x " " xxxxx " " x " " xxxxxx " " xxxxxxxx xxxxx " " xxxxxxxxxxxxxxxxxxxxx x x " " xxxxxxxxxxxxxxxxxxxxx x x " " xxxxxxxx " " xxxxxx xxxxx " " x " " x " " xxxxx " " xxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxx x " " xxxxxxxx x x x " " x xxx " " " " xxxxxxxxxx xxxxx " " xx " " xxxxxxxxxxxx xxxxx " " xxxxxxxxxxxxx x " " xxxxxxxxxxxx " " xx xxx x " " xxxxxxxxxx x x x " " x xxx "))) (make-problem "19990908-ALE (8)" (quote ((12 16) (11 15) (10 14) (4 4 14) (3 4 3 10) (2 4 3 9) (2 3 4 8) (3 4 4 8) (4 5 5 9) (6 5 5 10) (7 4 6 10) (8 3 5 11) (8 3 4 12) (8 4 3 12) (8 4 2 5 6) (8 4 2 4 5) (8 4 2 3 5) (9 3 2 3 4) (9 4 1 2 1 1 3) (10 4 1 3 3 2) (10 4 3 4) (11 2 3) (16 1 1 2) (21 2 2) (21 5) (20 4) (19 3) (21 1 6) (21 1 6) (20 1 5))) (quote ((30) (30) (5 23) (4 22) (3 21) (3 21) (4 1 20) (5 3 19) (11 13) (17 11) (2 15 9) (1 1 12 8) (3 8 8) (7 3 8) (1 13 2 8) (2 15 8) (6 6 7) (5 3 8 7) (4 1 7 2 7) (4 7 2 3 3) (5 7 2 3 2) (6 7 1) (14 3) (14) (15 1 2) (17 2 3 3) (18 2 3 3) (19 2 6) (30) (30))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxxxxxxxxxxx" "xxx xxxxxxxxxxxxxxxxxxxxx" "xxx xxxxxxxxxxxxxxxxxxxxx" "xxxx x xxxxxxxxxxxxxxxxxxxx" "xxxxx xxx xxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxx xxxxxxxxxxx" "xx xxxxxxxxxxxxxxx xxxxxxxxx" "x x xxxxxxxxxxxx xxxxxxxx" " xxx xxxxxxxx xxxxxxxx" " xxxxxxx xxx xxxxxxxx" "x xxxxxxxxxxxxx xx xxxxxxxx" "xx xxxxxxxxxxxxxxx xxxxxxxx" "xxxxxx xxxxxx xxxxxxx" "xxxxx xxx xxxxxxxx xxxxxxx" "xxxx x xxxxxxx xx xxxxxxx" "xxxx xxxxxxx xx xxx xxx" "xxxxx xxxxxxx xx xxx xx " "xxxxxx xxxxxxx x " "xxxxxxxxxxxxxx xxx" "xxxxxxxxxxxxxx " "xxxxxxxxxxxxxxx x xx " "xxxxxxxxxxxxxxxxx xx xxx xxx" "xxxxxxxxxxxxxxxxxx xx xxx xxx" "xxxxxxxxxxxxxxxxxxx xx xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990913-TUC (9)" (quote ((12 14) (13 15) (13 15) (13 15) (1 6 6 3) (1 3 5 5 3 3) (1 1 4 4 3 3) (1 1 1 3 3 1 3) (1 3 3 3 1 1 3) (1 3 3 3 3 3) (1 3 3 6 3 3 3) (2 1 4 6 4 1 4) (3 5 6 5 5) (3 5 6 5 5) (3 5 5 5) (3 5 5 5) (3 5 5 5) (2 4 4 4) (1 1 1 3 3 1 1 3) (1 3 3 3 3 3) (2 4 4 4) (30) () (30) (1 1 2 1 1 1 2) (1 2 1 2 1 4 4 2 1 3) (1 4 1 2 2 2) (1 2 1 2 1 4 4 2 4) (1 1 2 1 1 1 2 1) (30))) (quote ((22 7) (4 7 2 1 1) (4 1 4 5 2 1 1 3 1) (4 2 4 1 1 1 3 1) (4 1 4 5 2 1 1 1 1) (4 7 2 7) (22 1 1) (22 3 3) (22 3 3) (7 1 1 1) (6 1 7) (5 4 1 1 1) (3 4 1 1 1 1 1) (4 1 1 1 1 1) (4 1 1 3 1) (3 4 1 7) (5 4 1 1 1) (6 1 1 1 1 1) (7 1 1 1 1 1) (22 1 3 1) (22 7) (22 1 1) (4 7 2 1 1 3) (4 2 3 5 2 1 1 1 3) (4 3 3 1 1 2 1 1) (4 2 3 5 2 1 7) (4 7 2 1 1 1) (22 1 1 1 1) (22 1 1 1 1) (22 1 1 1))) (quote ("xxxxxxxxxxxxxxxxxxxxxx xxxxxxx" "xxxx xxxxxxx xx x x" "xxxx x xxxx xxxxx xx x x xxx x" "xxxx xx xxxx x x x xxx x" "xxxx x xxxx xxxxx xx x x x x" "xxxx xxxxxxx xx xxxxxxx" "xxxxxxxxxxxxxxxxxxxxxx x x" "xxxxxxxxxxxxxxxxxxxxxx xxx xxx" "xxxxxxxxxxxxxxxxxxxxxx xxx xxx" "xxxxxxx x x x" "xxxxxx x xxxxxxx" "xxxxx xxxx x x x" " xxx xxxx x x x x x" " xxxx x x x x x" " xxxx x x xxx x" " xxx xxxx x xxxxxxx" "xxxxx xxxx x x x" "xxxxxx x x x x x" "xxxxxxx x x x x x" "xxxxxxxxxxxxxxxxxxxxxx x xxx x" "xxxxxxxxxxxxxxxxxxxxxx xxxxxxx" "xxxxxxxxxxxxxxxxxxxxxx x x" "xxxx xxxxxxx xx x x xxx" "xxxx xx xxx xxxxx xx x x x xxx" "xxxx xxx xxx x x xx x x" "xxxx xx xxx xxxxx xx x xxxxxxx" "xxxx xxxxxxx xx x x x" "xxxxxxxxxxxxxxxxxxxxxx x x x x" "xxxxxxxxxxxxxxxxxxxxxx x x x x" "xxxxxxxxxxxxxxxxxxxxxx x x x"))) (make-problem "19990916bCAR (10)" (quote ((30) (30) (30) (7 7 6) (6 5 5) (5 3 3 3 4) (5 5 1 5 4) (5 6 6 4) (5 15 4) (5 5 5 4) (6 4 4 5) (6 3 3 5) (7 4 4 6) (8 3 3 7) (9 5 8) (9 3 8) (10 1 9) (11 10) (12 11) (13 12) (14 13) (15 8 3) (23 3 2) (7 12 3 1) (7 2) (7 2) (7 1 1 12 3 1) (7 1 13 3 2) (24 3) (30))) (quote ((30) (30) (30) (30) (30) (5 20) (4 18) (3 10 2) (3 3 9 4) (3 5 7 2) (3 6 6 4) (3 8 5 3) (4 8 5 4) (5 8 4 4) (6 1 4 3 4) (7 1 3 2 4) (6 1 4 3 4) (5 8 4 4) (4 8 5 4) (3 8 6 4) (3 6 7 4) (3 5 8 4) (3 3 10 4) (3 9 1 1 2) (4 9 1 1 1) (5 11 2 2 1) (21 2 2 1) (22 4 2) (23 2 3) (24 4))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxx xxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxxxxxxx" "xxx xxxxxxxxxx xx" "xxx xxx xxxxxxxxx xxxx" "xxx xxxxx xxxxxxx xx" "xxx xxxxxx xxxxxx xxxx" "xxx xxxxxxxx xxxxx xxx" "xxxx xxxxxxxx xxxxx xxxx" "xxxxx xxxxxxxx xxxx xxxx" "xxxxxx x xxxx xxx xxxx" "xxxxxxx x xxx xx xxxx" "xxxxxx x xxxx xxx xxxx" "xxxxx xxxxxxxx xxxx xxxx" "xxxx xxxxxxxx xxxxx xxxx" "xxx xxxxxxxx xxxxxx xxxx" "xxx xxxxxx xxxxxxx xxxx" "xxx xxxxx xxxxxxxx xxxx" "xxx xxx xxxxxxxxxx xxxx" "xxx xxxxxxxxx x x xx" "xxxx xxxxxxxxx x x x" "xxxxx xxxxxxxxxxx xx xx x" "xxxxxxxxxxxxxxxxxxxxx xx xx x" "xxxxxxxxxxxxxxxxxxxxxx xxxx xx" "xxxxxxxxxxxxxxxxxxxxxxx xx xxx" "xxxxxxxxxxxxxxxxxxxxxxxx xxxx"))) (make-problem "19990920-BBA (11)" (quote ((6) (3 2 1 2) (1 1 1 4 4) (3 1 1 1 2 3) (8 2 2 1 4) (11 8 2) (1 1 1 6 9 1) (1 24) (1 2 12 4 3) (4 1 1 1 1 1 3 7 1) (1 5 3 5 4 1 2) (3 5 2 4 7 1) (3 1 5 1 1 4 2 1) (1 4 3 4 5 7) (1 1 3 4 1 3 2 3 1) (4 1 6 4 9) (7 1 2 2 4 3) (3 4 2 2 2 1 3 2) (3 1 1 1 2 2 1 8) (2 3 3 4 1 3 1 1) (3 2 2 1 2 2 1 4) (2 1 3 3 2 4 2) (1 1 3 3 2 1 1 1) (1 1 1 1 1 3 1) (1 3 1 1) (2 6) (5 6) (3 5 2 1 1) (1 3 1 1 2 4) (2 3 3 4 1))) (quote ((4) (4 2 1) (2 6 6) (1 3 1 4 2) (2 3 3 5 1) (1 2 2 5 1 1) (4 4 1 1 3 1 1) (1 2 1 4 3 4 2) (1 7 5 3 2 1) (5 2 8 3 1 1) (1 8 1 2 4 1 1) (1 1 5 2 4 1 2) (2 6 1 1 6 4) (3 6 1 3 8) (1 2 4 2 3 4 2) (3 1 6 14) (1 1 2 2 4 4 2 1 1) (1 1 7 3 7 2) (2 7 3 7 3 1) (8 2 2 5) (2 3 1 1 2 2 2) (1 9 6 1 2 1) (1 8 2 5 1 1) (11 1 3 1 1 3) (2 10 2 4 1) (4 1 1 6 1 1 1) (2 1 8 5 1) (4 2 4 2 2 1) (2 2 3 3) (3 2))) (quote (" xxxx " " xxxx xx x " " xx xxxxxx xxxxxx " " x xxx x xxxx xx " " xx xxx xxx xxxxx x " " x xx xx xxxxx x x " " xxxx xxxx x x xxx x x" " x xx x xxxx xxx xxxx xx" " x xxxxxxx xxxxx xxx xx x " " xxxxx xx xxxxxxxx xxx x x" " x xxxxxxxx x xx xxxx x x" "x x xxxxx xx xxxx x xx" "xx xxxxxx x x xxxxxx xxxx " "xxx xxxxxx x xxx xxxxxxxx " "x xx xxxx xx xxx xxxx xx " "xxx x xxxxxx xxxxxxxxxxxxxx " "x x xx xx xxxx xxxx xx x x" " x x xxxxxxx xxx xxxxxxx xx" " xx xxxxxxx xxx xxxxxxx xxx x" " xxxxxxxx xx xx xxxxx " " xx xxx x x xx xx xx" " x xxxxxxxxx xxxxxx x xx x" " x xxxxxxxx xx xxxxx x x" " xxxxxxxxxxx x xxx x x xxx" " xx xxxxxxxxxx xx xxxx x " " xxxx x x xxxxxx x x x " " xx x xxxxxxxx xxxxx x " " xxxx xx xxxx xx xx x" " xx xx xxx xxx " " xxx xx "))) (make-problem "19991002bTPV (12)" (quote ((30) () (2 1) (3 2) (3 3) (1 2 4) (1 1 5) (30) (1 2 4 1) (1 1 4 1) (1 3 1) (1 2 1) (1 1 1) (1 1 1) (30) (1 1 1) (5 1 5) (6 1 1 6) (6 1 6) (4 1 1 4) (1 1 1) (30) (4 1) (4 5) (2 1 6) (1 2 6) (4 4) (4) (30) (1 1))) (quote ((1 1 1 1 1) (1 1 1 2 1 1) (1 1 1 4 1 1) (1 1 1 4 1 1) (1 1 1 4 1 1) (1 1 1 4 1 1) (1 17 1 1) (1 3 1 1 1 1) (1 3 1 1 1 1 1) (1 4 1 1 1) (1 3 1 1 2 2) (1 1 1 10) (1 1 1 3 3) (1 1 1 11) (1 1 1 2 2 1) (1 1 1 1 1) (1 1 1 1 2 1) (1 1 1 1 4 1) (1 1 1 1 4 1) (1 1 1 1 4 1) (1 1 1 1 4 1) (1 1 17 1) (1 5 1 1 1) (1 4 1 2 1 1) (1 4 1 4 1 1) (1 4 1 4 1 1) (1 4 1 4 1 1) (1 5 1 4 1 1) (1 17 1 1) (1 1 1 1 1))) (quote ("x x x x x " "x x x xx x x " "x x x xxxx x x " "x x x xxxx x x " "x x x xxxx x x " "x x x xxxx x x " "x xxxxxxxxxxxxxxxxx x x " "x xxx x x x x " "x xxx x x x x x " "x xxxx x x x " "x xxx x x xx xx " "x x x xxxxxxxxxx" "x x x xxx xxx " "x x x xxxxxxxxxxx" "x x x xx xx x " "x x x x x " "x x x x xx x " "x x x x xxxx x " "x x x x xxxx x " "x x x x xxxx x " "x x x x xxxx x " "x x xxxxxxxxxxxxxxxxx x " "x xxxxx x x x " "x xxxx x xx x x " "x xxxx x xxxx x x " "x xxxx x xxxx x x " "x xxxx x xxxx x x " "x xxxxx x xxxx x x " "x xxxxxxxxxxxxxxxxx x x " "x x x x x "))) (make-problem "19991012-LSA (13)" (quote ((16 13) (4 4 5 4 3 1) (2 1 2 5 2 2 1) (4 2 2 3 1 3 3) (5 1 3 3 2 4 3) (1 2 1 1 2 2 2 3) (2 2 1 2 2 1 2 3) (3 1 2 2 2 1 2 4) (1 2 2 2 1 2 1 2 5) (2 1 1 2 1 2 2 1 1 1) (3 2 2 2 2 1 1 1) (4 1 1 1 1 1 1 3) (5 2 3 1 2 1 2 4) (1 2 2 2 1 1 1 5) (3 1 1 1 1 2 2 2 1) (7 3 1 1 2 1 4) (7 2 1 2 1 1 1) (3 2 1 1 1 2 3 1 1) (1 1 1) (1 1 22 1 1) (3 1 1 3) (2 2 1 1 1 3 1 1 3 1 3) (2 2 1 1 1 1 1 1 1 1 1 1 2) (2 2 1 3 1 1 3 1 1 5) (2 2 5) (6 6) (7 7) (8 8) (9 9) (10 10))) (quote ((30) (5 2 4 4 10) (2 2 2 3 4 2 5) (2 3 1 2 2 9) (1 3 1 1 2 11) (3 3 1 1 2 1 5) (2 1 1 2 1 3 1 1 1 4) (2 3 1 1 1 1 1 1 3) (2 2 2 1 1 1 1 2) (1 2 3 4 1 2 1) (1 3 3 2 1 1 1) (1 3 3 1 1 1) (2 1 2 2 1 1 1) (3 3 4 1 2) (4 1 1 1) (5 12 1 1) (10 1 1 1) (1 1 2 1 4 1 2) (1 8 1 1 1) (3 7 1 1) (6 1 1 1 1 1 1) (2 1 7 1 2 2) (2 1 4 1 1 1 3) (1 5 1 1 1 1 1 4) (1 5 3 1 1 1 5) (5 2 1 1 11) (2 2 2 2 7) (2 6 4 1 5 7) (1 6 3 1 10) (10 19))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxx xx xxxx xxxx xxxxxxxxxx" "xx xx xx xxx xxxx xx xxxxx" "xx xxx x xx xx xxxxxxxxx" "x xxx x x xx xxxxxxxxxxx" "xxx xxx x x xx x xxxxx" "xx x x xx x xxx x x x xxxx" "xx xxx x x x x x x xxx" "xx xx xx x x x x xx" "x xx xxx xxxx x xx x" "x xxx xxx xx x x x " "x xxx xxx x x x " "xx x xx xx x x x " "xxx xxx xxxx x xx " "xxxx x x x " "xxxxx xxxxxxxxxxxx x x " " xxxxxxxxxx x x x " "x x xx x xxxx x xx " "x xxxxxxxx x x x " "xxx xxxxxxx x x " "xxxxxx x x x x x x" "xx x xxxxxxx x xx xx" "xx x xxxx x x x xxx" "x xxxxx x x x x x xxxx" "x xxxxx xxx x x x xxxxx" "xxxxx xx x x xxxxxxxxxxx" "xx xx xx xx xxxxxxx" "xx xxxxxx xxxx x xxxxx xxxxxxx" "x xxxxxx xxx x xxxxxxxxxx" "xxxxxxxxxx xxxxxxxxxxxxxxxxxxx"))) (make-problem "19991028-BDH (14)" (quote ((7 7) (9 9) (11 11) (12 12) (12 12) (12 12) (12 12) (12 12) (30) (28) (8 4 8) (5 1 2 1 5) (2 3 3 2) (3 3 3 3) (2 3 3 2) (2 3 3 2) (3 3 3 3) (3 1 1 3) (2 2) (2 2) (2 4 2) (2 6 2) (2 4 2) (1 1) (1 1 1 1) (2 14 2) (2 10 2) (3 4 3) (3 3) (10))) (quote ((7) (9) (11) (12 7) (12 13) (18 2) (14 2) (12 1) (11 2 2) (10 5 1 1) (8 7 2 2) (7 5 2 1) (2 1 2 1) (3 3 3 1) (4 3 3 1) (4 3 3 1) (3 3 3 1) (2 1 2 1) (7 5 2 1) (8 7 2 2) (10 5 1 1) (11 2 2) (12 1) (14 2) (18 2) (12 13) (12 7) (11) (9) (7))) (quote (" xxxxxxx " " xxxxxxxxx " "xxxxxxxxxxx " "xxxxxxxxxxxx xxxxxxx " "xxxxxxxxxxxx xxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxx xx " "xxxxxxxxxxxxxx xx " "xxxxxxxxxxxx x " "xxxxxxxxxxx xx xx " " xxxxxxxxxx xxxxx x x " " xxxxxxxx xxxxxxx xx xx" " xxxxxxx xxxxx xx x" " xx x xx x" " xxx xxx xxx x" " xxxx xxx xxx x" " xxxx xxx xxx x" " xxx xxx xxx x" " xx x xx x" " xxxxxxx xxxxx xx x" " xxxxxxxx xxxxxxx xx xx" " xxxxxxxxxx xxxxx x x " "xxxxxxxxxxx xx xx " "xxxxxxxxxxxx x " "xxxxxxxxxxxxxx xx " "xxxxxxxxxxxxxxxxxx xx " "xxxxxxxxxxxx xxxxxxxxxxxxx " "xxxxxxxxxxxx xxxxxxx " "xxxxxxxxxxx " " xxxxxxxxx " " xxxxxxx "))) (make-problem "19991101-SHE (15)" (quote ((4) (2 2) (1 2) (2 1 3) (2 3) (2 1 3) (3 3) (3 4) (5 4) (1 7) (2 7) (2 8) (2 4) (1 2 2 2) (1 2 3 4) (3 3 4 7) (3 4 4 2) (8 7 1) (6 11 1) (5 8 3) (5 8) (17) (17) (16) (15) (14) (13) (11) (9) (5))) (quote (() (3) (3) (5) (5) (7) (9) (11) (1 4 8) (5 8) (3 8) (9) (9) (9) (3 11) (4 8 13) (8 16) (2 3 15) (1 1 3 13) (1 1 3 11) (2 1 4 8) (14 6) (14 1) (9 2 1) (5 2 1) (2 1 1) (1 1 1) (1 2 1) (5) ())) (quote (" " " xxx " " xxx " " xxxxx " " xxxxx " " xxxxxxx " " xxxxxxxxx " " xxxxxxxxxxx " " x xxxx xxxxxxxx " " xxxxx xxxxxxxx " " xxx xxxxxxxx " " xxxxxxxxx" " xxxxxxxxx" " xxxxxxxxx" " xxx xxxxxxxxxxx" " xxxx xxxxxxxx xxxxxxxxxxxxx" " xxxxxxxx xxxxxxxxxxxxxxxx " "xx xxx xxxxxxxxxxxxxxx " "x x xxx xxxxxxxxxxxxx " "x x xxx xxxxxxxxxxx " "xx x xxxx xxxxxxxx " " xxxxxxxxxxxxxx xxxxxx " " xxxxxxxxxxxxxx x " " xxxxxxxxx xx x " " xxxxx xx x " " xx x x " " x x x " " x xx x " " xxxxx " " "))) (make-problem "19991105bBDH (16)" (quote ((1) (1 1) (1 1) (1 1 1) (1 1 2) (2 3) (1 1 1) (2 1) (4 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1 4) (1 1 1 1) (1 1 1 1) (4 1 1 1 1) (6 1 1 5) (7 1 1 4) (4 1 1 6) (17) (16) (14))) (quote ((2) (2) (3) (3) (2) (3) (3) (4) (5) (3) (22) (1 3) (3 1 3) (1 1 1 3) (1 4 3) (3 1 3) (1 3) (1 3) (2 3) (27) (3) (4) (3) (2) (2) (6) (1 3) (1 1) (1 1) (5))) (quote (" xx " " xx " " xxx " " xxx " " xx " " xxx " " xxx " " xxxx " " xxxxx" " xxx" " xxxxxxxxxxxxxxxxxxxxxx" " x xxx" " xxx x xxx" " x x x xxx" "x xxxx xxx" " xxx x xxx" " x xxx" " x xxx" " xx xxx" " xxxxxxxxxxxxxxxxxxxxxxxxxxx" " xxx" " xxxx" " xxx " " xx " " xx " " xxxxxx " " x xxx " " x x " " x x " " xxxxx "))) (make-problem "19991113aBAR (17)" (quote ((11) (15) (18) (20) (22) (24) (25) (27) (24 2) (5 4 1) (2 2 1) (1 5 5 1 1) (6 2 2 5 2) (4 6 7) (2 18 2) (2 3 3 2) (8 3 3 6) (6 7 8) (4 3 2 2 4 4) (3 5 6 2) (2 3 4 3 2) (2 13 1) (2 4 4 1) (2 1) (2 1 2) (3 2 3) (4 1 1 3 1 3) (6 1 1 2 4) (11 2 2 11) (30))) (quote ((12) (3 13) (3 8 5) (3 7 4) (5 2 2 3) (6 3 3 5) (7 2 1 4 2 2) (7 1 3 3 2) (8 1 3 3 2) (8 1 3 3 4) (9 2 1 2 2 2) (9 3 2 2 1) (9 2 1 2 1) (9 2 2 3 2) (9 2 2 2 2) (9 2 2 2 1 1) (9 3 1 3 1 2) (9 2 1 2 2 4) (9 1 3 2 2 1) (9 1 3 4 2) (9 1 3 3 2) (9 2 1 4 2) (9 3 4 2) (8 2 4 3) (9 7 4) (6 8 2) (4 1 3 3) (3 1 3 5) (3 2 4 6) (6 12))) (quote (" xxxxxxxxxxxx" " xxx xxxxxxxxxxxxx" " xxx xxxxxxxx xxxxx" " xxx xxxxxxx xxxx" " xxxxx xx xx xxx" " xxxxxx xxx xxx xxxxx" " xxxxxxx xx x xxxx xx xx" " xxxxxxx x xxx xxx xx" " xxxxxxxx x xxx xxx xx" " xxxxxxxx x xxx xxx xxxx" "xxxxxxxxx xx x xx xx xx" "xxxxxxxxx xxx xx xx x" "xxxxxxxxx xx x xx x" "xxxxxxxxx xx xx xxx xx" "xxxxxxxxx xx xx xx xx" "xxxxxxxxx xx xx xx x x" "xxxxxxxxx xxx x xxx x xx" "xxxxxxxxx xx x xx xx xxxx" "xxxxxxxxx x xxx xx xx x" "xxxxxxxxx x xxx xxxx xx" "xxxxxxxxx x xxx xxx xx" " xxxxxxxxx xx x xxxx xx" " xxxxxxxxx xxx xxxx xx" " xxxxxxxx xx xxxx xxx" " xxxxxxxxx xxxxxxx xxxx" " xxxxxx xxxxxxxx xx" " xxxx x xxx xxx" " xxx x xxx xxxxx" " xxx xx xxxx xxxxxx" " xxxxxx xxxxxxxxxxxx"))) (make-problem "19991113eBAR (18)" (quote ((6) (1 8) (11 1) (12) (1 6) (2 1 7 1) (1 2 7) (5 10) (6 9) (4 8) (7 8) (5 8) (2 10) (2 2 9) (1 3 13) (1 2 3 8) (6 4 3 5) (1 1 1 4 3) (6 9) (7 8) (8 8) (8 8) (8 5 2) (8 6 1) (18) (17) (16) (14) (12) (10))) (quote ((4) (2 1 1 1) (2 2 2 1 1) (2 4 2 1 1) (11 2 1) (4 7 7) (4 1 5 1 7) (4 3 1 9) (6 1 10) (6 3 17) (17 12) (16 11) (13 1 10) (12 7) (2 11 6) (11 6) (13 6) (2 7 6) (1 1 2 6) (2 7) (3 6) (4 6) (11) (10) (8) (5) (5) (5) (6) (6))) (quote (" xxxx " " xx x x x " " xx xx xx x x " " xx xxxx xx x x " " xxxxxxxxxxx xx x " "xxxx xxxxxxx xxxxxxx " "xxxx x xxxxx x xxxxxxx " "xxxx xxx x xxxxxxxxx " "xxxxxx x xxxxxxxxxx " "xxxxxx xxx xxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxx xxxxxxxxxxxx" " xxxxxxxxxxxxxxxx xxxxxxxxxxx" " xxxxxxxxxxxxx x xxxxxxxxxx" " xxxxxxxxxxxx xxxxxxx" " xx xxxxxxxxxxx xxxxxx" " xxxxxxxxxxx xxxxxx" " xxxxxxxxxxxxx xxxxxx" " xx xxxxxxx xxxxxx" " x x xx xxxxxx" " xx xxxxxxx" " xxx xxxxxx " " xxxx xxxxxx " " xxxxxxxxxxx " " xxxxxxxxxx " " xxxxxxxx " " xxxxx " " xxxxx " " xxxxx " " xxxxxx " " xxxxxx "))) (make-problem "19991115aBAR (19)" (quote ((3 11) (3 9) (4 8) (5 6) (6 5) (12 4) (6 3) (8 3) (1 7 2) (8 2) (3 2 2) (2 4 1) (7 1) (10 1) (11 1) (3 4 4 1) (9 4 4) (10 4 1) (9 3 1) (13 1) (13 1) (13 1) (13 2) (8 3 2) (7 4 2) (4 2 1 2 3) (6 3 3) (6 4 4) (5 1 2 5) (4 6))) (quote ((3) (4) (4) (4) (3) (2) (2) (1) (1 2 1 2) (1 1 3 2 5) (6 4 5 6) (11 13) (9 4 9) (27) (25) (6 13 3) (4 12 2) (1 1 3 7) (1 2 6) (1 1 3 6) (1 2 7) (2 2 6) (3 2 3 3) (3 3 2) (4 3 1) (5 1 2) (6 2 3) (8 1 5) (11 1 8) (30))) (quote (" xxx" " xxxx" " xxxx" " xxxx" " xxx " " xx " " xx " " x " " x xx x xx " "x x xxx xx xxxxx " "xxxxxx xxxx xxxxx xxxxxx " "xxxxxxxxxxx xxxxxxxxxxxxx " " xxxxxxxxx xxxx xxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxx xxxxxxxxxxxxx xxx " " xxxx xxxxxxxxxxxx xx " " x x xxx xxxxxxx " " x xx xxxxxx " "x x xxx xxxxxx " "x xx xxxxxxx " "xx xx xxxxxx " "xxx xx xxx xxx " "xxx xxx xx " "xxxx xxx x" "xxxxx x xx" "xxxxxx xx xxx" "xxxxxxxx x xxxxx" "xxxxxxxxxxx x xxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k30x35 b/pkgs/games/paint-by-numbers/problems/k30x35 deleted file mode 100644 index 66d97f177d..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k30x35 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x35") (define problems (list (make-problem "19990507aJOJ (1)" (quote ((6 2 1 3 1 2 1 1 4) (5 1 1 1 4 1 1 1 1 3) (5 1 1 1 1 1 1 1 1 1) (4 1 1 1 1 1 2 1 1 1 3) (2 1 1 3 2 2 3 3 1) (1 2 18 2) (1 23) (2 21 2) (1 25) (3 22 2) (3 11 8 3) (2 10 7 2) (2 5 6 1) (1 5 2 2 5) (3 1 1 1 1 2) (2 1 1 1 1 1 1 1 1 1) (2 1 1 1 2 1 1 1 1) (2 1 2 4 2 1 1) (2 1 6 1 2) (1 3 6 3) (2 2 6 2 1) (3 2 2 4 2 2 1) (3 2 3 3 2 1) (4 2 5 5 2 2) (4 2 12 2 3) (3 4 6 3 3) (1 7 5 2) (3 4 3 2 1) (29) (1 8 2) (12 10) () (30) () (30))) (quote ((7 6 3 8 3 1 1) (5 1 4 5 6 2 1 1 1) (4 1 1 2 2 2 5 2 1 1 1) (4 1 1 4 2 2 3 1 1 1) (3 1 1 6 3 4 2 1 1 1 1) (1 1 8 1 6 1 1 1 1) (1 1 8 4 1 1 1 1) (1 1 8 1 2 1 1 1 1) (2 1 7 2 3 1 1 1) (1 8 2 3 1 1 1) (2 9 2 3 2 1 1 1) (1 8 1 1 2 2 1 1 1) (2 1 7 1 1 1 2 2 1 1) (2 7 1 1 3 3 2 1 1) (2 8 2 5 2 2 1 1) (2 5 6 2 2 1 1) (1 7 6 2 2 1 1) (9 2 5 2 2 1 1) (1 6 1 1 3 3 2 1 1) (1 8 1 1 1 2 2 1 1) (2 8 1 1 2 2 1 1 1) (1 9 2 3 2 1 1 1) (1 8 2 3 1 1 1) (1 10 2 2 1 1 1 1) (1 1 10 1 3 1 1 1 1) (1 1 8 1 4 1 1 1 1) (1 1 1 1 3 3 5 3 1 1 1) (2 1 1 1 1 3 4 2 2 1 1 1) (2 1 1 1 3 2 2 4 3 1 1) (3 1 1 4 4 8 2 1 1))) (quote ("xxxxxxx xxxxxx xxx xxxxxxxx xxx x x" "xxxxx x xxxx xxxxx xxxxxx xx x x x" "xxxx x x xx xx xx xxxxx xx x x x" "xxxx x x xxxx xx xx xxx x x x" "xxx x x xxxxxx xxx xxxx xx x x x x" "x x xxxxxxxx x xxxxxx x x x x" " x x xxxxxxxx xxxx x x x x" "x x xxxxxxxx x xx x x x x" "xx x xxxxxxx xx xxx x x x" " x xxxxxxxx xx xxx x x x" "xx xxxxxxxxx xx xxx xx x x x" " x xxxxxxxx x x xx xx x x x" "xx x xxxxxxx x x x xx xx x x" "xx xxxxxxx x x xxx xxx xx x x" "xx xxxxxxxx xx xxxxx xx xx x x" " xx xxxxx xxxxxx xx xx x x" "x xxxxxxx xxxxxx xx xx x x" " xxxxxxxxx xx xxxxx xx xx x x" "x xxxxxx x x xxx xxx xx x x" "x xxxxxxxx x x x xx xx x x" " xx xxxxxxxx x x xx xx x x x" "x xxxxxxxxx xx xxx xx x x x" " x xxxxxxxx xx xxx x x x" " x xxxxxxxxxx xx xx x x x x" "x x xxxxxxxxxx x xxx x x x x" " x x xxxxxxxx x xxxx x x x x" "x x x x xxx xxx xxxxx xxx x x x" "xx x x x x xxx xxxx xx xx x x x" "xx x x x xxx xx xx xxxx xxx x x" "xxx x x xxxx xxxx xxxxxxxx xx x x")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k30x40 b/pkgs/games/paint-by-numbers/problems/k30x40 deleted file mode 100644 index 08209d9808..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k30x40 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x40") (define problems (list (make-problem "19980514-KVL (1)" (quote ((14) (14) (16) (18) (20) (1 7 6) (1 3 4 4) (3 9 3) (5 8 2) (1 4 8 2) (1 1 13 1) (1 1 5 1 1) (1 1 2 1) (1 1 1 3 1) (3 1 1 6 1) (5 1 9 1) (1 4 8 2) (1 1 10 2) (1 1 8 3) (1 1 2 4 4) (1 4 6) (3 13) (5 11) (1 4 11) (1 1 15) (1 1 14) (1 1 1 11) (1 1 3 3) (3 4 2) (5 2 2) (1 4 2 2) (1 15) (1 14) (1 1 14) (1 14) (3 13) (5 11) (7 11) (18) (16))) (quote (() () () () () (34) (2 2 2 2 2 4) (3 2 2 2 2 5) (6 5 2 1 5 2 1 4) (6 2 2 2 2 4) (7 2 2 2 2 3) (7 2 4 3 5 5 3) (8 2 1 3 2 5 2) (6 1 2 2 2 2 5 2) (6 12 20) (5 7 5 19) (5 6 5 8 9) (5 5 6 6 1 9) (5 5 7 6 9) (6 4 6 7 9) (6 4 6 7 9) (7 3 4 8 9) (6 2 2 10 9) (7 23) (34) () () () () ())) (quote #f)) (make-problem "19990224aJOJ (2)" (quote ((13 1 1) (14 1) (1 14) (7 1 1 13) (8 3 12) (2 2 1 3 11) (2 2 4 11) (2 2 1 3 11) (2 2 4 11) (2 2 1 3 11) (8 3 12) (7 1 1 13) (1 14) (14 1) (13 1 1 3 2) (12 3 3 2) (11 3 1 4 2) (11 4 5 2) (11 3 1 2 2 2) (11 4 2 5) (11 3 1 2 4) (12 3 2 3) (13 1 1 2 3) (14 1) (1 14) (4 1 1 13) (6 3 12) (2 2 1 3 11) (2 2 4 11) (8 1 3 11) (8 4 11) (2 2 1 3 11) (2 2 3 12) (2 2 1 1 13) (1 14) (14 1) (13 1 1) (12 3) (11 3 1) (11 4))) (quote ((2 11 5) (2 9 11 6 5) (2 9 11 8 5) (2 2 2 11 3 2 5) (2 2 2 11 2 2 5) (2 2 2 11 2 2 5) (2 2 2 11 3 2 5) (2 9 11 8 5) (2 7 11 6 5) (2 11 5) (2 11 5) (2 5 3 3 5 3) (2 1 1 1 1 2 1 1 1 2 1 1 1 1 2 1) (1 2 1 1 2 1 1 1 1 1 2 1 1 2 1 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1) (2 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1) (3 3 5 3 3 2) (11 11) (11 11) (11 9 11) (11 9 11) (11 4 11) (11 4 11) (11 4 11) (11 4 11) (11 9 11) (11 9 11) (11 11))) (quote ("xx xxxxxxxxxxx xxxxx" "xx xxxxxxxxx xxxxxxxxxxx xxxxxx xxxxx" "xx xxxxxxxxx xxxxxxxxxxx xxxxxxxx xxxxx" "xx xx xx xxxxxxxxxxx xxx xx xxxxx" "xx xx xx xxxxxxxxxxx xx xx xxxxx" "xx xx xx xxxxxxxxxxx xx xx xxxxx" "xx xx xx xxxxxxxxxxx xxx xx xxxxx" "xx xxxxxxxxx xxxxxxxxxxx xxxxxxxx xxxxx" "xx xxxxxxx xxxxxxxxxxx xxxxxx xxxxx" "xx xxxxxxxxxxx xxxxx" "xx xxxxxxxxxxx xxxxx" "xx xxxxx xxx xxx xxxxx xxx " "xx x x x x xx x x x xx x x x x xx x " " x xx x x xx x x x x x xx x x xx x x " "x x x x x x x x x x x x x x x x x x x x " " x x x x x x x x x x x x x x x x x x x x" "x x x x x x xx x x xx x x x x x xx x" " xx x x x xx x x x x xx x x x xx x x" " xxx xxx xxxxx xxx xxx xx" " xxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxx xxxxxxxxxxx "))) (make-problem "19990507bJOJ (3)" (quote ((2 1 1 2 1 1 1) (2 1 1 1 1 1 1 3) (3 1 1 1 1 2 1 1) (2 11 2) (3 12 2) (2 12 2) (13 2) (1 2 14 2) (2 1 16) (18) (3 9) (2 2) (2 2) (2 2) (2 2) (2 2) (2 8 2) (2 10 2) (2 2) (3 3 3 3) (3 2 1 1 2 3) (2 1 2 2 2 1 2) (2 1 1 2 2 2 1 1 2) (2 1 2 1 1 2 1 2) (2 1 3 2 3 1 2) (2 1 4 1 2) (2 4 2) (2 6 2) (2 6 2) (2 6 2) (2 4 2) (2 2) (2 12 2) (2 3 2 2) (3 7 3) (6 6) (3 6 6 3) (2 1 1 11 1 1 2) (3 1 1 1 3 1 1 1 3) (2 1 1 1 2 2 1 1 1 2))) (quote (() (1) (3 2) (5 2) (1 1 2 2 2 4) (2 1 1 2 3 6 2) (1 2 1 1 4 1 13) (1 1 1 1 5 4) (1 1 1 2 4 6) (2 2 2 6 4 1 2) (1 1 2 4 1 2 2 2 5) (1 8 2 1 2 1 2 2 1) (9 2 1 2 1 3 3 2) (1 7 2 1 1 6 1 1 2) (9 2 2 7 1 1 2) (1 7 2 2 7 1 1 2) (10 2 1 1 6 1 1 2) (8 2 1 2 1 3 1 1 2) (10 2 1 2 1 3 2) (1 9 1 2 2 2 2 1) (1 9 4 1 5) (1 2 1 8 2) (1 1 4 6 6) (1 1 1 3 5 4) (2 1 1 1 1 3 1 13) (1 1 1 1 2 3 6 2) (2 1 2 2 2 4) (1 5 2) (3 2) (1))) (quote #f)) (make-problem "19990525bKHO (4)" (quote ((2) (2) (2) (2) (2) (2) (4) (10) (2 2) (1 4 1) (1 1 1 1) (1 1 4 1 1) (1 1 1 1) (1 1 4 1 1) (1 1 1 1) (1 4 1) (1 1) (12) (1 1) (1 1 2 1 1) (1 2 2 2 1) (1 1) (1 2 2 2 1) (1 2 2 2 1) (1 1) (1 2 2 2 1) (1 2 2 2 1) (1 1) (1 2 2 2 1) (1 2 2 2 1) (1 1) (1 2 2 2 1) (1 1 2 1 1) (1 1) (1 3 1) (1 5 1) (1 5 1) (1 3 1) (2 2) (10))) (quote (() () () () () () () (31) (2 1 2) (1 3 1 1 2 2 2 1 1) (1 1 1 1 2 2 2 2 2 2 1) (1 1 1 1 1 1 4 1) (1 1 1 1 1 1 2 2 2 2 2 4 1) (1 1 1 1 1 1 2 2 2 2 2 4 1) (2 1 1 1 1 1 2 1) (8 1 1 1 2 2 2 2 2 1) (8 3 1 1 2 2 2 1 1) (3 1 2) (31) () () () () () () () () () () ())) (quote #f)) (make-problem "19990611-KVL (5)" (quote (() (9) (13) (11 2) (9 6 1) (6 5) (4 2) (3 2) (3 1) (4 2) (4 1) (5 1) (5 1) (10 2 1) (11 7 3) (12 1 2) (12 5 2) (12 4 2) (13 2 1) (12) (4 2) (5 3) (5 3) (6 7) (13) (12) (11) (10) (13 1) (10) (10) (10) (7) (6) (7) (10 2) (14 2) (16 2) (15 3) (15 4))) (quote ((1) (7 3) (18 3) (20 4) (25 4) (16 12 5) (4 9 17) (5 7 16) (4 7 16) (5 7 17) (4 7 19) (4 27) (4 18 6) (4 4 3 5 5) (3 1 1 2 5) (4 1 1 1 3) (4 1 2 1 2) (2 1 6) (1 1 2 3 1) (1 2 1 2) (3 1 1) (1 1 1) (2) (2) (2) (3 1 1) (10 5) (4 4) (2) (1))) (quote (" x" " xxxxxxx xxx" " xxxxxxxxxxxxxxxxxx xxx" " xxxxxxxxxxxxxxxxxxxx xxxx" " xxxxxxxxxxxxxxxxxxxxxxxxx xxxx" " xxxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxx" " xxxx xxxxxxxxx xxxxxxxxxxxxxxxxx" " xxxxx xxxxxxx xxxxxxxxxxxxxxxx" " xxxx xxxxxxx xxxxxxxxxxxxxxxx" " xxxxx xxxxxxx xxxxxxxxxxxxxxxxx" " xxxx xxxxxxx xxxxxxxxxxxxxxxxxxx" " xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx" " xxxx xxxxxxxxxxxxxxxxxx xxxxxx" " xxxx xxxx xxx xxxxx xxxxx" " xxx x x xx xxxxx" " xxxx x x x xxx " " xxxx x xx x xx " " xx x xxxxxx " " x x xx xxx x " " x xx x xx " " xxx x x " " x x x " " xx " " xx " " xx " " xxx x x " " xxxxxxxxxx xxxxx" " xxxx xxxx" " xx" " x"))) (make-problem "19990612-ARE (6)" (quote ((9) (3 3) (4 5) (20 5) (23 1) (2 19 5) (18 1) (1 17 5) (1 15) (1 13 5) (1 5 10 1 1) (5 9 5) (4 7 1 1) (4 11 1 1) (4 1 10) (4 12 3) (3 1 4 6 1) (2 1 4 6 1) (1 6 1) (1 1 5 3) (1 1 7) (1 5 1) (2 7 1) (1 3 4 1) (6 1) (6 5) (2 4) (2 4 5) (2 4 1 1) (9 1 1) (8 1 1) (6 5) (6) (8 5) (10 1 1) (10 5) (10 1 1) (9 1 1) (6 1) (2 1))) (quote ((1) (3 2) (4 9 1 2 1) (3 6 3) (4 8) (5 7 1) (1 4 2 2) (1 5 1 2) (1 6 1 1 1 2) (1 8 1 1 1 2 6) (1 8 5 2 7) (1 9 5 1 3 6) (1 10 5 2 1 11) (1 10 4 1 10) (1 13 1 1 2 11) (1 16 1 1 14) (1 36) (1 26 6) (1 25 3) (23) (10 8) (6) (5) (3) () (3 1 5 5 5 5) (1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 5 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1 1 2) (1 3 5 1 5 3 1))) (quote #f)) (make-problem "19990715-TAN (7)" (quote ((17) (2 2) (2 6 6 2) (2 6 6 2) (2 5 5 2) (2 9 1 6 2) (2 4 9 2) (1 5 3 4 1) (1 9 4 6 1) (1 4 5 3 1) (1 3 4 2 1) (1 7 6 3 1) (1 5 1) (1 4 2 2 7) (1 3 1 1 3 2) (1 3 1 3 5) (1 3 1 2 6) (1 5 1 2) (1 7 2 2) (1 4 4 1 2) (2 2 2 4 1) (2 2 1 2 4 1) (2 3 3 3 1) (4 7 1) (2 3 1) (1 1 4 2 1) (6 2 6 1) (1 1 1) (1 4 3 2 4 1) (1 4 2 4 4 1 2 1) (1 3 2 4 2 1) (1 3 8 12 1) (1 11 11 1) (2 9 9 2) (2 8 8 2) (2 5 5 2) (2 2 2 2) (2 13 2) (2 2) (17))) (quote ((15 8) (2 2 1 2) (2 11 2 1 4 2) (2 13 2 1 5 2) (2 15 1 1 6 2) (2 5 3 5 4 2 3 2) (2 5 2 5 1 2 5 2) (1 6 1 1 1 1 8 1) (1 4 1 2 3 1 1 1 2 9 1) (1 4 1 1 2 3 5 1 1) (1 4 2 1 3 1 5 1 1) (1 2 1 1 1 1 2 4 1 1) (1 2 1 1 2 4 1 1) (1 1 1 2 2 1 1) (1 1 1) (1 1 2 2 1 1) (1 2 2 1 2 4 1 1) (1 2 1 2 1 1 4 1 1) (1 5 2 1 2 1 2 1 5 1 1) (1 5 2 1 3 2 2 1 5 1 1) (1 5 1 1 3 1 2 1 9 1) (1 4 2 1 2 1 1 2 7 1) (2 5 1 5 2 1 2 6 2) (2 4 4 2 1 1 1 5 2) (2 4 1 1 1 6 1 1 3 2) (2 5 1 2 7 5 2) (2 4 1 2 11 2) (2 1 2 2) (8 15) ())) (quote #f)) (make-problem "19990803aDAH (8)" (quote ((30) (1 1) (1 2 2 3 2 3 1) (1 1 1 1 1 1 1 2 1) (1 2 3 1 1 2 1 1 1 1) (1 3 2 1 1 7 1) (1 1 1 1 1 3 2 1) (1 3 6 1 2 2 1) (1 2 1 1 2 1 1 2 1 1) (1 1 2 1 6 1 2 1) (1 6 2 3 2 1 1 1 1) (1 1 1 3 3 6 1) (1 2 3 2 1 3 1 1) (1 1 2 2 2 4 1 1) (1 3 3 7 3 1 1) (1 3 1 8 3 3 1) (1 1 16 4 1) (1 4 12 1 1 1) (1 1 10 2 1 1) (1 1 1 3 9 1 1 1) (1 5 7 4 2 1) (1 1 7 4 1) (1 6 1) (1 6 1) (1 6 1) (1 6 1) (12 6 10) (12 6 10) (12 6 10) (12 6 10) (12 6 9) (10 7 7) (8 3 1 1 3 6) (7 3 2 1 2 2) (3 2 3 3 5 1) (1 5 2 1 2 2 2 1) (1 1 1 1 3 1 3 1 1) (1 3 2 3 4 2 2 3 1) (1 1) (30))) (quote ((40) (1 9 1) (1 2 2 2 2 2 9 2 1) (1 1 1 1 1 1 8 1 1) (1 2 2 1 1 2 1 3 8 3 1) (1 2 5 3 1 8 1 1) (1 1 1 1 1 2 2 8 1 1 1) (1 6 2 2 1 1 7 3 1) (1 1 1 1 1 4 6 2 1) (1 3 3 3 4 6 2 1 1) (1 1 1 1 1 2 5 1 1 1) (1 5 2 4 5 2 2 1) (1 1 2 1 2 9 1 2 1) (1 1 1 19 4 1) (1 5 24 2 1 1) (1 3 25 1 1) (1 1 3 2 18 1 1) (1 3 2 22 1) (1 3 20 1 1 1) (1 2 1 1 4 2 4 1) (1 1 3 3 2 2 3 4 1 1 1) (1 1 1 1 1 1 1 5 2 1 1) (1 4 2 2 4 2 5 5 1) (1 1 2 1 1 1 2 6 3 1) (1 3 1 3 2 3 1 7 1 2 1) (1 1 1 1 2 1 1 7 1 1 1) (1 1 3 1 2 7 2 1 1) (1 2 2 2 3 7 2 1) (1 8 1) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxxxxxx x" "x xx xx xx xx xx xxxxxxxxx xx x" "x x x x x x xxxxxxxx x x" "x xx xx x x xx x xxx xxxxxxxx xxx x" "x xx xxxxx xxx x xxxxxxxx x x" "x x x x x xx xx xxxxxxxx x x x" "x xxxxxx xx xx x x xxxxxxx xxx x" "x x x x x xxxx xxxxxx xx x" "x xxx xxx xxx xxxx xxxxxx xx x x" "x x x x x xx xxxxx x x x" "x xxxxx xx xxxx xxxxx xx xx x" "x x xx x xx xxxxxxxxx x xx x" "x x x xxxxxxxxxxxxxxxxxxx xxxx x" "x xxxxx xxxxxxxxxxxxxxxxxxxxxxxx xx x x" "x xxx xxxxxxxxxxxxxxxxxxxxxxxxx x x" "x x xxx xx xxxxxxxxxxxxxxxxxx x x" "x xxx xx xxxxxxxxxxxxxxxxxxxxxx x" "x xxx xxxxxxxxxxxxxxxxxxxx x x x" "x xx x x xxxx xx xxxx x" "x x xxx xxx xx xx xxx xxxx x x x" "x x x x x x x xxxxx xx x x" "x xxxx xx xx xxxx xx xxxxx xxxxx x" "x x xx x x x xx xxxxxx xxx x" "x xxx x xxx xx xxx x xxxxxxx x xx x" "x x x x xx x x xxxxxxx x x x" "x x xxx x xx xxxxxxx xx x x" "x xx xx xx xxx xxxxxxx xx x" "x xxxxxxxx x" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990803bDAH (9)" (quote ((30) (1 1 1 1 1 1 1 1) (1 1 4 1 1 1 1 3 1 1 1) (1 1 1 1 1 1 3 1 1 1) (1 4 3 3 2 1 2 2 2) (1 1 1 5 1 1 1 1) (1 1 1 5 2 2 2 2) (1 2 1 1 1 1 1 1 1 1) (1 1 3 3 1 2 1 2 1 1) (2 1 1 1 1 1 1 1 1 3 1) (1 1 2 2 1 3 1 2 4 1 1) (1 2 1 1 1 1 1 1 1 1) (1 3 2 4 1 6 2 1) (2 1 1 1 1 1 1 1) (1 1 6 1 5 3 1 2) (1 2 1 1 1 1 1) (1 1 2 1 1 2 1 10) (6 1 1 2 2 1 1 1 1) (1 1 2 1 1 4 1) (1 4 1 5 1 1 1 1 1) (1 1 1 6 1 3 1 2 1) (1 2 1 1 1 1 1 1 1) (1 1 1 5 7 3 1 1) (1 4 1 1 1 1) (1 1 1 1 3 13 1) (1 6 1 1 1 1 1 1 1 1 1 1) (1 1 1 2 1 2) (1 3 6 1 2 2 1) (1 1 1 1 2 4 4 1) (1 1 1 1 1 3 1 9 1) (1 1 1 1 1 1 1 1 9 1) (1 1 1 1 1 2 2 1 7 2) (1 1 1 2 7 3) (1 3 3 1 3 1 5 2) (1 1 1 1 1 1 1 3 1 1) (1 1 1 1 1 5 1 2 1 2 1) (1 1 1 1 1 1 1 2 1) (1 3 1 4 2 1 5 3) (1 1 1) (30))) (quote ((1 38) (1 1 1 1 1) (5 1 1 1 1 3 3 1 3 1 2 2) (1 1 10 1 1 1 1 1 1 1 1) (1 3 1 1 1 1 1 5 3 1 1) (1 1 4 2 1 4 5 1 1 1) (1 1 1 1 1 5 3 1 1) (1 3 3 1 1 5 4 1 1 1) (1 1 1 5 1 1 1 1 3 5 1) (1 3 1 1 1 1 1 1 6 1) (1 1 3 3 1 1 7 3 1) (1 5 3 1 1 1 2 1 1 1 1 1 1) (1 1 1 1 4 2 1 1 1 1 1 1 1) (1 4 2 3 1 1 1 3 5 1 1) (1 1 1 1 1 2 4 1 1 1) (4 1 6 1 2 1 1 5 1 1) (1 1 1 2 1 2 1 1 8 1) (1 1 2 6 1 1 1 1 1) (1 1 1 1 1 4 1 2 2 3 4 1) (3 1 3 1 1 6 1 1) (1 3 3 2 6 1 2 7 2 1) (3 1 1 3 1 7 1 1) (1 3 1 1 3 3 1 3 7 1 1) (2 2 5 1 1 1 1 7 1 1) (1 2 2 1 5 2 7 2 1) (2 2 2 2 1 1 1 1 6 2 1) (1 3 1 3 1 1 1 2 3 2 1) (3 5 1 7 1 1 1) (1 1 1 1 1 1 3 1 1) (40))) (quote #f)) (make-problem "19991021-BBA (10)" (quote ((3 2) (5 2) (5 5 2) (5 1 3) (1 3 3 9) (3 5 1 3) (3 3 1 5 2) (3 5 1 1 2) (3 5 3 2) (4 5 1 2) (6 5 2 2) (5 3 7 2) (4 3 9 2) (3 4 13) (1 6 1 8) (8 4 2) (2 3 2 2) (1 1 1 1 1 2) (4 2 2 2) (3 4 1) (2 3 1 1) (2 2 2) (10) (10) (1 1) (9) (9) (8) (8) (8) (7) (7) (2 2 4 3) (1 1 4 4) (9 4 4) (7 4 3) (1 1 1 5 3) (5 9) (5 9) (3 4 5))) (quote ((3) (1 2) (5) (3 2 3) (6 6) (7 2 3) (3 2 3 5) (5 3 1 2) (5 4 3) (5 5 6 4) (3 3 15 8) (6 3 2 2 15) (12 2 1 2 15) (13 2 2 14) (2 17 7 3) (6 4 2 3 15) (2 2 1 2 2 15) (4 2 1 3 15) (5 11 2 1) (3) (3) (3 3) (1 1 2 4) (1 1 1 1 4) (1 1 1 2 4) (1 1 1 1 3) (1 1 2 3) (3 2) (19) (19))) (quote #f))))) diff --git a/pkgs/games/paint-by-numbers/problems/k35x25 b/pkgs/games/paint-by-numbers/problems/k35x25 deleted file mode 100644 index da5053c26f..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k35x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 35x25") (define problems (list (make-problem "19980530-GOS (1)" (quote ((16 14) (13 12) (10 10) (9 1 3 2 1 9) (9 1 1 1 1 1 1 1 8) (9 1 1 1 1 1 3 7) (8 1 1 1 3 1 1 1 2) (8 2 1 1 1 1 1) (8 1) (7 2 4 2) (7 2 2 4 1 1 5) (6 2 3 1 1 3 3) (5 3 4 3 2 1) (5 2 2 2 2 2 1 1) (5 2 2 2 2 1 4 5) (1 2 6 4 6) (2 4 1 6) (2 3 2 5 7) (3 2 1 9 7) (3 3 9 8) (7 7 8) (4 9) (2 1 11) (4 4 12) (14 14))) (quote ((16 3) (15 3) (15 3 2) (15 5 2) (15 5 1) (12 2 1) (11 3 1) (9 4 2) (6 9 2) (3 9 3) (2 4 2) (2 4 5 1) (2 1 5 1) (1 4 4 2 1 1) (1 1 3 2 3) (1 5 5 3) (1 5 3) (4 3) (1 1 1 2 3) (5 1 3 4) (1 2 1 4) (1 5 1 1 1 3 1) (1 1 3 1 2 1) (2 4 1 2) (2 1 2 3) (3 1 3 3) (4 1 2 1 4) (5 1 1 1 6) (6 3 1 8) (7 10) (6 1 11) (6 1 11) (6 2 11) (7 3 11) (7 17))) (quote ("xxxxxxxxxxxxxxxx xxx" "xxxxxxxxxxxxxxx xxx" "xxxxxxxxxxxxxxx xxx xx" "xxxxxxxxxxxxxxx xxxxx xx" "xxxxxxxxxxxxxxx xxxxx x" "xxxxxxxxxxxx xx x" "xxxxxxxxxxx xxx x" "xxxxxxxxx xxxx xx" "xxxxxx xxxxxxxxx xx" "xxx xxxxxxxxx xxx" "xx xxxx xx" "xx xxxx xxxxx x" "xx x xxxxx x" "x xxxx xxxx xx x x" "x x xxx xx xxx " "x xxxxx xxxxx xxx " " x xxxxx xxx " " xxxx xxx " " x x x xx xxx " " xxxxx x xxx xxxx " " x xx x xxxx " "x xxxxx x x x xxx x" "x x xxx x xx x" "xx xxxx x xx" "xx x xx xxx" "xxx x xxx xxx" "xxxx x xx x xxxx" "xxxxx x x x xxxxxx" "xxxxxx xxx x xxxxxxxx" "xxxxxxx xxxxxxxxxx" "xxxxxx x xxxxxxxxxxx" "xxxxxx x xxxxxxxxxxx" "xxxxxx xx xxxxxxxxxxx" "xxxxxxx xxx xxxxxxxxxxx" "xxxxxxx xxxxxxxxxxxxxxxxx"))) (make-problem "19980616-HEI (2)" (quote ((1 1 4 8 1) (3 1 6 10 3) (1 6 10 3) (1 6 16) (1 1 1 1 6 6 1) (1 3 1 8 6 1) (1 1 1 6 1) (1 1 1 6 1 1 1) (1 6 1 1 1) (9 7 5 1 1 1) (9 4 1) (2 1 2 3 1) (2 3 2 2 1) (2 1 2 11) (2 2) (3 2 2 1 2 2) (4 2 1 1 1 1 1 2) (5 2 2 1 2 2 4) (5 2 1 1 1 1 2 5) (5 2 2 6) (5 15 7) (2 15 6) (1 2 6 1) (2 6) (5 8))) (quote ((1 1 6 1) (1 4 1 6 1 1) (2 1 6 1) (2 1 9) (1 1 8) (4 1) (1) (1 9) (10 10) (2 2) (1 2 4 2) (5 2 1 1 2) (6 2 1 1 2) (6 2 1 2) (6 5 4 2) (6 2 1 2) (5 2 4 2) (1 2 1 1 2) (2 1 2) (9 2 2) (10 10) (11 9) (12) (13) (14) (4 1) (4 1) (3 1 1 4) (3 1 1 1 5) (1 1 6) (11 7) (1 1 8) (3 1 1 1 8) (3 1 1 4 1) (4 1 4 1 1))) (quote (" x x xxxxxx x" " x xxxx x xxxxxx x x" "xx x xxxxxx x" " xx x xxxxxxxxx" " x x xxxxxxxx" " xxxx x " " x " " x xxxxxxxxx " "xxxxxxxxxx xxxxxxxxxx " " xx xx " " x xx xxxx xx " " xxxxx xx x x xx " "xxxxxx xx x x xx " "xxxxxx xx x xx " "xxxxxx xxxxx xxxx xx " "xxxxxx xx x xx " " xxxxx xx xxxx xx " " x xx x x xx " " xx x xx " "xxxxxxxxx xx xx " "xxxxxxxxxx xxxxxxxxxx " "xxxxxxxxxxx xxxxxxxxx " "xxxxxxxxxxxx " "xxxxxxxxxxxxx " "xxxxxxxxxxxxxx " "xxxx x " "xxxx x " " xxx x x xxxx" " xxx x x x xxxxx" " x x xxxxxx" " xxxxxxxxxxx xxxxxxx" " x x xxxxxxxx" " xxx x x x xxxxxxxx" " xxx x x xxxx x" "xxxx x xxxx x x"))) (make-problem "19980716aGAS (3)" (quote (() () (11) (5 5) (3 1 1 3) (3 2 5 2 3) (2 2 5 2 2) (2 4 5 4 2) (1 6 5 6 1) (2 7 7 7 2) (1 27 1) (1 27 1) (1 27 1) (1 27 1) (1 27 1) (2 4 13 4 2) (1 3 1 5 1 3 1) (2 1 1 5 1 1 2) (2 1 1 1 2) (3 1 3) (3 3) (5 5) (11) () ())) (quote (() () (7) (3 3) (2 5 2) (2 9 2) (1 9 1) (2 11 2) (1 9 1 1) (2 9 2) (1 10 1) (1 1 7 1) (2 8 2) (2 6 2) (1 7 1) (1 14 1) (1 13 1) (1 15 1) (1 13 1) (1 14 1) (1 7 1) (2 6 2) (2 8 2) (1 1 7 1) (1 10 1) (2 9 2) (1 9 1 1) (2 11 2) (1 9 1) (2 9 2) (2 5 2) (3 3) (7) () ())) (quote (" " " " " xxxxxxx " " xxx xxx " " xx xxxxx xx " " xx xxxxxxxxx xx " " x xxxxxxxxx x " " xx xxxxxxxxxxx xx " " x xxxxxxxxx x x " " xx xxxxxxxxx xx " " x xxxxxxxxxx x " " x x xxxxxxx x " " xx xxxxxxxx xx " " xx xxxxxx xx " " x xxxxxxx x " " x xxxxxxxxxxxxxx x " " x xxxxxxxxxxxxx x " " x xxxxxxxxxxxxxxx x " " x xxxxxxxxxxxxx x " " x xxxxxxxxxxxxxx x " " x xxxxxxx x " " xx xxxxxx xx " " xx xxxxxxxx xx " " x x xxxxxxx x " " x xxxxxxxxxx x " " xx xxxxxxxxx xx " " x xxxxxxxxx x x " " xx xxxxxxxxxxx xx " " x xxxxxxxxx x " " xx xxxxxxxxx xx " " xx xxxxx xx " " xxx xxx " " xxxxxxx " " " " "))) (make-problem "19990119-JAM (4)" (quote (() (7) (7) (8) (9) (9) (9) (6 2) (5 1) (6 2) (9) (9) (3 5) (2 1 5) (3 14 7) (8 8 1 7) (7 8 5 3) (8 5 8 1 3) (5 7 8 4) (4 1 7 14) (4 13 8) (17 6) (15 6) (19) ())) (quote (() () () () (17) (21) (12 8) (11 1 7) (12 5 3) (7 9 1 2) (6 9 4) (7 7 7) (11 6) (3 7) (10) (10) (10) (4 5) (3 4) (4 5) (10) (1 8) (1 4 2) (1 4 1) (7 2) (10) (10) (3 6) (2 1 5) (3 5) (7) (5) (3) () ())) (quote (" " " " " " " " " xxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxx xxxxxxxx " " xxxxxxxxxxx x xxxxxxx " " xxxxxxxxxxxx xxxxx xxx " " xxxxxxx xxxxxxxxx x xx " " xxxxxx xxxxxxxxx xxxx " " xxxxxxx xxxxxxx xxxxxxx " " xxxxxxxxxxx xxxxxx " " xxx xxxxxxx " " xxxxxxxxxx " " xxxxxxxxxx " " xxxxxxxxxx " " xxxx xxxxx " " xxx xxxx " " xxxx xxxxx " " xxxxxxxxxx " " x xxxxxxxx " " x xxxx xx " " x xxxx x " " xxxxxxx xx " " xxxxxxxxxx " " xxxxxxxxxx " " xxx xxxxxx " " xx x xxxxx " " xxx xxxxx " " xxxxxxx " " xxxxx " " xxx " " " " "))) (make-problem "19990208aFRA (5)" (quote ((1 24) (31) (1 29) (3 28) (3 2 27) (2 2 8 8) (2 2 5 11 7) (3 6 2 1 2 6) (9 2 1 2 5) (8 2 1 3 5) (4 2 1 3 4) (3 26 3) (2 28 2) (2 29 2) (1 30 1) (30) (35) (3 3) (5 5) (2 2 2 2) (5 5) (3 3) () (8 8 8 4) ())) (quote ((1 5 1) (10 1 1) (1 6 3 1) (3 4 4 3 1) (3 2 2 10 1) (2 2 4 8 2 1) (2 2 3 11 1) (3 5 6 3 1) (9 6 1) (8 6) (7 6) (7 7 1) (6 8 1) (6 2 6 1) (5 2 6 1) (5 2 6 1) (5 1 6 1) (5 1 6 1) (5 1 6 1) (5 1 6) (5 11) (5 1 6 1) (5 1 6 1) (5 1 6 1) (5 1 6 1) (5 11 3 1) (5 15 1) (6 10 2 1) (7 11 1) (8 6 3) (10 6) (11 5 1) (12 1 1) (14 1 1) (15 1 1))) (quote (" x xxxxx x " " xxxxxxxxxx x x " " x xxxxxx xxx x " " xxx xxxx xxxx xxx x " " xxx xx xx xxxxxxxxxx x " "xx xx xxxx xxxxxxxx xx x " " xx xx xxx xxxxxxxxxxx x " " xxx xxxxx xxxxxx xxx x " " xxxxxxxxx xxxxxx x " " xxxxxxxx xxxxxx " " xxxxxxx xxxxxx " "xxxxxxx xxxxxxx x " "xxxxxx xxxxxxxx x " "xxxxxx xx xxxxxx x " "xxxxx xx xxxxxx x " "xxxxx xx xxxxxx x " "xxxxx x xxxxxx x " "xxxxx x xxxxxx x " "xxxxx x xxxxxx x " "xxxxx x xxxxxx " "xxxxx xxxxxxxxxxx " "xxxxx x xxxxxx x " "xxxxx x xxxxxx x " "xxxxx x xxxxxx x " "xxxxx x xxxxxx x " "xxxxx xxxxxxxxxxx xxx x " "xxxxx xxxxxxxxxxxxxxx x " "xxxxxx xxxxxxxxxx xx x " "xxxxxxx xxxxxxxxxxx x " "xxxxxxxx xxxxxx xxx " "xxxxxxxxxx xxxxxx " "xxxxxxxxxxx xxxxx x " "xxxxxxxxxxxx x x " "xxxxxxxxxxxxxx x x " "xxxxxxxxxxxxxxx x x "))) (make-problem "19990220aFRA (6)" (quote ((35) (22 10) (21 3 9) (17 1 3 9) (16 3 3 9) (16 4 3 9) (9 2 4 2 9) (8 2 1 10) (7 3 9) (6 1 8) (5 7) (5 3 2) (4 9 1 1) (3 1 8 9 3) (2 5 8 5 3 1) (1 28 1 2) (30 3) (31 2) (1 31 1) (2 20) (4 5 13) (5 3 14) (6 26) (35) (35))) (quote ((16 7) (15 2 6) (14 4 5) (13 5 5) (12 7 4) (10 7 3) (9 8 2) (8 8 2) (7 7 2) (6 6 3) (6 1 5 4) (6 1 10) (6 12) (6 12) (7 12) (8 12) (4 2 12) (3 3 1 12) (3 3 1 11) (3 3 11) (4 3 10) (2 1 10) (1 4 2 10) (1 5 2 10) (1 5 1 7 3) (2 1 7 3) (9 7 3) (10 7 3) (11 7 3) (14 4 3) (13 1 3 3) (12 3 2 3) (11 3 1 1 3) (12 1 3 3) (13 5 3))) (quote ("xxxxxxxxxxxxxxxx xxxxxxx" "xxxxxxxxxxxxxxx xx xxxxxx" "xxxxxxxxxxxxxx xxxx xxxxx" "xxxxxxxxxxxxx xxxxx xxxxx" "xxxxxxxxxxxx xxxxxxx xxxx" "xxxxxxxxxx xxxxxxx xxx" "xxxxxxxxx xxxxxxxx xx" "xxxxxxxx xxxxxxxx xx" "xxxxxxx xxxxxxx xx" "xxxxxx xxxxxx xxx" "xxxxxx x xxxxx xxxx" "xxxxxx x xxxxxxxxxx" "xxxxxx xxxxxxxxxxxx" "xxxxxx xxxxxxxxxxxx" "xxxxxxx xxxxxxxxxxxx" "xxxxxxxx xxxxxxxxxxxx" "xxxx xx xxxxxxxxxxxx" "xxx xxx x xxxxxxxxxxxx" "xxx xxx x xxxxxxxxxxx" "xxx xxx xxxxxxxxxxx" "xxxx xxx xxxxxxxxxx" "xx x xxxxxxxxxx" "x xxxx xx xxxxxxxxxx" "x xxxxx xx xxxxxxxxxx" "x xxxxx x xxxxxxx xxx" "xx x xxxxxxx xxx" "xxxxxxxxx xxxxxxx xxx" "xxxxxxxxxx xxxxxxx xxx" "xxxxxxxxxxx xxxxxxx xxx" "xxxxxxxxxxxxxx xxxx xxx" "xxxxxxxxxxxxx x xxx xxx" "xxxxxxxxxxxx xxx xx xxx" "xxxxxxxxxxx xxx x x xxx" "xxxxxxxxxxxx x xxx xxx" "xxxxxxxxxxxxx xxxxx xxx"))) (make-problem "19990220bFRA (7)" (quote ((35) (8 9 3 1 4) (7 9 3 3) (6 8 3 3) (6 8 4 4) (1 4 4 2 4 5) (1 3 3 15) (1 1 1 2 1 4 1 4) (1 2 1 1 2 5 2 1 4) (1 4 2 2 4 5 2 4) (1 5 5 5 15) (1 6 6 1 1 2 2 1) (1 7 7 1 1 1 2 1 1 1) (1 6 6 1 1 1 2 1 1 1) (1 7 7 1 1 1 1 1) (1 8 8 1 2 2 1 1 1) (1 8 8 1 1 1 2 1 1 1) (1 8 8 1 1 1 2 1 1 1) (1 8 8 1 1 1 1 1 1 1) (1 8 8 15) (1 7 7 15) (3 5 5 17) (5 3 3 19) (7 1 1 21) (8 22))) (quote ((25) (5 4) (6 5 5 4) (7 5 7 3) (7 12 3) (8 13 2) (3 1 12 2) (2 1 12 1) (1 2 11) (1 1 12) (1 1) (1 1 12) (1 2 11) (2 1 12 1) (3 1 12 2) (8 13 2) (8 12 3) (7 5 7 3) (6 5 5 4) (5 4) (25) (11 6) (1 3 5 2 9) (1 5 1 6) (1 3 1 17) (7 1 6) (7 3 2 3 6) (2 21) (1 2 2 6) (2 1 1 1 2 10) (1 2 2 6) (2 21) (11 6) (11 6 6) (12 7))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxx xxxx" "xxxxxx xxxxx xxxxx xxxx" "xxxxxxx xxxxx xxxxxxx xxx" "xxxxxxx xxxxxxxxxxxx xxx" "xxxxxxxx xxxxxxxxxxxxx xx" "xxx x xxxxxxxxxxxx xx" "xx x xxxxxxxxxxxx x" "x xx xxxxxxxxxxx " "x x xxxxxxxxxxxx " "x x " "x x xxxxxxxxxxxx " "x xx xxxxxxxxxxx " "xx x xxxxxxxxxxxx x" "xxx x xxxxxxxxxxxx xx" "xxxxxxxx xxxxxxxxxxxxx xx" "xxxxxxxx xxxxxxxxxxxx xxx" "xxxxxxx xxxxx xxxxxxx xxx" "xxxxxx xxxxx xxxxx xxxx" "xxxxx xxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxx" "x xxx xxxxx xx xxxxxxxxx" "x xxxxx x xxxxxx" "x xxx x xxxxxxxxxxxxxxxxx" "xxxxxxx x xxxxxx" "xxxxxxx xxx xx xxx xxxxxx" "xx xxxxxxxxxxxxxxxxxxxxx" "x xx xx xxxxxx" "xx x x x xx xxxxxxxxxx" "x xx xx xxxxxx" "xx xxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxx" "xxxxxxxxxxx xxxxxx xxxxxx" "xxxxxxxxxxxx xxxxxxx"))) (make-problem "19990305-FRA (8)" (quote ((12 20) (12 1 3 1 14) (12 1 3 1 2 5 4) (12 3 1 1 1 1 1 2 1) (3 3 1 1 1 1 1 2 1 2) (1 7 2 2 1 1 1 2 3) (9 9 1 1 2 1 2) (11 12 1 2 2) (13 19) (14 19) (6 7 19) (5 2 6 7 9) (5 2 6 4 9) (6 7 2 10) (15 11) (15 13) (14 16) (14 18) (14 10) (13 9) (13 8) (11 21) (9 22) (1 7 23) (2 7 24))) (quote ((6 13 2) (5 15 1) (5 17) (4 20) (4 20) (4 6 12) (4 5 2 11) (4 5 2 11) (4 6 12) (4 20) (4 17) (5 15 1) (2 13 2) (2 3 10 3) (2 6 4) (5 3 4) (4 9 4) (14 1 4) (1 7 1 4) (5 7 2 4) (1 6 2 4) (12 2 4) (3 5 3 4) (2 1 6 3 4) (3 4 4 4) (11 6 4) (3 12 4) (3 3 17) (25) (2 17) (5 19) (4 1 18) (3 3 17) (25) (2 1 16))) (quote ("xxxxxx xxxxxxxxxxxxx xx" "xxxxx xxxxxxxxxxxxxxx x" "xxxxx xxxxxxxxxxxxxxxxx " "xxxx xxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxx xxxxxxxxxxxx" "xxxx xxxxx xx xxxxxxxxxxx" "xxxx xxxxx xx xxxxxxxxxxx" "xxxx xxxxxx xxxxxxxxxxxx" "xxxx xxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxxxxxx " "xxxxx xxxxxxxxxxxxxxx x" " xx xxxxxxxxxxxxx xx" " xx xxx xxxxxxxxxx xxx" " xx xxxxxx xxxx" "xxxxx xxx xxxx" "xxxx xxxxxxxxx xxxx" "xxxxxxxxxxxxxx x xxxx" "x xxxxxxx x xxxx" "xxxxx xxxxxxx xx xxxx" "x xxxxxx xx xxxx" "xxxxxxxxxxxx xx xxxx" "xxx xxxxx xxx xxxx" "xx x xxxxxx xxx xxxx" "xxx xxxx xxxx xxxx" "xxxxxxxxxxx xxxxxx xxxx" "xxx xxxxxxxxxxxx xxxx" "xxx xxx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx" "xx xxxxxxxxxxxxxxxxx" "xxxxx xxxxxxxxxxxxxxxxxxx" "xxxx x xxxxxxxxxxxxxxxxxx" "xxx xxx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx" "xx x xxxxxxxxxxxxxxxx"))) (make-problem "19990909-PIP (9)" (quote ((8) (2 2) (5 2 2 5) (1 3 1 1 3 1) (1 1 1 1 1 1) (2 2 2 3) (8 3 6 3 6 1) (1 1 10 1 1) (1 1 3 2 1 1 1) (9 1 6 1 9) (8 1 3 1 1 2 1 8) (9 1 1 1 1 1 2 9) (9 2 1 1 1 1 9) (8 2 1 1 1 1 1 8) (8 1 1 1 1 1 2 8) (8 2 1 1 1 1 1 1 8) (8 1 1 1 1 1 1 2 8) (8 2 1 1 1 1 1 1 8) (7 3 1 1 1 1 2 7) (1 1 1 1 1 1 2 1) (1 4 1 1 3 1) (1 10 1) (1 6 1) (2 2) (6))) (quote (() () (13) (3 10) (1 1 10) (1 1 10) (1 1 10) (1 1 10) (2 1 10) (2 1 10) (3 3 2 2) (2 1 6 1) (3 1 2 3 1 4 1) (2 3 1 1 1 1 2 1) (2 2 2 1 1 3 1) (1 2 2 1 1 1 3 1) (1 2 1 1 1 1 1 1 2 1) (1 2 2 1 1 1 1 3 1) (1 2 1 1 1 1 1 1 2 1) (1 2 2 1 1 1 1 3 1) (1 2 1 1 1 1 1 1 2 1) (2 1 1 1 1 1 1 2 1) (2 3 2 1 1 1 3 1) (3 1 2 2 1 1 3 1) (2 1 6 1) (3 3 2 2) (2 1 10) (2 1 10) (1 1 10) (1 1 10) (1 1 10) (1 2 11) (2 1 10) (2 10) ())) (quote #f)) (make-problem "19991011aLLO (10)" (quote ((5 14) (7 12) (9 10) (9 2 2) (7 2 2) (5 2 2) (5 2 2) (5 1 2 2) (5 3 2 2) (5 3 10) (17 1) (1 3 1 6 1 1) (2 1 6 6) (3 8 1 2 1 1) (3 10 11 1 1) (2 3 4 1 1) (1 15 4 3 1 1) (1 15 1 1 2 1 1) (17 1 1 1 3 1 1) (17 1 2 2 1 1) (4 4 9) (4 2 2 7 2 1 3) (2 4 4 1 1 1 1 1 1 1) (1 4 4 6 1 1) (2 2 4))) (quote ((3) (3) (2 3) (4 4) (2 11) (4 1 2 2) (11 3 4) (12 1 4 4) (12 1 4 2) (12 1 4) (11 1 4 2) (4 1 2 4 4) (2 1 2 4 4) (3 2 4 2) (4 2 4 1) (3 2 4 3) (1 2 4 1 1) (1 1 4 3) (1 1 1 4 1 1) (2 1 3 3) (18 3 1) (10 3 1 1 1) (3 1 2 2 1 1 1) (3 1 2 1 1 1 1 1 1) (3 1 2 1 1 1 1 1) (3 1 2 1 1 1 1 1) (3 1 2 1 1 1 1 1 1) (3 1 2 2 1 1 1) (10 3 1 1 1) (22) (2 9) (1 1 2) (10) (1 2) (10))) (quote (" xxx " " xxx " " xx xxx " " xxxx xxxx " " xx xxxxxxxxxxx " " xxxx x xx xx " "xxxxxxxxxxx xxx xxxx" "xxxxxxxxxxxx x xxxx xxxx" "xxxxxxxxxxxx x xxxx xx " "xxxxxxxxxxxx x xxxx " "xxxxxxxxxxx x xxxx xx " " xxxx x xx xxxx xxxx" " xx x xx xxxx xxxx" " xxx xx xxxx xx " " xxxx xx xxxx x " " xxx xx xxxx xxx " " x xx xxxx x x " " x x xxxx xxx " "x x x xxxx x x " "xx x xxx xxx " "xxxxxxxxxxxxxxxxxx xxx x " "xxxxxxxxxx xxx x x x " "xxx x xx xx x x x " "xxx x xx x x x x x x" "xxx x xx x x x x x" "xxx x xx x x x x x" "xxx x xx x x x x x x" "xxx x xx xx x x x " "xxxxxxxxxx xxx x x x " "xxxxxxxxxxxxxxxxxxxxxx " "xx xxxxxxxxx " "x x xx " " xxxxxxxxxx " " x xx " " xxxxxxxxxx "))) (make-problem "19991013-KHO (11)" (quote (() (1) (1) (5) (1 4) (7) (5 1) (2 3 3) (4 1 1) (5 1) (17 2) (20 3) (21 3) (12 8) (10 7) (8 7) (5 6) (3 1 4) (2 2 6) (1 2 2 3) (1 1 2 2) (2 1 2 2) (2 1 2 2) (1 2 1 1) (2 2 2 2))) (quote (() (2) (3) (3 5 1) (1 2 7 4) (4 15) (1 3 12) (16 1) (3 10 2 2) (7 7) (6) (5) (5) (4) (4) (3) (3) (3) (6) (7) (8) (9) (10) (7 3 1) (4 2 4) (2 2) (1 3) (2 3 1) (1 1 4) (1 2) (1 1) (3) () () ())) (quote (" " " xx " " xxx " " xxx xxxxx x" " x xx xxxxxxx xxxx" " xxxx xxxxxxxxxxxxxxx " " x xxx xxxxxxxxxxxx " " xxxxxxxxxxxxxxxx x" " xxx xxxxxxxxxx xx xx" " xxxxxxx xxxxxxx " " xxxxxx " " xxxxx " " xxxxx " " xxxx " " xxxx " " xxx " " xxx " " xxx " " xxxxxx " " xxxxxxx " " xxxxxxxx " " xxxxxxxxx " " xxxxxxxxxx " " xxxxxxx xxx x" " xxxx xx xxxx" " xx xx " " x xxx " " xx xxx x" " x x xxxx" " x xx " " x x " " xxx " " " " " " ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k35x30 b/pkgs/games/paint-by-numbers/problems/k35x30 deleted file mode 100644 index c811b5c2fb..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k35x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 35x30") (define problems (list (make-problem "19980420-KVL (1)" (quote (() () () (4) (7) (9) (8 2) (5 6) (4 6) (5 4 2) (6 4 2) (2 10 4) (20) (1 1) (21) (21) (2 7 7 1) (2 3 3 6 3) (11 2 2 4) (19 4 1) (7 8 5 2) (2 3 7 3 1) (6 7 3 2) (6 8 6 1) (2 4 5 2 1 3 2) (1 10 2 4 1) (2 11 3 5 1) (10 4 4 5 2) (21 8) ())) (quote ((17) (4 11 3) (6 2 3 2 2) (5 1 2 7 3) (8 15) (9 15) (4 3 7 5) (4 2 3 2 4) (4 2 6 4) (5 3 6 4) (10 7 3 1) (2 6 2 10) (8 2 10) (4 2 2 10) (2 1 11 2) (2 2 10 1) (4 4 5 1) (3 11 2) (2 6 6) (1 4 4) (4 3) () (1) (2) (3 2) (4 1) (7 1) (3 8) (1 7) (6) (4) (3) (3 1) (2 3 2) (4))) (quote (" xxxxxxxxxxxxxxxxx " " xxxx xxxxxxxxxxx xxx " " xxxxxx xx xxx xx xx " " xxxxx x xx xxxxxxx xxx " " xxxxxxxx xxxxxxxxxxxxxxx " " xxxxxxxxx xxxxxxxxxxxxxxx " " xxxx xxx xxxxxxx xxxxx " " xxxx xx xxx xx xxxx " " xxxx xx xxxxxx xxxx " " xxxxx xxx xxxxxx xxxx " " xxxxxxxxxx xxxxxxx xxx x " " xx xxxxxx xx xxxxxxxxxx " " xxxxxxxx xx xxxxxxxxxx " " xxxx xx xx xxxxxxxxxx " " xx x xxxxxxxxxxx xx " " xx xx xxxxxxxxxx x " " xxxx xxxx xxxxx x " " xxx xxxxxxxxxxx xx " " xx xxxxxx xxxxxx " " x xxxx xxxx " " xxxx xxx " " " " x " " xx " " xxx xx " " xxxx x " " xxxxxxx x " " xxx xxxxxxxx " " x xxxxxxx " " xxxxxx " " xxxx " " xxx " " xxx x " " xx xxx xx " " xxxx "))) (make-problem "19980716bGAS (2)" (quote ((5) (5 4 1) (8 5 4) (10 4 7) (10 13) (10 9) (10 9) (10 9) (10 2 9) (10 2 9) (10 6 9) (10 6 9) (10 1 4 1 9) (10 3 4 3 9) (10 10 9) (10 12 9) (10 10 9) (10 6 9) (10 1 2 1 9) (10 2 9) (10 2 9) (10 2 9) (10 9) (10 9) (10 9) (14 9) (8 4 9) (5 5 8) (2 4 5) (5))) (quote ((26) (26) (26) (26) (26) (26) (26) (26) (26) (26) (1 1) (1 1) (2 1 1 1) (1 5 2) (1 4 1) (2 2 5 1) (1 8 2) (1 14 1) (1 14 1) (2 8 1) (1 2 5 2) (1 4 1) (2 5 1) (1 1 1 2) (1 1) (1 1) (26) (26) (26) (26) (26) (26) (26) (26) (26))) (quote (" xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxxxxxxxxxx " "x x " "x x " "xx x x x " " x xxxxx xx " " x xxxx x " " xx xx xxxxx x " " x xxxxxxxx xx " " x xxxxxxxxxxxxxx x " " x xxxxxxxxxxxxxx x " " xx xxxxxxxx x " " x xx xxxxx xx " " x xxxx x " " xx xxxxx x " " x x x xx" " x x" " x x" " xxxxxxxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxx "))) (make-problem "19981201-JAM (3)" (quote ((8 7 18) (7 1 5 1 5 10) (7 2 3 3 3 2 9) (6 4 5 3 9) (3 7 5 5 8) (3 3 6 2 1 6 3) (4 3 3 2 7 3) (5 3 1 3 4 2 5 1 3) (6 3 4 3 2 2 3) (6 2 1 1 4 4 3 3) (5 2 3 6 2 3 1 3 2) (3 2 3 1 4 4 1 2 4 1) (2 2 3 2 3 5 4 4) (3 2 4 2 5 1 4 2 1) (3 2 5 1 4 3 4 1 1) (3 1 3 3 3 4 5 2) (2 1 3 4 1 2 1 6 4 2) (1 3 2 5 1 1 7 3 3) (4 3 2 1 2 3 1 3 2) (1 3 3 3 5 1 3 1) (2 4 3 2 7 2) (3 3 2 2 4 5 4 3 1) (4 4 5 4 3 3 2) (6 4 6 2 2 1 4 2) (6 3 2 4 1 4 6 1) (6 2 5 2 6 4) (5 2 1 6 1 8 2) (4 2 3 6 2 3 5) (5 2 2 1 2 2 1 6) (9 4 6 4 7))) (quote ((18 11) (17 1 10) (12 3 2 9) (4 5 5 8) (4 1 4 1 2 5 4 2) (4 2 2 2 1 1 3 3 1 1) (3 3 2 4 2 2 1) (1 2 5 2 5 5 1) (5 3 3 1 2 5 1 1) (1 5 1 3 2 1 4 3) (2 5 3 2 3 2 1 2) (3 3 1 1 3 3 2 3 1) (3 2 3 4 2 3 3 2) (3 2 2 1 3 1 2 2 2 2) (2 1 2 2 3 2 3 3 1) (1 4 4 1 1 5 3) (5 1 6 1 1 5 2 1) (1 3 2 4 1 1 5 1 1) (2 2 2 2 3 1 2 3 1 1) (3 2 1 1 6 4 2 1) (3 6 1 6 2) (3 2 2 5 2 5 2 2) (2 3 3 3 3 4 4) (1 5 3 1 5 2 5 1) (1 6 3 6 1 4 2) (2 4 2 1 5 2 3 2) (4 4 3 2 4 3 1) (5 3 6 1 3 1 3) (5 2 1 6 1 1 2 2 1) (5 1 4 6 4 2) (5 6 6 5 3) (5 4 2 2 5 3) (10 4 1 1 1 2 3) (11 1 4 2 4) (12 7 4 4))) (quote ("xxxxxxxxxxxxxxxxxx xxxxxxxxxxx" "xxxxxxxxxxxxxxxxx x xxxxxxxxxx" "xxxxxxxxxxxx xxx xx xxxxxxxxx" "xxxx xxxxx xxxxx xxxxxxxx" "xxxx x xxxx x xx xxxxx xxxx xx" "xxxx xx xx xx x x xxx xxx x x" "xxx xxx xx xxxx xx xx x" "x xx xxxxx xx xxxxx xxxxx x" " xxxxx xxx xxx x xx xxxxx x x" "x xxxxx x xxx xx x xxxx xxx " "xx xxxxx xxx xx xxx xx x xx " "xxx xxx x x xxx xxx xx xxx x" "xxx xx xxx xxxx xx xxx xxx xx" "xxx xx xx x xxx x xx xx xx xx" "xx x xx xx xxx xx xxx xxx x" "x xxxx xxxx x x xxxxx xxx " " xxxxx x xxxxxx x x xxxxx xx x" "x xxx xx xxxx x x xxxxx x x" "xx xx xx xx xxx x xx xxx x x" "xxx xx x x xxxxxx xxxx xx x" "xxx xxxxxx x xxxxxx xx" "xxx xx xx xxxxx xx xxxxx xx xx" "xx xxx xxx xxx xxx xxxx xxxx " "x xxxxx xxx x xxxxx xx xxxxx x" "x xxxxxx xxx xxxxxx x xxxx xx" "xx xxxx xx x xxxxx xx xxx xx" "xxxx xxxx xxx xx xxxx xxx x" "xxxxx xxx xxxxxx x xxx x xxx " "xxxxx xx x xxxxxx x x xx xx x" "xxxxx x xxxx xxxxxx xxxx xx" "xxxxx xxxxxx xxxxxx xxxxx xxx" "xxxxx xxxx xx xx xxxxx xxx" "xxxxxxxxxx xxxx x x x xx xxx" "xxxxxxxxxxx x xxxx xx xxxx" "xxxxxxxxxxxx xxxxxxx xxxx xxxx"))) (make-problem "19990205-FRA (4)" (quote ((11 23) (10 1 11 4 2) (9 3 9 1 1) (8 5 8 1) (7 7 7 1) (6 9 6 1) (5 11 6 2) (4 13 6 3) (3 15 6 4) (2 17 6 5) (1 6 6) (1 1 1 13) (1 2 2 13) (1 3 3 5 5) (1 5 5 4 4) (1 6 6 4 4) (1 7 8 3 4) (1 8 8 3 1) (1 7 3 7 3) (1 6 5 6 3) (1 5 7 5 3) (1 4 9 4 3 1) (1 3 11 3 3 3) (1 2 13 2 13) (1 1 15 1 13) (1 17 13) (1 13) (35) (35) (35))) (quote ((30) (10 3) (9 14 3) (8 1 12 1 3) (7 2 10 2 3) (6 3 8 3 3) (5 4 7 4 3) (4 5 5 5 3) (3 6 3 6 3) (2 7 1 7 3) (1 8 8 3) (9 8 3) (1 8 8 3) (2 7 2 7 3) (3 6 3 6 3) (4 5 5 5 3) (5 4 7 4 3) (6 3 8 3 3) (7 2 10 2 3) (8 1 12 1 3) (9 14 3) (10 3) (30) (2 24) (1 23) (1 8 7) (2 5 7) (2 3 7) (3 2 7) (2 3 7) (1 5 7) (1 9 7) (1 10 8) (2 11 8) (18 9))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxx xxx" "xxxxxxxxx xxxxxxxxxxxxxx xxx" "xxxxxxxx x xxxxxxxxxxxx x xxx" "xxxxxxx xx xxxxxxxxxx xx xxx" "xxxxxx xxx xxxxxxxx xxx xxx" "xxxxx xxxx xxxxxxx xxxx xxx" "xxxx xxxxx xxxxx xxxxx xxx" "xxx xxxxxx xxx xxxxxx xxx" "xx xxxxxxx x xxxxxxx xxx" "x xxxxxxxx xxxxxxxx xxx" " xxxxxxxxx xxxxxxxx xxx" "x xxxxxxxx xxxxxxxx xxx" "xx xxxxxxx xx xxxxxxx xxx" "xxx xxxxxx xxx xxxxxx xxx" "xxxx xxxxx xxxxx xxxxx xxx" "xxxxx xxxx xxxxxxx xxxx xxx" "xxxxxx xxx xxxxxxxx xxx xxx" "xxxxxxx xx xxxxxxxxxx xx xxx" "xxxxxxxx x xxxxxxxxxxxx x xxx" "xxxxxxxxx xxxxxxxxxxxxxx xxx" "xxxxxxxxxx xxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xx xxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxxxxxxxxxxxxxxxxxxxx" "x xxxxxxxx xxxxxxx" "xx xxxxx xxxxxxx" "xx xxx xxxxxxx" "xxx xx xxxxxxx" "xx xxx xxxxxxx" "x xxxxx xxxxxxx" "x xxxxxxxxx xxxxxxx" "x xxxxxxxxxx xxxxxxxx" "xx xxxxxxxxxxx xxxxxxxx" "xxxxxxxxxxxxxxxxxx xxxxxxxxx"))) (make-problem "19991010aTPV (5)" (quote (() () (12) (7 7) (8 4 8) (3 3 3 3) (3 4 8 4 3) (4 10 4) (11 11) (9 4 9) (9 9) (1 18 3) (3 14 7) (1 3 2 2 2 3 1 1 3) (2 1 10 1 1 3 1) (3 1 1 1 1 1 1 1 3) (4 1 1 1 1 1 2 1 2) (3 3 1 1 1 3 1 1 2) (5 14 6 3) (7 2 2 2 10 1 2) (22 6) (18 2 2) (12 3 2) (2 1 2) (1 1 2) (1 1 2) (2 3 1) (3 3) (5) ())) (quote (() (3 4) (5 6) (17) (2 4 1 1 3) (2 1 5 5) (2 1 4 5 3) (2 1 6 5) (3 1 6 5) (4 6 5 3) (13 5) (2 4 5 5) (1 1 2 1 2 1 1 3) (1 1 2 1 12) (1 1 2 1 4 5) (1 1 2 1 2 1 1 3) (2 4 5 5) (21) (4 6 1 1 3) (3 1 6 5) (2 1 6 5) (2 1 4 5 3) (2 1 5 5) (2 4 1 1 3) (17) (5 2 2 6) (3 3 2 1 3) (1 6 1 2) (3 2 1 1 1) (2 9) (1 1 3 2) (3 1 1 1 1) (12) (8) ())) (quote (" " " xxx xxxx " " xxxxx xxxxxx " " xxxxxxxxxxxxxxxxx " " xx xxxx x x xxx " " xx x xxxxx xxxxx " " xx x xxxx xxxxx xxx " " xx x xxxxxx xxxxx " " xxx x xxxxxx xxxxx " " xxxx xxxxxx xxxxx xxx " " xxxxxxxxxxxxx xxxxx " " xx xxxx xxxxx xxxxx " " x x xx x xx x x xxx " " x x xx x xxxxxxxxxxxx " " x x xx x xxxx xxxxx " " x x xx x xx x x xxx " " xx xxxx xxxxx xxxxx " " xxxxxxxxxxxxxxxxxxxxx " " xxxx xxxxxx x x xxx " " xxx x xxxxxx xxxxx " " xx x xxxxxx xxxxx " " xx x xxxx xxxxx xxx " " xx x xxxxx xxxxx " " xx xxxx x x xxx " " xxxxxxxxxxxxxxxxx " " xxxxx xx xx xxxxxx " " xxx xxx xx x xxx " " x xxxxxx x xx " " xxx xx x x x " " xx xxxxxxxxx " " x x xxx xx " " xxx x x x x " " xxxxxxxxxxxx " " xxxxxxxx " " "))) (make-problem "19991118-BDH (6)" (quote ((35) (1 1) (1 7 1) (1 11 4) (5 11 1 1) (1 1 15 3 1) (1 1 1 3) (1 6 3 1) (1 1 5 1) (1 1 1 1) (1 3 12) (8 1) (1 1) (1 1) (3 3) (1 11 5 1) (1 1 1 1) (13 1 1) (2 2 1) (2 8) (2 7 1) (1 9 1) (1 7 7 1) (1 8 5 8 1) (1 9 5 9 1) (1 11 3 11 1) (1 12 3 12 1) (1 12 1 12 1) (1 12 3 12 1) (1 12 3 12 1))) (quote ((30) (1 1 1 1 4) (1 1 1 2 1 4) (1 1 1 1 1 5) (1 4 1 1 1 6) (1 1 1 1 1 7) (1 1 1 1 1 8) (1 1 2 1 1 8) (1 1 1 1 1 8) (1 4 1 1 8) (1 1 1 1 8) (1 1 1 1 8) (1 3 3 8) (1 3 1 5) (1 4 2) (1 4 2 2) (1 4 2 4 2) (1 4 2 7) (1 4 2 4 2) (1 4 2 2) (1 4 2) (1 3 1 5) (1 3 8) (1 1 3 8) (1 1 1 1 8) (1 1 1 8) (1 1 1 8) (1 2 1 2 8) (1 1 1 5 8) (1 3 1 1 1 7) (1 1 1 1 1 6) (1 3 1 1 1 5) (1 1 1 1 2 1 4) (1 1 1 1 1 1) (30))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x x x x xxxx " "x x x xx x xxxx" "x x x x x xxxxx" "x xxxx x x x xxxxxx" "x x x x x xxxxxxx" "x x x x x xxxxxxxx" "x x xx x x xxxxxxxx" "x x x x x xxxxxxxx" "x xxxx x x xxxxxxxx" "x x x x xxxxxxxx" "x x x x xxxxxxxx" "x xxx xxx xxxxxxxx" "x xxx x xxxxx" "x xxxx xx " "x xxxx xx xx " "x xxxx xx xxxx xx" "x xxxx xx xxxxxxx" "x xxxx xx xxxx xx" "x xxxx xx xx " "x xxxx xx " "x xxx x xxxxx" "x xxx xxxxxxxx" "x x xxx xxxxxxxx" "x x x x xxxxxxxx" "x x x xxxxxxxx" "x x x xxxxxxxx" "x xx x xx xxxxxxxx" "x x x xxxxx xxxxxxxx" "x xxx x x x xxxxxxx" "x x x x x xxxxxx" "x xxx x x x xxxxx" "x x x x xx x xxxx" "x x x x x x " "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k35x35 b/pkgs/games/paint-by-numbers/problems/k35x35 deleted file mode 100644 index cdaaa2f975..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k35x35 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 35x35") (define problems (list (make-problem "19981015aGAS (1)" (quote ((17) (1 2) (1 1 1) (17 1) (1 1 1) (1 1 1) (1 1 1) (1 1 1 1 1) (1 5 1 1) (1 1 1) (1 1 1) (1 1 1) (17 1) (1 1 1) (1 1 1) (1 1 1) (1 1 1 1 1) (1 5 1 1) (1 1 1) (1 1 1) (1 1 1) (17 1) (1 1 1 1 1 1 1 2 1) (1 1 1 1 1 1 1 3 1) (1 1 1 1 1 1 1 2 1 1) (16 1 1) (1 1 1 1) (1 1 1 1) (1 1 1 1 1 1) (1 6 1 1 1) (1 1 2 1) (1 2 1 1) (16 1 1) (1 2) (18))) (quote (() () () () () () () (8) (2 3) (19 1 1 1 1) (2 1 2 2 1 1) (1 1 1 1 1 1 1 1) (1 1 1 2 2 2 1 1) (1 1 1 1 1 1 1 1 1) (1 1 1 2 2 1 1 1) (1 1 2 1 2 1 1 1 1 1 1) (1 1 1 1 1 2 2 1 1 1) (1 1 1 1 1 1 1 1 2 1 1) (1 1 1 1 1 2 2 1 1) (1 1 2 1 2 1 1 1 1 1) (1 1 1 2 2 1 1) (1 1 1 1 1 1 1 1) (1 1 1 2 9 1) (1 1 1 1 2 1 1) (1 1 1 3 1 1) (1 32) (1 1 1) (2 1) (32) () () () () () ())) (quote #f)) (make-problem "19990202-SQU (2)" (quote ((3 3 3 2 3) (3 3 1 1 3 1 1 1) (3 1 1 1 3 3 2 1) (3 1 1 3 1 1 1) (3 3 3 2 1) (3 3) (26) (2 3 3 2) (2 5 3) (2 3 4) (30) (1 3 1) (1 2 1) (1 16 1 2) (1 16 2 1 3) (1 2 2 2 5) (1 2 2 5) (1 2 2 3 1) (1 2 2 2 2 1) (1 2 2 2 1 2) (1 2 2 1 3) (1 2 2 5) (1 2 2 2 5) (1 2 2 4 3 1) (1 2 2 4 2 1) (1 2 2 2 1 2) (1 2 2 1 3) (4 2 2 7) (1 1 16 5 1) (1 1 16 4 1) (1 1 3 1) (1 27 1) (1 1) (1 1) (35))) (quote ((8) (1 1) (1 1) (1 22 1) (2 2 1 1) (3 3 1 1) (3 2 1 17 1 1) (3 2 1 17 1 1) (4 1 2 2 1 1) (3 1 2 2 1 1) (1 3 1 2 2 1 1) (3 3 1 2 2 1 1) (1 5 2 2 1 1) (1 3 2 2 1 1) (2 5 2 2 1 1) (1 3 1 2 2 1 1) (2 3 1 2 2 1 1) (3 1 2 2 1 1) (4 1 2 2 1 1) (3 1 1 2 2 1 1) (3 1 1 17 1 1) (3 1 1 17 1 1) (2 1 1 1 1) (1 1 1 2 1 1) (1 1 2 2 4 1 1) (3 1 1 1 2 2 4 1 1) (1 1 1 1 1 2 1 1) (1 3 1 1 1 1) (1 22 1) (5 1 4 4 4 5 1) (1 1 1 1 4 4 4 5 1) (5 4 4 5 1) (1 23 1) (5 1 1) (1 8))) (quote #f)) (make-problem "19990220-JOJ (3)" (quote ((35) (13 6 14) (12 4 13) (11 2 12) (10 11) (5 5) (5 6) (6 7) (7 8) (8 1 1 1 1 1 1 9) (6 1 3 1 1 3 1 7) (4 1 1 1 1 1 1 5) (2 1 2 1 1 2 1 3) (3 1 3 1 1 3 1 4) (4 1 3 1 1 3 1 5) (5 1 1 1 1 6) (6 1 3 1 1 3 1 7) (5 2 1 1 2 6) (4 2 3 4 3 2 5) (3 1 4 4 1 4) (4 1 2 2 1 5) (6 1 1 7) (8 1 2 2 1 9) (8 2 3 3 2 9) (9 1 6 1 10) (10 1 1 11) (13 14) (11 1 1 2 1 1 12) (12 1 1 1 1 13) (11 12) (10 11) (8 9) (7 4 4 8) (6 14 7) (5 16 6))) (quote ((35) (35) (12 22) (12 5 15) (11 3 14) (5 4 1 13) (5 2 11) (5 1 4 10) (5 1 2 1 7) (5 1 3 3 6 1) (4 1 1 1 2 1 4 2) (3 1 2 1 3 1 1 1 1 3) (2 2 3 1 3 2 3 3) (1 1 3 1 1 1 1 3) (2 1 1 1 2 1 3) (3 1 3 3 1 1 2) (4 1 1 1 2) (4 1 1 1 2) (3 1 3 3 1 1 2) (2 1 1 1 2 1 3) (1 1 3 1 1 1 1 3) (2 2 3 1 3 2 3 3) (3 1 2 1 3 1 1 1 1 3) (4 1 1 1 2 1 4 2) (5 1 3 3 6 1) (5 1 2 1 7) (5 1 4 10) (5 2 11) (5 4 1 13) (5 5 3 14) (12 5 15) (12 22) (35) (35) (35))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxx xxx xxxxxxxxxxxxxx" "xxxxx xxxx x xxxxxxxxxxxxx " "xxxxx xx xxxxxxxxxxx " "xxxxx x xxxx xxxxxxxxxx " "xxxxx x xx x xxxxxxx " "xxxxx x xxx xxx xxxxxx x" "xxxx x x x xx x xxxx xx" "xxx x xx x xxx x x x x xxx" "xx xx xxx x xxx xx xxx xxx" "x x xxx x x x x xxx" "xx x x x xx x xxx" "xxx x xxx xxx x x xx" "xxxx x x x xx" "xxxx x x x xx" "xxx x xxx xxx x x xx" "xx x x x xx x xxx" "x x xxx x x x x xxx" "xx xx xxx x xxx xx xxx xxx" "xxx x xx x xxx x x x x xxx" "xxxx x x x xx x xxxx xx" "xxxxx x xxx xxx xxxxxx x" "xxxxx x xx x xxxxxxx " "xxxxx x xxxx xxxxxxxxxx " "xxxxx xx xxxxxxxxxxx " "xxxxx xxxx x xxxxxxxxxxxxx " "xxxxx xxxxx xxx xxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990416-SNI (4)" (quote ((8 15 5) (7 2 13 6) (6 2 12 7) (5 2 11 4 8) (5 1 10 4 9) (4 1 10 3 2 8) (4 1 2 4 1 7) (4 11 5 3 6) (4 11 6 5 5) (3 12 5 7 4) (3 12 5 8 3) (3 1 5 4 3 10 2) (2 1 3 1 4 2 9 3) (2 1 1 3 2 4 1 9 4) (1 3 5 6 9 5) (1 5 11 8 6) (1 10 4 6 7) (1 1 1 2 1 4 4 9) (1 3 2 3 4 3 10) (2 15 1 1 11) (3 13 2 2 10) (3 1 10 4 3 9) (3 1 6 7 3 8) (3 1 5 7 1 2 9) (3 1 4 3 3 3 10) (3 4 2 8 11) (4 6 9 10) (4 17 9) (5 8 7 10) (5 8 7 11) (6 8 6 12) (6 8 4 13) (5 2 4 14) (4 3 5 4 15) (4 6 16))) (quote ((35) (14 16) (12 2 1 15) (9 8 9) (5 3 3 7 5) (3 2 3 1 3 2 2 2 1) (2 2 5 3 12 2) (1 2 1 8 1 13 2) (2 2 11 13 1) (1 3 11 13 2) (4 5 3 6 6 2) (6 4 1 8 2 5 2) (6 4 2 2 4 3 5 2) (6 5 2 6 6 2) (6 9 5 3 2) (6 10 12 1 1) (6 1 10 9 2) (5 1 3 8 13) (4 2 4 5 3 9) (4 1 7 1 3 9 1) (3 2 6 3 3 8 2) (3 1 5 6 8 3) (2 2 3 11 4) (2 2 2 10 4 5) (1 1 2 10 1 3 1 6) (1 1 1 10 3 1 3 7) (1 10 5 12) (3 9 18) (5 7 19) (7 5 20) (9 3 21) (10 1 22) (11 23) (35) (35))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxx xx x xxxxxxxxxxxxxxx" "xxxxxxxxx xxxxxxxx xxxxxxxxx" "xxxxx xxx xxx xxxxxxx xxxxx " "xxx xx xxx x xxx xx xx xx x " "xx xx xxxxx xxx xxxxxxxxxxxx xx " "x xx x xxxxxxxx x xxxxxxxxxxxxx xx " " xx xx xxxxxxxxxxx xxxxxxxxxxxxx x" " x xxx xxxxxxxxxxx xxxxxxxxxxxxx xx" " xxxx xxxxx xxx xxxxxx xxxxxx xx" "xxxxxx xxxx x xxxxxxxx xx xxxxx xx" "xxxxxx xxxx xx xx xxxx xxx xxxxx xx" "xxxxxx xxxxx xx xxxxxx xxxxxx xx" "xxxxxx xxxxxxxxx xxxxx xxx xx " "xxxxxx xxxxxxxxxx xxxxxxxxxxxx x x " "xxxxxx x xxxxxxxxxx xxxxxxxxx xx " "xxxxx x xxx xxxxxxxx xxxxxxxxxxxxx " "xxxx xx xxxx xxxxx xxx xxxxxxxxx " "xxxx x xxxxxxx x xxx xxxxxxxxx x" "xxx xx xxxxxx xxx xxx xxxxxxxx xx" "xxx x xxxxx xxxxxx xxxxxxxx xxx" "xx xx xxx xxxxxxxxxxx xxxx" "xx xx xx xxxxxxxxxx xxxx xxxxx" "x x xx xxxxxxxxxx x xxx x xxxxxx" "x x x xxxxxxxxxx xxx x xxx xxxxxxx" " x xxxxxxxxxx xxxxx xxxxxxxxxxxx" " xxx xxxxxxxxx xxxxxxxxxxxxxxxxxx" " xxxxx xxxxxxx xxxxxxxxxxxxxxxxxxx" " xxxxxxx xxxxx xxxxxxxxxxxxxxxxxxxx" "xxxxxxxxx xxx xxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxx x xxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990520-TAM (5)" (quote ((1 1) (1 1 2) (1 1 1 1) (1 1 1 1) (1 1 1) (1 1 18 2) (1 1 20 2) (2 2 2 14 2) (2 2 3 2 2 3) (6 6) (5 2 2 5) (3 4 4 3) (3 4 4 3) (3 2 2 3) (1 3 3) (2 24) (1 1 4 1 1 1 1 1 1 1 1 3) (1 24) (1 24) (2 24) (2 24) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (24) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (26) (26) (26) (26) (26) (2 2) (2 2) (2 2) (2 2))) (quote (() (2 2) (7 7) (1 1) (1 2 1) (8) (5) (23) (14 1 5) (15 1 9) (2 2 20) (2 2 1 14) (5 6 1 5) (4 2 1 4 1 5) (3 4 16) (3 4 1 14) (3 2 6 1 5) (3 1 4 1 5) (3 16) (3 1 14) (3 6 1 5) (3 2 1 4 1 5) (3 4 16) (3 4 1 14) (4 2 6 1 5) (5 1 4 1 5) (2 2 16) (2 2 1 18) (15 1 9) (14 1 5) (23) (2 5) (7) (1) (2))) (quote (" " " xx xx " " xxxxxxx xxxxxxx " " x x " "x xx x " " xxxxxxxx " " xxxxx " " xxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxx x xxxxx " " xxxxxxxxxxxxxxx x xxxxxxxxx" " xx xx xxxxxxxxxxxxxxxxxxxx" " xx xx x xxxxxxxxxxxxxx " " xxxxx xxxxxx x xxxxx " " xxxx xx x xxxx x xxxxx " " xxx xxxx xxxxxxxxxxxxxxxx " " xxx xxxx x xxxxxxxxxxxxxx " " xxx xx xxxxxx x xxxxx " " xxx x xxxx x xxxxx " " xxx xxxxxxxxxxxxxxxx " " xxx x xxxxxxxxxxxxxx " " xxx xxxxxx x xxxxx " " xxx xx x xxxx x xxxxx " " xxx xxxx xxxxxxxxxxxxxxxx " " xxx xxxx x xxxxxxxxxxxxxx " " xxxx xx xxxxxx x xxxxx " " xxxxx x xxxx x xxxxx " " xx xx xxxxxxxxxxxxxxxx " " xx xx x xxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxx x xxxxxxxxx" " xxxxxxxxxxxxxx x xxxxx " " xxxxxxxxxxxxxxxxxxxxxxx " " xx xxxxx " "xxxxxxx " " x " " xx "))) (make-problem "19990830-KHO (6)" (quote ((35) (26 5) (7 12 3 4) (6 1 1 1 4 4 4) (5 2 1 1 2 2 3) (4 4 2 1 2) (3 6 1 1 7 1) (2 6 3 3 7) (1 6 1 3 1 6) (2 5 1 1 6) (4 4 4 3) (4 4 4 4) (2 4 5 4 7) (1 4 7 4 4 1) (2 4 3 1 3 4 2) (10 1 3 1 1 10) (9 1 3 9) (9 3 4 2) (9 1 3 1 3 3 3 1) (10 5 1 3 2 2) (12 2 3 3 4 1 1 1) (4 8 1 1 7 3 1) (3 9 3 8 1 2) (2 2 6 8 2 1) (2 1 1 4 9 2) (2 3 3 11) (3 8 12) (8 1 1 6) (7 1 1 5) (7 7 5) (7 1 1 7 1 1 5) (9 2 11 2 7) (35) (35) (35))) (quote ((9 22) (8 21) (7 2 8 9) (6 4 7 3 8) (5 4 6 2 1 8) (4 2 6 1 2 8) (3 1 10 9) (2 2 3 15 4) (2 22 4) (2 12 8 1 3) (2 9 5 1 4) (2 8 4 1 4) (3 4 2 1 1 3) (4 1 2 1 4) (3 1 2 3 1 1 1 4) (4 2 1 3 1 1 7) (3 2 2 1 3 1 6) (3 1 5 3 1 6) (3 2 2 1 3 1 6) (4 2 1 3 1 1 6) (5 2 3 1 1 6) (5 1 3 7) (4 4 3 4 1 4) (3 8 5 4 1 4) (2 1 9 3 7 1 3) (2 2 10 8 4) (1 3 21 4) (1 2 5 14 1 3) (1 1 2 3 5 5 4) (1 4 3 3 5 4) (2 4 2 2 2 11) (4 3 2 1 2 12) (5 2 2 2 2 10) (6 1 4 4 11) (7 7 12))) (quote ("xxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxx xxxxxxxxxxxxxxxxxxxxx" "xxxxxxx xx xxxxxxxx xxxxxxxxx" "xxxxxx xxxx xxxxxxx xxx xxxxxxxx" "xxxxx xxxx xxxxxx xx x xxxxxxxx" "xxxx xx xxxxxx x xx xxxxxxxx" "xxx x xxxxxxxxxx xxxxxxxxx" "xx xx xxx xxxxxxxxxxxxxxx xxxx" "xx xxxxxxxxxxxxxxxxxxxxxx xxxx" "xx xxxxxxxxxxxx xxxxxxxx x xxx" "xx xxxxxxxxx xxxxx x xxxx" "xx xxxxxxxx xxxx x xxxx" "xxx xxxx xx x x xxx" "xxxx x xx x xxxx" "xxx x xx xxx x x x xxxx" "xxxx xx x xxx x x xxxxxxx" "xxx xx xx x xxx x xxxxxx" "xxx x xxxxx xxx x xxxxxx" "xxx xx xx x xxx x xxxxxx" "xxxx xx x xxx x x xxxxxx" "xxxxx xx xxx x x xxxxxx" "xxxxx x xxx xxxxxxx" "xxxx xxxx xxx xxxx x xxxx" "xxx xxxxxxxx xxxxx xxxx x xxxx" "xx x xxxxxxxxx xxx xxxxxxx x xxx" "xx xx xxxxxxxxxx xxxxxxxx xxxx" "x xxx xxxxxxxxxxxxxxxxxxxxx xxxx" "x xx xxxxx xxxxxxxxxxxxxx x xxx" "x x xx xxx xxxxx xxxxx xxxx" "x xxxx xxx xxx xxxxx xxxx" "xx xxxx xx xx xx xxxxxxxxxxx" "xxxx xxx xx x xx xxxxxxxxxxxx" "xxxxx xx xx xx xx xxxxxxxxxx" "xxxxxx x xxxx xxxx xxxxxxxxxxx" "xxxxxxx xxxxxxx xxxxxxxxxxxx"))) (make-problem "19990904-PIP (7)" (quote ((29) (27 1) (1 1 2) (2 2 1) (1 1 28) (1 2 1 1) (1 4 9 1 9 1) (2 1 1 1 1 1 1) (1 1 1 1 3 1 1) (2 2 1 1 1 1) (1 1 4 1 2 1 1 1 1 1 1) (1 2 1 1 1 1 1 1 1 1 1 1 1 1) (1 4 1 2 1 1 1 1 2 1 1) (2 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 2 1 1 1 1 1 1) (2 2 1 2 2 1) (1 1 4 1 1 1) (1 2 1 1 1 13 1 1 1) (1 4 1 1 1) (2 1 2 13 2 1) (1 1 1 1 1 1) (2 2 1 1 1 1) (1 1 4 1 1 1) (1 2 1 1 1 1) (1 4 1 1 1) (1 1 1 1 1) (2 1 1 1 1) (1 1 1 1 3 1 1) (1 2 1 1 1 1 1 1) (1 4 9 1 9 1) (2 1 1) (28) () () ())) (quote ((28) (2 1 1 1 1 1 1 1 1 1) (3 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 28) (2 1 1) (2 1 10 1 11 1) (2 1 1 1 1 1 1) (2 1 1 3 1 1) (2 1 1 5 1 1) (2 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1) (2 1 1 3 1 1 1 1) (2 1 2 1 1 1 1 2 1) (2 1 1 3 1 1 1 1) (2 1 1 1 1 1 1 1 1) (2 1 1 3 1 1 1 1) (2 1 2 1 1 1 1 2 1) (2 1 1 3 1 1 1 1) (2 1 1 1 1 1 1) (2 1 1 5 1 1 1 1) (2 1 1 1 1 1 1 1) (1 1 1 1 2 2 1 1) (5 1 3 1 1) (1 1 1 1 1 1) (1 10 1 11 1) (1 1) (28) () ())) (quote #f)) (make-problem "19991007cKHO (8)" (quote ((3 3) (3 3) (3 4 3) (3 1 1 3) (5 3 5) (1 3 7) (1 3 3 2) (1 3 4 2 2) (1 2 2 1 2 3 2) (1 1 1 1 2 1 3) (1 1 1 2 5) (1 2 1 1 2 6) (1 3 1 2 6) (3 1 2 8) (3 3 1 2 6 3) (3 1 3 1 7 3) (3 1 3 1 5 4 3) (1 3 3 3 3 1 5) (1 3 7 3 7) (1 3 7 1 3 5 2) (1 3 5 3 1 1 5 3) (1 1 2 1 2 1 2 1 1 1 2 5) (1 1 1 1 2 1 2 1 1 1 2 3 2) (1 1 1 1 1 3 1 1 1 1 2 1 3) (1 1 1 1 1 2 1 1 1 1 2 5) (1 1 2 1 1 1 1 1 1 1 2 6) (1 2 1 1 3 1 1 2 1 2 6) (3 1 1 7 2 1 2 6) (3 1 1 5 3 1 2 4) (3 1 5 3 1 5) (3 3 3 3) (3 3) () () ())) (quote ((12) (1 1) (3 6 2) (1 1 1 1 1) (2 2 2 1 2) (1 1 1 1 1) (2 2 4 2) (1 2 1 1) (12 1 13) (2 1 1 1 1) (3 4 2 1 13) (1 1 2 2 1 4 2) (2 2 1 1 2 3 2 5) (1 1 2 1 1 2 4 4) (2 2 2 1 5 1 5) (1 2 1 6 2) (1 1 1 23) (1 1 1 1 1) (1 1 1 23) (1 1 12 1) (2 2 4 7 2) (1 1 2 6 1 2 1) (2 2 2 7 2 1 2) (1 2 2 6 1 1) (4 7 13) (12 2 1 1) (12 1 13) (1 1 12) (2 1 3 2) (1 2 2 5) (2 3 2 6) (1 2 2 5) (4 2 6) (12) (12))) (quote #f))))) diff --git a/pkgs/games/paint-by-numbers/problems/k35x40 b/pkgs/games/paint-by-numbers/problems/k35x40 deleted file mode 100644 index 7654a07e60..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k35x40 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 35x40") (define problems (list (make-problem "19980425-HUB (1)" (quote ((8 6 2 2 6) (8 8 2 2 8) (2 2 2 2 2 2 2) (2 2 2 2 2 2 2) (2 2 2 2 2 2 2) (2 2 8 6 8) (3 3 8 4 8) (6 2 2 2 2 2) (4 2 2 1 2 2 2) (1) (5 1 1 1 1 1 9) (3 1 1 1 1 1 6) (5 1 1 1 1 1 1 8) (3 1 1 1 1 1 6) (4 1 1 1 1 1 10) (2 1 1 1 1 1 5) (4 1 1 1 1 1 8) (2 1 1 1 1 1 5) (4 1 11 1 8) (5 1 1 1 5 1) (3 1 11 1 3) (1 21 1 3) (3 17 8) (2 3 9 7 2) (2 4 10 2) (2 9 1 7 2) (5 1 1 1 1 8 2) (2 1 1 1 1 6 2) (1 6 1 1 1 1 7 3) (1 2 1 1 1 1 9 1) (1 6 1 1 1 1 8 2) (1 2 1 1 1 8 4) (2 6 1 1 1 8 5) (2 3 1 1 1 6 6) (3 4 1 1 1 6 7) (4 2 1 1 6 8) (5 3 1 1 5 9) (7 9 11) (10 14) (35))) (quote ((2 2 9 12) (2 3 9 6 8) (2 3 5 1 1 1 9 6) (2 2 1 1 1 1 1 1 1 7 5) (2 2 1 1 1 1 1 1 4 4) (2 3 1 1 1 1 1 1 3 3) (8 2 4 1 1 1 1 1 4 3) (7 2 5 1 1 1 1 2 2) (1 2 1 1 1 1 2) (8 1 2 1 1 2) (9 1 2 1 3 1 1 1) (2 2 2 9 1 1 1) (2 2 1 4 1 1 1) (2 2 6 1 1 1) (2 2 3 4 4 2 1 1 1 1 2 1) (9 2 1 4 1 1 1 1 1 1 1 1) (8 1 4 2 1 1 1 1 2 1) (2 7 1 1 1 1 1 1 1 1) (4 3 4 1 4 2 1 1 1 1 2 1) (6 1 4 1 1 1 1 1 3 1) (3 1 3 1 1 1 1 1 3 1) (4 1 2 2 1 1 6 2) (4 2 6 1 1 1 7 2) (3 2 3 1 2 12 2) (6 1 1 13 3) (4 1 1 1 1 12 3) (1 1 1 11 4) (8 1 1 1 1 1 1 11 5) (9 1 1 1 1 1 1 10 6) (2 2 5 1 1 6 2 7) (2 2 9 2 2 8) (2 2 9 2 2 9) (2 2 9 2 2 9) (9 9 7 10) (8 10 5 11))) (quote #f)) (make-problem "19981020-MON (2)" (quote ((3 11) (4 5 4) (3 5 4) (3 5 3) (3 5 2) (4 5 2) (3 5 2) (4 2) (4 3 3 3 2 1) (4 1 1 1 1 1 2 1) (2 1 2 1 3 2 2) (2 1 1 1 1 1 2 2) (4 1 1 3 1 2 3) (4 2 2) (4 1 2 1 1 1) (2 1 1 2 4 1) (2 1 3 4 1 1 1) (1 4 3 8 1) (1 1 1 3 2 4 1) (1 6 3 1 2 2 1) (2 5 1 3 1 2 4 1) (2 1 12 8 1) (1 1 2 6 12) (3 4 2 10) (8 2 10) (4 1 2 10) (1 1 4 2 11) (3 1 1 2 2 9) (5 5 2 2 8) (2 1 4 2 2 3 7) (12 2 2 6) (9 1 2 2 6) (13 2 4) (10 3 5) (6 2 3 5) (2 9 5) (2 4 3 5) (2 2 4 5) (2 2 1 2 3) (2 2 10))) (quote ((2) (1 1 4 1) (2 2 5 3 3 3) (2 2 4 6 5) (5 2 3 7 1) (5 2 7 3) (3 2 10) (2 9) (34) (13 2 4 1 4 3 1) (6 3 1 6 1 3 4 3) (37) (5 3 2 2 1) (5 5 1 1 2 2 1) (5 1 1 2 2 2 1) (4 2 2 2 2 2 1) (3 2 2 2 2) (2 1 1 7 2 2 3) (1 5 9 2 2 3) (1 1 1 7 2 3 3) (1 2 2 2 4) (1 5 1 2 2 4) (2 1 1 2 2 2 4) (3 3 2 2 4) (4 2 2 4) (33) (32) (2 11) (5 12) (1 15) (16) (4 2 2 10) (3 2 7) (2 6) (13))) (quote #f)) (make-problem "19990202bLLO (3)" (quote ((8 20) (2 2 2 2) (1 1 1 1 1 2 1 1 3 1) (1 4 3 1 1 1 1 1 1 1 2) (1 1 1 3 3 2 1 1 1 1 2) (1 1 1 3 1 1 1 1 1 1 1 2) (1 1 1 1 1 1 1 2 2 2 3 1) (1 1 1 1 2 2) (1 1 1 1 20) (1 1 1 1) (2 1 1 2 6 6 6) (1 1 1 1 1 1 1 1 1 1) (2 2 1 2 1 1 2 1 1 2 1) (2 2 1 1 1 1 1 1 1 1 1) (2 2 1 1 1 1 1 1 1 1 1) (5 5 1 1 1 1 2 1 1 1 1) (1 2 2 1 1 1 1 1 1 1) (1 2 2 1 6 6 6) (5 5) (2 2 6 6 6) (2 2 1 1 1 1 1 1) (2 2 1 1 1 1 2 1 1 1 1) (2 2 1 2 1 1 1 1 1 1 1) (2 2 1 1 1 1 1 1 1 2 1) (2 2 1 1 1 1 2 1 1 2 1) (2 2 1 1 1 1 1 1) (2 2 6 6 6) (1 1 1 1) (2 1 1 2 6 6 6) (1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 2 1 1 2 1 1 2 1) (1 1 1 1 1 1 1 1 2 1 1 2 1) (1 1 1 1 1 1 1 1 2 1 1 1 1) (1 1 1 1 1 1 1 1 2 1 1 1 1) (1 4 1 1 1 1 1 1 1) (1 1 6 6 6) (2 2 4) (8 8) (3 4 5) (3 4 5))) (quote ((4) (10 1 1 9) (2 2 1 1 2 2) (1 15 1) (1 32 2) (1 1 1 3) (1 1 1 3) (1 32 1 1) (1 15 1) (2 2 1 1 2 2) (10 1 1 9) (3 4 1) (7 1) (2 2 8 8 8 2) (1 1 1 1 1 1 1 1 2) (1 5 1 1 1 1 1 2 1 1 1 2 1 2) (1 1 1 1 4 1 1 3 1 1 2 1 2) (1 5 1 1 1 1 1 1 3) (1 1 8 8 10) (1 5 1 2) (1 1 1 1 1 8 8 11) (1 1 1 1 1 1 1 1 2) (1 5 1 1 1 2 1 1 2 1 1 1 4 1 3) (1 1 1 1 2 1 1 1 1 2 1 1 4 1 2) (1 1 1 1 1 1 1 1 2) (1 5 1 8 8 8 1) (1 1 1 1) (1 1 8 8 8) (1 5 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 4 1 1 2 1) (1 5 1 1 3 1 1 2 1 1 4 1) (1 1 1 1 1 1 1 1) (2 2 8 8 8) (7) (3))) (quote #f)) (make-problem "19990529aDRA (4)" (quote (() () (3) (5) (7) (7) (6) (7) (6) (5) (7) (2 9) (1 3 10) (2 16 4) (2 15 4) (2 2 2 5) (4 4 2 5 12) (2 1 1 8 1) (2 1 5 2 1 1) (2 1 5 2 1) (2 1 2 6 1) (2 1 7 1) (2 1 7 1) (14 8 11) (2 1 8 1) (2 1 10 1) (2 1 11 1) (2 1 6 5 1) (2 1 5 4 1) (2 1 3 4 1) (9 4 7 4 7) (2 4 4) (2 4 4) (2 4 3) (2 4 4) (2 3 3) (2 3 3) (2 5 4) (2 4 3) (2))) (quote ((27) (27) (1 1 1) (3 1 1 1) (1 3 1 1) (5 1 1) (3 15) (3 1 1 1) (2 1 1 1) (2 1 1) (2 2 3 1 3) (5 2 1 3 1 5) (6 2 5 1 7) (7 4 3 1 4 4 2) (7 6 3 5 4 2) (13 1 5 1 3 2) (11 3 8 1 6) (8 3 7 1 4) (6 3 7 1 2) (4 3 9 1) (7 10 1) (5 9 1) (4 3 5) (2 1 4) (1 1 4) (1 1 4 2) (1 1 4 2) (1 1 4 3) (15 6) (1 1 1 3) (1 1 1 2) (1 1 1) (1 1 1) (1 1 1) (1 1 1))) (quote (" xxxxxxxxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxxxxxxxx" " x x x " " xxx x x x " " x xxx x x " " xxxxx x x " " xxx xxxxxxxxxxxxxxx " " xxx x x x " " xx x x x " " xx x x " " xx xx xxx x xxx " " xxxxx xx x xxx x xxxxx " " xxxxxx xx xxxxx x xxxxxxx " " xxxxxxx xxxx xxx x xxxx xxxx xx " " xxxxxxx xxxxxx xxx xxxxx xxxx xx " " xxxxxxxxxxxxx x xxxxx x xxx xx " " xxxxxxxxxxx xxx xxxxxxxx x xxxxxx " " xxxxxxxx xxx xxxxxxx x xxxx " " xxxxxx xxx xxxxxxx x xx " " xxxx xxx xxxxxxxxx x " " xxxxxxx xxxxxxxxxx x " " xxxxx xxxxxxxxx x " " xxxx xxx xxxxx " " xx x xxxx " " x x xxxx " " x x xxxx xx " " x x xxxx xx " " x x xxxx xxx " " xxxxxxxxxxxxxxx xxxxxx " " x x x xxx " " x x x xx " " x x x " " x x x " " x x x " " x x x ")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k40x30 b/pkgs/games/paint-by-numbers/problems/k40x30 deleted file mode 100644 index 658c950aee..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k40x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 40x30") (define problems (list (make-problem "19980501bGOS (1)" (quote (() () () () () () () () () (37) (37) (1 1 1 1 2 2 2 1 1 1 1 2 2) (1 1 1 3 1 1 1 1 2 1 3 1 2 1 1 1) (1 1 1 3 1 1 3 2 1 3 1 1 2 3) (1 1 1 3 2 1 2 6 2) (1 1 1 3 1 3 1 2 1 4 7 1) (1 1 1 3 1 1 1 1 2 1 4 5 1 1) (1 1 1 1 1 2 2 2 1 2 6 2) (37) (6 3) (6 5 1 4 1 6 3) (6 3) (37) () () () () () () ())) (quote (() (14) (2 5) (5 8) (2 5) (14) (2 5) (2 2 2 1 1) (2 2 2 1 1) (10 1 1) (2 1 1 1) (2 2 4 1 1) (2 1 1 1 1) (10 1 1) (3 2 2 1) (2 2 2 1 1) (3 2 2 1 1) (10 1) (2 1 1 1) (5 4 1 1) (5 4 1 1) (2 1 1 1) (10 1) (2 1 1 1) (2 2 2 1 1) (2 2 2 1 1 1) (10 1 1) (2 5 1 1) (5 1 1 1) (2 5 1 1) (10 1 1) (2 1 5 1) (2 6 1) (10 1) (3 2 2 1) (2 2 2 5) (3 2 6) (14) () ())) (quote #f)) (make-problem "19980501cGOS (2)" (quote (() (3 4) (6 6) (1 8 7) (2 2 16 2) (3 2 16 2 2) (5 5 1 5 2 3) (8 4 1 5 5) (15 3 4 8) (2 12 1 16) (3 25 2) (3 19 3) (16 3) (3 6) (3 5) (2 1 4) (4 4) (2 4) (10) (10) (9) (9) (7) (7) (3 3) (3 3) (4 4) (5 5) (5 5) ())) (quote (() () (2) (2 3 1) (2 2 2) (7) (5) (6) (7) (4) (4) (4) (4 4) (11) (14 2) (21 3) (28) (4 3 1 11) (4 1 3 2 11) (10 6) (2 1 3 11) (3 19) (27) (21 3) (19 2) (14) (7 5) (4 4) (4) (4) (4) (7) (7) (5) (7) (2 2 2) (2 3 1) (2) () ())) (quote (" " " " " xx " " xx xxx x " " xx xx xx " " xxxxxxx " " xxxxx " " xxxxxx " " xxxxxxx " " xxxx " " xxxx " " xxxx " " xxxx xxxx " " xxxxxxxxxxx " " xxxxxxxxxxxxxx xx " " xxxxxxxxxxxxxxxxxxxxx xxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxx xxx x xxxxxxxxxxx " " xxxx x xxx xx xxxxxxxxxxx " " xxxxxxxxxx xxxxxx " " xx x xxx xxxxxxxxxxx " " xxx xxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx xxx " " xxxxxxxxxxxxxxxxxxx xx " " xxxxxxxxxxxxxx " " xxxxxxx xxxxx " " xxxx xxxx " " xxxx " " xxxx " " xxxx " " xxxxxxx " " xxxxxxx " " xxxxx " " xxxxxxx " " xx xx xx " " xx xxx x " " xx " " " " "))) (make-problem "19980508-SDN (3)" (quote ((15 7 10) (1 1 1 1 10) (1 11 1 1 1 2 2) (1 11 1 1 1 10) (1 11 1 1 1 5 3) (1 11 1 13 10) (1 11 1 24) (1 11 1 13 10) (1 11 1 6 1 2 10) (1 11 1 13 10) (1 11 1 1 1 10) (1 1 10) (15 10) (1 1 1 6 2 10) (15 7 2) (3 2 10) (1 14 10 2) (3 1 2 10) (9 3 1 10) (9 1 1 10) (1 1) (25 10) (25 1) (2 1 1 1 1 1 1 3 3) (25 1 1) (1 1 1 1 1 1 1 1 1 1 1) (25 3) (2 1 1 1 1 1 1 3 3) (25) (25))) (quote ((15 9) (1 1 1 4 4) (1 9 3 2 1 1 2) (1 9 1 1 2 2 3 2) (1 9 3 2 4 4) (1 9 1 1 2 2 1 1 2) (1 9 4 3 2 3 2) (1 9 8 4 4) (1 9 4 3 2 1 1 2) (1 9 3 2 2 3 2) (1 9 3 3 4 4) (1 9 3 1 2 2 1 1 2) (1 9 1 1 1 2 3 2) (1 3 1 4 4) (15 1 2 1 1 2) (1 2 3 2) (5 1 4 4) (5 1 2 1 1 2) (5 1 2 3 2) (11 1 4 4) (1 5 1 2 1 1 2) (1 5 1 2 3 2) (1 3 1 1 4 4) (1 3 1 1 7 4) (1 5 2 1 9) (8 2 1 1) (3 1 1 2) (5 1 2 1) (5 1 1 1 1) (1 1 1 1) (20 1) (20 1) (2 17 1) (2 11 5 1) (2 11 5 1) (2 1 9 5 1) (2 1 9 1 3 1) (2 11 1 3 1 5) (20 3 2) (20 5))) (quote #f)) (make-problem "19981027aMNT (4)" (quote ((2) (2) (8) (2) (1 2) (1 2) (5 2) (1 10) (1 2) (1 2) (1 10) (7 10) (1 10) (1 4 4) (1 18) (24) (24) (18) (34) (24) (32) (40) (17 12) (17 6) (21 5) (20 1) (19 2) (18 2) (17 2) (32))) (quote ((1 1) (1 2) (1 3) (1 1 4) (1 10) (1 10) (1 1 10) (1 1 1 10) (1 1 2 12) (13 12) (1 1 2 12) (1 1 16) (1 16) (16) (16) (1 20) (1 1 20) (1 1 20) (1 1 20) (13 16) (13 16) (1 1 12 1) (1 1 12 1) (1 1 12 1) (1 13 1) (9 1) (9 1) (9 1) (9 1) (2 5 1) (2 6 1) (2 6 1) (1 4 1) (1 4 1) (1 4 1) (1 5 2) (1 1 1 2) (1 1 2) (1 3) (1 1))) (quote (" x x " " x xx " " x xxx " " x x xxxx " " x xxxxxxxxxx" " x xxxxxxxxxx" " x x xxxxxxxxxx" " x x x xxxxxxxxxx" " x x xx xxxxxxxxxxxx" " xxxxxxxxxxxxx xxxxxxxxxxxx" " x x xx xxxxxxxxxxxx" " x x xxxxxxxxxxxxxxxx" " x xxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxx" " x xxxxxxxxxxxxxxxxxxxx" " x x xxxxxxxxxxxxxxxxxxxx" " x x xxxxxxxxxxxxxxxxxxxx" " x x xxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxx xxxxxxxxxxxxxxxx" " x x xxxxxxxxxxxx x" " x x xxxxxxxxxxxx x" " x x xxxxxxxxxxxx x" " x xxxxxxxxxxxxx x" " xxxxxxxxx x" " xxxxxxxxx x" " xxxxxxxxx x" " xxxxxxxxx x" " xx xxxxx x" " xx xxxxxx x" " xx xxxxxx x" " x xxxx x" " x xxxx x" " x xxxx x" " x xxxxx xx" " x x x xx " " x x xx " " x xxx " " x x "))) (make-problem "19981027bMNT (5)" (quote ((16) (3 7 3) (4 7 3) (2 7 4 1) (3 7 3 2) (17 3) (3 7 3 4) (4 7 2 5) (17 13) (1 1 7 5 1) (16 8 1 1 1 1) (16 1 5 1 1 2 1) (7 7 1 5 8 1) (7 7 4 2 1 3 1 1) (16 4 2 1 3 2 1) (16 7 12 1) (16 8 1) (16 6 15) (16 4 1 15) (2 8 2 3 3 1 8 2) (2 8 2 2 1 1 1 8 2) (16 2 1 1 15) (17 1 4 6 7) (1 4 6 7) (1 3 15) (1 2 15) (1 1 1 8 2) (1 1 8 2) (1 15) (16))) (quote ((14) (1 13) (2 9 2) (3 9 2) (4 13) (5 13) (3 1 13) (4 1 2 9) (2 4 2 9) (3 4 13) (9 13) (1 6 13) (1 6 9 2) (9 9 2) (9 13) (6 1 13) (6 2 1) (3 4 12) (3 3 2 11) (7 3 7 1) (1 3 12 4 1) (1 2 7 3 1 3 1) (4 8 3 1 4 1) (3 13 9 1) (15 1 1) (1 1 13) (8 2 5 2) (2 1 1 2 5 2) (5 1 13) (2 4 13) (2 4 13) (1 6 5 6) (1 2 1 5 6) (1 1 1 13) (1 3 13) (1 2 13) (1 1 2 5 2) (1 2 5 2) (1 13) (14))) (quote (" xxxxxxxxxxxxxx " " x xxxxxxxxxxxxx " " xx xxxxxxxxx xx " " xxx xxxxxxxxx xx " " xxxx xxxxxxxxxxxxx " " xxxxx xxxxxxxxxxxxx " " xxx x xxxxxxxxxxxxx " " xxxx x xx xxxxxxxxx " " xx xxxx xx xxxxxxxxx " "xxx xxxx xxxxxxxxxxxxx " "xxxxxxxxx xxxxxxxxxxxxx " "x xxxxxx xxxxxxxxxxxxx " "x xxxxxx xxxxxxxxx xx " "xxxxxxxxx xxxxxxxxx xx " "xxxxxxxxx xxxxxxxxxxxxx " "xxxxxx x xxxxxxxxxxxxx " "xxxxxx xx x " "xxx xxxx xxxxxxxxxxxx " "xxx xxx xx xxxxxxxxxxx " "xxxxxxx xxx xxxxxxx x " "x xxx xxxxxxxxxxxx xxxx x " "x xx xxxxxxx xxx x xxx x " "xxxx xxxxxxxx xxx x xxxx x " "xxx xxxxxxxxxxxxx xxxxxxxxx x " "xxxxxxxxxxxxxxx x x" " x x xxxxxxxxxxxxx" " xxxxxxxx xx xxxxx xx" " xx x x xx xxxxx xx" " xxxxx x xxxxxxxxxxxxx" " xx xxxx xxxxxxxxxxxxx" " xx xxxx xxxxxxxxxxxxx" " x xxxxxx xxxxx xxxxxx" " x xx x xxxxx xxxxxx" " x x x xxxxxxxxxxxxx" " x xxx xxxxxxxxxxxxx" " x xx xxxxxxxxxxxxx" " x x xx xxxxx xx" " x xx xxxxx xx" " x xxxxxxxxxxxxx" " xxxxxxxxxxxxxx"))) (make-problem "19981228-BAU (6)" (quote ((5) (7) (3 3) (2 2 2) (2 2 2) (3 3 2) (2 2 2) (2 2 2) (3 3 3) (2 2 2 2) (2 2 4 2) (3 3 6 3) (2 2 2 2 2) (2 2 3 2 2) (3 3 5 3 2) (2 2 2 2 2 2) (2 2 2 2 2 2) (3 3 3 3 3 3) (2 2 2 2 2 2) (2 2 2 2 2 2) (3 17 3 3) (3 17 2 3) (2 3 2 2) (2 3 3 2) (26 2 2) (26 2 2) (2 4) (2 3) (29) (27))) (quote (() () (5) (7) (3 4) (4 2 2) (3 2 2) (4 2 2) (3 2 2) (4 3 2 2) (3 5 2 2) (4 3 2 2 2) (3 4 2 2 2) (4 3 2 2 2) (3 4 3 2 2) (4 3 5 2 2) (3 4 3 2 2 2) (3 3 4 2 2 2) (2 4 3 2 2 2) (2 3 4 2 2 2) (2 3 6 2 2 2) (4 3 4 2 2 2) (2 3 3 2 2 2) (3 3 5 2 2) (4 4 4 2 2) (4 3 6 2) (3 4 4 2) (4 3 3 2) (3 4 2) (4 3 2) (3 4 2) (3 4 2) (3 7) (4 3) (3 2) (7) (5) () () ())) (quote #f)) (make-problem "19990118-FRA (7)" (quote (() (3 3) (1 2 2 1) (1 2 2 1) (1 12 1) (1 14 1) (1 16 1) (1 20 1) (6 6 6) (4 1 1 4 1 1 4) (4 1 1 4 1 1 4) (5 6 5) (22) (10 9) (10 9) (11 10) (11 10) (7 2 2 6) (8 3 7) (9 1 8) (9 8) (16) (12) (8) () (1 1 4 4 1 1) (2 2 1 1 1 1 1 1) (1 2 1 3 1 1 1 1 1 1) (1 1 1 1 1 2 2) (1 1 4 4 1 1))) (quote (() () () () () () () () (8 5) (1 11 1) (1 13 1) (1 14 1) (1 16 1) (1 4 11 5) (5 2 11) (4 11 5) (4 2 5 6 1 1 1) (5 7 5 1 1 1) (14 5 1 1) (9 2 1 4) (9 2 3 5) (9 2 1 4 1 1) (5 7 5 1 1) (4 2 6 5 5) (4 5 5) (5 2 11 5) (1 4 11 1) (1 16 1) (1 14 1) (1 13 1) (1 11 1) (8 5) () () () () () () () ())) (quote #f)) (make-problem "19990123aFRA (8)" (quote (() () (2) (8) (10) (12 3) (4 14 3) (1 2 1 1 3) (1 23) (1 21) (3 20) (20) (16) (14) (12) (10) (8) (6) (10) () () (12 12) (1 10 10 1) (1 8 8 1) (9 9) (7 7) (5 5) (11 11) () ())) (quote (() () () (2) (1 1 1) (2 1 1) (3 5 1) (1 2 7) (1 1 7) (2 1 7) (2 1 7) (4 7) (6 5 1) (1 6 3 1) (2 7 2 1) (3 8 1 1) (4 9 1) (4 11) (4 11) (5 11) (5 11) (4 11) (4 11) (4 9 1) (3 8 1 1) (2 7 2 1) (1 6 3 1) (6 5 1) (4 7) (4 7) (3 7) (3 7) (3 7) (3 5 1) (2 2 1 1) (1 1 1 1) (2) () () ())) (quote (" " " " " " " xx " " x x x " " xx x x " " xxx xxxxx x " " x xx xxxxxxx " " x x xxxxxxx " " xx x xxxxxxx " " xx x xxxxxxx " " xxxx xxxxxxx " " xxxxxx xxxxx x " " x xxxxxx xxx x " " xx xxxxxxx xx x " " xxx xxxxxxxx x x " " xxxx xxxxxxxxx x " " xxxx xxxxxxxxxxx " " xxxx xxxxxxxxxxx " " xxxxx xxxxxxxxxxx " " xxxxx xxxxxxxxxxx " " xxxx xxxxxxxxxxx " " xxxx xxxxxxxxxxx " " xxxx xxxxxxxxx x " " xxx xxxxxxxx x x " " xx xxxxxxx xx x " " x xxxxxx xxx x " " xxxxxx xxxxx x " " xxxx xxxxxxx " " xxxx xxxxxxx " " xxx xxxxxxx " " xxx xxxxxxx " " xxx xxxxxxx " " xxx xxxxx x " " xx xx x x " " x x x x " " xx " " " " " " "))) (make-problem "19990208bFRA (9)" (quote ((2 22) (1 21) (1 22) (3 13 2 6) (1 4 4 10 2 7) (1 10 9 2 8) (1 9 2 8) (1 10 2 7) (1 16 10 2 7) (1 16 9 2 8) (1 1 1 1 1 1 1 8 2 9) (1 1 2 1 1 1 1 1 1 9 2 8) (1 1 1 1 1 1 1 1 21) (1 2 1 1 1 1 1 3 4 3) (1 1 1 1 1 3 3 12 2) (1 16 2 14 1) (1 2 12 1) (1 3 2) (1 4 3) (1 5 4) (1 6 5) (1 5 4) (1 21) (1 5 13) (1 4 3 12) (1 4 3 2) (1 16 4 3 2) (1 4 3 12) (1 5 13) (40))) (quote ((30) (1 1 1) (2 8 1 1) (1 2 1 1 1 1) (1 2 1 1 1 1) (2 8 1 1) (1 2 1 1 1) (1 2 3 1 1 1) (1 2 1 1 1) (1 8 1 1) (1 2 1 1 1) (1 6 1 1 1) (1 2 1 1 1) (1 8 1 1) (2 2 1 1 1) (1 2 1 3 1 1) (1 2 3 1 1) (2 8 1 1) (1 2 1) (30) (30) (15 13) (14 12) (13 1 5 2) (13 3 1 1 4 1) (13 3 1 4 1) (13 3 1 4 1) (10 2 3 2 2) (5 2 1 1 3 3 3) (4 2 4 3 3 3) (3 6 2 3 3 3) (5 2 1 1 3 3 3) (4 2 4 3 3 3) (3 9 3 3 3) (13 3 3 3) (13 3 1 3 3) (13 1 6 3) (14 7 3) (15 13) (30))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x x x" " xx xxxxxxxx x x" " x xx x x x x" " x xx x x x x" " xx xxxxxxxx x x" " x xx x x x" " x xx xxx x x x" " x xx x x x" " x xxxxxxxx x x" " x xx x x x" " x xxxxxx x x x" " x xx x x x" " x xxxxxxxx x x" " xx xx x x x" " x xx x xxx x x" " x xx xxx x x" " xx xxxxxxxx x x" "x xx x" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxx x xxxxx xx" "xxxxxxxxxxxxx xxx x x xxxx x" "xxxxxxxxxxxxx xxx x xxxx x" "xxxxxxxxxxxxx xxx x xxxx x" "xxxxxxxxxx xx xxx xx xx" "xxxxx xx x x xxx xxx xxx" "xxxx xx xxxx xxx xxx xxx" "xxx xxxxxx xx xxx xxx xxx" "xxxxx xx x x xxx xxx xxx" "xxxx xx xxxx xxx xxx xxx" "xxx xxxxxxxxx xxx xxx xxx" "xxxxxxxxxxxxx xxx xxx xxx" "xxxxxxxxxxxxx xxx x xxx xxx" "xxxxxxxxxxxxx x xxxxxx xxx" "xxxxxxxxxxxxxx xxxxxxx xxx" "xxxxxxxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990208cFRA (10)" (quote (() () (17 18) (4 3 3 2 18) (5 2 2 3 5 8 3) (5 1 1 3 4 2 2 2) (3 2 1 1 2 1 5 2 3) (4 3 3 2 6 1 1 4) (4 1 2 6 1 2 1 4) (3 4 4 1 4 1 1 1 1 2) (6 1 1 4 4 1 1 1 1 2) (5 1 1 3 6 1 2 1 4) (5 2 2 3 6 1 1 4) (4 4 4 2 4 1 1 2) (9 7 5 2 2 2 3) (9 7 9 7) () (9 7 9 7) (4 2 2 2 7 1 1 5) (3 3 1 1 3 1 8 6) (8 6 9 7) (5 3 5 3) (5 3 5 3) (6 4 6 4) (6 4 6 4) (6 4 7 5) (6 4 7 5) (7 5 8 6) () ())) (quote (() () (14 11) (14 11) (14 11) (4 2 6 2 8) (1 3 4 2 1 9) (2 2 2 3 1 2 5) (2 1 1 3 1 2 1) (3 1 1 4 2 1) (1 3 6 3) (1 1) (1 3 6 3) (3 1 1 4 2 1) (2 1 1 3 1 2 1) (2 2 2 3 1 2 5) (1 3 4 2 1 9) (4 2 6 2 8) (14 11) () (14 11) (14 11) (14 11) (14 11) (3 3 2 2 11) (2 2 2 1 4 5) (3 2 2 4 3) (4 1 1 2 1 2 1) (4 1 2 2 1 2 1) (3 1 1 1 1) (3 1 1 1 1) (4 1 2 2 1 2 1) (4 1 1 2 1 2 1) (3 2 2 4 3) (2 2 2 1 4 5) (3 3 2 2 11) (14 11) (14 11) () ())) (quote (" " " " " xxxxxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxx " " xxxx xx xxxxxx xx xxxxxxxx " " x xxx xxxx xx x xxxxxxxxx " " xx xx xx xxx x xx xxxxx " " xx x x xxx x xx x " " xxx x x xxxx xx x " " x xxx xxxxxx xxx " " x x " " x xxx xxxxxx xxx " " xxx x x xxxx xx x " " xx x x xxx x xx x " " xx xx xx xxx x xx xxxxx " " x xxx xxxx xx x xxxxxxxxx " " xxxx xx xxxxxx xx xxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxx " " " " xxxxxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxx " " xxx xxx xx xx xxxxxxxxxxx " " xx xx xx x xxxx xxxxx " " xxx xx xx xxxx xxx " " xxxx x x xx x xx x " " xxxx x xx xx x xx x " " xxx x x x x " " xxx x x x x " " xxxx x xx xx x xx x " " xxxx x x xx x xx x " " xxx xx xx xxxx xxx " " xx xx xx x xxxx xxxxx " " xxx xxx xx xx xxxxxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxx " " " " "))) (make-problem "19990221aFRA (11)" (quote ((33) (23 8) (21 8) (20 8) (19 8) (18 8) (2 11 8) (1 9 8) (1 3 7 8) (1 4 5 8) (1 5 3 8) (2 1 8) (10 24) (10 1 22) (8 19) (6 4 16) (4 3 6 13) (2 4 9 10) (1 4 11 7) (1 3 14 5) (1 1 17 3) (2 21) (6 1 3 1 1 5) (6 3 2 1 1 1 19) (6 1 1 1 1 1 3 1 3 1 1 1) (8 1 2 1 1 5 3 2 1 1 1 1) (6 1 3 1 1 5 1 1 1 1 1 1) (26 1 2 1 1 3) (24 1 3 1 1 3) (40))) (quote ((30) (7 7 9) (6 5 8) (6 3 5 2 8) (6 3 4 4 8) (6 3 4 3 8) (7 2 3 3 1 1 3) (8 1 3 2 2 1 1 3) (9 2 1 3 1 3) (10 2 13) (11 7 3) (12 1 8 6) (11 9 5) (10 2 10 4) (9 3 6 3) (8 5 14) (7 6 5 3) (6 8 13) (5 9 4 3) (4 11 4 1 5) (3 12 3 5) (2 14 11) (2 8 6 10) (1 8 7 10) (9 8 3 1 1) (8 12 1 1 1) (7 10 1 1 1) (6 9 7) (5 8 1 1) (4 7 2 4) (3 6 3 3) (2 5 4 2) (1 4 1 1) (3 7) (2 1 1) (1 7) (1 1 1) (1 1 3) (1 3) (7))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxx xxxxxxx xxxxxxxxx" "xxxxxx xxxxx xxxxxxxx" "xxxxxx xxx xxxxx xx xxxxxxxx" "xxxxxx xxx xxxx xxxx xxxxxxxx" "xxxxxx xxx xxxx xxx xxxxxxxx" "xxxxxxx xx xxx xxx x x xxx" "xxxxxxxx x xxx xx xx x x xxx" "xxxxxxxxx xx x xxx x xxx" "xxxxxxxxxx xx xxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxx xxx" "xxxxxxxxxxxx x xxxxxxxx xxxxxx" "xxxxxxxxxxx xxxxxxxxx xxxxx" "xxxxxxxxxx xx xxxxxxxxxx xxxx" "xxxxxxxxx xxx xxxxxx xxx" "xxxxxxxx xxxxx xxxxxxxxxxxxxx" "xxxxxxx xxxxxx xxxxx xxx" "xxxxxx xxxxxxxx xxxxxxxxxxxxx" "xxxxx xxxxxxxxx xxxx xxx" "xxxx xxxxxxxxxxx xxxx x xxxxx" "xxx xxxxxxxxxxxx xxx xxxxx" "xx xxxxxxxxxxxxxx xxxxxxxxxxx" "xx xxxxxxxx xxxxxx xxxxxxxxxx" "x xxxxxxxx xxxxxxx xxxxxxxxxx" "xxxxxxxxx xxxxxxxx xxx x x" "xxxxxxxx xxxxxxxxxxxx x x x" "xxxxxxx xxxxxxxxxx x x x" "xxxxxx xxxxxxxxx xxxxxxx" "xxxxx xxxxxxxx x x" "xxxx xxxxxxx xx xxxx" "xxx xxxxxx xxx xxx" "xx xxxxx xxxx xx" "x xxxx x x" " xxx xxxxxxx" " xx x x" " x xxxxxxx" " x x x" " x x xxx" " x xxx" " xxxxxxx"))) (make-problem "19990401-JOJ (12)" (quote ((40) (40) (12 24) (9 21) (7 4 19) (6 10 18) (5 5 5 17) (4 3 4 16) (3 3 6 3 15) (2 3 3 3 3 14) (2 2 2 2 2 5 7) (2 2 3 5 2 2 4 7) (1 2 2 2 2 1 2 5 5 1) (1 1 2 2 2 2 2 4 5 1) (2 2 2 3 1 2 2 4 5 1) (2 1 1 3 1 2 2 5 3 2) (2 1 1 3 2 2 2 5 3 2) (2 2 2 5 2 2 7 1 3) (1 2 2 2 2 2 6 2) (1 2 3 3 3 3 5 4 1) (2 2 3 7 3 3 3 2 1) (2 2 3 2 3 2 8 1) (2 3 4 4 9 1) (3 3 9 12 2) (4 4 4 10 4) (5 5 11 7) (6 19 10) (8 16 11) (9 13 13) (10 15))) (quote ((14 12) (12 10) (9 4 7) (8 10 6) (7 4 5 5) (6 3 3 4) (5 3 7 3 3) (4 3 4 4 3 3) (4 2 3 3 2 2) (3 2 3 4 3 3 1) (3 2 1 2 2 2 3) (3 2 2 2 2 2 4) (2 2 1 2 2 2 2 3) (2 2 1 1 4 2 2 3) (2 2 1 1 4 2 2 3) (2 2 1 1 1 1 2 2 3) (3 2 2 2 1 1 2 3) (3 2 1 2 2 2 1 3) (3 3 2 4 2 2 4) (4 2 2 2 2 4) (4 3 3 3 2 4) (5 3 5 3 5) (6 3 2 3 5) (7 4 4 6) (8 9 5) (9 4 1 5 1) (11 3 4 1) (13 4 4 2) (21 4 2) (20 3 3) (20 4 4) (10 7 3 4) (12 4 4 4) (15 1 5 5) (17 5 5) (18 1 2 5) (17 4 6) (15 1 2 6) (12 4 7) (10 18))) (quote ("xxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxx xxxx xxxxxxx" "xxxxxxxx xxxxxxxxxx xxxxxx" "xxxxxxx xxxx xxxxx xxxxx" "xxxxxx xxx xxx xxxx" "xxxxx xxx xxxxxxx xxx xxx" "xxxx xxx xxxx xxxx xxx xxx" "xxxx xx xxx xxx xx xx" "xxx xx xxx xxxx xxx xxx x" "xxx xx x xx xx xx xxx " "xxx xx xx xx xx xx xxxx " "xx xx x xx xx xx xx xxx " "xx xx x x xxxx xx xx xxx " "xx xx x x xxxx xx xx xxx " "xx xx x x x x xx xx xxx " "xxx xx xx xx x x xx xxx " "xxx xx x xx xx xx x xxx " "xxx xxx xx xxxx xx xx xxxx " "xxxx xx xx xx xx xxxx " "xxxx xxx xxx xxx xx xxxx " "xxxxx xxx xxxxx xxx xxxxx " "xxxxxx xxx xx xxx xxxxx " "xxxxxxx xxxx xxxx xxxxxx " "xxxxxxxx xxxxxxxxx xxxxx " "xxxxxxxxx xxxx x xxxxx x" "xxxxxxxxxxx xxx xxxx x" "xxxxxxxxxxxxx xxxx xxxx xx" "xxxxxxxxxxxxxxxxxxxxx xxxx xx" "xxxxxxxxxxxxxxxxxxxx xxx xxx" "xxxxxxxxxxxxxxxxxxxx xxxx xxxx" "xxxxxxxxxx xxxxxxx xxx xxxx" "xxxxxxxxxxxx xxxx xxxx xxxx" "xxxxxxxxxxxxxxx x xxxxx xxxxx" "xxxxxxxxxxxxxxxxx xxxxx xxxxx" "xxxxxxxxxxxxxxxxxx x xx xxxxx" "xxxxxxxxxxxxxxxxx xxxx xxxxxx" "xxxxxxxxxxxxxxx x xx xxxxxx" "xxxxxxxxxxxx xxxx xxxxxxx" "xxxxxxxxxx xxxxxxxxxxxxxxxxxx"))) (make-problem "19990525aKHO (13)" (quote ((2 3 1 1 2) (9 2 3 3 4) (4 21 1) (5 2 1 5 2 2 2 2) (3 2 2 4) (4) (2) () (7) (12 5) (12 3) (2 2 3) (2 2 3) (2 2 3) (2 2 3) (2 2 3) (2 2 3) (24) (2 4 9 3 2) (2 4 10 2 1) (2 2 4 15 1) (3 3 2 1 1) (1 2 23 1) (2 8 3 16 1) (3 2 2 4 16) (11 1 2 2 9 3) (2 5 2 1 1 1 1 1 2 3) (1 1 3 1 4 1 1 7 1 1 2) (1 1 1 1 1 2 2 1 1 3) (1 1 4 2 4))) (quote ((8) (2 4 1) (3 2 2 1 1) (5 2 2 1) (5 1 3) (4 1 4) (1 1 1 3) (3 1 2 1) (4 1 1 1 1) (4 4 1) (2 5) (2 2 1) (2 2 1) (2 19) (1 16) (2 2 1 3 4) (4 2 4 1 2 2) (5 2 4 1 1 1) (3 2 4 1 1 1) (2 2 4 1 2 2) (2 2 1 3 4) (3 16) (4 12 6) (1 4 4 1) (2 4 4 1) (4 4 4 1) (4 4 4 1) (2 4 4 1) (2 4 4 1) (3 1 4 5) (2 1 2 4 2) (2 11 1 3 1 1) (4 11 1 3 1 1) (4 11 1 4 2) (2 2 1 2 5) (1 10) (2 1 4) (5 3) (2) (1))) (quote #f)) (make-problem "19990527aDRA (14)" (quote ((11 27) (10 2 25) (9 2 2 23) (8 8 21) (7 5 5 19) (6 11 19) (6 1 4 3 1 10 7) (6 3 5 2 8 2 6) (6 5 2 3 6 5 5) (6 2 4 4 4 4 3 4) (6 5 2 4 2 11 3) (6 2 5 2 1 2 4 4 3 2) (6 5 2 4 2 13 1) (6 2 5 4 2 1 4 6 1) (6 4 2 3 3 2 8 1 1) (8 5 2 4 3 5 3 1) (10 3 1 5 1 2 2 5 1) (12 1 6 5 5 1 1) (14 7 6 1 5 1) (23 6 7 1) (1 1 2 1 1 1 2 2 3 3 1) (1 3 2 1 2 1 2 1 4 4 5 1 1) (1 3 2 1 2 3 3 1 5 1) (1 3 1 2 2 1 6 4 2 5 2) (1 1 2 1 2 1 4 5 1 3 4) (29 1 6) (30 8) (40) (40) (40))) (quote ((30) (20 5) (20 3 5) (20 3 5) (30) (20 5) (5 5 1 7) (4 8 5 1 6) (3 2 8 4 2 5) (2 3 2 1 1 1 14) (1 5 8 4 5) (6 8 3 1 7) (1 5 1 1 1 2 2 1 7) (1 2 3 8 2 5) (1 4 2 8 11) (2 6 1 5) (2 5 8 2 1 7) (3 3 8 3 1 7) (3 2 4 3 4 8) (4 8 15) (4 6 1 5) (20 1 1 5) (20 1 5) (10 10) (10 1 7 9) (9 3 2 4 8) (9 4 7 7) (8 6 4 2 6) (8 2 4 7 5) (7 9 7 4) (7 5 3 3) (6 2 6 9 3) (6 9 1 3 2 4) (7 3 3 9 4) (8 6 4 3 5) (9 4 9 5) (10 3 2 3 1 6) (11 1 9 6) (12 7) (30))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxx" "xxxxxxxxxxxxxxxxxxxx xxx xxxxx" "xxxxxxxxxxxxxxxxxxxx xxx xxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxx" "xxxxx xxxxx x xxxxxxx" "xxxx xxxxxxxx xxxxx x xxxxxx" "xxx xx xxxxxxxx xxxx xx xxxxx" "xx xxx xx x x x xxxxxxxxxxxxxx" "x xxxxx xxxxxxxx xxxx xxxxx" " xxxxxx xxxxxxxx xxx x xxxxxxx" " x xxxxx x x x xx xx x xxxxxxx" "x xx xxx xxxxxxxx xx xxxxx" "x xxxx xx xxxxxxxx xxxxxxxxxxx" "xx xxxxxx x xxxxx" "xx xxxxx xxxxxxxx xx x xxxxxxx" "xxx xxx xxxxxxxx xxx x xxxxxxx" "xxx xx xxxx xxx xxxx xxxxxxxx" "xxxx xxxxxxxx xxxxxxxxxxxxxxx" "xxxx xxxxxx x xxxxx" "xxxxxxxxxxxxxxxxxxxx x x xxxxx" "xxxxxxxxxxxxxxxxxxxx x xxxxx" "xxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxx x xxxxxxx xxxxxxxxx" "xxxxxxxxx xxx xx xxxx xxxxxxxx" "xxxxxxxxx xxxx xxxxxxx xxxxxxx" "xxxxxxxx xxxxxx xxxx xx xxxxxx" "xxxxxxxx xx xxxx xxxxxxx xxxxx" "xxxxxxx xxxxxxxxx xxxxxxx xxxx" "xxxxxxx xxxxx xxx xxx" "xxxxxx xx xxxxxx xxxxxxxxx xxx" "xxxxxx xxxxxxxxx x xxx xx xxxx" "xxxxxxx xxx xxx xxxxxxxxx xxxx" "xxxxxxxx xxxxxx xxxx xxx xxxxx" "xxxxxxxxx xxxx xxxxxxxxx xxxxx" "xxxxxxxxxx xxx xx xxx x xxxxxx" "xxxxxxxxxxx x xxxxxxxxx xxxxxx" "xxxxxxxxxxxx xxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990527eDRA (15)" (quote ((16 11 11) (17 9 12) (18 7 13) (14 4) (12 6 3 8 4) (10 19 2 4) (8 19 4 4) (7 6 4) (7 20 6 4) (7 20 6 4) (7 2 4 6 4) (7 2 12 1 1 6 4) (7 2 3 3 1 1 6 4) (7 2 2 3 4 6 4) (7 2 1 5 3 4 6 4) (7 2 1 1 1 1 3 1 1 6 4) (7 2 1 2 2 3 1 1 6 4) (7 2 1 5 4 4 6 4) (7 2 1 1 1 4 4 6 4) (7 2 2 3 5 1 1 6 4) (7 2 1 1 2 1 1 6 4) (7 2 9 1 4 6 4) (7 2 10 1 1 1 6 4) (7 2 2 5 1 1 1 1 6 4) (7 2 4 6 4) (7 20 5 4) (7 20 3 6) (7 20 1 8) (7 10) (40))) (quote ((30) (30) (30) (30) (30) (30) (30) (7 1) (6 20 1) (6 20 1) (5 1 2 3 1) (5 1 2 9 2 3 1) (4 2 2 3 1 3 3 1) (4 2 2 2 5 3 3 1) (3 3 2 1 1 2 1 3 3 1) (3 3 2 1 2 1 1 3 3 1) (2 3 2 1 1 2 1 3 3 1) (1 1 3 2 1 5 4 3 1) (2 3 2 1 1 3 3 1) (3 3 2 1 3 2 3 1) (3 2 2 9 3 3 1) (3 3 2 10 3 1) (3 3 2 13 3 1) (3 3 2 3 1) (3 2 20 1) (3 3 3 2 2 1 4 1) (2 3 3 2 2 1 4 1) (1 1 3 20 1) (2 3 1) (3 2 21 1) (3 2 20 2) (3 1 21 2) (3 1 20 3) (3 21 3) (3 20 4) (3 4) (30) (30) (30) (30))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxx x" "xxxxxx xxxxxxxxxxxxxxxxxxxx x" "xxxxxx xxxxxxxxxxxxxxxxxxxx x" "xxxxx x xx xxx x" "xxxxx x xx xxxxxxxxx xx xxx x" "xxxx xx xx xxx x xxx xxx x" "xxxx xx xx xx xxxxx xxx xxx x" "xxx xxx xx x x xx x xxx xxx x" "xxx xxx xx x xx x x xxx xxx x" " xx xxx xx x x xx x xxx xxx x" "x x xxx xx x xxxxx xxxx xxx x" "xx xxx xx x x xxx xxx x" "xxx xxx xx x xxx xx xxx x" "xxx xx xx xxxxxxxxx xxx xxx x" "xxx xxx xx xxxxxxxxxx xxx x" "xxx xxx xx xxxxxxxxxxxxx xxx x" "xxx xxx xx xxx x" "xxx xx xxxxxxxxxxxxxxxxxxxx x" "xxx xxx xxx xx xx x xxxx x" "xx xxx xxx xx xx x xxxx x" "x x xxx xxxxxxxxxxxxxxxxxxxx x" " xx xxx x" "xxx xx xxxxxxxxxxxxxxxxxxxxx x" "xxx xx xxxxxxxxxxxxxxxxxxxx xx" "xxx x xxxxxxxxxxxxxxxxxxxxx xx" "xxx x xxxxxxxxxxxxxxxxxxxx xxx" "xxx xxxxxxxxxxxxxxxxxxxxx xxx" "xxx xxxxxxxxxxxxxxxxxxxx xxxx" "xxx xxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990613-FRA (16)" (quote ((40) (40) (8 2 23) (18 18) (22 14) (27 12) (27 12) (3 1 11) (3 1 1 10) (3 1 2 9) (3 1 8) (3 1 3 8) (3 1 1 1 8) (3 1 3 4) (3 1 7 4) (3 7 4) (3 1 7 4) (3 4) (5 13 6 7) (4 3 11 3 4 3 6) (4 3 11 3 4 3 6) (5 13 6 7) (40) (1 4 2 2) (40) (40) (40) (40) (40) (40))) (quote ((30) (23 6) (23 6) (7 5 6) (7 1 2 6) (7 2 1 6) (7 2 1 6) (7 2 1 6) (2 4 1 2 6) (2 4 5 6) (2 4 12) (2 4 12) (7 12) (7 12) (2 4 5 6) (2 4 5 6) (2 4 5 6) (7 5 6) (3 3 5 6) (3 3 5 6) (3 3 1 2 6) (3 3 2 1 6) (4 2 2 1 6) (4 2 2 8) (4 2 1 9) (4 2 5 6) (15 1 5 6) (5 5 6) (7 2 6 5 6) (8 1 1 4 1 2 6) (9 6 2 1 6) (10 3 2 1 6) (13 3 2 1 6) (13 3 1 9) (13 3 12) (13 5 6) (23 6) (23 6) (23 6) (23 6))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxx" "xxxxxxx xxxxx xxxxxx" "xxxxxxx x xx xxxxxx" "xxxxxxx xx x xxxxxx" "xxxxxxx xx x xxxxxx" "xxxxxxx xx x xxxxxx" "xx xxxx x xx xxxxxx" "xx xxxx xxxxx xxxxxx" "xx xxxx xxxxxxxxxxxx" "xx xxxx xxxxxxxxxxxx" "xxxxxxx xxxxxxxxxxxx" "xxxxxxx xxxxxxxxxxxx" "xx xxxx xxxxx xxxxxx" "xx xxxx xxxxx xxxxxx" "xx xxxx xxxxx xxxxxx" "xxxxxxx xxxxx xxxxxx" "xxx xxx xxxxx xxxxxx" "xxx xxx xxxxx xxxxxx" "xxx xxx x xx xxxxxx" "xxx xxx xx x xxxxxx" "xxxx xx xx x xxxxxx" "xxxx xx xx xxxxxxxx" "xxxx xx x xxxxxxxxx" "xxxx xx xxxxx xxxxxx" "xxxxxxxxxxxxxxx x xxxxx xxxxxx" "xxxxx xxxxx xxxxxx" "xxxxxxx xx xxxxxx xxxxx xxxxxx" "xxxxxxxx x x xxxx x xx xxxxxx" "xxxxxxxxx xxxxxx xx x xxxxxx" "xxxxxxxxxx xxx xx x xxxxxx" "xxxxxxxxxxxxx xxx xx x xxxxxx" "xxxxxxxxxxxxx xxx x xxxxxxxxx" "xxxxxxxxxxxxx xxx xxxxxxxxxxxx" "xxxxxxxxxxxxx xxxxx xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxx"))) (make-problem "19990714aNEP (17)" (quote ((33) (2) (1 1 3 3 1 1 1 1 2 2 2 3) (1 1 1 1 1 1 1 1 1 1 1 1 1 3) (1 1 3 1 1 1 1 1 1 1 1 2 3) (1 1 1 3 3 3 1 1 1 2) (1 1 2) (26 2) (2 2) (2 3) (2 3) (2 6) (1 6) (1 6) (2 6) (2 7) (2 7) (2 7) (2 8) (2 8) (2 8) (2 8) (3 6) (2 4) (2 3) (2 2) (2 7) (2 11) (5 13) (4 14))) (quote ((1 3 4) (1 1 2 2) (1 3 2 2) (1 2 2) (1 4 2 2) (1 1 1 1 2) (1 4 1 2) (1 1 2) (1 4 1 2) (1 1 1 1 1) (1 1 1 1 2) (1 1 2) (1 4 1 2) (1 1 1 2) (1 4 1 2) (1 1 2) (1 4 1 1) (1 1 1 1) (1 4 1 1) (1 1 2) (1 4 1 1) (1 1 1 1) (1 2 1 1) (1 1 1) (1 6 1) (1 1 2) (1 1 3) (1 1 3) (1 1 5 3) (1 4 10 4) (1 3 19) (3 21) (2 20 4) (20 4) (3 11 4) (2 11 4) (1 3) (2) () ())) (quote #f)) (make-problem "19990729-DAH (18)" (quote ((16 16) (11 6 11) (9 16 9) (7 7 9 7) (5 4 3 4 5) (4 4 3 4 4) (3 3 3 3 3 3) (2 4 3 7 4 2) (1 3 3 11 3 1) (4 3 7 3 4) (3 3 7 3 3) (3 3 7 3 3) (3 3 8 3 3) (3 3 9 3 3) (3 3 9 3 3) (3 3 10 3 3) (3 3 9 3 3) (3 3 8 3 3) (3 3 8 3 3) (3 3 7 3 3) (4 3 7 3 4) (1 3 11 3 3 1) (2 4 7 3 4 2) (3 3 3 3 3 3) (4 4 3 4 4) (5 4 3 4 5) (7 9 7 7) (9 15 9) (12 6 11) (16 16))) (quote ((9 6 9) (8 10 8) (7 12 7) (6 4 4 6) (5 3 3 5) (4 4 4 4) (4 3 3 4) (3 3 3 3) (3 2 6 2 3) (2 2 10 2 2) (2 2 12 2 2) (1 2 4 4 2 2) (1 2 2 2 1 1) (1 2 2 2 2 1) (1 2 1 2 2 1) (1 2 2 4 3 2 1) (2 1 7 4 2) (2 2 15 3) (2 1 15 4) (2 2 15 1 2) (2 1 15 2 2) (4 15 1 2) (3 15 2 2) (2 4 7 1 2) (1 2 3 4 2 2 1) (1 2 2 1 2 1) (1 2 2 2 2 1) (1 2 2 2 2 1) (1 2 4 4 2 1) (2 2 12 2 2) (2 2 10 2 2) (3 2 6 2 3) (3 3 3 3) (4 3 3 4) (4 4 4 4) (5 3 3 5) (6 4 4 6) (7 12 7) (8 10 8) (9 6 9))) (quote ("xxxxxxxxx xxxxxx xxxxxxxxx" "xxxxxxxx xxxxxxxxxx xxxxxxxx" "xxxxxxx xxxxxxxxxxxx xxxxxxx" "xxxxxx xxxx xxxx xxxxxx" "xxxxx xxx xxx xxxxx" "xxxx xxxx xxxx xxxx" "xxxx xxx xxx xxxx" "xxx xxx xxx xxx" "xxx xx xxxxxx xx xxx" "xx xx xxxxxxxxxx xx xx" "xx xx xxxxxxxxxxxx xx xx" "x xx xxxx xxxx xx xx" "x xx xx xx x x" "x xx xx xx xx x" "x xx x xx xx x" "x xx xx xxxx xxx xx x" " xx x xxxxxxx xxxx xx " " xx xx xxxxxxxxxxxxxxx xxx " " xx x xxxxxxxxxxxxxxx xxxx " " xx xx xxxxxxxxxxxxxxx x xx " " xx x xxxxxxxxxxxxxxx xx xx " " xxxx xxxxxxxxxxxxxxx x xx " " xxx xxxxxxxxxxxxxxx xx xx " " xx xxxx xxxxxxx x xx " "x xx xxx xxxx xx xx x" "x xx xx x xx x" "x xx xx xx xx x" "x xx xx xx xx x" "x xx xxxx xxxx xx x" "xx xx xxxxxxxxxxxx xx xx" "xx xx xxxxxxxxxx xx xx" "xxx xx xxxxxx xx xxx" "xxx xxx xxx xxx" "xxxx xxx xxx xxxx" "xxxx xxxx xxxx xxxx" "xxxxx xxx xxx xxxxx" "xxxxxx xxxx xxxx xxxxxx" "xxxxxxx xxxxxxxxxxxx xxxxxxx" "xxxxxxxx xxxxxxxxxx xxxxxxxx" "xxxxxxxxx xxxxxx xxxxxxxxx"))) (make-problem "19990924-KHO (19)" (quote (() (37) (31) (24) (17) (14) (21 13) (23 4) (24 3) (8 8 3) (9 10 2) (10 13 2) (11 3 2) (12 3 2) (13 3 2) (14 5 2 3) (15 6 1 3) (16 6 4) (22 7) (19 10) (16 13) (13 16) (10 19) (7 22) (4 25) (1 28) (31) (34) (37) ())) (quote (() (20) (1 19 1) (1 19 1) (1 19 1) (1 18 2) (1 18 2) (1 18 2) (2 17 3) (2 3 13 3) (2 3 12 3) (2 3 10 4) (2 3 9 4) (2 3 8 4) (2 3 6 5) (3 3 5 5) (3 3 4 5) (3 3 2 6) (3 3 2 6) (3 3 2 6) (3 3 2 7) (3 3 2 7) (4 2 1 2 7) (4 2 1 2 8) (4 1 1 2 8) (5 2 2 8) (6 3 2 9) (6 3 2 9) (6 3 2 9) (6 3 1 10) (6 3 1 10) (6 3 10) (6 6 11) (6 8 11) (6 6 11) (7 12) (9 14) (28) (28) ())) (quote (" " " xxxxxxxxxxxxxxxxxxxx " " x xxxxxxxxxxxxxxxxxxx x " " x xxxxxxxxxxxxxxxxxxx x " " x xxxxxxxxxxxxxxxxxxx x " " x xxxxxxxxxxxxxxxxxx xx " " x xxxxxxxxxxxxxxxxxx xx " " x xxxxxxxxxxxxxxxxxx xx " " xx xxxxxxxxxxxxxxxxx xxx " " xx xxx xxxxxxxxxxxxx xxx " " xx xxx xxxxxxxxxxxx xxx " " xx xxx xxxxxxxxxx xxxx " " xx xxx xxxxxxxxx xxxx " " xx xxx xxxxxxxx xxxx " " xx xxx xxxxxx xxxxx " " xxx xxx xxxxx xxxxx " " xxx xxx xxxx xxxxx " " xxx xxx xx xxxxxx " " xxx xxx xx xxxxxx " " xxx xxx xx xxxxxx " " xxx xxx xx xxxxxxx " " xxx xxx xx xxxxxxx " " xxxx xx x xx xxxxxxx " " xxxx xx x xx xxxxxxxx " " xxxx x x xx xxxxxxxx " " xxxxx xx xx xxxxxxxx " " xxxxxx xxx xx xxxxxxxxx " " xxxxxx xxx xx xxxxxxxxx " " xxxxxx xxx xx xxxxxxxxx " " xxxxxx xxx x xxxxxxxxxx " " xxxxxx xxx x xxxxxxxxxx " " xxxxxx xxx xxxxxxxxxx " " xxxxxx xxxxxx xxxxxxxxxxx " " xxxxxx xxxxxxxx xxxxxxxxxxx " " xxxxxx xxxxxx xxxxxxxxxxx " " xxxxxxx xxxxxxxxxxxx " " xxxxxxxxx xxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxx " " "))) (make-problem "19990928-BBA (20)" (quote ((3 2) (1 2) (3) (3) (1 2 27) (1 1 1 2 3 3 2 2 1) (3 2 1 2 1 1 3 2) (1 1 2 1 1 1 3 3) (1 1 3 3 1 1 3 1 3) (3 1 5 2 1 1 3 2 3) (5 8 8 1 5) (3 1 5 1 4 1 5) (1 1 3 1 1 2 1 5) (1 1 1 3 1 1 1 2 3) (1 1 1 1 2 1 3) (1 1 1 1 2 3) (1 3 1 1 1 1 3) (1 1 1 1 1 1 3) (1 1 1 1 1 1 1 1 3) (1 1 1 1 1 1 1 1 1 3) (2 1 1 3 15) (2 2 5 2 1 5) (1 1 1 2 3 1 1 4) (1 5 1 2 3 3 2) (1 3 1 3 2 1 1 1 1) (1 1 1 1 1 2 1 3 1) (1 6 1 7 1 1) (1 1 1 2 3 1 2 2) (1 7 1 13) (1 2 3 2 4 2 1))) (quote ((1 1) (7 1) (1 2 1 3) (4 5) (2 3 3) (1 1 1) () (26) (1 1 2) (1 3 1 7) (1 5 1 1 2 1 2) (1 7 11) (1 5 1 1 1) (2 3 1 1 5 1) (4 1 1 2 4) (1 4 2 1 2 1 3) (2 5 3 3 3 1) (3 1 1 1 1 2 1 1) (2 1 2 1 1 1 2 3) (1 1 1 1 1 3 1) (2 1 2 7 1) (3 1 9 2 5) (2 1 3 1 1 1 1) (1 11 1 3 1 2) (2 3 2 2 1 1 2) (5 6 2 2 2) (1 2 2 2 1 1 2) (3 3 3 1 3 3) (2 2 2 1 1 2) (1 5 2 1 2) (1 3 3 3 2) (1 16 1 1) (1 18 2) (26) () () () () () ())) (quote #f)) (make-problem "19991011bLLO (21)" (quote ((9) (4 2 4 3) (6 2 5 2) (5 12 4) (1 13 7) (3 3 5 3 4 2) (4 4 2 4 1 5) (1 4 8 10) (2 7 4 1 4 1) (7 4 1 6 3) (4 4 8 5 1) (2 4 1 3 4 4 1 2) (11 9 5) (3 2 6 1 5 1) (3 4 1 4 5 2 1) (1 5 5 3 1 2 1) (7 2 8) (5 1 1 1 3) (4 1 1) (4 1 1) (3 1 1) (3 1 1) (3 1 1) (3 1 1) (3 1 1 10) (3 1 1 2 2) (4 1 1 5 4 5) (5 6 1 1 2 1 1) (5 1 4 1) (8 1 1 2 2 1 1))) (quote ((7 3 1) (1 2 7) (7 2 3 1) (4 2 4 2 1) (5 6 2 4) (2 6 19) (5 22) (3 3 1 1 16) (1 6 3 1 4 3) (2 3 4 2 3 1) (1 8 6) (8 3 1 1) (2 3 9 1) (5 2 1 5) (15 1 1) (1 2 2 1 3 2 11) (8 5 2 1) (5 7 3 1) (1 2 1 2 3 12) (7 6 1) (4 3 4 1) (10 4) (2 3 4 3 1) (3 1 1 1 2 2 1) (8 2 1 1 1) (2 2 2 2 1) (1 2 1 1 1) (2 1) (2 1) (3 2) (1 3) (1 3) (3 2) (2 1) (1) (1 1) (2 1) (1 1) (2 1) (1))) (quote #f))))) diff --git a/pkgs/games/paint-by-numbers/problems/k40x35 b/pkgs/games/paint-by-numbers/problems/k40x35 deleted file mode 100644 index 58e2b2e16a..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k40x35 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 40x35") (define problems (list (make-problem "19981012-TAB (1)" (quote ((12 13 13) (9 10) (12 13 13) (9 10) (13 9 14) (12 13 13) (12 13 13) (11 15 12) (11 11 12) (11 5 12) (11 1 12) (11 12) (12 13) (13 14) (14 15) (16 17) (18 19) (18 1 19) (18 19) (16 3 17) (14 3 3 15) (13 11 14) (12 6 6 13) (11 7 7 12) (11 6 6 12) (11 5 5 12) (11 4 4 12) (11 3 3 12) (12 1 1 13) (12 13) (13 14) (9 10) (12 13 13) (9 10) (12 13 13))) (quote ((35) (35) (35) (35) (35) (35) (35) (35) (35) (1 1 27 1 1) (1 1 27 1 1) (1 1 3 11 3 1 1) (1 1 9 5 1) (1 1 3 7 7 1 1) (1 1 4 5 7 1 1) (1 1 5 5 6 1 1) (1 1 5 3 6 1 1) (1 1 6 3 5 1 1) (1 1 6 5 1 1) (1 1 7 1 1 1 1 1) (1 1 6 5 1 1) (1 1 6 3 5 1 1) (1 1 5 3 6 1 1) (1 1 5 5 6 1 1) (1 1 4 5 7 1 1) (1 1 3 7 7 1 1) (1 1 9 5 1) (1 1 3 11 3 1 1) (1 1 27 1 1) (1 1 27 1 1) (35) (35) (35) (35) (35) (35) (35) (35) (35) (35))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x x xxxxxxxxxxxxxxxxxxxxxxxxxxx x x" "x x xxxxxxxxxxxxxxxxxxxxxxxxxxx x x" "x x xxx xxxxxxxxxxx xxx x x" " x x xxxxxxxxx xxxxx x " "x x xxx xxxxxxx xxxxxxx x x" "x x xxxx xxxxx xxxxxxx x x" "x x xxxxx xxxxx xxxxxx x x" "x x xxxxx xxx xxxxxx x x" "x x xxxxxx xxx xxxxx x x" "x x xxxxxx xxxxx x x" "x x xxxxxxx x x x x x" "x x xxxxxx xxxxx x x" "x x xxxxxx xxx xxxxx x x" "x x xxxxx xxx xxxxxx x x" "x x xxxxx xxxxx xxxxxx x x" "x x xxxx xxxxx xxxxxxx x x" "x x xxx xxxxxxx xxxxxxx x x" " x x xxxxxxxxx xxxxx x " "x x xxx xxxxxxxxxxx xxx x x" "x x xxxxxxxxxxxxxxxxxxxxxxxxxxx x x" "x x xxxxxxxxxxxxxxxxxxxxxxxxxxx x x" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19981216-JTR (2)" (quote ((40) (14 10 14) (3 7 8 7 3) (2 1 1 4 8 4 2 2) (1 2 4 1 4 6 4 5 1) (2 1 4 4 4 2 1 1) (3 2 2 1 3 4 3 1 2 2 3) (2 1 2 3 1 3 2 3 1 1 1 2 1) (1 2 3 1 2 2 2 1 3 1 2 1) (2 3 2 2 1 1 2 1 1 2 2 2 2) (1 1 1 1 1 2 1 1 1 1 1 1 1 1 1) (2 6 1 1 1 1 6 1 2) (1 1 2 1 3 1 1 1 1 1 2 1) (1 1 4 2 1 2 2 6 1 1) (2 2 1 1 4 2 1 3 1 1 2) (3 3 3 1 2 1 3 2 3) (4 2 1 3 2 5 3 4) (5 2 7 2 1 3 3 5) (6 2 2 2 6) (5 7 2 7 5) (5 5 1 2 1 5 5) (5 2 1 1 1 2 1 1 5) (4 1 1 1 5 2 6 1 2 4) (4 1 4 1 1 2 1 1 4 4) (4 2 1 1 1 1 2 1 1 1 3 4) (4 1 1 2 1 1 2 2 1 2 1 1 4) (4 1 1 2 1 2 2 1 2 1 4) (4 2 1 1 1 1 1 1 2 1 2 4) (5 3 1 1 2 2 1 1 2 5) (6 1 1 1 8 1 2 1 6) (7 5 8 1 7) (8 10 8) (40) (40) (40))) (quote ((5 23) (4 5 21) (3 1 2 1 2 20) (2 3 2 2 19) (2 1 1 1 1 1 5 7) (2 1 3 1 1 1 1 3 6) (2 2 4 1 3 2 2 1 5) (2 1 2 1 1 3 3 3 4) (3 1 3 1 2 1 2 2 3) (3 2 1 5 1 1 2 3 1 3) (3 1 3 1 1 1 1 1 1 2 1 1 3) (4 1 2 2 1 1 1 1 3 2 3) (5 1 2 2 2 1 1 2 1 3) (6 1 2 1 1 1 1 6 1 3) (1 5 1 1 3 1 1 1 1 3) (2 4 1 1 2 2 2 3 3 4) (4 4 1 1 1 2 1 1 2 6) (5 3 1 2 1 1 7) (7 2 8) (10 13 6) (10 13 6) (7 2 8) (5 3 3 1 1 1 7) (4 4 1 2 1 1 2 2 6) (2 4 1 1 2 2 2 3 3 4) (1 5 1 1 1 1 1 1 1 1 3) (6 1 1 1 2 1 6 3) (5 1 2 3 1 1 1 3 3) (4 2 2 1 1 1 1 3 2 3) (3 1 1 1 1 1 1 2 2 3) (3 2 1 1 4 1 1 1 3 3) (3 1 5 1 3 1 1 1 2 3) (2 1 1 1 1 2 2 1 2 4) (2 2 2 1 1 1 1 1 1 1 1 5) (2 3 1 3 1 1 1 2 6) (2 1 1 1 3 5 7) (2 1 1 1 2 19) (3 2 1 1 20) (4 4 21) (5 23))) (quote #f)) (make-problem "19990420-DRA (3)" (quote ((40) (40) (40) (6 2 30) (6 29) (5 1 28) (4 1 2 27) (3 3 26) (2 5 25) (1 5 24) (1 5 5 23) (2 7 5 6 4 3) (11 5 2 1 2) (11 6 4 1) (11 4 2 1) (11 1 1 1 1 1) (11 1 1 1) (10 1 2) (9 1 2) (7 2 1 1) (6 4 3 1 1) (5 2 10 4 1) (4 5 11 5 1) (4 5 10 1 3 2) (5 4 11 2 5) (6 3 11 4 5) (7 3 11 5 5) (7 2 11 5 6) (8 2 11 5 6) (9 2 11 5 6) (12 11 4 6) (12 11 4 5) (11 13 3 6) (40) (40))) (quote ((35) (9 24) (8 23) (7 24) (6 12 11) (5 11 10) (3 10 9) (4 1 9 2 7) (4 9 3 6) (3 1 7 6 5) (4 5 5 14) (5 5 10 2) (6 5 1 2) (7 6 2) (8 6 7 3) (9 6 13) (10 4 14) (11 4 14) (11 14) (11 14) (11 14) (12 14) (12 15) (12 15) (12 15) (12 3 4) (12 3) (11 4 2) (11 11) (11 12) (11 10) (12 7 2) (13 2) (13 3 2) (12 1 5 4 3) (11 1 20) (11 3 14) (12 4 2 1 11) (13 2 12) (35))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxx xxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxx xxxxxxxxxxxx xxxxxxxxxxx" "xxxxx xxxxxxxxxxx xxxxxxxxxx" "xxx xxxxxxxxxx xxxxxxxxx" "xxxx x xxxxxxxxx xx xxxxxxx" "xxxx xxxxxxxxx xxx xxxxxx" "xxx x xxxxxxx xxxxxx xxxxx" "xxxx xxxxx xxxxx xxxxxxxxxxxxxx" "xxxxx xxxxx xxxxxxxxxx xx" "xxxxxx xxxxx x xx" "xxxxxxx xxxxxx xx" "xxxxxxxx xxxxxx xxxxxxx xxx" "xxxxxxxxx xxxxxx xxxxxxxxxxxxx" "xxxxxxxxxx xxxx xxxxxxxxxxxxxx" "xxxxxxxxxxx xxxx xxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxxx xxx xxxx" "xxxxxxxxxxxx xxx" "xxxxxxxxxxx xxxx xx" "xxxxxxxxxxx xxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxxx xxxxxxx xx" "xxxxxxxxxxxxx xx" "xxxxxxxxxxxxx xxx xx" "xxxxxxxxxxxx x xxxxx xxxx xxx" "xxxxxxxxxxx x xxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxx xxx xxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxx xx x xxxxxxxxxxx" "xxxxxxxxxxxxx xx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")))))) diff --git a/pkgs/games/paint-by-numbers/problems/k40x40 b/pkgs/games/paint-by-numbers/problems/k40x40 deleted file mode 100644 index 89206af845..0000000000 --- a/pkgs/games/paint-by-numbers/problems/k40x40 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 40x40") (define problems (list (make-problem "19980410-KVL (1)" (quote ((40) (7 14 6 4) (6 5 3 15 3) (5 1 4 17 2) (2 2 1 5 8 8 2) (5 7 17 2) (4 17 3) (2 11 16 4) (1 2 1 1 1 2 9 12) (1 2 1 1 1 2 22) (2 11 6 8 7) (4 25) (8 29) (8 27) (9 5 5 11 2) (3 5 15 8) (10 23) (10 21) (11 6 9 3) (6 4 18) (12 8 8) (2 9 15) (13 14) (13 12) (14 2 11) (14 3 2 9) (15 2 8) (15 1 4 6) (16 5 3 5) (7 8 1 3) (1 5 8 1 2) (2 7 2) (3 10) (3 3 10) (3 3 32) () () () () ())) (quote ((35) (8 20 4) (4 2 2 10 9 3) (7 2 4 15) (6 1 1 19 2) (3 1 1 19 2) (2 3 4 7 11 2) (1 1 1 1 1 17) (1 1 2 1 1 16 3) (1 4 4 15 3) (1 4 1 1 17) (1 4 1 1 1 15) (2 3 4 1 13) (3 1 1 2 11) (6 1 1 3 9) (7 2 4 7) (2 4 2 5 5) (8 7 3) (17 2 1) (14 3 1 1) (19 1 1 1 1) (19 1 5 1) (4 15 4 1) (10 10 2 1) (21 2 2 1) (14 7 2 1 1) (1 16 4 1 1) (8 14 1) (24 1) (25 1) (25 1) (3 9 4 5 1) (2 3 16 1) (1 19 1) (1 20 1) (1 21 1) (2 11 10 1) (3 8 15 1) (31 1) (31 1))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " "xxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxx " "xxxx xx xx xxxxxxxxxx xxxxxxxxx xxx " "xxxxxxx xx xxxx xxxxxxxxxxxxxxx " "xxxxxx x x xxxxxxxxxxxxxxxxxxx xx " "xxx x x xxxxxxxxxxxxxxxxxxx xx " "xx xxx xxxx xxxxxxx xxxxxxxxxxx xx " "x x x x x xxxxxxxxxxxxxxxxx " "x x xx x x xxxxxxxxxxxxxxxx xxx " "x xxxx xxxx xxxxxxxxxxxxxxx xxx " "x xxxx x x xxxxxxxxxxxxxxxxx " "x xxxx x x x xxxxxxxxxxxxxxx " "xx xxx xxxx x xxxxxxxxxxxxx " "xxx x x xx xxxxxxxxxxx " "xxxxxx x x xxx xxxxxxxxx " "xxxxxxx xx xxxx xxxxxxx " "xx xxxx xx xxxxx xxxxx " "xxxxxxxx xxxxxxx xxx " "xxxxxxxxxxxxxxxxx xx x " "xxxxxxxxxxxxxx xxx x x " "xxxxxxxxxxxxxxxxxxx x x x x " "xxxxxxxxxxxxxxxxxxx x xxxxx x " "xxxx xxxxxxxxxxxxxxx xxxx x " "xxxxxxxxxx xxxxxxxxxx xx x " "xxxxxxxxxxxxxxxxxxxxx xx xx x " "xxxxxxxxxxxxxx xxxxxxx xx x x " "x xxxxxxxxxxxxxxxx xxxx x x " "xxxxxxxx xxxxxxxxxxxxxx x " "xxxxxxxxxxxxxxxxxxxxxxxx x " "xxxxxxxxxxxxxxxxxxxxxxxxx x " "xxxxxxxxxxxxxxxxxxxxxxxxx x " "xxx xxxxxxxxx xxxx xxxxx x " "xx xxx xxxxxxxxxxxxxxxx x " "x xxxxxxxxxxxxxxxxxxx x " "x xxxxxxxxxxxxxxxxxxxx x " "x xxxxxxxxxxxxxxxxxxxxx x " "xx xxxxxxxxxxx xxxxxxxxxx x " "xxx xxxxxxxx xxxxxxxxxxxxxxx x " "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x " "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x "))) (make-problem "19980512-SDN (2)" (quote ((18) (26) (20 2) (2 9 2) (1 1 2) (2 2 2) (2 2 10 2) (1 1 18 2) (2 18 3 2) (13 2 1 2) (2 1 2) (2 1 2) (2 1 2) (2 1 2) (4 1 2) (11 1 2) (18 1 1 2) (2 8 1 1 2) (1 1 1 1 2) (2 2 1 1 2) (2 2 8 2) (1 1 16 2) (2 19 2) (13 2) (2) (2) (2) (2) (2) (13) (24) (22 2) (2 8 2) (1 1 2) (2 2 2) (2 2 11) (1 1 22) (2 21) (13) ())) (quote (() (2) (6) (2 2 2) (1 1 6 2) (1 1 2 2 6) (2 2 1 1 2 2) (8 1 1 1 1) (2 2 2 2 2 1 1) (2 2 8 2 2) (2 2 2 2 2 8) (2 2 2 2 2 2 2) (2 2 2 2 2 2) (2 2 2 2 2 2) (3 2 2 2 2 2) (2 3 3 2 2 2) (2 2 2 2 3 2) (2 2 2 3 2 2) (2 2 2 2 2 3) (2 2 2 2 2 2) (2 2 2 2 2 2) (2 2 2 2 2 2) (3 2 3 2 2 2) (2 3 2 2 2 2) (2 2 2 2 2 2) (2 2 10 2 2) (2 2 2 3 2 2) (2 2 2 2 3 2) (2 2 2 2 2 2) (2 2 2 2 2 3) (2 4 2 2 2) (2 3 2 2 2) (2 16 2 2) (2 2 2) (2 2 2) (2 2 2) (2 2 2) (2 2 2) (37) (37))) (quote #f)) (make-problem "19980716dGAS (3)" (quote ((40) (18 18) (17 17) (16 4 16) (15 6 15) (14 8 14) (13 10 13) (12 12 12) (11 5 5 11) (10 5 5 10) (9 6 6 9) (8 7 7 8) (7 8 8 7) (6 1 1 10 6) (5 2 4 15 5) (4 3 3 15 4) (3 4 1 1 16 3) (2 5 1 2 5 8 2) (1 6 3 5 8 1) (1 4 7 1) (1 6 9 8 1) (1 7 8 9 1) (2 6 19 2) (3 5 1 17 3) (4 4 2 16 4) (5 3 2 5 8 5) (6 2 2 4 6 6) (7 1 3 4 4 7) (8 2 2 2 8) (9 2 2 1 9) (10 16 10) (11 14 11) (12 12 12) (13 10 13) (14 8 14) (15 6 15) (16 4 16) (17 17) (18 18) (40))) (quote ((40) (18 18) (17 17) (16 4 16) (15 6 15) (14 8 14) (13 10 13) (12 5 6 12) (11 6 7 11) (10 1 7 10) (9 2 4 9) (8 3 2 8) (7 4 2 1 1 7) (6 5 1 9 6) (5 6 9 5) (4 7 1 1 4 4) (3 8 2 2 5 3) (2 5 1 3 3 1 6 2) (1 5 1 17 1) (1 5 5 17 1) (1 5 5 8 7 1) (1 5 5 7 7 1) (2 5 6 6 6 2) (3 14 5 5 3) (4 11 3 4 4) (5 10 4 3 5) (6 9 5 2 6) (7 8 6 1 7) (8 8 9 8) (9 8 9 9) (10 16 10) (11 14 11) (12 12 12) (13 10 13) (14 8 14) (15 6 15) (16 4 16) (17 17) (18 18) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxx xxxxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxxxxx xxxxxxxx xxxxxxxxxxxxxx" "xxxxxxxxxxxxx xxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxx xxxxxx xxxxxxxxxxxx" "xxxxxxxxxxx xxxxxx xxxxxxx xxxxxxxxxxx" "xxxxxxxxxx x xxxxxxx xxxxxxxxxx" "xxxxxxxxx xx xxxx xxxxxxxxx" "xxxxxxxx xxx xx xxxxxxxx" "xxxxxxx xxxx xx x x xxxxxxx" "xxxxxx xxxxx x xxxxxxxxx xxxxxx" "xxxxx xxxxxx xxxxxxxxx xxxxx" "xxxx xxxxxxx x x xxxx xxxx" "xxx xxxxxxxx xx xx xxxxx xxx" "xx xxxxx x xxx xxx x xxxxxx xx" "x xxxxx x xxxxxxxxxxxxxxxxx x" "x xxxxx xxxxx xxxxxxxxxxxxxxxxx x" "x xxxxx xxxxx xxxxxxxx xxxxxxx x" "x xxxxx xxxxx xxxxxxx xxxxxxx x" "xx xxxxx xxxxxx xxxxxx xxxxxx xx" "xxx xxxxxxxxxxxxxx xxxxx xxxxx xxx" "xxxx xxxxxxxxxxx xxx xxxx xxxx" "xxxxx xxxxxxxxxx xxxx xxx xxxxx" "xxxxxx xxxxxxxxx xxxxx xx xxxxxx" "xxxxxxx xxxxxxxx xxxxxx x xxxxxxx" "xxxxxxxx xxxxxxxx xxxxxxxxx xxxxxxxx" "xxxxxxxxx xxxxxxxx xxxxxxxxx xxxxxxxxx" "xxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxx xxxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxx xxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxxxxxxx xxxxxxxx xxxxxxxxxxxxxx" "xxxxxxxxxxxxxxx xxxxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19980828-GOS (4)" (quote (() (20) (22) (24) (26) (28) (30) (32) (34) (36) (38) (4 3 3 4 4) (3 2 2 3 3) (2 1 1 2 2 2) (2 1 3 3 3 2 3 2) (2 3 3 2 5 1 3 2) (2 8 2 5 1 3 2) (2 7 2 5 1 2 2) (2 5 2 5 1 3) (2 5 2 5 1 4) (3 4 2 5 1 6) (4 3 2 5 1 6) (6 3 2 5 1 6) (7 3 2 5 1 6) (2 3 3 2 5 1 6) (2 1 3 3 3 2 6) (2 3 3 2 6) (3 4 4 3 6) (4 5 5 4 6) (38) (36) (34) (32) (30) (28) (26) (24) (22) (20) ())) (quote (() (20) (22) (5 4 5) (5 3 5) (5 2 3 5) (6 4 4 6) (7 3 2 7) (9 4 9) (11 5 11) (38) (10 25) (10 25) (10 10) (10 10) (10 10) (10 25) (10 25) (14 14) (12 12) (11 11) (10 10 10) (10 12 10) (10 12 10) (10 12 10) (10 10 10) (11 11) (12 12) (14 14) (38) (9 9) (8 8) (7 5 7) (6 5 15) (5 3 14) (5 14) (5 14) (22) (20) ())) (quote (" " " xxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxx " " xxxxx xxxx xxxxx " " xxxxx xxx xxxxx " " xxxxx xx xxx xxxxx " " xxxxxx xxxx xxxx xxxxxx " " xxxxxxx xxx xx xxxxxxx " " xxxxxxxxx xxxx xxxxxxxxx " " xxxxxxxxxxx xxxxx xxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxxxxx " " xxxxxxxxxxxx xxxxxxxxxxxx " " xxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx " " xxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxxx xxxxxxxxxxxx " " xxxxxxxxxxxxxx xxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxx xxxxxxxxx " " xxxxxxxx xxxxxxxx " " xxxxxxx xxxxx xxxxxxx " " xxxxxx xxxxx xxxxxxxxxxxxxxx " " xxxxx xxx xxxxxxxxxxxxxx " " xxxxx xxxxxxxxxxxxxx " " xxxxx xxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxx " " "))) (make-problem "19980926-JON (5)" (quote ((15 19) (16 3 17) (18 3 16) (7 6 3 4 6) (5 6 3 3 3 5 4) (4 2 7 1 3 1 4 3 3) (3 2 4 5 2 4 3 2) (3 2 4 5 2 6 4 3 1) (2 2 4 5 3 7 3 2 1) (1 2 4 5 3 8 4 3) (1 2 4 3 6 5 3 4 2) (2 3 3 6 3 2 5 1) (2 3 2 8 7 1) (2 6 6 6 2) (2 5 4 5 2) (1 5 2 5 1) (1 34 1) (1 4 4 19 4 1) (1 4 4 6 7 3 4 1) (6 3 6 6 10) (1 3 4 6 6 3 4 1) (1 3 4 5 4 4 3 2) (1 4 4 4 4 3 4 2) (2 3 4 3 7 4 2) (2 8 3 6 5 2) (2 2 8 8 1 3) (1 2 24 5) (2 1 22 4) (2 1 18 4) (1 4 3 3 4 1) (1 4 3 3 4 1) (2 5 3 3 5 2) (2 5 3 5 2) (3 5 3 5 3) (4 5 3 5 4) (5 25 5) (7 22 6) (8 17 8) (9 10) (11 4 11))) (quote ((11 11) (9 13 9) (8 5 1 7 7) (6 5 8 5 6) (5 3 14 4 5) (4 2 24 4) (4 2 12 3 5 4) (3 2 10 2 2 4 3) (3 1 5 2 11 4 2) (3 6 3 12 4 1) (3 4 3 12 3 1) (3 3 4 3 7 3) (3 2 4 1 3 4 3) (4 5 16 3) (4 6 16 3) (3 7 9 6 3) (3 2 3 7 3 3) (3 1 6 5 3 3) (1 3 8 3 3 6 1) (2 11 3 6 1) (5 7 3 6 1) (1 4 4 3 3 3 3 1) (1 3 7 5 3 3) (2 6 7 6 3) (6 5 9 6 3) (5 5 16 3) (5 4 13 3) (4 1 3 5 6 3) (3 2 3 2 8 2) (3 4 3 12 3 1) (3 6 2 8 3 4 2) (3 1 9 6 3 4 2) (3 2 10 1 4 5 3) (3 3 16 5 3) (4 3 24 4) (4 4 14 7 5) (5 4 6 7 6) (6 6 1 9 7) (7 14 9) (9 11))) (quote ("xxxxxxxxxxx xxxxxxxxxxx" "xxxxxxxxx xxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxx xxxxx x xxxxxxx xxxxxxx" "xxxxxx xxxxx xxxxxxxx xxxxx xxxxxx" "xxxxx xxx xxxxxxxxxxxxxx xxxx xxxxx" "xxxx xx xxxxxxxxxxxxxxxxxxxxxxxx xxxx" "xxxx xx xxxxxxxxxxxx xxx xxxxx xxxx" "xxx xx xxxxxxxxxx xx xx xxxx xxx" "xxx x xxxxx xx xxxxxxxxxxx xxxx xx" "xxx xxxxxx xxx xxxxxxxxxxxx xxxx x" "xxx xxxx xxx xxxxxxxxxxxx xxx x" "xxx xxx xxxx xxx xxxxxxx xxx " "xxx xx xxxx x xxx xxxx xxx " "xxxx xxxxx xxxxxxxxxxxxxxxx xxx " "xxxx xxxxxx xxxxxxxxxxxxxxxx xxx " " xxx xxxxxxx xxxxxxxxx xxxxxx xxx " " xxx xx xxx xxxxxxx xxx xxx " " xxx x xxxxxx xxxxx xxx xxx " " x xxx xxxxxxxx xxx xxx xxxxxx x" " xx xxxxxxxxxxx xxx xxxxxx x" " xxxxx xxxxxxx xxx xxxxxx x" "x xxxx xxxx xxx xxx xxx xxx x" "x xxx xxxxxxx xxxxx xxx xxx " "xx xxxxxx xxxxxxx xxxxxx xxx " "xxxxxx xxxxx xxxxxxxxx xxxxxx xxx " "xxxxx xxxxx xxxxxxxxxxxxxxxx xxx " "xxxxx xxxx xxxxxxxxxxxxx xxx " "xxxx x xxx xxxxx xxxxxx xxx " "xxx xx xxx xx xxxxxxxx xx " "xxx xxxx xxx xxxxxxxxxxxx xxx x" "xxx xxxxxx xx xxxxxxxx xxx xxxx xx" "xxx x xxxxxxxxx xxxxxx xxx xxxx xx" "xxx xx xxxxxxxxxx x xxxx xxxxx xxx" "xxx xxx xxxxxxxxxxxxxxxx xxxxx xxx" "xxxx xxx xxxxxxxxxxxxxxxxxxxxxxxx xxxx" "xxxx xxxx xxxxxxxxxxxxxx xxxxxxx xxxxx" "xxxxx xxxx xxxxxx xxxxxxx xxxxxx" "xxxxxx xxxxxx x xxxxxxxxx xxxxxxx" "xxxxxxx xxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxx xxxxxxxxxxx"))) (make-problem "19981120-VAL (6)" (quote ((8 7) (10 2 2 2 2 2 2 2 8) (8 1 1 1 1 1 1 1 1 7) (8 7) (8 7) (40) (10 3 3 3 3 3 9) (9 1 1 1 1 1 7) (8 1 1 1 1 1 1 1 1 1 6) (7 3 3 3 3 3 3 5) (7 1 1 1 1 1 1 1 1 1 5) (7 3 3 3 4) (6 1 1 1 4) (6 3) (6 2) (5 2) (7 2 2 2 2 2 2 2 2 2 2 2) (5 1 1 1 1 1 1 1 1 1 1 1 1) (5 1) (5 1) (5 1 2) (5 1 1 2 3) (5 2 2 8) (6 4 4 8) (6 3 2 2 3 8) (6 3 1 1 3 8) (7 4 4 8) (7 1 8) (7 4 4 8) (8 3 1 1 3 9) (8 3 2 2 3 9) (9 4 4 10) (9 2 2 10) (9 1 1 11) (10 11) (11 12) (12 13) (13 14) (15 15) (17 17))) (quote ((40) (40) (40) (40) (40) (15 1 17) (12 1 14) (9 1 11) (1 3 1 9) (1 2 1 1 6) (1 1 3 1 5) (1 2 1 1 1 4) (1 4 3 1 3) (1 2 1 1 1 1 1 2) (1 1 3 1 2 2 2) (1 2 1 1 4 4 1) (1 3 1 3 2 2 3 1) (1 2 1 1 3 1 1 3) (1 1 3 1 4 4) (1 2 1 1 1 1) (1 4 3 1 4 4) (1 2 1 1 1 3 1 1 3) (1 1 3 1 3 2 2 3) (1 2 1 1 4 4 1) (1 3 1 2 2 1) (1 2 1 1 1 1 2) (1 1 3 1 3) (1 2 1 1 1 4) (1 4 3 1 5) (1 2 1 1 1 7) (1 1 3 1 9) (1 2 1 1 11) (1 2 1 20) (8 1 19) (9 1 18) (11 1 18) (13 1 18) (14 1 19) (17 20) (40))) (quote #f)) (make-problem "19981207-JTR (7)" (quote ((1) (1) (1 1 1 1) (1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 2 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 4 1 1 1 1 1 1 1) (1 1 1 1 1 3 4 3 1 1 1 1 1) (1 1 1 3 3 4 3 3 1 1 1) (1 3 3 3 4 3 3 3 1) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 4 4 4 3 3 3) (3 3 3 16 3 3 3) (3 3 4 14 4 3 3) (3 4 4 12 4 4 3) (4 4 4 4 4 4 4) (4 4 18 4 4) (4 4 16 4 4) (4 4 14 4 4) (4 4 4 4 4) (4 20 4) (4 18 4) (4 16 4) (4 4 4) (22) (20) (18) (4) (4) (4) (14) (22) (30))) (quote ((3 12) (2 14) (3 14) (4) (3 12 4) (2 14 4 1) (3 14 4 1) (4 4 1) (3 12 4 4 1) (2 14 4 4 2) (3 14 4 4 2) (4 4 4 2) (3 12 4 4 3 2) (2 14 4 3 3 3) (3 14 3 3 3 3) (4 3 3 3 3) (3 3 3 3 3) (3 3 3 3 3) (3 33) (1 34) (2 34) (4 33) (3 3 3 3 3) (3 3 3 3 3) (4 3 3 3 3) (3 14 3 3 3 3) (2 14 4 3 3 3) (3 12 4 4 3 2) (4 4 4 2) (3 14 4 4 2) (2 14 4 4 2) (3 12 4 4 1) (4 4 1) (3 14 4 1) (2 14 4 1) (3 12 4) (4) (3 14) (2 14) (3 12))) (quote #f)) (make-problem "19981221-SDN (8)" (quote (() (6 2 2 2 2 6) (6 2 2 2 2 6) (2 2 2 2 2 2) (2 2 2 2 2 2) (5 2 7 2 6) (5 2 7 2 6) (2 2 2 2 2) (2 3 2 2 2 2) (6 3 2 2 2 6) (6 3 2 2 2 6) () () () (6 6 2 6 6) (6 6 2 6 6) (2 2 2 2 2 2) (2 2 2 2 2 2) (6 6 6 6 5) (6 6 6 6 5) (2 2 2 2 2 2) (2 2 2 2 2 2) (2 6 6 6 6) (2 6 6 6 6) () () () (6 6 1) (6 6 11) (2 2 2 6 11) (2 2 2 6 1 2 2) (6 6 2 2) (6 6 2 2) (2 2 6 2 2) (2 2 6 2 2) (6 2 2 2) (6 2) () () ())) (quote (() (2 2 6 6 2) (2 2 2 6 6 2) (2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2) (10 10 2 6) (10 10 2 6) () () (3 2 6 6) (3 2 6 6) (3 2 2 2 2 2) (2 2 2 2 2) (6 2 10) (10 6 2 10) (10) () (10 2 2) (6 10 2 2) (6 2 2 2 2) (2 2 2 2 2) (2 6 2 2) (2 6 2 2) (10) (10) (6 2) (6 2 2) (10 2 2 2 2) (10 2 2 2 2) (2 6 8) (2 6 8) (6 2 2) (6 2 2) (2 2 2 2 2 8) (2 2 2 2 2 2 8) (2 6 2 2 2 2) (2 6 2 2 2 2) (10 2) (10) ())) (quote #f)) (make-problem "19981223aBAU (9)" (quote ((1 4) (2 6) (3 7 2) (4 4 4 4 4) (3 7 5 2 4 7 2) (6 2 7 5 8) (2 5 9 1 2 6) (3 2 9 3) (1 11 2) (1 13 1) (4 13 1) (5 15 3) (4 1 15 5) (3 3 15 6) (2 2 1 15 1 2 3) (3 1 15 10) (2 1 13 1 1 5) (1 2 1 2 2 4) (1 6 1 1 1 2 2 4) (20 5) (25 4) (5 21 3) (7 20 3) (3 1 6 8 4 4) (4 4 1 13 4) (1 1 7 2 2 1 3 3) (3 4 1 5 5 2) (1 1 6 2 2 1 2 1) (4 3 2 4 5 3) (4 6 4 4 4) (3 3 2 2 2 2 1 5) (3 6 5 7) (3 2 2 2 2 1 3) (2 4 5 3) (1 3 1 5) (6 4) (4 5) (4 5) (3 2) (1))) (quote ((3 5 3) (3 4 4 5) (3 2 1 14) (4 4 5 1 2 3) (5 2 1 4 5 2) (1 1 4 5 2) (4 2 1 2 1 3 4) (4 6 5 6 3) (4 2 1 4 8 4) (2 3 5 10 8) (5 8 12 5) (2 18 5 1 1) (1 18 2 5) (12 7 2) (13 6) (13 4) (19) (13 5) (13 8) (12 9) (19 5) (1 19 4) (5 8 11 2) (4 2 5 6 8) (3 6 1 5 2 2) (7 5 3 1 4) (3 1 3 1 6 4) (5 5 4 1 4) (6 4 7 4) (3 2 2 2 4 3 3) (4 3 1 8 2) (3 4 4 2 2) (3 3 1 4 1 2) (3 4 3 1) (3 3 1 2 4) (3 4 3 3) (3 4 3 3) (2 7 3) (2 7 3) (1 4 3))) (quote #f)) (make-problem "19981223bBAU (10)" (quote ((5 11) (8 6 6) (2 6 7 8) (3 8 2 12 2) (12 3 4 5 3 3) (5 5 8 3 2 5) (6 4 9 1 8) (9 16 8) (6 2 12 9) (3 4 9 9) (9 5 2 7) (8 6 6) (6 12 3) (5 6 10 2) (2 5 7 11) (2 5 8 9) (2 6 9 6) (3 8 16) (2 9 1 5) (2 9 2 2) (2 9 4 3) (2 9 14) (3 1 3 1 18) (3 7 11 6) (1 1 5 9 8) (1 1 3 7 10) (4 1 12) (4 1 5 5 1) (4 1 8 3 3) (4 1 10 5) (5 2 8 3 5) (3 1 1 1 1 5 4 5) (2 3 2 4 6 5) (1 3 3 12 6) (7 8 7 2 3) (16 7 3 2) (6 8 3 8) (4 7 2 8) (2 7 2 7) (9 8))) (quote ((4 15) (7 8 8) (8 3 11 2) (2 7 2 5 3) (2 7 1 1 6) (3 1 5 8) (5 2 2 4 8) (6 1 2 7 4 1) (5 5 6 2 1 3 1) (5 5 11 1 1 2) (5 22 5) (5 17 1 6) (1 2 12 2 6) (2 2 13 7) (1 2 3 5 8) (5 9) (5 2 4) (5 8 5 3) (7 5 5 8) (7 5 5 7) (8 6 5 7) (9 7 5 5 1) (2 6 8 5 4 1) (3 4 14 2 3) (5 3 1 4 6 2 5) (6 2 2 2 6 10) (8 4 1 5 10) (6 5 1 5 7 1) (1 2 7 3 1 4 2) (1 2 7 2 2 3 3) (4 8 2 3 5) (6 10 6 4) (10 6 6 5) (5 5 4 7 6) (4 6 3 7 6) (2 7 2 12 2) (13 4 6 2) (11 3 9) (9 2 8) (7 8))) (quote (" xxxx xxxxxxxxxxxxxxx " " xxxxxxx xxxxxxxx xxxxxxxx " " xxxxxxxx xxx xxxxxxxxxxx xx " "xx xxxxxxx xx xxxxx xxx " "xx xxxxxxx x x xxxxxx " "xxx x xxxxx xxxxxxxx " "xxxxx xx xx xxxx xxxxxxxx" "xxxxxx x xx xxxxxxx xxxx x" " xxxxx xxxxx xxxxxx xx x xxx x" " xxxxx xxxxx xxxxxxxxxxx x x xx" " xxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxx" " xxxxx xxxxxxxxxxxxxxxxx x xxxxxx" " x xx xxxxxxxxxxxx xx xxxxxx" " xx xx xxxxxxxxxxxxx xxxxxxx" " x xx xxx xxxxx xxxxxxxx" " xxxxx xxxxxxxxx " " xxxxx xx xxxx " " xxxxx xxxxxxxx xxxxx xxx " " xxxxxxx xxxxx xxxxx xxxxxxxx " " xxxxxxx xxxxx xxxxx xxxxxxx " " xxxxxxxx xxxxxx xxxxx xxxxxxx " " xxxxxxxxx xxxxxxx xxxxx xxxxx x " " xx xxxxxx xxxxxxxx xxxxx xxxx x " " xxx xxxx xxxxxxxxxxxxxx xx xxx " "xxxxx xxx x xxxx xxxxxx xx xxxxx " "xxxxxx xx xx xx xxxxxx xxxxxxxxxx " "xxxxxxxx xxxx x xxxxx xxxxxxxxxx" "xxxxxx xxxxx x xxxxx xxxxxxx x" "x xx xxxxxxx xxx x xxxx xx" "x xx xxxxxxx xx xx xxx xxx" "xxxx xxxxxxxx xx xxx xxxxx" "xxxxxx xxxxxxxxxx xxxxxx xxxx" "xxxxxxxxxx xxxxxx xxxxxx xxxxx" "xxxxx xxxxx xxxx xxxxxxx xxxxxx" "xxxx xxxxxx xxx xxxxxxx xxxxxx " " xx xxxxxxx xx xxxxxxxxxxxx xx " " xxxxxxxxxxxxx xxxx xxxxxx xx " " xxxxxxxxxxx xxx xxxxxxxxx " " xxxxxxxxx xx xxxxxxxx " " xxxxxxx xxxxxxxx "))) (make-problem "19990208-ELS (11)" (quote ((2 2 2 1 2 2) (4 4 2 1 2 4) (1 1 1 2 1 2 6) (1 2 1 2 1 2 2 8) (1 2 1 2 1 2 1 2 10) (1 1 1 2 1 2 1 1) (11 2 1 2 1 2 2 1) (1 1 1 2 2 1 2 2 1) (1 2 1 2 1 2 1 2 1 1) (1 2 1 2 1 2 1 2 1 2 1) (1 1 1 1 1 2 1 2 1) (11 2 2 10) (2 1 3) (2 1 1 2) (12 1 1 13) (20 1 12) (1) (1) (1) (4 3 3 3) (3 3 3 4) (1) (1) (1) (12 1 20) (13 1 1 13) (2 1 1 2) (2 1 2 3 1 2 1 1) (2 2 2 2 2 1 1 3) (2 2 2 2 1 2 1 5) (1 2 2 1 2 1 2 1 1 5) (1 2 3 2 1 2 1 1 1) (3 2 2 2 2 2 1 1 1 1 1) (7 2 2 1 2 5 1 1 1) (2 10 2 1 2 1 1 1 1) (6 1 2 1 2 1 1 1 1 1 1 1) (4 2 2 1 1 1 1 1) (4 2 1 2 1 1 1 1 1 1) (4 2 1 2 1 1 1 1 1) (6 2 1 2 1 1 1 1 1 1 1))) (quote ((2 1 2 1 1) (10 2 1 2 5) (1 1 1 2 1 2 1 2) (2 2 1 2 1 2 2 3 2) (2 2 1 2 1 2 1 2 3 3 1) (1 1 1 2 1 2 10) (10 2 1 2 1 9) (1 1 1 2 2 3 7) (2 2 1 2 1 2 1 2 2 6) (2 2 1 2 1 2 1 2 1 2 3 1) (1 1 1 2 1 2 2 4) (10 3 2 5 2) (2 1 1 2 1 1) (2 1 1 2) (12 1 1 13) (10 1 20) (1) (1) (1) (3 3 3 4) (4 3 3 3) (1) (1) (1) (20 1 12) (13 1 1 13) (2 1 1 2) (2 1 3 7) (8 2 2 2) (2 1 2 1 2 2 1 1 1) (3 2 1 2 1 2 1) (4 2 1 2 1 2 11) (5 3 2 2 1) (5 3 2 1 2 1 1 1 1 1 1) (4 2 1 2 1 2 1) (3 2 1 2 1 2 11) (2 1 2 2 3) (8 2 1 2 4 2 2 2) (2 1 2 3) (2 1 2 11))) (quote #f)) (make-problem "19990418-DRA (12)" (quote (() (38) (18 19) (17 1 18) (15 3 17) (13 6 16) (12 9 1 13) (10 11 1 11) (9 1 2 8 2 10) (6 2 1 2 1 3 2 9) (6 5 5 3 2 3 8) (6 4 5 5 1 4 7) (7 2 6 1 4 5 7) (6 3 7 1 4 4 7) (5 3 6 2 5 2 8) (5 4 5 1 1 4 2 9) (6 4 4 3 3 2 9) (6 4 6 1 3 2 10) (7 2 1 5 3 3 10) (8 1 2 3 1 2 2 11) (9 3 2 1 13) (10 2 1 4 14) (11 1 2 1 2 15) (12 1 1 16) (15 1 18) (11 1 19) (10 1 4 16) (10 2 3 15) (16 13) (12 3 3 12) (11 4 12) (10 2 7 12) (10 3 21) (10 5 3 16) (16 2 15) (16 1 1 14) (16 4 14) (16 6 14) (16 21) ())) (quote (() (38) (38) (38) (38) (38) (13 23) (8 1 2 21) (8 2 5 20) (8 9 19) (7 5 5 18) (6 4 1 2 4 3 5) (6 1 4 4 2 2 6) (5 3 7 4 1 1 6) (4 3 9 1 1 2 7) (4 2 11 2 1 3 8) (3 3 11 2 4 8) (3 4 4 3) (2 5 1 1 1 2 4 7 2) (1 7 2 1 1 2 2 2 6 3) (2 5 2 5 2 3 5 4) (3 4 3 1 2 2 3 3 3) (4 3 6 3 2 2 2 3) (5 3 8 2 4 3 2) (6 3 6 1 6 4 1) (5 1 3 4 2 7 7) (6 1 1 1 2 9 7) (6 6 4 19) (7 8 20) (8 5 22) (9 3 24) (10 25) (38) (38) (38) (38) (38) (38) (38) ())) (quote (" " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxx x xx xxxxxxxxxxxxxxxxxxxxx " " xxxxxxxx xx xxxxx xxxxxxxxxxxxxxxxxxxx " " xxxxxxxx xxxxxxxxx xxxxxxxxxxxxxxxxxxx " " xxxxxxx xxxxx xxxxx xxxxxxxxxxxxxxxxxx " " xxxxxx xxxx x xx xxxx xxx xxxxx " " xxxxxx x xxxx xxxx xx xx xxxxxx " " xxxxx xxx xxxxxxx xxxx x x xxxxxx " " xxxx xxx xxxxxxxxx x x xx xxxxxxx " " xxxx xx xxxxxxxxxxx xx x xxx xxxxxxxx " " xxx xxx xxxxxxxxxxx xx xxxx xxxxxxxx " " xxx xxxx xxxx xxx " " xx xxxxx x x x xx xxxx xxxxxxx xx " " x xxxxxxx xx x x xx xx xx xxxxxx xxx " " xx xxxxx xx xxxxx xx xxx xxxxx xxxx " " xxx xxxx xxx x xx xx xxx xxx xxx " " xxxx xxx xxxxxx xxx xx xx xx xxx " " xxxxx xxx xxxxxxxx xx xxxx xxx xx " " xxxxxx xxx xxxxxx x xxxxxx xxxx x " " xxxxx x xxx xxxx xx xxxxxxx xxxxxxx " " xxxxxx x x x xx xxxxxxxxx xxxxxxx " " xxxxxx xxxxxx xxxx xxxxxxxxxxxxxxxxxxx " " xxxxxxx xxxxxxxx xxxxxxxxxxxxxxxxxxxx " " xxxxxxxx xxxxx xxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxx xxx xxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " "))) (make-problem "19990422-VOL (13)" (quote (() () () () () (1 1 1 1 1 1) (3 1 1 3 3 3 3) (1 3 1 5 1 3 2 2 2 2 2 2) (10 6 1 18) (3 3 4 6 1 2 5 2 2 1) (15 3 6 11) (1 4 4 5 1 1 7 2 3) (19 8 2 5) (2 2 4 2 5 2 2 1 7 1) (7 8 2 7 9) (19 3 3 5 3) (3 3 2 1 1 2 1 7 7 1) (1 3 13 1 6 2 5) (7 3 3 1 1 5 3 4 1) (19 18) () (19 18) (1 1 1 9 3 2 5 2 3 2) (1 1 3 3 5 1 6 11) (1 1 1 13 10 7) (1 15 3 3 8 1) (7 1 2 2 5 8 3) (1 1 2 4 1 9 6) (1 5 3 7 10) (1 3 1 1 1 1 1 2 5 4 2 4) (1 5 3 15 2) (8 4 3 4 9) (1 5 3 1 10 2 4) (1 1 2 12 6 11) (1 1 10 4 2 15) (1 7 7 4 7 2 2) (15 3 18) (5 2 4 5 1 5 2 5 1) (19 18) ())) (quote (() (13 18) (3 5 2 1 1 1 3) (6 6 4 1 1 2 2 3) (3 6 3 1 1 4 3) (15 18) (1 5 3 2 1 1 2 9 1) (4 8 8 3 5) (1 4 1 1 1 2 2 1 1 8) (13 6 5 1) (14 5 1 6) (1 1 4 2 3 5 6) (5 6 1 2 2 1 2 3) (2 6 3 5 6) (5 6 5 1 4 1) (9 3 6 2 4) (1 2 7 1 1 5 1 5 2) (9 5 5 2 9) (2 2 4 1 1 2 8 6) (13 18) () (13 18) (3 1 5 2 6 9 1) (2 5 6 1 11 4) (9 4 4 5 7) (2 10 14 3) (5 4 1 5 2 9) (3 9 2 9 5) (7 3 4 2 8 1) (2 4 2 1 8 7) (5 4 1 18) (2 1 6 1 3 4 2 4 1) (3 6 1 1 4 11) (5 4 2 14 3) (3 10 8 2 6) (2 3 3 4 5 12) (14 1 7 4 3) (2 3 2 1 1 4 11 1) (12 18) ())) (quote #f)) (make-problem "19990503-DRA (14)" (quote ((7 23) (5 10 21) (4 14 20) (3 6 4 19) (2 6 4 1 4 18) (1 6 7 4 17) (1 2 6 5 16) (1 1 2 2 4 6 15) (1 1 9 4 14) (1 5 10 5 13) (1 4 6 5 4 12) (1 3 5 1 4 1 5 11) (1 2 1 2 1 4 10) (1 3 7 3 5 5 9) (1 13 6 2 3 8) (1 13 4 2 1 4 7) (1 13 5 6 3 6) (1 12 6 5 4 5) (1 7 1 3 4 1 3 4) (2 6 2 2 3 7 4 3) (2 6 9 2 2 3 3 2) (2 16 3 3 3 4 1) (2 16 5 3 2 1) (2 17 1 2 3 1 2 1) (3 15 12 1 2 1) (3 14 15 1 1) (3 14 9 3 2 1 1) (3 14 8 2 1 1 1) (4 14 4 2 4 2 1) (4 16 2 4 3 1 2 1) (4 10 1 1 7 1 3 1) (5 8 7 1 3 2) (5 8 7 7 3 3) (6 14 7 4 3) (7 3 7 5 6 3) (8 3 4 8 4) (9 3 6 9 5) (10 4 11 6) (11 20 7) (12 8))) (quote ((40) (5 21) (4 13 16) (3 3 15 12) (2 3 3 15 9) (1 4 2 17 7) (1 4 1 1 19 6) (5 1 1 21 5) (4 2 2 22 4) (3 1 4 6 15 3) (2 8 5 17 2) (2 7 5 15 3 1) (2 3 4 5 15 3) (2 7 6 15 2) (2 5 1 3 11 2 2) (2 10 10 3 1 1) (3 10 11 3 1 1) (1 3 3 5 11 3 1 1) (1 6 2 5 5 2 3 1 1) (2 5 1 5 1 1 1 3 1 1) (3 4 4 6 2 1 2 2 1) (4 5 2 6 5 1 1 2 1) (5 4 1 3 2 6 3 2) (6 5 4 1 9 4 2) (7 4 9 5 4 2) (8 5 12 6 3) (9 4 5 1 11 3) (10 3 4 10 4) (11 4 1 2 6 5 4) (12 3 8 3 4) (13 4 7 4 5) (14 3 1 7 5) (15 4 6 1 5 1) (16 3 1 1 1 5 2) (17 4 4 1 5 3) (18 3 2 5 4) (19 5 4 5) (20 10 8) (21 9) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxx xxxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxx xxxxxxxxxxxxxxxx" "xxx xxx xxxxxxxxxxxxxxx xxxxxxxxxxxx" "xx xxx xxx xxxxxxxxxxxxxxx xxxxxxxxx" "x xxxx xx xxxxxxxxxxxxxxxxx xxxxxxx" "x xxxx x x xxxxxxxxxxxxxxxxxxx xxxxxx" " xxxxx x x xxxxxxxxxxxxxxxxxxxxx xxxxx" " xxxx xx xx xxxxxxxxxxxxxxxxxxxxxx xxxx" " xxx x xxxx xxxxxx xxxxxxxxxxxxxxx xxx" " xx xxxxxxxx xxxxx xxxxxxxxxxxxxxxxx xx" " xx xxxxxxx xxxxx xxxxxxxxxxxxxxx xxx x" " xx xxx xxxx xxxxx xxxxxxxxxxxxxxx xxx " " xx xxxxxxx xxxxxx xxxxxxxxxxxxxxx xx " " xx xxxxx x xxx xxxxxxxxxxx xx xx " " xx xxxxxxxxxx xxxxxxxxxx xxx x x " " xxx xxxxxxxxxx xxxxxxxxxxx xxx x x " "x xxx xxx xxxxx xxxxxxxxxxx xxx x x " "x xxxxxx xx xxxxx xxxxx xx xxx x x " "xx xxxxx x xxxxx x x x xxx x x " "xxx xxxx xxxx xxxxxx xx x xx xx x " "xxxx xxxxx xx xxxxxx xxxxx x x xx x " "xxxxx xxxx x xxx xx xxxxxx xxx xx " "xxxxxx xxxxx xxxx x xxxxxxxxx xxxx xx " "xxxxxxx xxxx xxxxxxxxx xxxxx xxxx xx " "xxxxxxxx xxxxx xxxxxxxxxxxx xxxxxx xxx " "xxxxxxxxx xxxx xxxxx x xxxxxxxxxxx xxx " "xxxxxxxxxx xxx xxxx xxxxxxxxxx xxxx " "xxxxxxxxxxx xxxx x xx xxxxxx xxxxx xxxx " "xxxxxxxxxxxx xxx xxxxxxxx xxx xxxx " "xxxxxxxxxxxxx xxxx xxxxxxx xxxx xxxxx " "xxxxxxxxxxxxxx xxx x xxxxxxx xxxxx " "xxxxxxxxxxxxxxx xxxx xxxxxx x xxxxx x" "xxxxxxxxxxxxxxxx xxx x x x xxxxx xx" "xxxxxxxxxxxxxxxxx xxxx xxxx x xxxxx xxx" "xxxxxxxxxxxxxxxxxx xxx xx xxxxx xxxx" "xxxxxxxxxxxxxxxxxxx xxxxx xxxx xxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxx xxxxxxxx" "xxxxxxxxxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990518-MNT (15)" (quote ((11 10 15) (10 14 14) (9 2 2 12) (8 2 3 11) (7 2 3 10) (6 2 2 9) (6 2 2 8) (6 2 2 7) (6 2 2 6) (6 4 2 5) (7 3 3 4) (8 8 2 4) (9 7 3 3) (9 2 2 3) (12 8 5 2 3) (12 9 6 2 3) (11 4 5 9 3) (10 1 3 6 9 3) (8 1 1 1 1 2 1 3) (8 6 2 4 5 4 2) (8 7 2 2 4 1 1 1) (7 6 1 1 4 1 4 1) (7 7 1 1 4 2 1 1) (3 2 1 1 9 1 1) (2 11 1 1 8 1 1 1) (1 12 3 2 1 7 4 1) (1 13 3 4 6 5 1) (1 14 1 12 1) (1 31 2) (1 22 11 1) (1 9 11 6 1 4) (3 12 4 1 5) (9 13 8 5) (9 3 9 8 6) (9 4 6 9 7) (10 5 4 9 7) (11 5 9 8) (12 5 9 10) (13 14 11) (14 11 12))) (quote ((40) (25 9) (24 4 9) (23 5 8) (23 7 8) (23 7 8) (5 13 7 8) (4 5 10 7 8) (3 7 6 1 7 8) (2 2 3 4 4 7 5) (1 2 4 3 5 7 2 4) (2 2 2 1 4 7 4 3) (1 2 1 4 7 5 2) (2 6 11 2 4 1) (2 6 15 4) (2 2 3 1 1 7 4) (2 2 2 1 1 1 7 4) (2 2 1 1 2 8 3) (2 2 1 1 2 8 2) (2 3 1 6 9 2) (2 4 1 1 8 3) (2 3 1 2 7 4) (2 2 1 2 6 5) (1 3 2 1 5 6) (2 2 1 6 2 2 7) (1 2 2 2 3 8) (2 2 2 12 8) (2 2 4 12 7) (3 2 4 19 1) (4 2 2 18 2) (5 2 2 1 13 3) (6 2 3 1 12 3) (7 3 3 1 4 3 1 4) (8 4 2 1 4 2 3 6) (9 8 1 1 1 3 1 7) (10 8 1 4 1 9) (12 1 2 2 1 10) (19 1 4 1 10) (20 1 1 10) (21 5 11))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxx xxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxxx" "xxxxx xxxxxxxxxxxxx xxxxxxx xxxxxxxx" "xxxx xxxxx xxxxxxxxxx xxxxxxx xxxxxxxx" "xxx xxxxxxx xxxxxx x xxxxxxx xxxxxxxx" "xx xx xxx xxxx xxxx xxxxxxx xxxxx" "x xx xxxx xxx xxxxx xxxxxxx xx xxxx" " xx xx xx x xxxx xxxxxxx xxxx xxx" " x xx x xxxx xxxxxxx xxxxx xx" "xx xxxxxx xxxxxxxxxxx xx xxxx x" "xx xxxxxx xxxxxxxxxxxxxxx xxxx " "xx xx xxx x x xxxxxxx xxxx " "xx xx xx x x x xxxxxxx xxxx" "xx xx x x xx xxxxxxxx xxx" "xx xx x x xx xxxxxxxx xx" "xx xxx x xxxxxx xxxxxxxxx xx" "xx xxxx x x xxxxxxxx xxx" "xx xxx x xx xxxxxxx xxxx" "xx xx x xx xxxxxx xxxxx" " x xxx xx x xxxxx xxxxxx" " xx xx x xxxxxx xx xx xxxxxxx" "x xx xx xx xxx xxxxxxxx" "xx xx xx xxxxxxxxxxxx xxxxxxxx" "xx xx xxxx xxxxxxxxxxxx xxxxxxx " "xxx xx xxxx xxxxxxxxxxxxxxxxxxx x" "xxxx xx xx xxxxxxxxxxxxxxxxxx xx" "xxxxx xx xx x xxxxxxxxxxxxx xxx" "xxxxxx xx xxx x xxxxxxxxxxxx xxx" "xxxxxxx xxx xxx x xxxx xxx x xxxx" "xxxxxxxx xxxx xx x xxxx xx xxx xxxxxx" "xxxxxxxxx xxxxxxxx x x x xxx x xxxxxxx" "xxxxxxxxxx xxxxxxxx x xxxx x xxxxxxxxx" "xxxxxxxxxxxx x xx xx x xxxxxxxxxx" "xxxxxxxxxxxxxxxxxxx x xxxx x xxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx x x xxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxx xxxxx xxxxxxxxxxx"))) (make-problem "19990525-DRA (16)" (quote ((1) (3 1 1 3 3 1 1 3 2 3 1) (1 1 3 1 1 1 2 1 1 1 1 1 1 1 1) (1 1 1 1 1 3 1 2 3 1 1 3) (3 1 1 3 1 1 1 1 1 1 3 1 1 1) () () (1) (3) (5) (7) (11) (11) (11) (11) (11) (4 11 4) (5 11 5) (6 11 6) (7 11 7) (27) (27) (25) (23) (23) (23) (25) (25) (19) (11) (13) (15) (1) (1) (1) (1) (1) () () ())) (quote (() (4) (1 1) (4) () (4) (1) (4 6) (7 2) (12) (12) (4 12) (1 1 11) (1 1 10 1) (9 2) (4 21) (1 1 21) (4 22) (23) (4 24) (1 30) (1 24) (4 23) (22) (4 21) (1 1 21) (4 9 2) (10 1) (4 11) (1 1 12) (3 12) (12) (4 7 2) (1 1 6) (4) () () (3 1) () ())) (quote #f)) (make-problem "19990527bDRA (17)" (quote ((40) (40) (40) (21 16) (8 14 3 11) (6 10 5 2 2 8) (2 2 12 5 1 1 9) (2 2 5 6 5 9) (2 3 2 2 2 1 7 11) (2 1 2 2 3 2 4 4 6) (2 3 3 4 4 3 7) (4 2 2 3 4 2 8) (4 5 2 3 3 3 4 3) (4 4 2 2 5 2 5 3) (6 4 2 5 4 1 3) (3 2 4 2 3 3 4 1 3) (2 4 2 2 2 2 6 1 3) (4 4 2 2 1 1 7 1 3) (6 2 2 2 2 2 4 4) (6 2 2 4 2 3 5) (8 2 5 1 2 6) (9 1 3 5 2 1 4 3) (10 1 2 2 2 5 2) (3 5 2 2 1 3 5 3) (4 2 2 3 2 3 6) (6 1 1 3 2 2 8) (7 3 3 1 9) (6 7 3 2 2 4) (5 9 3 2 2 1 5) (4 11 1 1 5 6) (16 1 5 7) (17 2 7 4) (17 1 8 5) (17 1 15) (16 1 15) (16 2 15) (15 1 14) (13 15) (12 13) (40))) (quote ((40) (40) (6 5 23) (9 4 6 16) (10 3 6 4 10) (6 1 2 3 6 3 11) (5 3 2 5 1 12) (5 5 2 2 5 13) (4 6 3 2 3 14) (8 4 3 1 15) (11 3 1 14) (12 5 3 13) (7 3 5 2 11 1) (9 2 3 2 10 1) (11 1 3 9 1) (8 2 4 5 7 1) (8 3 4 3 3 1) (9 3 4 1 1) (5 2 5 3 6 1 1) (6 5 5 3 4 1) (10 9 2 1) (3 6 2 3 1) (3 5 4 2 1) (3 13 3 2 1) (4 6 4 5 3 1 1) (5 4 3 5 7 1 1) (6 3 1 2 9 1) (7 2 1 11) (4 2 3 1 4 10) (7 6 3 2 3 9) (6 5 6 2 2 9) (5 5 7 2 3 9) (10 4 3 3 2 8) (9 5 3 2 4 1 7) (14 3 4 2 7) (18 4 3 3 8) (12 3 16) (22 17) (40) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxx xxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxx xxxx xxxxxx xxxxxxxxxxxxxxxx" "xxxxxxxxxx xxx xxxxxx xxxx xxxxxxxxxx" "xxxxxx x xx xxx xxxxxx xxx xxxxxxxxxxx" "xxxxx xxx xx xxxxx x xxxxxxxxxxxx" "xxxxx xxxxx xx xx xxxxx xxxxxxxxxxxxx" "xxxx xxxxxx xxx xx xxx xxxxxxxxxxxxxx" "xxxxxxxx xxxx xxx x xxxxxxxxxxxxxxx" "xxxxxxxxxxx xxx x xxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxx xxx xxxxxxxxxxxxx" "xxxxxxx xxx xxxxx xx xxxxxxxxxxx x" "xxxxxxxxx xx xxx xx xxxxxxxxxx x" "xxxxxxxxxxx x xxx xxxxxxxxx x" "xxxxxxxx xx xxxx xxxxx xxxxxxx x" "xxxxxxxx xxx xxxx xxx xxx x" "xxxxxxxxx xxx xxxx x x" "xxxxx xx xxxxx xxx xxxxxx x x" "xxxxxx xxxxx xxxxx xxx xxxx x" "xxxxxxxxxx xxxxxxxxx xx x" "xxx xxxxxx xx xxx x" "xxx xxxxx xxxx xx x" "xxx xxxxxxxxxxxxx xxx xx x" "xxxx xxxxxx xxxx xxxxx xxx x x" "xxxxx xxxx xxx xxxxx xxxxxxx x x" "xxxxxx xxx x xx xxxxxxxxx x" "xxxxxxx xx x xxxxxxxxxxx" "xxxx xx xxx x xxxx xxxxxxxxxx" "xxxxxxx xxxxxx xxx xx xxx xxxxxxxxx" "xxxxxx xxxxx xxxxxx xx xx xxxxxxxxx" "xxxxx xxxxx xxxxxxx xx xxx xxxxxxxxx" "xxxxxxxxxx xxxx xxx xxx xx xxxxxxxx" "xxxxxxxxx xxxxx xxx xx xxxx x xxxxxxx" "xxxxxxxxxxxxxx xxx xxxx xx xxxxxxx" "xxxxxxxxxxxxxxxxxx xxxx xxx xxx xxxxxxxx" "xxxxxxxxxxxx xxx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990529bDRA (18)" (quote (() (9) (13) (11 5) (14 5) (16 5) (22) (3 3 1 12) (2 2 6) (2 6) (5 8 6) (2 2 1 1 1 1) (4 1 6) (2 1 1 2 7) (3 1 2 1 1 7) (5 2 3 1 7) (1 4 5 2 4) (2 2 1 6) (2 2 2) (1 3) (1 2 2) (1 1 1 2) (1 7 4) (2 3 1 2) (1 4) (2 4) (2 2 2) (2 2 2) (3 3 4) (8 2 2) (2 2 4) (8 2 7) (6 2 2 9) (8 2 2 11) (10 2 2 12) (12 2 2 14) (14 4 15) (15 16) (35) (35))) (quote (() () (4) (5) (6) (7) (7 8) (4 3 9) (11 2 9) (12 2 9) (4 1 1 2 2 9) (4 1 1 1 1 1 1 9) (5 1 2 2 2 2 1 7) (7 2 1 2 4 6) (7 3 1 2 5 5) (6 4 2 3 1 2 4) (6 2 1 1 2 3) (7 1 1 1 1 2 2) (6 1 3 1 1 2) (7 1 1 2 2 1 2) (7 1 1 1 1 2 2) (7 1 3 2 2 3) (2 4 1 1 2 2 4) (3 3 2 2 2 5) (3 2 3 2 6) (8 4 1 8 7) (16 9 8) (8 4 3 4 1 9) (14 4 12) (6 9 11) (4 7 10) (8 10) (9) (9) (8) (7) (5) () () ())) (quote #f)) (make-problem "19990530aDRA (19)" (quote ((40) (40) (26 13) (5 20 13) (5 11 3 13) (5 20 13) (5 5 1 4 1 1 11) (4 1 4 3 2 3 13) (5 4 4 3 2 3 13) (4 4 4 3 2 3 2 10) (4 4 6 1 4 10) (4 4 30) (40) (14 24) (13 1 24) (6 4 1 24) (6 1 3 1 12) (6 1 5 5 10) (5 2 1 1 2 7 7) (4 1 2 3 4 5) (3 1 2 1 1 1 5 4) (3 1 2 1 1 3 4) (3 1 1 1 3 4 1 2 1 4) (3 2 3 3 1 1 4) (3 1 3 3 2 1 1 4) (3 2 1 5 3 1 1 1 4) (3 2 2 3 2 2 1 1 4) (3 1 2 5 5 1 2 4) (4 1 2 11 1 2 5) (5 1 6 5 2 6) (6 1 13 2 7) (7 5 5 8) (8 15 9) (12 13) (40) (40) (40) (40) (40) (40))) (quote ((40) (40) (40) (20 12) (7 1 7 1 1 2 1 11) (3 8 2 1 10) (4 2 7 2 1 9) (4 2 7 1 1 2 1 8) (4 10 1 2 1 7) (4 2 2 5 2 2 1 1 7) (4 2 7 1 1 1 1 7) (6 10 2 1 1 1 1 7) (6 9 4 1 1 2 6) (6 7 3 1 2 1 6) (13 7 3 1 1 1 6) (6 3 4 2 1 1 1 6) (10 5 2 3 1 1 1 1 6) (10 5 1 1 3 1 1 1 6) (10 5 1 3 1 1 1 6) (7 5 2 1 2 1 1 1 6) (6 3 5 2 4 1 1 1 1 6) (16 3 1 1 1 6) (4 1 5 1 3 1 1 1 6) (16 4 2 1 1 1 6) (6 9 3 1 1 1 1 6) (6 9 2 1 2 1 6) (2 6 2 1 1 2 6) (6 3 5 2 1 1 1 7) (6 3 6 1 2 1 1 1 7) (9 6 2 2 1 1 7) (18 2 1 1 2 7) (18 5 1 1 2 8) (18 4 1 1 2 9) (19 2 1 1 2 10) (19 1 1 1 2 11) (20 12) (40) (40) (40) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxx x xxxxxxx x x xx x xxxxxxxxxxx" "xxx xxxxxxxx xx x xxxxxxxxxx" "xxxx xx xxxxxxx xx x xxxxxxxxx" "xxxx xx xxxxxxx x x xx x xxxxxxxx" "xxxx xxxxxxxxxx x xx x xxxxxxx" "xxxx xx xx xxxxx xx xx x x xxxxxxx" "xxxx xx xxxxxxx x x x x xxxxxxx" "xxxxxx xxxxxxxxxx xx x x x x xxxxxxx" "xxxxxx xxxxxxxxx xxxx x x xx xxxxxx" "xxxxxx xxxxxxx xxx x xx x xxxxxx" "xxxxxxxxxxxxx xxxxxxx xxx x x x xxxxxx" "xxxxxx xxx xxxx xx x x x xxxxxx" "xxxxxxxxxx xxxxx xx xxx x x x x xxxxxx" "xxxxxxxxxx xxxxx x x xxx x x x xxxxxx" "xxxxxxxxxx xxxxx x xxx x x x xxxxxx" "xxxxxxx xxxxx xx x xx x x x xxxxxx" "xxxxxx xxx xxxxx xx xxxx x x x x xxxxxx" "xxxxxxxxxxxxxxxx xxx x x x xxxxxx" "xxxx x xxxxx x xxx x x x xxxxxx" "xxxxxxxxxxxxxxxx xxxx xx x x x xxxxxx" "xxxxxx xxxxxxxxx xxx x x x x xxxxxx" "xxxxxx xxxxxxxxx xx x xx x xxxxxx" "xx xxxxxx xx x x xx xxxxxx" "xxxxxx xxx xxxxx xx x x x xxxxxxx" "xxxxxx xxx xxxxxx x xx x x x xxxxxxx" "xxxxxxxxx xxxxxx xx xx x x xxxxxxx" "xxxxxxxxxxxxxxxxxx xx x x xx xxxxxxx" "xxxxxxxxxxxxxxxxxx xxxxx x x xx xxxxxxxx" "xxxxxxxxxxxxxxxxxx xxxx x x xx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxx xx x x xx xxxxxxxxxx" "xxxxxxxxxxxxxxxxxxx x x x xx xxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990530bDRA (20)" (quote ((40) (40) (40) (40) (40) (15 15) (14 14) (13 13) (12 12) (11 11) (10 10) (9 9) (8 8) (7 7) (6 1 1 6) (6 5 5 6) (6 6 6 6) (6 6 6 6) (6 4 4 6) (6 2 2 6) (6 6) (7 1 1 7) (8 2 2 8) (3 3 9) (1 4 10) (1 6 1 1 1 1 6 3) (1 6 1 1 1 1 6 3) (1 5 1 1 1 6 1) (4 5 1 1 1 6 1) (5 4 5 1) (6 5 6 5) (7 4 5 6) (8 3 4 7) (9 2 3 8) (10 4 5 9) (11 12 10) (12 10 11) (13 8 12) (14 3 13) (15 14))) (quote ((40) (24 12) (24 12) (23 12) (23 11) (23 10) (14 6 9) (13 7 8) (12 7 7) (11 7 6) (10 7 5) (9 8 4) (8 3 4 3) (7 4 5 2) (6 6 1 1) (5 5 2) (5 4 2 3) (5 2 1 2 3) (5 2 2 3) (5 2 4) (5 2 2 4) (5 1 2 4) (5 2 2 3) (5 4 4) (5 5 4) (6 6 3) (7 4 6 1) (8 3 5 2) (9 9 3) (10 8 4) (11 8 5) (12 8 6) (13 8 7) (14 8 8) (25 9) (25 10) (25 10) (27 10) (27 10) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxxxxx xxxxxx xxxxxxxxx" "xxxxxxxxxxxxx xxxxxxx xxxxxxxx" "xxxxxxxxxxxx xxxxxxx xxxxxxx" "xxxxxxxxxxx xxxxxxx xxxxxx" "xxxxxxxxxx xxxxxxx xxxxx" "xxxxxxxxx xxxxxxxx xxxx" "xxxxxxxx xxx xxxx xxx" "xxxxxxx xxxx xxxxx xx" "xxxxxx xxxxxx x x" "xxxxx xxxxx xx " "xxxxx xxxx xx xxx " "xxxxx xx x xx xxx " "xxxxx xx xx xxx " "xxxxx xx xxxx " "xxxxx xx xx xxxx " "xxxxx x xx xxxx " "xxxxx xx xx xxx " "xxxxx xxxx xxxx " "xxxxx xxxxx xxxx " "xxxxxx xxxxxx xxx " "xxxxxxx xxxx xxxxxx x" "xxxxxxxx xxx xxxxx xx" "xxxxxxxxx xxxxxxxxx xxx" "xxxxxxxxxx xxxxxxxx xxxx" "xxxxxxxxxxx xxxxxxxx xxxxx" "xxxxxxxxxxxx xxxxxxxx xxxxxx" "xxxxxxxxxxxxx xxxxxxxx xxxxxxx" "xxxxxxxxxxxxxx xxxxxxxx xxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990530cDRA (21)" (quote ((40) (40) (9 28) (7 3 27) (6 5 12 10) (5 8 1 1 9) (5 5 3 8) (5 3 2 6 7) (5 3 2 6 7) (5 4 1 7 7) (5 4 1 4 2 1 7) (6 3 1 3 1 3 1 7) (6 3 2 6 1 7) (6 2 3 2 1 7) (6 2 3 3 2 7) (6 4 1 2 7) (13 1 1 3 7) (13 8 12) (12 3 11) (11 1 3 1 10) (10 3 3 9) (10 4 4 9) (4 5 19 9) (3 5 19 9) (2 5 19 9) (2 4 16 8) (2 3 15 5 7) (3 1 2 15 5 7) (4 3 1 4 10 5 7) (5 3 4 11 8) (6 3 4 13 10) (7 2 4 13 10) (8 1 4 13 10) (8 13 10) (7 5 11) (7 4 3 11) (7 4 11) (8 1 5 12) (40) (40))) (quote ((40) (40) (24 13) (23 12) (22 11) (5 14 1 10) (4 6 10 3 9) (3 10 11 3 2 3) (3 11 12 3 2) (2 4 4 14 3 2) (2 4 1 7 2) (2 3 12 13 2) (3 2 1 6 14 2) (4 2 4 13 2) (5 8 12 3) (5 8 6 2 2) (6 4 1 2 12 2 2) (5 3 1 1 12 2 2) (5 4 1 3 12 2 2) (5 1 4 1 3 13 3) (5 2 3 14 3) (5 1 1 14 3) (5 1 1 14 3) (6 2 2 13 3) (5 1 12 2) (5 12 2) (4 5 5 2) (4 5 3 4 2) (4 7 6 3 4 3) (4 5 5 3 6) (5 4 3 10) (6 8 3 10) (7 9 11) (40) (40) (40) (40) (40) (40) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx" "xxxxx xxxxxxxxxxxxxx x xxxxxxxxxx" "xxxx xxxxxx xxxxxxxxxx xxx xxxxxxxxx" "xxx xxxxxxxxxx xxxxxxxxxxx xxx xx xxx" "xxx xxxxxxxxxxx xxxxxxxxxxxx xxx xx" "xx xxxx xxxx xxxxxxxxxxxxxx xxx xx" "xx xxxx x xxxxxxx xx" "xx xxx xxxxxxxxxxxx xxxxxxxxxxxxx xx" "xxx xx x xxxxxx xxxxxxxxxxxxxx xx" "xxxx xx xxxx xxxxxxxxxxxxx xx" "xxxxx xxxxxxxx xxxxxxxxxxxx xxx" "xxxxx xxxxxxxx xxxxxx xx xx" "xxxxxx xxxx x xx xxxxxxxxxxxx xx xx" "xxxxx xxx x x xxxxxxxxxxxx xx xx" "xxxxx xxxx x xxx xxxxxxxxxxxx xx xx" "xxxxx x xxxx x xxx xxxxxxxxxxxxx xxx" "xxxxx xx xxx xxxxxxxxxxxxxx xxx" "xxxxx x x xxxxxxxxxxxxxx xxx" "xxxxx x x xxxxxxxxxxxxxx xxx" "xxxxxx xx xx xxxxxxxxxxxxx xxx" "xxxxx x xxxxxxxxxxxx xx" "xxxxx xxxxxxxxxxxx xx" "xxxx xxxxx xxxxx xx" "xxxx xxxxx xxx xxxx xx" "xxxx xxxxxxx xxxxxx xxx xxxx xxx" "xxxx xxxxx xxxxx xxx xxxxxx" "xxxxx xxxx xxx xxxxxxxxxx" "xxxxxx xxxxxxxx xxx xxxxxxxxxx" "xxxxxxx xxxxxxxxx xxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990601aDRA (22)" (quote ((18 1 19) (5 10 9 7) (5 10 9 7) (7 10 9 9) (8 8 9 10) (3 1 5 16 4 1 4) (2 5 11 4 3) (2 6 9 8 3) (3 8 7 10 4) (4 10 5 12 5) (13 17) (12 10 16) (11 12 15) (10 1 4 1 6 4) (3 3 1 1 4 1 1 5 4 3) (2 4 1 1 4 1 4 6 2) (1 7 1 4 1 3 8 1) (1 8 14 2 9 1) (9 4 4 4 2 10) (10 4 4 2 11) (11 10 2 12) (12 2 2 13) (12 2 2 1 13 1) (1 10 10 14 1) (1 9 12 13 1) (1 8 14 11 2) (2 6 14 10 2) (3 5 12 8 2) (4 4 2 4 3) (5 4 4) (8 1 1 1 11) (7 1 2 2 2 10) (6 2 16 3 9) (5 4 14 5 8) (3 6 7 6) (10 14) (9 13) (7 10 10) (6 6 8 7 9) (5 8 9 8))) (quote ((18 17) (16 5 14) (6 7 10 13) (5 5 12 6 5) (6 4 13 5 5) (1 2 5 14 3 5) (1 3 6 14 2 5 1) (3 11 13 1 5 2) (4 10 13 6 2) (4 11 9 3 2) (4 8 6 3 1 2) (5 6 6 4 2 3 2) (6 4 1 3 2 4 2 2) (7 2 2 4 5 2 1 1) (8 1 2 1 4 6 2 2) (9 2 1 2 6 2 2) (10 8 1 5 2 2) (1 7 8 2 5 2 2) (6 8 2 5 2 2) (1 5 8 1 5 2 2) (6 2 1 2 6 2 2) (1 6 2 4 6 2 2) (8 1 2 1 4 5 2 1 1) (7 3 1 3 2 4 2 2) (6 5 6 2 1 2 3 2) (6 6 2 3 3 1 2) (6 13 5 3 2) (6 12 7 1 7 2) (5 11 8 2 6 2) (4 11 11 2 5 2) (3 11 12 3 5 1) (1 11 13 4 5) (1 3 5 15 4 5) (5 4 15 4 5) (6 3 15 10) (5 4 15 10) (6 6 13 11) (15 9 12) (16 4 15) (18 18))) (quote ("xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxx xxxxx xxxxxxxxxxxxxx" "xxxxxx xxxxxxx xxxxxxxxxx xxxxxxxxxxxxx" "xxxxx xxxxx xxxxxxxxxxxx xxxxxx xxxxx" "xxxxxx xxxx xxxxxxxxxxxxx xxxxx xxxxx" "x xx xxxxx xxxxxxxxxxxxxx xxx xxxxx " "x xxx xxxxxx xxxxxxxxxxxxxx xx xxxxx x" "xxx xxxxxxxxxxx xxxxxxxxxxxxx x xxxxx xx" "xxxx xxxxxxxxxx xxxxxxxxxxxxx xxxxxx xx" "xxxx xxxxxxxxxxx xxxxxxxxx xxx xx" "xxxx xxxxxxxx xxxxxx xxx x xx" "xxxxx xxxxxx xxxxxx xxxx xx xxx xx" "xxxxxx xxxx x xxx xx xxxx xx xx" "xxxxxxx xx xx xxxx xxxxx xx x x" "xxxxxxxx x xx x xxxx xxxxxx xx xx " "xxxxxxxxx xx x xx xxxxxx xx xx " "xxxxxxxxxx xxxxxxxx x xxxxx xx xx " "x xxxxxxx xxxxxxxx xx xxxxx xx xx " " xxxxxx xxxxxxxx xx xxxxx xx xx " "x xxxxx xxxxxxxx x xxxxx xx xx " " xxxxxx xx x xx xxxxxx xx xx " "x xxxxxx xx xxxx xxxxxx xx xx " "xxxxxxxx x xx x xxxx xxxxx xx x x" "xxxxxxx xxx x xxx xx xxxx xx xx" "xxxxxx xxxxx xxxxxx xx x xx xxx xx" "xxxxxx xxxxxx xx xxx xxx x xx" "xxxxxx xxxxxxxxxxxxx xxxxx xxx xx" "xxxxxx xxxxxxxxxxxx xxxxxxx x xxxxxxx xx" "xxxxx xxxxxxxxxxx xxxxxxxx xx xxxxxx xx" "xxxx xxxxxxxxxxx xxxxxxxxxxx xx xxxxx xx" "xxx xxxxxxxxxxx xxxxxxxxxxxx xxx xxxxx x" "x xxxxxxxxxxx xxxxxxxxxxxxx xxxx xxxxx " "x xxx xxxxx xxxxxxxxxxxxxxx xxxx xxxxx" "xxxxx xxxx xxxxxxxxxxxxxxx xxxx xxxxx" "xxxxxx xxx xxxxxxxxxxxxxxx xxxxxxxxxx" "xxxxx xxxx xxxxxxxxxxxxxxx xxxxxxxxxx" "xxxxxx xxxxxx xxxxxxxxxxxxx xxxxxxxxxxx" "xxxxxxxxxxxxxxx xxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx"))) (make-problem "19990601bDRA (23)" (quote ((35) (13 21) (14 19) (15 17) (16 6 7) (17 4 3) (17 1 4 5) (14 2 1 4 7) (13 1 3 4 7) (12 1 11 7) (11 4 10 8) (3 4 6 7 10) (2 1 2 15 10) (2 5 13 10) (1 8 12 12) (13 8 12) (7 7 7 13) (6 1 7 6 13) (6 7 4 13) (7 9 12) (6 10 2 11) (4 9 7 8) (3 7 9 7) (2 4 12 7) (1 1 3 15 6) (5 6 11 6) (4 10 1 9 6) (3 11 8 7) (3 14 5 9) (2 16 2 9) (2 17 11) (2 5 10 13) (1 4 10 13) (7 2 6 2 12) (6 4 4 5 11) (6 5 8 10) (29 10) (40) (40) (40))) (quote ((25 13) (14 9 6 7) (12 8 4 7) (11 9 3 10) (11 9 2 11) (11 8 1 12) (12 4 1 1 7 4) (12 3 1 5 5) (13 2 1 2 5 7) (13 3 5 5 7) (11 4 5 5 6) (10 9 6 6) (9 2 8 7 4) (1 6 4 7 10 4) (1 4 6 7 10 4) (2 3 5 7 10 4) (3 3 5 5 10 4) (4 1 5 4 3 6 4) (5 1 5 2 2 6 4) (5 2 6 1 1 4 4) (5 2 7 2 2 5) (5 10 5 1 5) (5 10 7 6) (5 11 7 6) (4 11 8 7) (4 7 10 7) (4 1 4 10 6) (5 5 3 8 2 5) (11 6 7 3 4) (10 7 6 5 3) (9 10 4 10) (7 10 3 12) (5 12 12) (5 17 13) (3 33) (1 34) (34) (35) (35) (35))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxxxxxxx xxxxxxxxx xxxxxx xxxxxxx" "xxxxxxxxxxxx xxxxxxxx xxxx xxxxxxx" "xxxxxxxxxxx xxxxxxxxx xxx xxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxx xx xxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxx x xxxxxxxxxxxx" "xxxxxxxxxxxx xxxx x x xxxxxxx xxxx" "xxxxxxxxxxxx xxx x xxxxx xxxxx" "xxxxxxxxxxxxx xx x xx xxxxx xxxxxxx" "xxxxxxxxxxxxx xxx xxxxx xxxxx xxxxxxx" "xxxxxxxxxxx xxxx xxxxx xxxxx xxxxxx" "xxxxxxxxxx xxxxxxxxx xxxxxx xxxxxx" "xxxxxxxxx xx xxxxxxxx xxxxxxx xxxx" "x xxxxxx xxxx xxxxxxx xxxxxxxxxx xxxx" "x xxxx xxxxxx xxxxxxx xxxxxxxxxx xxxx" "xx xxx xxxxx xxxxxxx xxxxxxxxxx xxxx" "xxx xxx xxxxx xxxxx xxxxxxxxxx xxxx" "xxxx x xxxxx xxxx xxx xxxxxx xxxx" "xxxxx x xxxxx xx xx xxxxxx xxxx" "xxxxx xx xxxxxx x x xxxx xxxx" "xxxxx xx xxxxxxx xx xx xxxxx" "xxxxx xxxxxxxxxx xxxxx x xxxxx" "xxxxx xxxxxxxxxx xxxxxxx xxxxxx" "xxxxx xxxxxxxxxxx xxxxxxx xxxxxx" "xxxx xxxxxxxxxxx xxxxxxxx xxxxxxx" "xxxx xxxxxxx xxxxxxxxxx xxxxxxx" "xxxx x xxxx xxxxxxxxxx xxxxxx" "xxxxx xxxxx xxx xxxxxxxx xx xxxxx" "xxxxxxxxxxx xxxxxx xxxxxxx xxx xxxx" "xxxxxxxxxx xxxxxxx xxxxxx xxxxx xxx" "xxxxxxxxx xxxxxxxxxx xxxx xxxxxxxxxx" "xxxxxxx xxxxxxxxxx xxx xxxxxxxxxxxx" "xxxxx xxxxxxxxxxxx xxxxxxxxxxxx" "xxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxxxx" "xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" " x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990604aDRA (24)" (quote ((40) (40) (40) (7 32) (5 2 21 8) (5 3 17 2 6) (5 3 15 3 6) (5 3 15 3 6) (5 3 15 3 6) (6 1 17 3 6) (8 8 3 7 1 7) (8 8 3 8 9) (8 9 1 9 9) (8 6 6 9) (8 6 1 1 6 9) (9 3 2 2 4 9) (10 1 2 2 2 10) (11 1 11) (11 12) (11 12) (6 7) (2 1 5 5 1 3) (4 6 6 5) (2 7 7 3) (11 2 2 12) (12 2 2 13) (12 1 1 1 1 14) (9 1 1 11) (4 3 6 5 3 6) (5 1 8 7 1 7) (4 24 6) (40) (40) (5 2 4 3 14) (5 2 2 2 2 2 2 2 13) (5 5 3 2 14) (5 5 2 2 2 2 2 13) (5 2 2 2 2 2 2 2 13) (5 2 2 2 2 2 14) (40))) (quote ((40) (40) (21 1 16) (21 1 16) (22 5 1 9) (4 12 7 2 1) (4 10 9 2 4 1) (3 5 10 8 3 4 1) (10 5 7 4 2 1) (4 4 5 4 6 12) (5 7 3 6 12) (5 8 2 5 1) (16 6 1 4) (15 1 1 5 1 4) (15 1 2 6 1 1) (13 2 2 11) (13 2 10) (10 1 4 1) (12 3 1 4) (13 3 1 4) (12 4 1) (10 1 10) (13 2 2 10) (13 2 2 4 1) (15 1 1 1 5 1 2 1) (15 6 1 2 1) (16 1 6 1 2) (6 8 2 12) (6 7 2 6 12) (5 4 5 3 7 11) (11 4 8 10) (4 5 9 9 9) (5 9 8 9) (5 11 6 1 9) (22 17) (21 1 16) (21 1 16) (40) (40) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxx x xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxx x xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxx xxxxx x xxxxxxxxx" "xxxx xxxxxxxxxxxx xxxxxxx xx x" "xxxx xxxxxxxxxx xxxxxxxxx xx xxxx x" "xxx xxxxx xxxxxxxxxx xxxxxxxx xxx xxxx x" "xxxxxxxxxx xxxxx xxxxxxx xxxx xx x" "xxxx xxxx xxxxx xxxx xxxxxx xxxxxxxxxxxx" "xxxxx xxxxxxx xxx xxxxxx xxxxxxxxxxxx" "xxxxx xxxxxxxx xx xxxxx x" "xxxxxxxxxxxxxxxx xxxxxx x xxxx" "xxxxxxxxxxxxxxx x x xxxxx x xxxx" "xxxxxxxxxxxxxxx x xx xxxxxx x x" "xxxxxxxxxxxxx xx xx xxxxxxxxxxx" "xxxxxxxxxxxxx xx xxxxxxxxxx" "xxxxxxxxxx x xxxx x" "xxxxxxxxxxxx xxx x xxxx" "xxxxxxxxxxxxx xxx x xxxx" "xxxxxxxxxxxx xxxx x" "xxxxxxxxxx x xxxxxxxxxx" "xxxxxxxxxxxxx xx xx xxxxxxxxxx" "xxxxxxxxxxxxx xx xx xxxx x" "xxxxxxxxxxxxxxx x x x xxxxx x xx x" "xxxxxxxxxxxxxxx xxxxxx x xx x" "xxxxxxxxxxxxxxxx x xxxxxx x xx" "xxxxxx xxxxxxxx xx xxxxxxxxxxxx" "xxxxxx xxxxxxx xx xxxxxx xxxxxxxxxxxx" "xxxxx xxxx xxxxx xxx xxxxxxx xxxxxxxxxxx" "xxxxxxxxxxx xxxx xxxxxxxx xxxxxxxxxx" "xxxx xxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxx" "xxxxx xxxxxxxxx xxxxxxxx xxxxxxxxx" "xxxxx xxxxxxxxxxx xxxxxx x xxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxx x xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxx x xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990604bDRA (25)" (quote (() (19 18) (18 1 17) (18 2 16) (14 1 2 16) (13 3 3 2 10) (12 5 1 2 3 10) (11 5 1 1 3 11) (13 2 4 11) (16 4 4 7) (16 2 2 3 6) (3 10 5 4 1 5) (2 3 1 5 2 1 3 4) (2 2 1 1 1 1 2 10) (1 4 3 3 2 2 10) (1 6 2 2 1 2 11) (10 3 2 13) (5 3 4 2 3 9) (4 3 4 2 3 8) (3 3 3 3 1 3 2 6) (2 5 3 2 1 2 5 4) (1 7 6 3) (1 5 1 2 1 1 3 4 2) (1 3 5 1 1 2 7 3 2) (1 3 4 4 10 3 2) (1 3 3 12 3 2) (4 3 2) (5 3 2) (7 8) (7 1 1 8) (7 21 8) (8 19 9) (8 15 9) (9 1 9 1 10) (9 4 4 10) (10 15 11) (10 15 11) (11 13 12) (11 13 12) ())) (quote (() (25 12) (13 5 13) (11 5 17) (10 5 18) (10 5 19) (11 4 4 11) (11 3 4 11) (12 2 3 1 8) (13 2 2 2 2 6) (12 3 1 2 2 4) (11 1 3 4 2 2 2) (6 4 2 3 3 3 3) (5 4 3 2 1 3 5) (4 2 4 3 1 1 3 5) (3 3 3 1 3 3 4 4) (3 3 2 1 1 3 2 4 4) (3 4 2 2 4 2 4 4) (4 3 3 2 3 4 4 4) (1 1 4 1 4 4) (6 2 2 3 3 4 4) (1 3 1 2 2 3 4 4) (2 2 1 2 2 1 2 4 4) (6 3 1 2 2 2 4 4) (5 4 2 3 3 3 5) (4 4 1 1 3 4 3 5) (4 3 1 3 4 3 3) (4 1 4 2 1 4 2 2 2) (4 5 2 3 2 2 4) (10 4 3 2 2 6) (9 6 2 1 8) (8 8 3 11) (9 7 2 11) (10 7 18) (11 7 17) (20 16) (21 11) (38) (38) ())) (quote (" " " xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx " " xxxxxxxxxxxxx xxxxx xxxxxxxxxxxxx " " xxxxxxxxxxx xxxxx xxxxxxxxxxxxxxxxx " " xxxxxxxxxx xxxxx xxxxxxxxxxxxxxxxxx " " xxxxxxxxxx xxxxx xxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxx xxxx xxxx xxxxxxxxxxx " " xxxxxxxxxxx xxx xxxx xxxxxxxxxxx " " xxxxxxxxxxxx xx xxx x xxxxxxxx " " xxxxxxxxxxxxx xx xx xx xx xxxxxx " " xxxxxxxxxxxx xxx x xx xx xxxx " " xxxxxxxxxxx x xxx xxxx xx xx xx " " xxxxxx xxxx xx xxx xxx xxx xxx " " xxxxx xxxx xxx xx x xxx xxxxx " " xxxx xx xxxx xxx x x xxx xxxxx " " xxx xxx xxx x xxx xxx xxxx xxxx " " xxx xxx xx x x xxx xx xxxx xxxx " " xxx xxxx xx xx xxxx xx xxxx xxxx " " xxxx xxx xxx xx xxx xxxx xxxx xxxx " " x x xxxx x xxxx xxxx " " xxxxxx xx xx xxx xxx xxxx xxxx " " x xxx x xx xx xxx xxxx xxxx " " xx xx x xx xx x xx xxxx xxxx " " xxxxxx xxx x xx xx xx xxxx xxxx " " xxxxx xxxx xx xxx xxx xxx xxxxx " " xxxx xxxx x x xxx xxxx xxx xxxxx " " xxxx xxx x xxx xxxx xxx xxx " " xxxx x xxxx xx x xxxx xx xx xx " " xxxx xxxxx xx xxx xx xx xxxx " " xxxxxxxxxx xxxx xxx xx xx xxxxxx " " xxxxxxxxx xxxxxx xx x xxxxxxxx " " xxxxxxxx xxxxxxxx xxx xxxxxxxxxxx " " xxxxxxxxx xxxxxxx xx xxxxxxxxxxx " " xxxxxxxxxx xxxxxxx xxxxxxxxxxxxxxxxxx " " xxxxxxxxxxx xxxxxxx xxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " " "))) (make-problem "19990606-DRA (26)" (quote (() (6) (14) (19) (21) (24) (27) (27) (2 5 5) (2 21) (2 12 4) (5 19) (6 18) (1 17) (2 16) (5 16) (9 19) (14 2 11) (3 3 3 1 1 8) (4 2 1 1 1 8) (2 1 2 1 1 8) (2 2 3 1 8) (2 3 2 1 8) (2 4 3 3 8) (2 2 2 3 1 8) (2 2 2 4 2 3 5) (6 6 2 1 1 4) (2 4 5 1 2 1 1 4) (4 2 4 1 1 2 1 3) (7 2 2 1 2 1 3) (1 2 1 1 2 1 3 3) (5 2 6 4) (5 16) (2 2 16) (2 2 6 9) (2 2 5 10) (3 5 11) (5 6 12) (14 13) (12 14))) (quote (() (2) (4) (3 1) (3 2) (1 2 2 1) (3 2 11) (1 9 6 7) (7 11 2 2 2) (8 3 3 2 2 1) (3 2 4 2 1 1 3 2) (4 2 4 1 2 1 2 2 3) (5 1 4 1 1 1 2 2 2) (5 2 1 2 1 1 2) (5 1 1 2 2) (7 1 2 2 2) (8 2 2) (9 2 2) (9 2 3 2) (10 1 5 3) (6 4 2 4 3) (7 5 1 4 4) (7 6 1 5 8) (7 8 5 7) (7 8 4 7 1) (7 9 7 2) (7 10 11 3) (6 8 2 4 4 4) (6 10 1 7 5) (5 1 7 5 1 1 1 9) (5 1 7 2 1 1 8) (6 15 2 1 8) (5 14 1 1 8) (19 3 8) (19 9) (32) (31) (29) (13) ())) (quote #f)) (make-problem "19990606-KVL (27)" (quote ((4 33) (2 17 1 11) (2 18 12) (1 30) (1 23 3) (1 25 1 2) (2 8 10 3) (2 5 5 8) (4 5 4 8 6) (11 3 5 5) (10 2 3 4) (9 2 2 3) (8 2 2 2) (7 2 2 1) (7 1 2 1) (7 1 1 4 1) (7 1 1 7 1) (8 2 2 8) (9 1 2 8) (13 1 8) (29) (29) (21 6) (21 6) (21 7) (15 4 4 2) (16 1 1 3) (5 10 5) (4 3 9 7) (3 7 6 7) (3 10 3 6) (3 13 6) (4 12 3) (7 6 3) (10 3 6 3) (13 7 5) (12 12) (3 9) (5) ())) (quote ((38) (3 32) (1 30) (1 21 5) (19 3 4) (18 4 4) (18 4 4) (1 5 10 5 3) (1 4 10 4 3) (3 5 9 4 3) (10 5 9 5 2) (9 2 12 4 2) (8 2 10 4 1) (8 2 9 5) (7 2 4 10 4) (7 1 2 2 5 4 4) (7 2 2 7 3 2 1) (6 1 2 6 4 1 2) (6 1 2 6 3 1 2) (6 2 1 2 7 3 3) (6 1 2 11 4) (6 1 1 7 4) (6 1 1 7 1 5) (6 1 1 8 3 4 2) (6 2 10 5 1 2) (6 1 10 6 5) (1 5 1 8 6 5) (2 4 1 7 6 4) (1 5 1 12 4) (7 1 7 4) (7 1 2) (7 1) (8) (4 3) (4 4) (5 4) (6 4) (5 6) (4 8) (4 12))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " "xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " "x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " "x xxxxxxxxxxxxxxxxxxxxx xxxxx " " xxxxxxxxxxxxxxxxxxx xxx xxxx " " xxxxxxxxxxxxxxxxxx xxxx xxxx " " xxxxxxxxxxxxxxxxxx xxxx xxxx " "x xxxxx xxxxxxxxxx xxxxx xxx " "x xxxx xxxxxxxxxx xxxx xxx " "xxx xxxxx xxxxxxxxx xxxx xxx " "xxxxxxxxxx xxxxx xxxxxxxxx xxxxx xx " "xxxxxxxxx xx xxxxxxxxxxxx xxxx xx " "xxxxxxxx xx xxxxxxxxxx xxxx x " "xxxxxxxx xx xxxxxxxxx xxxxx " "xxxxxxx xx xxxx xxxxxxxxxx xxxx " "xxxxxxx x xx xx xxxxx xxxx xxxx " "xxxxxxx xx xx xxxxxxx xxx xx x " "xxxxxx x xx xxxxxx xxxx x xx " "xxxxxx x xx xxxxxx xxx x xx " "xxxxxx xx x xx xxxxxxx xxx xxx " "xxxxxx x xx xxxxxxxxxxx xxxx " "xxxxxx x x xxxxxxx xxxx " "xxxxxx x x xxxxxxx x xxxxx " "xxxxxx x x xxxxxxxx xxx xxxx xx " "xxxxxx xx xxxxxxxxxx xxxxx x xx " "xxxxxx x xxxxxxxxxx xxxxxx xxxxx " "x xxxxx x xxxxxxxx xxxxxx xxxxx " "xx xxxx x xxxxxxx xxxxxx xxxx " "x xxxxx x xxxxxxxxxxxx xxxx " "xxxxxxx x xxxxxxx xxxx " "xxxxxxx x xx " "xxxxxxx x " "xxxxxxxx " "xxxx xxx " "xxxx xxxx " "xxxxx xxxx " "xxxxxx xxxx " "xxxxx xxxxxx " "xxxx xxxxxxxx " "xxxx xxxxxxxxxxxx "))) (make-problem "19990607aDRA (28)" (quote ((40) (40) (9 30) (40) (3 16 18) (21 2 1 1 10) (21 3 7) (7 8 6 1 1 6) (3 3 12 1 1 2 3 4) (3 13 5 3 5) (18 1 6 3 1 6) (11 7 2 2 4) (19 2 1 4 1 5) (18 1 2 2 2 3) (17 1 3 3 4 2 4) (18 3 4 2 4) (21 4 5 2 1) (21 1 1 2 2 1) (5 4 10 1 6 2 2 1) (2 2 2 3 7 1 1 2 2 1) (1 2 1 4 7 2 4 2 2 1) (1 2 1 4 8 1 2 1 1) (1 2 5 10 2 3 1 1) (1 4 5 13 2 2 2 1) (1 3 5 15 2 1 3) (1 3 5 16 1 1 1 2) (1 3 5 16 1 1 3) (1 2 4 17 1 1 1 2) (2 2 3 18 1 1 3) (2 2 3 6 8 1 1 1 2) (2 2 3 5 7 1 1 3) (2 1 2 6 2 6 1 1 1 2) (3 1 1 7 3 5 1 1 1 3) (3 2 8 7 1 1 7) (3 2 10 3 8) (3 2 11 7 9) (3 1 13 12) (4 33) (4 34) (4 34))) (quote ((40) (20 12) (19 8) (4 3 17 3) (9 21) (18 14) (19 1 3 2) (7 13 3) (7 11 9 4) (2 16 10 6) (18 11 7) (11 16 8) (27 9) (24 12) (19 13) (20 16) (40) (7 6 25) (7 1 2 1 14 6) (7 1 1 1 14 5) (4 2 1 1 15 2 4) (4 1 2 1 2 10 3 1 3) (5 5 2 2 9 2 1 3) (6 1 3 1 2 2 9 1 1 3) (6 4 1 4 12 1 3) (5 1 2 4 2 12 1 3) (6 1 1 3 1 2 11 1 3) (5 1 1 11 1 3) (6 1 1 1 1 1 1 1 10 1 4) (5 1 3 1 1 1 1 1 1 8 2 4) (7 3 1 1 1 1 1 2 6 1 1 4) (8 1 1 1 1 1 1 2 1 1 5) (6 1 2 1 7 1 6) (7 1 13 1 7) (9 1 18 7) (8 2 1 8) (13 2 4 2 1 1 1 1 7) (16 5 2 1 1 1 8) (16 16) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxx xxxxxxxx" "xxxx xxx xxxxxxxxxxxxxxxxx xxx" "xxxxxxxxx xxxxxxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxxxxx x xxx xx" "xxxxxxx xxxxxxxxxxxxx xxx" "xxxxxxx xxxxxxxxxxx xxxxxxxxx xxxx" "xx xxxxxxxxxxxxxxxx xxxxxxxxxx xxxxxx" "xxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxx xxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxx x xx x xxxxxxxxxxxxxx xxxxxx" "xxxxxxx x x x xxxxxxxxxxxxxx xxxxx" "xxxx xx x x xxxxxxxxxxxxxxx xx xxxx" "xxxx x xx x xx xxxxxxxxxx xxx x xxx" "xxxxx xxxxx xx xx xxxxxxxxx xx x xxx" "xxxxxx x xxx x xx xx xxxxxxxxx x x xxx" "xxxxxx xxxx x xxxx xxxxxxxxxxxx x xxx" "xxxxx x xx xxxx xx xxxxxxxxxxxx x xxx" "xxxxxx x x xxx x xx xxxxxxxxxxx x xxx" "xxxxx x x xxxxxxxxxxx x xxx" "xxxxxx x x x x x x x xxxxxxxxxx x xxxx" "xxxxx x xxx x x x x x x xxxxxxxx xx xxxx" "xxxxxxx xxx x x x x x xx xxxxxx x x xxxx" "xxxxxxxx x x x x x x xx x x xxxxx" "xxxxxx x xx x xxxxxxx x xxxxxx" "xxxxxxx x xxxxxxxxxxxxx x xxxxxxx" "xxxxxxxxx x xxxxxxxxxxxxxxxxxx xxxxxxx" "xxxxxxxx xx x xxxxxxxx" "xxxxxxxxxxxxx xx xxxx xx x x x x xxxxxxx" "xxxxxxxxxxxxxxxx xxxxx xx x x x xxxxxxxx" "xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990607cDRA (29)" (quote ((40) (9 16 12) (8 14 11) (8 1 12 1 11) (7 3 10 1 11) (7 4 8 1 11) (6 2 2 7 1 11) (6 1 2 6 2 11) (5 2 3 4 3 11) (5 2 2 4 10) (4 3 3 4 10) (4 4 4 3 10) (4 4 3 2 10) (4 2 3 4 1 10) (5 8 1 11) (4 3 3 1 12) (3 3 4 2 2 12) (3 3 2 2 2 1 11) (3 3 2 7 11) (2 5 2 8 11) (2 6 12 10) (2 7 8 9) (1 12 8 8) (1 22 7) (1 23 6) (1 1 22 5) (1 3 22 4) (1 4 19 3) (1 5 7 8 3) (1 6 3 7 4) (1 8 2 6 4) (2 11 2 5) (2 16 1 4 6) (2 16 2 7) (2 15 14) (2 15 14) (2 14 14) (2 19 13) (2 22 13) (2 24 12))) (quote ((40) (22 9) (19) (16 1) (10 1 2) (8 2) (6 3 2) (4 6 3) (2 7 4 3) (1 3 4 7 3) (1 3 1 17 3) (2 5 3 7 14) (3 8 9 12) (4 5 11 11) (5 2 3 9 10) (8 3 1 8 10) (9 2 3 7 9) (9 2 2 2 7 9) (9 2 1 1 7 9) (9 2 1 1 7 9) (8 2 2 2 7 8) (7 2 4 7 8) (6 3 4 7 8) (5 15 8) (4 2 1 11 1 8) (3 4 2 11 1 1 3) (2 6 13 1 1 3 1) (1 11 12 1 6) (2 2 10 1 7) (9 6 10 1 6) (21 9 1 6) (22 8 1 6) (23 7 1 6) (24 2 2 7) (25 1 1 8) (26 9) (27 11) (40) (40) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxx " "xxxxxxxxxxxxxxxx x" "xxxxxxxxxx x xx" "xxxxxxxx xx" "xxxxxx xxx xx" "xxxx xxxxxx xxx" "xx xxxxxxx xxxx xxx" "x xxx xxxx xxxxxxx xxx" "x xxx x xxxxxxxxxxxxxxxxx xxx" "xx xxxxx xxx xxxxxxx xxxxxxxxxxxxxx" "xxx xxxxxxxx xxxxxxxxx xxxxxxxxxxxx" "xxxx xxxxx xxxxxxxxxxx xxxxxxxxxxx" "xxxxx xx xxx xxxxxxxxx xxxxxxxxxx" "xxxxxxxx xxx x xxxxxxxx xxxxxxxxxx" "xxxxxxxxx xx xxx xxxxxxx xxxxxxxxx" "xxxxxxxxx xx xx xx xxxxxxx xxxxxxxxx" "xxxxxxxxx xx x x xxxxxxx xxxxxxxxx" "xxxxxxxxx xx x x xxxxxxx xxxxxxxxx" "xxxxxxxx xx xx xx xxxxxxx xxxxxxxx" "xxxxxxx xx xxxx xxxxxxx xxxxxxxx" "xxxxxx xxx xxxx xxxxxxx xxxxxxxx" "xxxxx xxxxxxxxxxxxxxx xxxxxxxx" "xxxx xx x xxxxxxxxxxx x xxxxxxxx" "xxx xxxx xx xxxxxxxxxxx x x xxx" "xx xxxxxx xxxxxxxxxxxxx x x xxx x" "x xxxxxxxxxxx xxxxxxxxxxxx x xxxxxx " "xx xx xxxxxxxxxx x xxxxxxx" "xxxxxxxxx xxxxxx xxxxxxxxxx x xxxxxx" "xxxxxxxxxxxxxxxxxxxxx xxxxxxxxx x xxxxxx" "xxxxxxxxxxxxxxxxxxxxxx xxxxxxxx x xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxxx x xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxx xx xx xxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx x x xxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990616-DRA (30)" (quote ((40) (1 12 5 17) (2 13 5 17) (2 1 1 1 1 1 1 1 1 3 1 3) (2 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 2 2) (2 1 1 1 1 1 1 1 2 1 2 2 2) (40) (40) (40) (40) (40) (40) (40) (12 12) (10 14 10) (8 18 8) (7 4 1 1 1 1 1 1 1 3 7) (6 4 1 1 1 1 1 1 1 1 3 6) (5 3 1 1 1 1 1 1 1 1 1 2 5) (4 24 4) (3 1 24 1 3) (2 2 24 2 2) (1 3 24 3 1) (1 3 24 3 1) (1 3 24 3 1) (2 2 24 2 2) (3 1 24 1 3) (4 24 4) (5 24 5) (6 24 6) (7 23 7) (8 19 8) (10 14 10) (12 12) (40) (40) (40) (40) (40) (40))) (quote ((40) (1 20 15) (1 15 3 14) (1 18 5 13) (3 13 7 12) (3 1 12 11) (3 11 10) (16 9) (3 9 13 8) (5 9 15 8) (3 8 15 7) (14 3 13 7) (3 7 2 14 6) (3 1 7 2 1 14 6) (3 1 7 3 15 6) (13 2 1 14 6) (1 7 3 15 6) (3 9 2 1 14 6) (3 7 3 15 6) (13 2 1 14 6) (3 7 3 15 6) (3 1 7 2 1 14 6) (1 7 3 15 6) (13 2 1 14 6) (3 7 3 15 6) (3 1 7 2 1 14 6) (3 7 3 15 6) (13 1 1 13 6) (3 9 2 14 7) (5 8 2 13 7) (4 10 15 8) (5 9 14 8) (3 11 9) (17 10) (3 12 11) (3 15 7 12) (3 16 5 13) (4 15 3 14) (22 15) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx" "x xxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxx" "x xxxxxxxxxxxxxxxxxx xxxxx xxxxxxxxxxxxx" "xxx xxxxxxxxxxxxx xxxxxxx xxxxxxxxxxxx" "xxx x xxxxxxxxxxxx xxxxxxxxxxx" "xxx xxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxxxxxxx xxxxxxxxx" "xxx xxxxxxxxx xxxxxxxxxxxxx xxxxxxxx" "xxxxx xxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxx" "xxx xxxxxxxx xxxxxxxxxxxxxxx xxxxxxx" "xxxxxxxxxxxxxx xxx xxxxxxxxxxxxx xxxxxxx" "xxx xxxxxxx xx xxxxxxxxxxxxxx xxxxxx" "xxx x xxxxxxx xx x xxxxxxxxxxxxxx xxxxxx" "xxx x xxxxxxx xxx xxxxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxx xx x xxxxxxxxxxxxxx xxxxxx" "x xxxxxxx xxx xxxxxxxxxxxxxxx xxxxxx" "xxx xxxxxxxxx xx x xxxxxxxxxxxxxx xxxxxx" "xxx xxxxxxx xxx xxxxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxx xx x xxxxxxxxxxxxxx xxxxxx" "xxx xxxxxxx xxx xxxxxxxxxxxxxxx xxxxxx" "xxx x xxxxxxx xx x xxxxxxxxxxxxxx xxxxxx" "x xxxxxxx xxx xxxxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxx xx x xxxxxxxxxxxxxx xxxxxx" "xxx xxxxxxx xxx xxxxxxxxxxxxxxx xxxxxx" "xxx x xxxxxxx xx x xxxxxxxxxxxxxx xxxxxx" "xxx xxxxxxx xxx xxxxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxx x x xxxxxxxxxxxxx xxxxxx" "xxx xxxxxxxxx xx xxxxxxxxxxxxxx xxxxxxx" "xxxxx xxxxxxxx xx xxxxxxxxxxxxx xxxxxxx" "xxxx xxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxx" "xxxxx xxxxxxxxx xxxxxxxxxxxxxx xxxxxxxx" "xxx xxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxx xxxxxxxxxx" "xxx xxxxxxxxxxxx xxxxxxxxxxx" "xxx xxxxxxxxxxxxxxx xxxxxxx xxxxxxxxxxxx" "xxx xxxxxxxxxxxxxxxx xxxxx xxxxxxxxxxxxx" "xxxx xxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990618aDRA (31)" (quote ((40) (10 13 11) (9 3 11 3 10) (8 4 1 1 4 9) (8 4 4 9) (8 4 4 9) (9 10) (2 3 4 1 1 12) (1 1 3 12) (1 3 3 12) (1 3 1 12) (2 4 2 1 2 5 3 2) (2 4 5 4 1 1) (3 6 3 5 1) (4 8 6 1) (14 8 2) (15 9 2) (15 10 3) (13 9 4) (10 10) (9 9) (8 8) (8 8) (7 7) (6 6) (4 4) (3 2 2 3) (2 4 4 2) (2 4 4 2) (2 4 1 1 4 2) (2 4 2 2 4 2) (3 2 2 2 2 3) (4 2 3 3 2 4) (7 5 5 7) (7 5 5 7) (7 5 5 7) (7 5 2 5 7) (8 3 6 3 8) (9 16 9) (40))) (quote ((40) (8 29) (7 14 9) (8 12 4 8) (9 10 6 7) (8 11 6 7) (7 11 4 8) (8 12 2 3) (3 15 2 4 2) (2 3 13 2 6 1) (1 4 12 6 1) (1 4 6 6 1) (1 4 5 4 2) (2 3 2) (4 2 2) (3 2) (3 1 1 2) (3 2 3) (3 1 2 3) (3 5 4) (3 1 2 4) (3 2 3) (3 1 1 3) (3 2) (4 2 2) (2 3 2) (1 4 5 2) (1 4 6 4 2) (1 4 12 6 1) (2 3 12 6 1) (3 14 2 6 1) (21 2 4 2) (12 8 2 3) (11 7 4 8) (12 7 6 7) (13 6 6 7) (12 8 4 8) (11 10 9) (12 25) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxx xxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxx xxxxxxxxxxxx xxxx xxxxxxxx" "xxxxxxxxx xxxxxxxxxx xxxxxx xxxxxxx" "xxxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx" "xxxxxxx xxxxxxxxxxx xxxx xxxxxxxx" "xxxxxxxx xxxxxxxxxxxx xx xxx" "xxx xxxxxxxxxxxxxxx xx xxxx xx" "xx xxx xxxxxxxxxxxxx xx xxxxxx x" "x xxxx xxxxxxxxxxxx xxxxxx x" "x xxxx xxxxxx xxxxxx x" "x xxxx xxxxx xxxx xx" "xx xxx xx" "xxxx xx xx" "xxx xx" "xxx x x xx" "xxx xx xxx" "xxx x xx xxx" "xxx xxxxx xxxx" "xxx x xx xxxx" "xxx xx xxx" "xxx x x xxx" "xxx xx" "xxxx xx xx" "xx xxx xx" "x xxxx xxxxx xx" "x xxxx xxxxxx xxxx xx" "x xxxx xxxxxxxxxxxx xxxxxx x" "xx xxx xxxxxxxxxxxx xxxxxx x" "xxx xxxxxxxxxxxxxx xx xxxxxx x" "xxxxxxxxxxxxxxxxxxxxx xx xxxx xx" "xxxxxxxxxxxx xxxxxxxx xx xxx" "xxxxxxxxxxx xxxxxxx xxxx xxxxxxxx" "xxxxxxxxxxxx xxxxxxx xxxxxx xxxxxxx" "xxxxxxxxxxxxx xxxxxx xxxxxx xxxxxxx" "xxxxxxxxxxxx xxxxxxxx xxxx xxxxxxxx" "xxxxxxxxxxx xxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990618bDRA (32)" (quote (() () () (2 2) (3 3) (5 5) (7 7) (3 5 2 9) (1 2 8 4 8 3 1) (1 4 6 6 4 3 2) (2 4 5 2 1 3 6 2) (2 11 2 1 2 8 2) (2 5 5 4 4 6 2) (1 5 5 6 4 5 2) (1 4 7 4 6 4 1) (12 6 5) (7 4 4 7) (6 3 1 2 2 6) (3 3 2 3 3 3) (2 3 3 3 3 2) (3 4 3 2) (3 4 3 3) (5 4 3 3) (5 5 3 4) (4 6 4 3) (4 6 4 4) (4 7 4 4) (12 6 3) (11 10) (10 11) (5 5 11) (4 4 12) (4 3 12) (4 3 6 6) (2 2 5 5) (1 1 3 4) (2 2) (1 1) () ())) (quote (() () (3) (9 3) (3 3 3 4) (7 7 7) (4 12 7) (4 10 7) (3 9 8) (3 4 3 8) (4 2 3 4 4) (3 1 3 4 6) (8 4 8) (8 4 10) (8 3 12) (7 3 8 3) (1 3 1 3 8) (1 1 2 8) (7 1 7) (8 5) (3 3) (7 3) (1 1 4 5) (1 3 1 1 17) (7 2 19) (3 4 2 17) (2 5 2 12) (2 1 3 6 8) (2 3 2 8 6) (3 4 2 12) (3 4 3 11) (3 6 2 10) (15 7) (17 6) (6 6 6) (3 5 3 3) (9) () () ())) (quote #f)) (make-problem "19990618cDRA (33)" (quote ((40) (40) (2 3 33) (2 3 11 18) (2 10 17) (2 3 9 1 16) (2 3 8 4 16) (14 22) (3 7 22) (2 3 5 21) (2 4 20) (2 3 3 2 19) (2 3 1 4 18) (8 6 17) (2 3 2 7 16) (2 1 3 8 15) (2 1 1 4 9 14) (2 3 16 13) (2 3 17 12) (25 11) (2 3 19 10) (2 1 20 9) (2 1 1 21 8) (2 3 22 7) (2 3 1 19 6) (9 21 5) (2 2 22 4) (2 6 3 17 3) (2 4 4 19 2) (2 6 4 4 13 2) (2 2 4 5 15 2) (8 9) (2 2 9) (2 3 1 9) (2 1 9) (2 2 8 5 19) (2 3 13 19) (20 19) (40) (40))) (quote ((40) (40) (2 2 1 1 1 1 3) (4 3 1 4 5 4 1 1 1 1 5) (4 3 1 5 5 3 1 1 1 1 5) (4 3 1 4 5 4 3 1 1 4) (2 2 1 1 1 3 2 1 3) (40) (12 10 6 5) (12 9 5) (11 8 6 5) (10 14 5) (9 14 5) (8 14 3 5) (7 15 4) (6 16 3 5) (5 20 5) (4 19 5) (3 2 18 5) (3 4 15 1 5) (3 5 14 2) (3 7 13 1 5) (4 7 14 5) (5 7 13 5) (15 12 5) (16 11 5) (17 10 5) (18 9 5) (19 8 5) (20 7 5) (21 6 5) (22 14) (23 13) (24 12) (25 11) (26 10) (27 9) (28 9) (40) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xx xx x x x x xxx" "xxxx xxx x xxxx xxxxx xxxx x x x x xxxxx" "xxxx xxx x xxxxx xxxxx xxx x x x x xxxxx" "xxxx xxx x xxxx xxxxx xxxx xxx x x xxxx" "xx xx x x x xxx xx x xxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxx xxxxxx xxxxx" "xxxxxxxxxxxx xxxxxxxxx xxxxx" "xxxxxxxxxxx xxxxxxxx xxxxxx xxxxx" "xxxxxxxxxx xxxxxxxxxxxxxx xxxxx" "xxxxxxxxx xxxxxxxxxxxxxx xxxxx" "xxxxxxxx xxxxxxxxxxxxxx xxx xxxxx" "xxxxxxx xxxxxxxxxxxxxxx xxxx" "xxxxxx xxxxxxxxxxxxxxxx xxx xxxxx" "xxxxx xxxxxxxxxxxxxxxxxxxx xxxxx" "xxxx xxxxxxxxxxxxxxxxxxx xxxxx" "xxx xx xxxxxxxxxxxxxxxxxx xxxxx" "xxx xxxx xxxxxxxxxxxxxxx x xxxxx" "xxx xxxxx xxxxxxxxxxxxxx xx" "xxx xxxxxxx xxxxxxxxxxxxx x xxxxx" "xxxx xxxxxxx xxxxxxxxxxxxxx xxxxx" "xxxxx xxxxxxx xxxxxxxxxxxxx xxxxx" "xxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxx" "xxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxx" "xxxxxxxxxxxxxxxxx xxxxxxxxxx xxxxx" "xxxxxxxxxxxxxxxxxx xxxxxxxxx xxxxx" "xxxxxxxxxxxxxxxxxxx xxxxxxxx xxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxxx xxxxx" "xxxxxxxxxxxxxxxxxxxxx xxxxxx xxxxx" "xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990625-DRA (34)" (quote ((40) (16 17) (15 16) (5 8 15) (6 6 14) (6 4 13) (6 4 9 3) (6 4 8 3) (1 5 3 2 2 7 3) (2 4 2 3 3 7 4) (2 5 2 2 2 6 4) (2 4 2 2 2 5 5) (2 3 2 5 6) (3 3 2 4 6) (3 3 2 4 6) (3 3 2 5 6) (3 3 2 5 4 1) (3 3 2 5 4 1) (4 3 2 2 5 1) (4 3 5 1) (5 6 2) (6 6 2) (7 8 2) (11 8 2) (5 3) (4 4) (3 5) (2 6 12) (1 8 2 10) (1 7 1 4 8) (1 7 3 7 7) (1 6 5 8 5) (1 6 7 10 5) (1 6 7 11 4) (1 5 8 7 3) (1 5 10 8 2) (4 15 6 1) (4 17 6) (3 23 8) (2 27 7))) (quote ((36 2) (8 19 3) (9 14 4) (11 8 8) (12 5 9 1) (3 13 3 9 1) (4 10 2 8 2) (5 9 1 8 2) (8 3 1 7 3) (9 2 1 4 4) (15 1 1 3 5) (16 2 6) (5 2 2 8) (4 2 8) (3 2 9) (2 2 1 10) (1 4 11) (1 2 1 10) (1 9) (1 5) (1 4) (1 2 1 4) (1 4 6 4) (2 2 1 6 4) (3 2 5 3) (4 2 5 2) (5 3 1 5 2) (18 2 6 2) (18 2 1 6 2) (17 3 1 5 1) (16 4 2 5 1) (13 5 2 5) (11 6 3 6) (10 7 4 5) (8 11 4 5) (7 10 7 4) (6 10 9 3) (17 11 3) (16 16 2) (37 2))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx" "xxxxxxxx xxxxxxxxxxxxxxxxxxx xxx" "xxxxxxxxx xxxxxxxxxxxxxx xxxx " "xxxxxxxxxxx xxxxxxxx xxxxxxxx " "xxxxxxxxxxxx xxxxx xxxxxxxxx x" "xxx xxxxxxxxxxxxx xxx xxxxxxxxx x" "xxxx xxxxxxxxxx xx xxxxxxxx xx" "xxxxx xxxxxxxxx x xxxxxxxx xx" "xxxxxxxx xxx x xxxxxxx xxx" "xxxxxxxxx xx x xxxx xxxx" "xxxxxxxxxxxxxxx x x xxx xxxxx" "xxxxxxxxxxxxxxxx xx xxxxxx" "xxxxx xx xx xxxxxxxx" "xxxx xx xxxxxxxx" "xxx xx xxxxxxxxx" "xx xx x xxxxxxxxxx" "x xxxx xxxxxxxxxxx" "x xx x xxxxxxxxxx" "x xxxxxxxxx" "x xxxxx" "x xxxx" "x xx x xxxx" "x xxxx xxxxxx xxxx" "xx xx x xxxxxx xxxx" "xxx xx xxxxx xxx" "xxxx xx xxxxx xx" "xxxxx xxx x xxxxx xx" "xxxxxxxxxxxxxxxxxx xx xxxxxx xx" "xxxxxxxxxxxxxxxxxx xx x xxxxxx xx" "xxxxxxxxxxxxxxxxx xxx x xxxxx x" "xxxxxxxxxxxxxxxx xxxx xx xxxxx x" "xxxxxxxxxxxxx xxxxx xx xxxxx " "xxxxxxxxxxx xxxxxx xxx xxxxxx " "xxxxxxxxxx xxxxxxx xxxx xxxxx" "xxxxxxxx xxxxxxxxxxx xxxx xxxxx" "xxxxxxx xxxxxxxxxx xxxxxxx xxxx" "xxxxxx xxxxxxxxxx xxxxxxxxx xxx" "xxxxxxxxxxxxxxxxx xxxxxxxxxxx xxx" "xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx"))) (make-problem "19990628-DRA (35)" (quote ((40) (1 26 1) (2 20 2) (3 12 3) (4 4) (6 14 6) (9 14 9) (11 16 11) (11 16 11) (1 18 1) (1 7 20 7 1) (2 5 2 16 2 5 2) (3 3 3 14 3 3 3) (4 1 4 8 4 1 4) (8 7 6 7 8) (8 4 4 4 8) (8 4 2 4 8) (9 4 4 4 9) (10 16 10) (11 16 11) (11 16 11) (11 14 11) (12 14 12) (12 14 12) (12 14 12) (12 14 12) (12 14 12) (12 14 12) (12 14 12) (11 16 11) (11 1 8 1 11) (11 2 8 2 11) (11 3 8 3 11) (11 16 11) (11 16 11) (12 14 12) (13 1 1 13) (14 10 14) (15 15) (40))) (quote ((40) (1 7 29) (1 6 1 28) (1 5 2 27) (1 4 3 26) (1 4 3 26) (1 3 3 26) (2 3 2 27) (2 3 1 23) (2 2 5 22) (3 2 7 21) (3 2 6 7 5) (3 5 8 6 4) (3 8 1 14 5 3) (4 8 1 13 5 2) (4 8 1 12 3 1 1) (4 9 18 1 1) (4 10 18 1 1) (4 11 19 1 1) (4 31 1 1) (4 31 1 1) (4 11 19 1 1) (4 10 18 1 1) (4 9 18 1 1) (4 8 1 12 3 1 1) (4 8 1 13 5 2) (3 8 1 14 5 3) (3 5 8 6 4) (3 2 6 7 5) (3 2 7 21) (2 2 5 22) (2 3 1 23) (2 3 2 27) (1 3 3 26) (1 4 3 26) (1 4 3 26) (1 5 2 27) (1 6 1 28) (1 7 29) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "xx xxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxx" "xx xxx x xxxxxxxxxxxxxxxxxxxxxxx" "xx xx xxxxx xxxxxxxxxxxxxxxxxxxxxx" "xxx xx xxxxxxx xxxxxxxxxxxxxxxxxxxxx" "xxx xx xxxxxx xxxxxxx xxxxx" "xxx xxxxx xxxxxxxx xxxxxx xxxx" "xxx xxxxxxxx x xxxxxxxxxxxxxx xxxxx xxx" "xxxx xxxxxxxx x xxxxxxxxxxxxx xxxxx xx" "xxxx xxxxxxxx x xxxxxxxxxxxx xxx x x" "xxxx xxxxxxxxx xxxxxxxxxxxxxxxxxx x x" "xxxx xxxxxxxxxx xxxxxxxxxxxxxxxxxx x x" "xxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxx x x" "xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x x" "xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x x" "xxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxx x x" "xxxx xxxxxxxxxx xxxxxxxxxxxxxxxxxx x x" "xxxx xxxxxxxxx xxxxxxxxxxxxxxxxxx x x" "xxxx xxxxxxxx x xxxxxxxxxxxx xxx x x" "xxxx xxxxxxxx x xxxxxxxxxxxxx xxxxx xx" "xxx xxxxxxxx x xxxxxxxxxxxxxx xxxxx xxx" "xxx xxxxx xxxxxxxx xxxxxx xxxx" "xxx xx xxxxxx xxxxxxx xxxxx" "xxx xx xxxxxxx xxxxxxxxxxxxxxxxxxxxx" "xx xx xxxxx xxxxxxxxxxxxxxxxxxxxxx" "xx xxx x xxxxxxxxxxxxxxxxxxxxxxx" "xx xxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990703-NEP (36)" (quote ((13 13) (9 2 2 3 2) (3 7 1 1 1 1 1 1) (7 3 2 1 1 1 1 3) (14 1 1 1 1 1 3) (11 2 1 1 1 1 3) (3 10 1 1 1 1 1 3) (6 8 2 2 3 4) (7 7 13) (2 14 1) (4 28) (1 5 27) (3 5 26) (1 4 5 25) (2 4 31) (3 4 17 11) (1 2 5 15 1) (1 3 4 14 1 7 1) (1 3 18 3 1 1 1 2) (1 4 6 14 1 1 3) (2 9 2 13 5 3) (2 8 4 11 7 1 1) (2 8 2 7 1 6 2) (12 1 4 6 1 2 6 1) (13 1 1 5 1 4 2 2) (4 1 1 5 1 4 1 2 1) (9 4 4 5 2 2 1 4) (2 3 1 4 4 5 3 2 4) (1 1 1 1 4 4 5 5 1 2 1) (1 1 1 2 4 4 5 4 2 1 2) (1 1 1 1 4 4 5 3 4 4) (2 3 1 5 7 3 2 4 1) (9 4 4 7 3 4 2) () (32 7) (1 3 2 1 3 2 1 3 5 2 3) (1 2 2 1 1 1 1 1 1 1 1 2 2 1 2 2) (1 1 1 1 1 1 1 1 1 2 1 2 2 1 2 2) (1 3 1 3 1 1 1 2 1 2 2 1 4 2) (5 2 3 2 2 2 2 1 2 3))) (quote ((9 1 1 6) (2 5 7 1 1) (7 2 2 2 4 1) (10 1 3 1 3 1) (3 8 2 2 2 3) (6 6 7 1 1 1) (6 5 2 2 1 1 1) (2 12 1 3 1 2 1) (4 10 2 1 2 6) (6 9 1) (2 6 15 1 4) (4 10 10 2 2) (2 5 8 2 9 1 4) (1 3 6 6 4 8 2) (1 4 6 5 2 1 6) (1 4 13 1 2 5 1 2 1) (2 4 13 1 6 1 1 3) (2 5 13 2 5 1 2 1) (2 5 13 1 6 1 6) (3 18 1 1) (3 29 2 3) (3 29 1 4) (33 2) (33 6) (33 2 1) (1 1 1 1 1 7 5 2 1 3) (1 1 1 1 7 5 7 1 1 3) (9 5 5 1 6 2) (1 1 5 3 1 2 6 5) (9 6 1 1 4 2 2 6) (2 2 6 2 2 4 1 1 1 2) (1 5 1 6 1 4 2 1 3 2 2) (2 2 6 2 4 2 3) (9 6 1 7 1 1 1 6) (2 2 6 2 5 2 1 2 2 3) (1 5 1 6 1 3 4 3 1 1 1) (2 2 6 2 2 4 3 1 1 1) (9 6 4 2 2 3 2 1) (1 6 6 4 1 2 3 1 6) (1 6 7 3 2 6))) (quote (" xxxxxxxxx x x xxxxxx" " xx xxxxx xxxxxxx x x" " xxxxxxx xx xx xx xxxx x" " xxxxxxxxxx x xxx x xxx x" " xxx xxxxxxxx xx xx xx xxx" " xxxxxx xxxxxx xxxxxxx x x x " " xxxxxx xxxxx xx xx x x x " " xx xxxxxxxxxxxx x xxx x xx x" " xxxx xxxxxxxxxx xx x xx xxxxxx" " xxxxxx xxxxxxxxx x " " xx xxxxxx xxxxxxxxxxxxxxx x xxxx" " xxxx xxxxxxxxxx xxxxxxxxxx xx xx" " xx xxxxx xxxxxxxx xx xxxxxxxxx x xxxx" "x xxx xxxxxx xxxxxx xxxx xxxxxxxx xx " "x xxxx xxxxxx xxxxx xx x xxxxxx" "x xxxx xxxxxxxxxxxxx x xx xxxxx x xx x" "xx xxxx xxxxxxxxxxxxx x xxxxxx x x xxx " "xx xxxxx xxxxxxxxxxxxx xx xxxxx x xx x" "xx xxxxx xxxxxxxxxxxxx x xxxxxx x xxxxxx" "xxx xxxxxxxxxxxxxxxxxx x x " "xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx xxx" "xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxx x xxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx " "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx x" "x x x x x xxxxxxx xxxxx xx x xxx " " x x x x xxxxxxx xxxxx xxxxxxx x x xxx " "xxxxxxxxx xxxxx xxxxx x xxxxxx xx " "x x xxxxx xxx x xx xxxxxx xxxxx " "xxxxxxxxx xxxxxx x x xxxx xx xx xxxxxx" "xx xx xxxxxx xx xx xxxx x x x xx " "x xxxxx x xxxxxx x xxxx xx x xxx xx xx " "xx xx xxxxxx xx xxxx xx xxx " "xxxxxxxxx xxxxxx x xxxxxxx x x x xxxxxx" "xx xx xxxxxx xx xxxxx xx x xx xx xxx" "x xxxxx x xxxxxx x xxx xxxx xxx x x x " "xx xx xxxxxx xx xx xxxx xxx x x x " "xxxxxxxxx xxxxxx xxxx xx xx xxx xx x" "x xxxxxx xxxxxx xxxx x xx xxx x xxxxxx" "x xxxxxx xxxxxxx xxx xx xxxxxx"))) (make-problem "19990714bNEP (37)" (quote ((3 2 3) (2 1 2 1 2 1) (1 1 1 2 1 1) (1 2 2 2 2 1 2) (2 2 2 2 2 1 2 2) (2 1 2 2 2 2) (2 2 2 2 2) (2 2 2 2 2 1) (1 2 2 2 2 2) (2 2 2 2 2 2 2) (2 2 2 2 2 2 2 1) (1 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 1) (1 2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 2) (30) (1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1) (34) (1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1) (38) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1) (38) (1 32 1) (1 32 1) (1 32 1) (1 32 1) (1 10 1 1 1 10 1) (1 10 1 1 1 10 1) (1 10 2 2 2 10 1) (1 10 2 2 2 10 1) (2 10 10 2) (2 32 2) ())) (quote (() (4 2) (1 11) (5 1) (1 1 11) (2 1 8 2 11) (5 7 2 1 11) (2 2 1 1 11) (1 2 10 2 2 11) (5 1 9 1 1 11) (1 1 2 11) (1 11 2 1 11) (14 1 1 11) (1 2 2 11) (17 1 1 5 1) (1 14 1 2 5 1) (1 2 1 9 1) (1 18 1 1 5 2 1) (19 2 2 5 1) (2 1 1 5 2 1) (1 1 2 9 1) (20 2 1 5 1) (1 19 1 1 9 1) (1 2 2 5 2 1) (1 16 1 1 5 1) (17 1 2 5 1) (1 2 1 11) (15 1 1 11) (1 12 2 2 11) (2 1 1 11) (1 9 1 2 11) (12 2 1 11) (1 1 1 11) (8 2 2 11) (1 9 1 11) (2 1 2 11) (5 4 1) (2 1 11) (1 2 4 2) (5))) (quote #f)) (make-problem "19990722-DRA (38)" (quote ((40) (40) (2 3 1 3 1 2 16) (2 2 1 3 3 3 19) (2 1 1 1 3 3 3 2 5) (2 2 1 3 3 7 1 8 4) (2 3 2 3 3 1 10 3) (24 12 2) (22 13 2) (21 16 1) (7 4 7 17 1) (7 2 7 17 1) (7 1 1 6 16 1) (7 4 6 8 8 2) (6 1 2 1 5 7 7 2) (6 6 5 6 2 5 3) (6 2 2 5 6 3 4) (6 6 4 6 13) (7 2 2 3 5 13) (9 6 3 5 12) (8 9 1 4 12) (7 13 4 12) (7 7 6 3 12) (7 4 2 8 2 11) (4 3 2 10 2 11) (3 6 2 12 2 10) (3 1 2 1 12 2 10) (3 3 1 1 1 12 1 10) (3 5 2 2 3 7 1 9) (3 5 1 1 2 10 9) (3 4 5 1 1 10 9) (4 7 1 10 9) (15 2 9 11) (16 7 11) (2 8 4 7 10) (1 3 6 5 6 10) (5 6 12 9) (5 10 9) (1 3 34) (2 35))) (quote ((36 2) (35 2 1) (2 27 4) (3 21 3 4) (4 19 2 3 2 4) (5 18 1 4 3 2 1) (2 7 6 1 4 4 2) (10 4 2 1 4 8) (2 5 2 3 1 6 2 9) (6 5 3 2 8 10) (6 5 3 2 5 1 10) (6 4 2 3 5 4 10) (2 3 4 4 2 6 4) (14 7 2 4 1 3) (2 14 6 2 2 3 1 3) (2 15 3 4 1 1 1 3) (2 11 11 2 1 3) (2 16 11 1 2 2) (2 17 8 1 1 2) (12 2 7 4 1 1 2) (3 1 3 5 1 7 4 1 1 2) (2 1 1 2 9 1 12 1 2) (2 1 1 1 11 12 1 2) (2 1 1 1 13 14 2) (4 1 15 13 2) (6 16 12 2) (5 9 6 10 2) (4 9 4 4 9 2) (4 8 8 3 3 3 2) (4 9 9 1 2 1 2) (4 10 11 4 2) (4 11 23) (4 11 23) (4 11 23) (4 11 23) (5 10 23) (6 8 24) (7 3 25) (9 27) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx x" "xx xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx " "xxx xxxxxxxxxxxxxxxxxxxxx xxx xxxx " "xxxx xxxxxxxxxxxxxxxxxxx xx xxx xx xxxx " "xxxxx xxxxxxxxxxxxxxxxxx x xxxx xxx xx x" "xx xxxxxxx xxxxxx x xxxx xxxx xx" "xxxxxxxxxx xxxx xx x xxxx xxxxxxxx" "xx xxxxx xx xxx x xxxxxx xx xxxxxxxxx" "xxxxxx xxxxx xxx xx xxxxxxxx xxxxxxxxxx" "xxxxxx xxxxx xxx xx xxxxx x xxxxxxxxxx" "xxxxxx xxxx xx xxx xxxxx xxxx xxxxxxxxxx" "xx xxx xxxx xxxx xx xxxxxx xxxx" "xxxxxxxxxxxxxx xxxxxxx xx xxxx x xxx" "xx xxxxxxxxxxxxxx xxxxxx xx xx xxx x xxx" "xx xxxxxxxxxxxxxxx xxx xxxx x x x xxx" "xx xxxxxxxxxxx xxxxxxxxxxx xx x xxx" "xx xxxxxxxxxxxxxxxx xxxxxxxxxxx x xx xx" "xx xxxxxxxxxxxxxxxxx xxxxxxxx x x xx" "xxxxxxxxxxxx xx xxxxxxx xxxx x x xx" "xxx x xxx xxxxx x xxxxxxx xxxx x x xx" "xx x x xx xxxxxxxxx x xxxxxxxxxxxx x xx" "xx x x x xxxxxxxxxxx xxxxxxxxxxxx x xx" "xx x x x xxxxxxxxxxxxx xxxxxxxxxxxxxx xx" "xxxx x xxxxxxxxxxxxxxx xxxxxxxxxxxxx xx" "xxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxx xx" "xxxxx xxxxxxxxx xxxxxx xxxxxxxxxx xx" "xxxx xxxxxxxxx xxxx xxxx xxxxxxxxx xx" "xxxx xxxxxxxx xxxxxxxx xxx xxx xxx xx" "xxxx xxxxxxxxx xxxxxxxxx x xx x xx" "xxxx xxxxxxxxxx xxxxxxxxxxx xxxx xx" "xxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxxx xxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxxxx xxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990801-NEP (39)" (quote ((1 1) (1 1 1 1) (1 1 1 1) (1 1) (1 1) (1 1) (1 1 2 1 1) (1 2 1 1 2 1) (1 3 1 1 3 1) (1 1 3 2 3 1 1) (1 1 2 2 1 1) (1 2 1 1 2 1) (1 2 6 2 1) (1 2 2 2 1) (1 1 1 1) (3 2 2 3) (1 1 1 1) (1 12 1) (5 4 5) (40) (40) (40) (40) (1 1) (40) (1 1 1 1 1 1) (1 1 1 1 1 1) (7 5 5 7) (1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 5 5 1 1 1) (7 1 1 7) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (7 1 1 7) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (7 5 5 7) (1 1 1 2 2 2 2 1 1 1) (1 1 1 2 8 2 1 1 1) (7 2 2 2 2 7))) (quote ((21) (5 1 1 1 1 1 1) (2 1 5 1 4 4 1) (1 20 1 1 1 1 1 1) (2 1 5 4 4 4) (5 1 1 1 1 1 1) (4 16) (4 1) (4 1) (4 1 2) (4 1 3) (4 1 3 2) (4 1 1 1 1) (6 4 1 10) (2 2 1 4 1 1 1 1) (2 2 3 4 1 3 2) (1 3 1 4 1 3) (4 1 4 1 2) (2 1 1 6 1 1) (1 1 2 6 1 1) (1 1 2 6 1 1) (2 1 1 6 1 1) (4 1 4 1 2) (1 3 1 4 1 3) (2 2 3 4 1 3 2) (2 2 1 4 1 1 1 1) (6 4 1 10) (4 1 1 1 1) (4 1 3 2) (4 1 3) (4 1 2) (4 1) (4 1) (4 16) (5 1 1 1 1 1 1) (2 1 5 4 4 4) (1 20 1 1 1 1 1 1) (2 1 5 1 4 4 1) (5 1 1 1 1 1 1) (21))) (quote #f)) (make-problem "19990807-DRN (40)" (quote ((2) (1) (2) (3) (2) (1) (2) (3) (2) (1) (2) (3) (2) () (2) (1 2 4) (5 2 1 1) (2 2 2 1 1 1) (2 2 2 1 1 1 2) (1 2 2 2 1 1 1) (2 2 1 1 1 2) (2 1 1 2) (12 4) (1 2) (1 2) (2 3 1 4) (1 3 1 1 1 6) (2 3 3 1 15) (3 1 17) (3 1 20 2) (13 19 4) (15 16 6) (17 11 7) (19 6 10) (22 4 12) (23 13) (27 12) (28 11) (29 10) (30 9))) (quote ((13 1 2 1 1 1 10) (1 3 3 3 5 1 3 10) (1 1 1 2 1 10) (2 3 1 14) (2 3 1 14) (2 1 14) (2 1 10) (2 1 3 10) (2 1 1 1 10) (3 3 10) (2 10) (18) (10) (9) (9) (1 8) (2 8) (3 7) (4 7) (6 6) (6 6) (4 6 6) (2 1 1 8 5) (2 1 1 1 10 4) (1 1 1 14 4) (2 1 1 13 4) (1 1 1 2 10 4) (1 1 2 8 1 3) (4 6 3 2) (6 4 1) (5 6) (5 7) (5 7) (4 8) (2 9) (1 9) (10) (10) (11) (11))) (quote #f)) (make-problem "19990808bVAC (41)" (quote ((5 5 5) (3 2 3 3 2 3) (2 2 2 1 1 2 2 2) (2 2 2 9 2 2 2) (1 2 1 3 3 1 2 1) (2 3 2 2 2 1 1 2 2 2 3 2) (1 2 1 1 2 2 1 1 2 1) (1 2 2 4 1 4 2 1 1) (1 2 2 1 4 4 1 1 1 2 1) (1 2 1 1 5 5 1 2 2 1 1) (1 2 2 1 4 4 2 1 2 1) (1 1 1 1 4 5 1 1 1 1) (1 2 2 2 4 4 2 1 2 1 1) (2 1 1 1 5 1 5 2 2 1 2) (1 2 1 1 13 1 1 1 2 1) (1 1 3 3 5 3 3 1 1) (2 1 2 5 1 3 1 6 1 2) (1 1 1 3 1 1 1 1) (2 2 7 1 1 8 1 2) (2 3 7 3 2) (3 3 4 4 3 1 3) (5 4 4 3 1) (2 6 6 1 2) (2 3 4 5 4 3 3) (2 2 4 3 4 1 1 2) (1 2 6 5 6 3 1) (2 2 4 5 5 4 2 2) (1 1 4 3 3 4 1 1) (1 2 6 5 5 6 2 1) (1 1 4 5 5 5 4 1 1) (2 3 3 3 3 4 2) (7 5 5 5 7) (2 5 5 5 5 2) (2 3 3 3 3 2) (3 5 5 5 5 3) (7 5 5 5 7) (6 3 3 3 6) (7 5 5 5 7) (33) (2 2))) (quote ((9) (3 4) (2 1 2 3 5) (2 1 2 3 2 3 2 4) (1 1 2 3 2 2 2 1 6) (2 2 3 1 2 3 8) (1 1 2 3 3 3 2 4 5) (1 2 2 2 2 1 2 4 4) (1 2 3 1 1 1 2 6 5) (2 2 3 2 2 1 1 4 5 2) (2 3 3 1 1 1 1 4 3 1) (2 4 1 1 1 6 5 2) (3 3 1 1 1 4 5 5) (3 7 1 1 4 3 4) (9 1 6 5 5) (17 4 5 5 2) (1 8 2 4 3 3 1) (2 2 2 2 6 5 5 3) (2 1 1 1 4 2 5 5 6) (1 1 1 5 1 3 3 4) (2 1 1 1 4 2 5 5 6) (2 2 2 2 6 5 5 3) (1 8 2 4 3 3 1) (17 4 5 5 2) (9 1 6 5 5) (3 7 1 1 4 3 4) (3 3 1 1 1 4 5 5) (2 3 1 1 1 1 6 5 2) (2 3 1 1 1 1 1 1 1 4 3 1) (2 2 2 2 1 1 1 1 4 5 2) (1 2 2 1 13 6 5) (1 2 1 1 1 1 1 1 4 4) (1 1 1 2 1 3 8 4 5) (2 2 2 2 3 1 2 3 9) (1 1 1 1 2 2 2 2 1 6) (2 1 2 1 2 2 3 2 4) (2 1 1 3 5) (3 4) (9) ())) (quote #f)) (make-problem "19990831-DAH (42)" (quote ((40) (40) (40) (14 16) (12 12) (10 12 10) (8 16 9) (7 20 8) (6 22 7) (5 24 6) (5 25 5) (4 34) (4 13 2 2 2 4) (3 12 2 2 2 5) (3 12 2 2 2 2 3) (3 32 3) (3 10 2 2 2 4 2) (2 9 2 2 2 6 2) (2 9 2 2 2 7 2) (2 34 2) (2 7 2 2 2 9 2) (2 6 2 2 2 9 2) (2 4 2 2 2 10 3) (3 32 3) (3 2 2 2 2 12 3) (5 2 2 2 12 3) (4 2 2 2 13 4) (34 4) (5 25 5) (6 24 5) (7 22 6) (8 20 7) (9 16 8) (10 12 10) (12 12) (14 14) (40) (40) (40) (40))) (quote ((40) (40) (17 17) (13 4 15) (11 12 13) (9 13 1 11) (8 14 1 10) (7 15 2 9) (6 14 1 3 8) (6 14 3 3 7) (5 13 2 4 6) (5 14 2 5 6) (4 12 1 3 6 5) (4 12 3 1 8 5) (3 11 2 3 6 4) (3 11 2 2 7 4) (3 9 1 3 2 7 4) (3 8 3 1 3 8 4) (3 7 2 3 1 9 4) (3 7 2 2 3 7 4) (3 7 3 2 2 7 4) (3 9 1 3 2 7 4) (3 8 3 1 3 8 4) (3 7 2 3 1 9 4) (4 7 2 2 11 4) (4 6 3 2 11 4) (4 8 1 3 12 5) (4 6 3 1 12 5) (5 5 2 14 6) (5 4 2 13 6) (6 3 3 14 7) (7 3 1 14 7) (8 2 15 8) (9 1 14 9) (10 1 13 10) (12 12 12) (14 4 14) (16 18) (40) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxx" "xxxxxxxxx xxxxxxxxxxxxx x xxxxxxxxxxx" "xxxxxxxx xxxxxxxxxxxxxx x xxxxxxxxxx" "xxxxxxx xxxxxxxxxxxxxxx xx xxxxxxxxx" "xxxxxx xxxxxxxxxxxxxx x xxx xxxxxxxx" "xxxxxx xxxxxxxxxxxxxx xxx xxx xxxxxxx" "xxxxx xxxxxxxxxxxxx xx xxxx xxxxxx" "xxxxx xxxxxxxxxxxxxx xx xxxxx xxxxxx" "xxxx xxxxxxxxxxxx x xxx xxxxxx xxxxx" "xxxx xxxxxxxxxxxx xxx x xxxxxxxx xxxxx" "xxx xxxxxxxxxxx xx xxx xxxxxx xxxx" "xxx xxxxxxxxxxx xx xx xxxxxxx xxxx" "xxx xxxxxxxxx x xxx xx xxxxxxx xxxx" "xxx xxxxxxxx xxx x xxx xxxxxxxx xxxx" "xxx xxxxxxx xx xxx x xxxxxxxxx xxxx" "xxx xxxxxxx xx xx xxx xxxxxxx xxxx" "xxx xxxxxxx xxx xx xx xxxxxxx xxxx" "xxx xxxxxxxxx x xxx xx xxxxxxx xxxx" "xxx xxxxxxxx xxx x xxx xxxxxxxx xxxx" "xxx xxxxxxx xx xxx x xxxxxxxxx xxxx" "xxxx xxxxxxx xx xx xxxxxxxxxxx xxxx" "xxxx xxxxxx xxx xx xxxxxxxxxxx xxxx" "xxxx xxxxxxxx x xxx xxxxxxxxxxxx xxxxx" "xxxx xxxxxx xxx x xxxxxxxxxxxx xxxxx" "xxxxx xxxxx xx xxxxxxxxxxxxxx xxxxxx" "xxxxx xxxx xx xxxxxxxxxxxxx xxxxxx" "xxxxxx xxx xxx xxxxxxxxxxxxxx xxxxxxx" "xxxxxxx xxx x xxxxxxxxxxxxxx xxxxxxx" "xxxxxxxx xx xxxxxxxxxxxxxxx xxxxxxxx" "xxxxxxxxx x xxxxxxxxxxxxxx xxxxxxxxx" "xxxxxxxxxx x xxxxxxxxxxxxx xxxxxxxxxx" "xxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxx" "xxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19990902-TUC (43)" (quote ((19 3 2 12) (19 3 1 12) (18 1 2 1 12) (18 1 2 2 12) (17 2 1 2 12) (17 2 17) (16 3 16) (16 3 16) (15 3 15) (8 3 8) (8 5 3 5 8) (8 5 2 5 8) (3 3 4 2 4 8) (1 1 3 3 1 3 8) (1 1 3 1 1 1 8) (1 3 2 8) (6 3 6) (4 5 4) (2 6 2) (6) (5) (1 5 2) (3 1 5 4) (5 3 2) (7 2 4 3) (8 1 4 1) (8 2 3 4 3) (8 4 4 4) (8 5 1 5 8) (8 5 3 5 8) (8 3 8) (15 3 15) (16 3 16) (16 3 16) (17 2 17) (12 1 2 17) (12 5 1 18) (12 2 1 19) (15 3 19) (12 3 19))) (quote ((12 3 19) (15 3 18) (13 3 1 18) (15 2 1 17) (12 1 2 17) (17 2 1 16) (16 3 16) (16 3 15) (9 3 9) (9 5 3 4 9) (9 4 3 4 9) (9 4 1 3 9) (9 3 3 4 1) (9 2 2 4 1 1) (9 4 1 1) (8 2 3 1) (6 3 6) (4 5 4) (2 6 2) (6) (6) (2 6 3) (4 5 4) (6 5 6) (3 5 8) (1 7 9) (2 6 2 2 9) (4 3 3 9) (9 4 1 4 9) (9 4 3 4 9) (9 5 2 5 9) (9 3 9) (16 2 16) (16 3 16) (17 2 17) (17 2 17) (18 1 1 12) (18 1 1 1 1 12) (19 2 1 1 12) (19 2 3 12))) (quote ("xxxxxxxxxxxx xxx xxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxx xxx x xxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxx xx x xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxx x xx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxx xx x xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxx" "xxxxxxxxx xxx xxxxxxxxx" "xxxxxxxxx xxxxx xxx xxxx xxxxxxxxx" "xxxxxxxxx xxxx xxx xxxx xxxxxxxxx" "xxxxxxxxx xxxx x xxx xxxxxxxxx" "xxxxxxxxx xxx xxx xxxx x " "xxxxxxxxx xx xx xxxx x x " "xxxxxxxxx xxxx x x " "xxxxxxxx xx xxx x " "xxxxxx xxx xxxxxx" "xxxx xxxxx xxxx" "xx xxxxxx xx" " xxxxxx " " xxxxxx " "xx xxxxxx xxx" "xxxx xxxxx xxxx" "xxxxxx xxxxx xxxxxx" " xxx xxxxx xxxxxxxx" "x xxxxxxx xxxxxxxxx" "xx xxxxxx xx xx xxxxxxxxx" " xxxx xxx xxx xxxxxxxxx" "xxxxxxxxx xxxx x xxxx xxxxxxxxx" "xxxxxxxxx xxxx xxx xxxx xxxxxxxxx" "xxxxxxxxx xxxxx xx xxxxx xxxxxxxxx" "xxxxxxxxx xxx xxxxxxxxx" "xxxxxxxxxxxxxxxx xx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxx xx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxx xx xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxx x x xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxx x x x x xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxx xx x x xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxx xx xxx xxxxxxxxxxxx"))) (make-problem "19990905-ARE (44)" (quote ((1) (1) (1 17) (1 19) (1 20) (1 1 3) (1 7 3) (1 5 1 1 3) (1 1 1 1 3) (2 2 1 2 3) (2 3 1 3) (2 5 17 3) (1 5 19 3) (6 21 3) (4 23 3) (2 27) (28) (1 1) (2 23 1) (1 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 1 1 1) (2 31 2) () (4 3 3 1 3 3 3 4) (2 1 1 1 1 1 1 1 1 1 2) (3 1 2 3 3 1 1 1 3) (2 1 1 1 1 1 1 1 1 2) (4 1 3 1 1 1 3 1 4))) (quote ((2 1) (1 3) (5) (3 3 1 1) (3 3 2 2 1 1) (2 4 1 1 1) (1 5 16) (2 5 3 1) (1 5 2 1) (1 4 3 1 12 1 1) (1 1 4 1 12 1 5) (2 1 5 1 1 1) (3 1 6 1 1) (6 6 1 1 5) (3 1 9 1 12 1 1 1 1) (3 1 6 1 12 1 1 1) (3 1 6 1 1) (3 1 1 6 1 1 4) (3 4 6 1 1 1 1) (3 6 1 12 1 4) (3 6 1 12 1) (3 6 1 1 5) (3 6 1 1 1 1) (3 6 1 1 3) (3 6 1 12 1) (3 6 1 12 1 5) (3 6 1 1 1 1) (3 6 1 1 5) (3 6 1 1) (3 5 1 12 1 1) (3 4 1 12 1 5) (3 3 1 1 1) (3 2 1) (12 1) (9 15 1 1) (6 1 1 1) (1 1) (5) (1 3) (2 1))) (quote #f)) (make-problem "19990916aCAR (45)" (quote ((22 8 6) (3 17 6 5) (2 17 6 4) (3 8 15 3) (11 14 3) (12 15 3) (29 4) (7 14 7 5) (6 12 7 6) (7 4 9 17) (13 26) (14 24) (3 12 23) (2 12 13 7) (3 15 11 6) (11 8 11 7) (10 8 18) (11 10 1 15) (24 1 7 4) (22 1 7 3) (24 6 2) (23 2 4 2) (31 1 1 1) (30 2 2 1 1) (5 1 4 14 8) (4 1 3 12 9) (4 2 2 2 8 10) (5 3 3 3 8 11) (6 3 4 3 5 12) (3 1 5 14) (2 2 3 2 6 15) (2 2 3 2 5 12 3) (2 2 3 2 4 3 3 2 2) (3 4 2 4 2 5) (5 6 11 8) (4 1 2 1 23) (1 1 1 3 1 1 23) (4 1 4 1 1 23) (5 1 6 1 23) (4 1 4 1 22))) (quote ((37 2) (36 3) (2 10 16 3 3) (1 8 14 3 2 3) (2 10 11 2 3 1 3) (24 1) (8 15 5) (7 15 2) (8 15 4 5 3) (24 3 5 4) (16 9 5 4) (4 10 12 3 3) (3 3 6 12 3 2 2) (4 5 14 2 3 1 3) (11 12 1) (11 12 5) (12 12 2) (13 15 4 4) (13 15 4 5) (14 11 3 6) (15 10 6 6) (1 6 7 15 6) (4 7 1 11 1 6) (1 6 10 1 8 2 6) (17 1 9 2 6) (19 7 2 7) (18 2 6 3 7) (28 3 7) (3 21 4 7) (2 18 6 6) (1 15 9 5) (5 6 11 5) (4 4 10 6) (5 4 8 7) (1 10 9 7) (2 11 8 8) (3 13 7 8) (20 10 7) (22 9 6) (24 7 6))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxx" "xx xxxxxxxxxx xxxxxxxxxxxxxxxx xxx xxx" "x xxxxxxxx xxxxxxxxxxxxxx xxx xx xxx" "xx xxxxxxxxxx xxxxxxxxxxx xx xxx x xxx " "xxxxxxxxxxxxxxxxxxxxxxxx x " "xxxxxxxx xxxxxxxxxxxxxxx xxxxx" "xxxxxxx xxxxxxxxxxxxxxx xx " "xxxxxxxx xxxxxxxxxxxxxxx xxxx xxxxx xxx " "xxxxxxxxxxxxxxxxxxxxxxxx xxx xxxxx xxxx" "xxxxxxxxxxxxxxxx xxxxxxxxx xxxxx xxxx" "xxxx xxxxxxxxxx xxxxxxxxxxxx xxx xxx" "xxx xxx xxxxxx xxxxxxxxxxxx xxx xx xx" "xxxx xxxxx xxxxxxxxxxxxxx xx xxx x xxx " "xxxxxxxxxxx xxxxxxxxxxxx x " "xxxxxxxxxxx xxxxxxxxxxxx xxxxx" "xxxxxxxxxxxx xxxxxxxxxxxx xx " "xxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxx xxxx " "xxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxx xxxxx" "xxxxxxxxxxxxxx xxxxxxxxxxx xxx xxxxxx" "xxxxxxxxxxxxxxx xxxxxxxxxx xxxxxx xxxxxx" "x xxxxxx xxxxxxx xxxxxxxxxxxxxxx xxxxxx" " xxxx xxxxxxx x xxxxxxxxxxx x xxxxxx" "x xxxxxx xxxxxxxxxx x xxxxxxxx xx xxxxxx" "xxxxxxxxxxxxxxxxx x xxxxxxxxx xx xxxxxx" "xxxxxxxxxxxxxxxxxxx xxxxxxx xx xxxxxxx" "xxxxxxxxxxxxxxxxxx xx xxxxxx xxx xxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxx xxxxxxx" "xxx xxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxx" "xx xxxxxxxxxxxxxxxxxx xxxxxx xxxxxx" "x xxxxxxxxxxxxxxx xxxxxxxxx xxxxx" " xxxxx xxxxxx xxxxxxxxxxx xxxxx" " xxxx xxxx xxxxxxxxxx xxxxxx" " xxxxx xxxx xxxxxxxx xxxxxxx" "x xxxxxxxxxx xxxxxxxxx xxxxxxx" "xx xxxxxxxxxxx xxxxxxxx xxxxxxxx" "xxx xxxxxxxxxxxxx xxxxxxx xxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxx xxxxxxx" "xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx xxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxx xxxxxx"))) (make-problem "19990927-BBA (46)" (quote ((2 1) (2 2) (2 3) (2 3) (2 4) (2 4) (2 2 4) (2 2 4) (3 2 2 4) (6 2 2 5) (3 3 2 2 5) (2 3 2 2 2 3) (3 2 2 2 2 3) (2 4 2 2 2 4) (2 2 5 2 2 6) (2 3 4 17) (4 2 4 9 7) (5 2 6 2 2 4) (10 8 2 2 4) (9 2 2 4 2 4) (8 2 2 5 4) (7 2 2 5 3) (7 2 2 2 14) (10 2 2 14) (4 4 2 1 3) (3 5 2 2) (4 3 4 2 2) (7 5 3) (8 8 6) (12 6 7) (10 20) (11 4 15) (14 4 8) (14 4 6) (19 6) (24) (21) (18) (14) (10))) (quote ((4) (7) (12) (3 14) (3 15) (2 15) (3 7 8) (2 6 8) (2 8 10) (2 4 13) (3 3 4 9) (2 3 4 8) (3 3 2 10) (3 3 13) (7 4 7) (5 3 7) (24 3 8) (24 12) (2 12) (19 4 7) (16 1 2 6) (4 2 2 3 7) (4 2 1 10) (21 10) (21 10) (5 2 2 3 6) (17 2 5) (15 3 6) (5 2 9) (5 2 8) (5 2 7) (6 3 7) (6 3 6) (2 3 4 5) (2 5 2 5) (2 4 6) (3 4) (2 3) (2 1) (2 1))) (quote (" xxxx " " xxxxxxx " " xxxxxxxxxxxx " " xxx xxxxxxxxxxxxxx " " xxx xxxxxxxxxxxxxxx " " xx xxxxxxxxxxxxxxx " " xxx xxxxxxx xxxxxxxx " " xx xxxxxx xxxxxxxx " " xx xxxxxxxx xxxxxxxxxx " " xx xxxx xxxxxxxxxxxxx " " xxx xxx xxxx xxxxxxxxx " " xx xxx xxxx xxxxxxxx " " xxx xxx xx xxxxxxxxxx " " xxx xxx xxxxxxxxxxxxx " " xxxxxxx xxxx xxxxxxx " " xxxxx xxx xxxxxxx " "xxxxxxxxxxxxxxxxxxxxxxxx xxx xxxxxxxx " "xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx " " xx xxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxx xxxx xxxxxxx" " xxxxxxxxxxxxxxxx x xx xxxxxx" " xxxx xx xx xxx xxxxxxx" " xxxx xx x xxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxx" " xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxx" " xxxxx xx xx xxx xxxxxx" " xxxxxxxxxxxxxxxxx xx xxxxx" " xxxxxxxxxxxxxxx xxx xxxxxx" " xxxxx xx xxxxxxxxx " " xxxxx xx xxxxxxxx " " xxxxx xx xxxxxxx " " xxxxxx xxx xxxxxxx " " xxxxxx xxx xxxxxx " " xx xxx xxxx xxxxx " " xx xxxxx xx xxxxx " " xx xxxx xxxxxx " " xxx xxxx " " xx xxx " " xx x " " xx x "))) (make-problem "19991008-LLO (47)" (quote ((6 6 2) (16 1 1) (18 1 4) (5 12 6) (5 14 4) (1 4 15 2) (3 4 15 1 1) (5 4 4 1 1 2) (3 4 2 2 1 3) (2 2 5 1 9 1 1 4) (1 6 3 3 4 1) (1 4 3 2 3 1) (3 2 1 3 2 2 2 1) (5 2 1 2 1 1 2 1 1 2) (4 1 1 2 1 1 2 1 3) (5 4 2 1 2 1 2 1 4) (6 2 3 1 3 4 1) (1 3 1 5 1 1 5 3 1) (5 5 2 5 2 1) (3 2 14 1 2) (4 2 4 4 4 1 3) (8 4 4 1 4) (4 2 12 4 1) (1 3 2 10 3 1) (8 10 2 1) (3 1 2 8 1 2) (4 1 2 6 1 3) (7 1 4) (1 6 1 6 1) (3 1 3 8 1) (3 1 1 1 3 3 4) (7 3 2 2 1) (9 3 2 1 2 1 2) (4 2 2 7 4 4 1 4) (1 3 2 3 7 1 1 2 1 1 1 1) (8 3 1 1 1 1 1) (7 3 2 2 3 1 1 1 3) (8 7 5 1 1 1 1 2 1) (3 8 1 1 1 1 1 1 1) (3 6 6 9))) (quote ((1 1 5 5 5 4 2) (4 5 5 4 5 5) (4 30) (4 7 5 3 10) (1 1 1 5 1 3 3 2 4) (1 5 1 3 4 3) (7 1 6 3 7) (10 2 1 4 3 1 2 1) (13 2 1 2 1 3 2) (13 2 1 2 2 2) (5 3 2 1 1 2) (4 4 1 1 1) (3 6 7 1) (3 4 1 7 3 2) (8 2 7 5 3) (7 1 4 8 3 3 3) (6 2 2 9 2 2 2) (7 1 1 2 6 2 2 2) (7 1 1 2 2 8 2 2) (7 1 1 3 8 2 2) (7 1 1 1 3 9 3 3) (7 1 1 1 2 6 3 5) (7 1 2 2 6 2 3) (6 1 3 9 2 3) (5 2 8 2 2 1) (4 2 7 2 1 1) (2 3 7 7) (2 6 1) (8) (2) (2) (8) (2 20 1 1) (1 2 1 3 3 3 12) (1 4 3 3 3 1 1) (1 4 3 3 3 1 1 1) (4 4 3 3 2 2 3) (2 20 2 2 1) (2 1 1) (7))) (quote #f)) (make-problem "19991011-VAL (48)" (quote ((2) (2) (10) (16) (18) (18) (1 1) (3 6 3) (2 1 2 2 1 2) (1 2 4 2 1) (1 1 6 1 1) (1 6 1) (1 6 1) (1 4 1) (1 1) (3 6 3) (2 1 2 2 1 2) (1 2 4 2 1) (1 1 1 1 1 1) (1 1 1 1) (1 1 1 1) (1 4 1) (1 1) (3 6 3) (2 1 2 2 1 2) (1 2 4 2 1) (1 1 1 1 1 1) (1 1 1 1) (1 1 1 1) (1 4 1) (1 1) (1 1) (18) () () (4 5 4 4) (1 1 1 1 1 1) (4 1 1 1 4) (1 1 1 1 1) (4 1 4 1))) (quote (() () () () () () () (1 1 1) (1 1 1) (1 1 1) (1 1 1 3 1) (29 1 1 1) (3 1 1 1 1) (3 1 1 3) (3 1) (4 2 2 2 1 1) (4 2 2 2 1 1) (4 2 3 2 3 2 3 1 5) (4 1 5 1 1 1 1 1 1 1 1) (6 1 5 1 1 1 1 1 1 1 1) (6 1 5 1 1 1 1 1 1 1) (4 1 5 1 1 1 1 1 1 1 5) (4 2 3 2 3 2 3 1 1 1) (4 2 2 2 1 1 1) (4 2 2 2 1 5) (3 1) (3 1 5) (3 1 1 1) (29 1 1) (1 1 1 3) (1 1 1) (1 1 1) (1 1 1) () () () () () () ())) (quote #f)) (make-problem "19991103-BDH (49)" (quote ((12 23) (11 22) (10 21) (10 20) (9 20) (10 18) (10 11) (11 10) (12 10) (14 5 4) (14 4 4) (9 3 5 4 5) (9 1 9 4) (10 2 1 2) (11 3 7 1) (11 4 9 1) (10 5 9 1) (9 5 10) (8 7 10) (8 8 9) (8 1 5 2 9) (8 2 4 1 1 9) (8 3 4 1 2 10) (8 4 3 2 2 10) (8 5 3 2 2 10) (8 2 2 3 2 3 10) (9 2 1 5 4 10) (9 2 2 3 5 10) (10 2 2 6 10) (10 3 11 11) (11 11 11) (10 15 1 11) (8 13 1 11) (8 5 1 11) (9 3 3 2 1 11) (10 5 2 1 11) (19 2 2 11) (20 2 2 12) (21 4 13) (22 14))) (quote ((40) (40) (40) (40) (40) (40) (40) (40) (18 6 6) (4 6 4 5 4 1 5) (2 5 2 7 1 3 4) (1 4 7 4 4) (3 1 2 2 4 4) (2 1 2 1 3 5) (1 5 2 6) (1 2 3 6) (1 7 4 6) (1 1 10 4 5) (2 1 11 4 1 4) (3 1 12 4 2 3) (5 1 12 4 2 2) (5 1 2 3 4 2 1) (6 1 2 2 4 2) (6 1 2 2 4 1) (6 2 6 5 1) (6 2 2 6 2) (6 2 5 2 1) (6 2 7 6 2) (6 1 2 8 3) (7 3 11) (11 5 18) (11 26) (11 26) (11 26) (10 26) (9 1 25) (13 25) (13 24) (14 23) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxx xxxxxx xxxxxx" "xxxx xxxxxx xxxx xxxxx xxxx x xxxxx" "xx xxxxx xx xxxxxxx x xxx xxxx" "x xxxx xxxxxxx xxxx xxxx" " xxx x xx xx xxxx xxxx" " xx x xx x xxx xxxxx" " x xxxxx xx xxxxxx" " x xx xxx xxxxxx" " x xxxxxxx xxxx xxxxxx" "x x xxxxxxxxxx xxxx xxxxx" "xx x xxxxxxxxxxx xxxx x xxxx" "xxx x xxxxxxxxxxxx xxxx xx xxx" "xxxxx x xxxxxxxxxxxx xxxx xx xx" "xxxxx x xx xxx xxxx xx x" "xxxxxx x xx xx xxxx xx " "xxxxxx x xx xx xxxx x " "xxxxxx xx xxxxxx xxxxx x " "xxxxxx xx xx xxxxxx xx " "xxxxxx xx xxxxx xx x" "xxxxxx xx xxxxxxx xxxxxx xx" "xxxxxx x xx xxxxxxxx xxx" "xxxxxxx xxx xxxxxxxxxxx" "xxxxxxxxxxx xxxxx xxxxxxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxx x xxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19991109-TMA (50)" (quote ((35) (1 1 1 1 17) (1 4 2 1 4 20) (1 1 1 1 2 1 16 2) (1 2 1 1 2 4 2 19) (1 1 2 1 1 20) (40) (1 20) (40) (14 1 1 1 1 1 1) (14 1 1 1 2 1 2 1 2 1 4) (14 3 1 2 1 2 1 1 2) (14 3 1 2 1 2 1 1 2 4) (7 6 3 1 1 1 2 1 1) (7 32) (6 5 1) (1 1 1 1 1 26) (2 6 1 4 1 2) (1 8 1 6 1 1 1 2) (3 9 2 1 1 1 2) (4 10 4 6 3 2) (1 2 2 1 6 2 4 1 2) (1 1 1 26) (4 2) (1 26) (2 6 2 2 1 3) (3 1 11) (7 9 1 1 3 1 1 2) (7 8 1 1 2 7 3) (7 7 2 2 3 5 4) (13 1 3 3 5) (11 11 1 5) (9 4 1 1 6 5) (7 2 3 1 1 1 10 3) (5 4 2 1 6 2 2) (4 5 5 3 5 2 1) (2 3 4 1 5 3) (1 20 3) () (6 22 5))) (quote ((21 1 2 11 1) (1 1 8 1 3 1 10 1) (1 3 1 9 2 9 1) (1 1 1 1 8 2 9 1) (1 1 1 9 2 8 1) (7 8 7 1) (1 1 7 7) (1 1 3 5 3) (1 1 2 7 6) (1 1 1 8 5 1 1) (7 9 2 5 4 1) (1 1 8 2 4 4 1) (1 1 1 1 9 2 4 5 1) (1 1 1 1 8 1 3 1 3 3 1 1) (1 3 1 1 1 5 1 2 3 1 2 1) (7 1 5 13 3 3 1) (1 1 2 4 12 8 1) (1 3 1 1 5 11 2 7 1) (1 1 1 1 1 1 10 1 1 1 1 1) (1 1 1 7 1 5 1 1 1 1 1 1) (9 1 1 5 1 1 1 1) (9 3 1 1 1 1 2 1 7 1) (9 3 1 1 4 6 1 1 1 1) (9 1 7 1 1 1 1 1 1) (15 1 1 1 2 3 1 1 1) (9 1 1 1 1 1 3 10 1) (9 3 1 1 1 1 1 2 2 5 1) (9 3 1 7 1 3 1 5 1) (9 1 3 3 1 4 7 1) (15 3 3 1 1 3 6 1) (9 1 7 1 1 3 3 1) (9 1 3 1 1 1 3 3 2) (9 1 2 1 1 1 1 1 4 2) (9 1 1 1 1 1 1 1 2) (15 7 4 1) (8 1 1 1 1 3 3 1 1) (2 5 1 1 1 1 1 1 1 2 4 4 1) (6 1 1 1 1 1 1 6 3 1) (6 3 1 9 8 2 1) (20 9 1))) (quote ("xxxxxxxxxxxxxxxxxxxxx x xx xxxxxxxxxxx x" "x x xxxxxxxx x xxx x xxxxxxxxxx x" "x xxx x xxxxxxxxx xx xxxxxxxxx x" "x x x x xxxxxxxx xx xxxxxxxxx x" "x x x xxxxxxxxx xx xxxxxxxx x" "xxxxxxx xxxxxxxx xxxxxxx x" "x x xxxxxxx xxxxxxx " "x x xxx xxxxx xxx " "x x xx xxxxxxx xxxxxx " "x x x xxxxxxxx xxxxx x x" "xxxxxxx xxxxxxxxx xx xxxxx xxxx x" "x x xxxxxxxx xx xxxx xxxx x" "x x x x xxxxxxxxx xx xxxx xxxxx x" "x x x x xxxxxxxx x xxx x xxx xxx x x" "x xxx x x x xxxxx x xx xxx x xx x" "xxxxxxx x xxxxx xxxxxxxxxxxxx xxx xxx x" "x x xx xxxx xxxxxxxxxxxx xxxxxxxx x" "x xxx x x xxxxx xxxxxxxxxxx xx xxxxxxx x" "x x x x x x xxxxxxxxxx x x x x x" "x x x xxxxxxx x xxxxx x x x x x x" "xxxxxxxxx x x xxxxx x x x x" "xxxxxxxxx xxx x x x x xx x xxxxxxx x" "xxxxxxxxx xxx x x xxxx xxxxxx x x x x" "xxxxxxxxx x xxxxxxx x x x x x x" "xxxxxxxxxxxxxxx x x x xx xxx x x x" "xxxxxxxxx x x x x x xxx xxxxxxxxxx x" "xxxxxxxxx xxx x x x x x xx xx xxxxx x" "xxxxxxxxx xxx x xxxxxxx x xxx x xxxxx x" "xxxxxxxxx x xxx xxx x xxxx xxxxxxx x" "xxxxxxxxxxxxxxx xxx xxx x x xxx xxxxxx x" "xxxxxxxxx x xxxxxxx x x xxx xxx x" "xxxxxxxxx x xxx x x x xxx xxx xx " "xxxxxxxxx x xx x x x x x xxxx xx " "xxxxxxxxx x x x x x x x xx " "xxxxxxxxxxxxxxx xxxxxxx xxxx x " " xxxxxxxx x x x x xxx xxx x x" " xx xxxxx x x x x x x x xx xxxx xxxx x" " xxxxxx x x x x x x xxxxxx xxx x" " xxxxxx xxx x xxxxxxxxx xxxxxxxx xx x" " xxxxxxxxxxxxxxxxxxxx xxxxxxxxx x"))) (make-problem "19991118-CIT (51)" (quote ((24 15) (1 17 15) (1 12 3 3 10) (3 8 3 1 1 1 1 3 4) (3 9 1 2 1 1 1 1 2 1 5) (3 10 3 1 1 1 1 3 6) (3 9 1 2 1 1 1 1 2 1 5) (13 3 1 1 1 1 3 4) (1 12 3 3 10) (1 5 3) (3 7 3) (3 14 3 3 10) (1 6 1 1 1 1 3 4) (1 6 3 1 1 1 1 1 2 1 5) (13 3 1 1 1 1 1 3 6) (1 6 3 1 1 1 1 1 2 1 5) (1 6 1 1 1 1 3 4) (1 16 3 3 10) (1 9 3) (1 5 3) (1 12 3 3 10) (13 3 1 1 1 1 4) (14 1 2 1 1 1 1 1 3 4) (15 3 1 1 1 1 1 3 4) (14 1 2 1 1 1 1 1 3 4) (1 6 3 1 1 1 1 4) (1 12 3 3 10) (3 19 15) (3 35) (3 35) (3 35) (40) (1 1 4 1 1 2) (1 1 4 1 1 6) (1 2 1 10 3 2 1 3) (1 1 10 3 2 1 3) (1 1 6 3 1 6) (1 2 1 6 3 1 2) (40) (40))) (quote ((40) (1 5 2 1 4 5 2) (1 5 2 1 4 5 2) (1 1 1 2 4 1 1 3) (1 1 1 2 4 1 1 3) (1 5 2 1 2 4 5 2) (1 5 2 1 2 4 5 2) (40) (32 2) (32 2) (32 2 2) (32 2 2) (9 7 12 2 2) (3 3 1 1 1 1 3 6 2 2) (4 1 2 1 3 1 2 1 15) (5 3 1 3 1 3 16) (4 1 2 1 3 1 2 1 15) (3 3 1 1 1 1 3 14) (9 7 12 6) (2 5 6) (2 5 2) (9 7 12 2) (3 1 1 1 1 6 6) (3 3 1 1 3 1 1 3 6 6) (12) (3 3 1 1 3 1 1 3 6 2) (3 1 1 1 1 6 2) (9 7 12 2 2) (2 5 2 2) (2 5 2) (9 7 12 2) (3 3 1 1 3 1 1 14) (4 1 2 2 1 2 1 3 6 2) (5 3 3 3 1 3 6 2) (4 1 2 2 1 2 1 3 6 1 1 2) (3 3 1 1 3 1 1 6 1 1 2) (9 7 12 1 1 2) (32 4 2) (40) (40))) (quote ("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "x xxxxx xx x xxxx xxxxx xx" "x xxxxx xx x xxxx xxxxx xx" "x x x xx xxxx x x xxx" "x x x xx xxxx x x xxx" "x xxxxx xx x xx xxxx xxxxx xx" "x xxxxx xx x xx xxxx xxxxx xx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx xx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx xx" "xxxxxxxxx xxxxxxx xxxxxxxxxxxx xx xx" "xxx xxx x x x x xxx xxxxxx xx xx" "xxxx x xx x xxx x xx x xxxxxxxxxxxxxxx" "xxxxx xxx x xxx x xxx xxxxxxxxxxxxxxxx" "xxxx x xx x xxx x xx x xxxxxxxxxxxxxxx" "xxx xxx x x x x xxx xxxxxxxxxxxxxx" "xxxxxxxxx xxxxxxx xxxxxxxxxxxx xxxxxx" "xx xxxxx xxxxxx" "xx xxxxx xx" "xxxxxxxxx xxxxxxx xxxxxxxxxxxx xx" "xxx x x x x xxxxxx xxxxxx" "xxx xxx x x xxx x x xxx xxxxxx xxxxxx" " xxxxxxxxxxxx" "xxx xxx x x xxx x x xxx xxxxxx xx" "xxx x x x x xxxxxx xx" "xxxxxxxxx xxxxxxx xxxxxxxxxxxx xx xx" "xx xxxxx xx xx" "xx xxxxx xx" "xxxxxxxxx xxxxxxx xxxxxxxxxxxx xx" "xxx xxx x x xxx x x xxxxxxxxxxxxxx" "xxxx x xx xx x xx x xxx xxxxxx xx" "xxxxx xxx xxx xxx x xxx xxxxxx xx" "xxxx x xx xx x xx x xxx xxxxxx x x xx" "xxx xxx x x xxx x x xxxxxx x x xx" "xxxxxxxxx xxxxxxx xxxxxxxxxxxx x x xx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx xx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"))) (make-problem "19991119aKHO (52)" (quote ((19 5 8) (11 3 3 7) (10 2 1 5 1 5 6) (9 3 2 2 1 1 2 6) (9 1 2 2 2 2 2 6) (9 2 4 2 2 2 3 7) (5 4 3 2 2 2 3 1 4) (4 4 4 2 2 2 2 2 3) (3 2 2 4 2 1 1 1 2 3 3) (3 2 3 3 1 1 1 3 4 2) (3 4 4 3 1 1 2 4 2 1) (4 4 3 2 1 2 4 4 1) (2 1 4 13 3 2 2 1) (1 5 6 3 5 1) (2 5 1 1 1 2 4 2) (2 3 1 1 3 3 1 1 5 1) (2 5 1 2 2 2 3 1) (1 5 1 1 2 2 1 2 2) (2 4 2 3 1 1 2 3) (2 5 1 1 1 1 1 2 3) (1 4 1 2 2 1 2 1 2 3) (1 3 1 1 2 1 3 2) (1 3 1 3 1 2 1 1 4 2) (4 2 2 1 1 1 5 2) (1 2 2 2 3 2 6 2) (2 1 2 2 3 2 2 2 4 2) (5 1 3 3 2 1 1 1 2 2) (6 1 1 2 3 2 2 2 2 2) (8 2 2 2 2 2 2 4 2) (7 3 3 1 1 1 5 2) (7 2 4 1 2 1 2 6 2) (8 1 3 3 2 2 2 8 2) (9 3 3 2 2 1 9 3) (9 2 1 2 3 1 9 3) (10 1 3 2 2 3 4) (13 2 1 2 3 1 5) (14 5 3 12) (22 3 11) (22 3 9) (21 1 1 1 8))) (quote ((14 4 16) (13 2 15) (12 3 14) (8 1 5 5 14) (7 1 1 2 2 14) (6 3 2 1 2 1 1 13) (6 5 2 2 2 2 12) (6 1 2 2 2 1 2 1 9) (6 1 2 1 1 2 2 2 2 8) (3 3 2 1 1 1 2 3 5 6) (2 2 3 1 1 1 2 2 2 2 5) (1 4 2 1 1 2 1 3 4 5) (1 1 3 1 2 2 2 4 5 6) (1 2 3 2 1 1 1 2 1 4 1 4) (1 4 3 4 2 1 3 2 2 3) (2 3 2 3 5 5 3) (3 3 2 2 1 1 2 2 5 4) (2 4 1 2 2 1 1 3 2 5) (1 2 5 2 6 2 4) (6 2 3 5 4) (1 6 1 1 2 2 4 5) (1 2 2 1 1 2 4 1 2) (1 6 1 1 1 2 3 4) (6 1 1 1 2 1 1) (1 2 2 1 3 4) (2 7 2 2 2 2 2 5) (4 3 2 1 1 1 1 1 1 1 2 1 1 3) (2 2 2 1 3 1 2 1) (1 3 3 3 1 1 1 3 1 1) (1 3 4 2 2 1 6 3) (1 2 4 1 1 1 8 2) (4 4 3 1 8 3) (1 3 1 3 5 2 7 4) (2 1 2 4 5 6 4) (6 15 4 4) (6 2 15 2 5) (7 7 6 6) (9 3 1 3 8) (10 1 24) (16 23))) (quote #f)) (make-problem "19991202-DAN (53)" (quote ((13) (27) (18 21) (18 21) (4 8 4 2 12 5) (4 3 2 4 2 10 5) (4 1 1 4 2 6 6) (4 5 3 6) (4 6 4 7) (4 6 4 7) (5 7 4 6) (5 2 4 3 2 2 5) (11 3 3 1 1 4) (6 2 3 2 3) (6 1 4 2 3 3) (6 5 2 1 4) (5 6 3 1 5) (4 11 4 1 1 1 6) (4 11 5 3 7) (1 4 7) (4 11) (4 12 4 7) (5 12 4 6) (5 12 4 6) (5 11 3 6) (5 11 3 5) (5 11 3 5) (5 11 2 4) (5 10 2 3) (6 10 2 3) (5 10 1 3) (5 10 3) (5 10 3) (3 5 3) (3 4 3) (3 4 3) (4 5 3) (4 4 3) (5 5 3) (5 5 3))) (quote ((15) (28) (17 20) (17 20) (2 9 20) (3 4 11 4) (4 1 4 2) (5 1 2 4) (4 3 2 8) (3 2 2 13) (5 2 2 13) (4 2 2 13 2) (3 3 3 13 4) (3 4 4 20) (11 5 20) (18 20) (18 17) (18 14) (1 12) (18) (19 10) (3 6 4 9) (4 3 3 6) (5 2 3) (5) (6 2) (6 1 1) (7 1 1) (7 5) (7 1 1) (7 1 1) (6 2) (6 2 1) (5 2 3 4) (4 5 4 7) (12 5 19) (20 19) (20 19) (20 6) (13))) (quote (" xxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx" " xx xxxxxxxxx xxxxxxxxxxxxxxxxxxxx" " xxx xxxx xxxxxxxxxxx xxxx" " xxxx x xxxx xx" " xxxxx x xx xxxx " " xxxx xxx xx xxxxxxxx " " xxx xx xx xxxxxxxxxxxxx " " xxxxx xx xx xxxxxxxxxxxxx " " xxxx xx xx xxxxxxxxxxxxx xx" " xxx xxx xxx xxxxxxxxxxxxx xxxx" " xxx xxxx xxxx xxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxx xxxxx xxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx" " xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx " " x xxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxx " " xxxxxxxxxxxxxxxxxxx xxxxxxxxxx " " xxx xxxxxx xxxx xxxxxxxxx " " xxxx xxx xxx xxxxxx " " xxxxx xx xxx " " xxxxx " " xxxxxx xx " " xxxxxx x x " "xxxxxxx x x " "xxxxxxx xxxxx " "xxxxxxx x x " "xxxxxxx x x " "xxxxxx xx " "xxxxxx xx x " "xxxxx xx xxx xxxx " "xxxx xxxxx xxxx xxxxxxx " "xxxxxxxxxxxx xxxxx xxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxxxxxxxx xxxxxx " "xxxxxxxxxxxxx "))) (make-problem "19991203-DAN (54)" (quote ((3 3 1 1 4) (1 1 1 2 1 1 1) (1 1 1 1 1 1 1 1 3) (1 1 1 1 2 1 1) (3 3 1 1 4) (5) (4 2 1 1 3 7) (1 1 1 1 1 1 1 2 6) (3 1 1 1 1 3 11) (1 4 1 1 1 1 11) (3 1 1 4 1 1 11) (6) (19 7) (6) (7) (7) (6) (7) (6) (10 6) (14 5) (16 5) (18 5) (26) (25) (25) (24) (24) (23) (24) (23) (22) (5 4 4) (5 4 4) (5 4 4) (6 4 4) (7 4 4) (8 4 4) (7 4 4) ())) (quote ((5 2 1 1 1) (1 1 1 1 1 1 2) (1 1 1 1 1 1 2) (3 1 2 1 3) (1 3) (1 1 4 1 4) (5 1 1 1 4) (1 1 1 1 1 4) (4 1 5) (5 1 6) (1 5 1 7) (1 1 1 8) (1 1 1 11) (5 5 1 11) (1 11) (5 5 1 17) (1 1 1 1 1 19) (1 1 1 1 1 20) (5 1 2 1 20) (13 2) (1 13) (1 13) (1 13) (2 13) (4 13) (5 18) (2 3 20) (6 19) (6 19) (8 11 2) (11 10) (12 8) (13 8) (22) (18) (15) (12) (7) () ())) (quote #f))))) diff --git a/pkgs/games/paint-by-numbers/problems/misc b/pkgs/games/paint-by-numbers/problems/misc deleted file mode 100644 index e08080610e..0000000000 --- a/pkgs/games/paint-by-numbers/problems/misc +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Misc") (define problems (list (make-problem "Happy Happy Joy Joy" (quote ((5) (9) (2 7) (4 8) (4 7) (6 7) (7 7) (7 6) (7 5) (5 1 4) (4 2 3) (2 4 1) (9) (5))) (quote ((4) (8) (10) (12) (1 8 1) (2 5 2) (4 3 3) (5 4) (7 5) (8 3) (9 1) (10 1) (10) (8) (4))) (quote (" xxxx " " xxxxxxxx " " xxxxxxxxxx " " xxxxxxxxxxxx " " x xxxxxxxx x " "xx xxxxx xx" "xxxx xxx xxx" "xxxxx xxxx" "xxxxxxx xxxxx" "xxxxxxxx xxx" " xxxxxxxxx x " " xxxxxxxxxx x " " xxxxxxxxxx " " xxxxxxxx " " xxxx "))) (make-problem "Solver Breaker" (quote ((1) (2 2) (1) (2) (2 2) (1))) (quote ((1) (2 2) (1 1) (1) (2 2) (1))) (quote ("UUUUUU" "UUUUUU" "UUUUUU" "UUUUUU" "UUUUUU" "UUUUUU")))))) diff --git a/pkgs/games/paint-by-numbers/raw-problems/allowed-email b/pkgs/games/paint-by-numbers/raw-problems/allowed-email deleted file mode 100644 index 9b0d68596f..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/allowed-email +++ /dev/null @@ -1,61 +0,0 @@ -; -*- Scheme -*- - -("snordmey@dayton.net" - "jtraub@dragoncat.net" - ("snicker@tmbg.org" "e0gb258s@mail.erin.utoronto.ca") - "mattingly@bigfoot.com" - "jennifer.forman@umb.edu" - "karen.hoover@bigfoot.com" - "sssstree@ix.netcom.com" - "we_bakers_3@earthlink.net" - "bbart@cs.sfu.ca" - "jonesjk@thegrid.net" - "rrichard@lexitech.ca" - "helena.montauban@auroraenergy.com.au" - "barblane@ionsys.com" - ("rman@mishkei.org.il" "m5rammy@maale5.com") - "nmbauer@sprynet.com" - "ncfrench@aol.com" - ("blumbergk@auhs.edu" "km29@drexel.edu") - "jjl@stanford.edu" - "disneyfan13@hotmail.com" - "adjusting@yahoo.com" - "richard@condor-post.com" - "lady_tabitha@yahoo.com" - "vaa@psulias.psu.edu" - "kimbhall@yahoo.com" - "kcottam@cusa.com" - "karganov@hotmail.com" - "jdmaynard@excite.com" - "mnemoy@gameworks.com" - "arrelless@jayco.net" - "azisi@skiathos.physics.auth.gr" - "whoaleo@hotmail.com" - "tucker1999@earthlink.net" - "bergles@yahoo.com" - "elisabeth.springfelter@lanab.amv.se" - "ewhaynes@mit.edu" - "mjcarroll@ccnmail.com" - ("dahu@chez.com" "dahu@netcourrier.com") - "joy@dcs.gla.ac.uk" - "piobst@wam.umd.edu" - "dani681@aol.com" - ("pixel@bga.com" "Talzhemir pixel@realtime.net") - "hkittredge@hotmail.com" - "allraft@sccoast.net" - "karlvonl@geocities.com" - ("ailsa@worldonline.nl" "alisa@euronet.nl") - ("nievmelody@aol.com" "Carey Willis N8NRG@hotmail.com") - "citragreen@hotmail.com" - "dhalayko@cgocable.net" - "jontive1@elp.rr.com" - "hublan@rocketmail.com" - "barbridgway@compuserve.com" - "mijoy@mailcity.com" - "joostdh@sci.kun.nl" - ("steven.paradise@m.cc.utah.edu" "gossamer_kwaj@hotmail.com") - "williamson@proaxis.com" - "vacko_6@hotmail.com" - "jojess@earthlink.net" - - ) diff --git a/pkgs/games/paint-by-numbers/raw-problems/build-final.rkt b/pkgs/games/paint-by-numbers/raw-problems/build-final.rkt deleted file mode 100644 index 93ed6d020a..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/build-final.rkt +++ /dev/null @@ -1,72 +0,0 @@ -#lang racket - -#| - -This script constructs the contents of the problems directory -from the solutions directory. This process merely consists of -reading in each file in the solutions directory (based on the -directory file) and rewriting it into the format described -in ... - -|# - -(module test racket/base) - -;; shrink-file : string -> string -(define (shrink-file filename) - (printf "shrinking ~a..." filename) - (flush-output) - (let ([shrunk (shrink-set (call-with-input-file (build-path 'up "solution-sets" filename) read))]) - (call-with-output-file (build-path 'up "problems" filename) - (lambda (port) - (write shrunk port) - (newline port)))) - (printf "done\n")) - -;; shrink-set sexp[set] -> sexp[set] -(define (shrink-set set) - (match set - [`(unit - (import paint-by-numbers:problem^) - (export paint-by-numbers:problem-set^) - (define set-name ,set-name) - (define problems (list ,problems ...))) - `(unit - (import paint-by-numbers:problem^) - (export paint-by-numbers:problem-set^) - (define set-name ,set-name) - (define problems (list ,@(map shrink-problem problems))))])) - -;; shrink-problem : sexp[problem] -> sexp[problem] -(define (shrink-problem problem) - (match problem - [`(make-problem ,name ,rows ,cols ',solution) - `(make-problem ,name ,rows ,cols ',(shrink-solution solution))])) - -;; shrink-soution : (union #f (vectorof (vectorof (union 'on 'off 'unknown)))) -;; -> (union #f (listof string)) -;; produces the data in a representation that is much smaller when written -(define (shrink-solution soln) - (and soln - (map (lambda (line) - (apply string (map (lambda (x) - (case x - [(on) #\x] - [(off) #\space] - [(unknown) #\U])) - (vector->list line)))) - (vector->list soln)))) - - -;; erase old contents of the solutions directory -(for-each - (lambda (file) (when (file-exists? (build-path 'up "problems" file)) - (delete-file (build-path 'up "problems" file)))) - (directory-list (build-path 'up "problems"))) - -(copy-file (build-path 'up "solution-sets" "directory") - (build-path 'up "problems" "directory")) - -(provide main) -(define (main) - (for-each shrink-file (call-with-input-file (build-path 'up "problems" "directory") read))) diff --git a/pkgs/games/paint-by-numbers/raw-problems/build-hattori.rkt b/pkgs/games/paint-by-numbers/raw-problems/build-hattori.rkt deleted file mode 100644 index 5e3614178f..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/build-hattori.rkt +++ /dev/null @@ -1,166 +0,0 @@ -#lang racket/gui - -;;; these come from: -;;; http://www.ask.ne.jp/~hattori/puzzle/menu.html -;;; We must cite him in the game somewhere... - -(define pixel-size 10) - -(define (main-n n) - (let ([grid (calculate-grid (build-path 'up "hattori" (format "~a.gif" n)))]) - (display-grid grid) - (pretty-print (build-problem n grid)) - (newline) - (eprintf "\n\n"))) - -(define (calculate-grid filename) - (eprintf "reading ~a\n" filename) - (let* ([bitmap (make-object bitmap% filename)] - [_ (unless (send bitmap ok?) - (error 'bad-bitmap "name: ~a" filename))] - [bitmap-dc (make-object bitmap-dc% bitmap)] - [raw-width (send bitmap get-width)] - [raw-height (send bitmap get-height)] - [image-width raw-width] - [image-height (get-puzzle-height bitmap-dc raw-height)] - [grid-x-start (get-grid-start bitmap-dc #t)] - [grid-y-start (get-grid-start bitmap-dc #f)] - [puzzle-width (- image-width grid-x-start)] - [puzzle-height (- image-height grid-y-start)] - [new-bitmap-width (floor (/ (- puzzle-width 1) pixel-size))] - [new-bitmap-height (floor (/ (- puzzle-height 1) pixel-size))]) - - (begin - (eprintf "size of picture: ~a x ~a\n" raw-width raw-height) - (eprintf " size of image: ~a x ~a\n" image-width image-height) - (eprintf "grid-start (~a, ~a)\n" grid-x-start grid-y-start) - (eprintf "size of puzzle: ~a x ~a\n" puzzle-width puzzle-height)) - (reverse - (let loop ([j new-bitmap-height]) - (cond - [(zero? j) null] - [else - (cons - (reverse - (let loop ([i new-bitmap-width]) - (cond - [(zero? i) null] - [else - (let ([pixel-value - (if (black-pixel? - bitmap-dc - (floor - (+ grid-x-start - (* pixel-size (+ i -1 1/2)))) - (floor - (+ grid-y-start - (* pixel-size (+ j -1 1/2))))) - 'x - 'o)]) - ;(eprintf "(~a, ~a) is ~a\n" i j pixel-value) - (cons pixel-value - (loop (- i 1))))]))) - (loop (- j 1)))]))))) - -(define (display-grid grid) - (display "+" (current-error-port)) - (for-each (lambda (x) (display "-" (current-error-port))) (car grid)) - (display "+" (current-error-port)) - (newline (current-error-port)) - - (for-each - (lambda (row) - (display "|" (current-error-port)) - (for-each - (lambda (i) - (if (eq? i 'x) - (display "#" (current-error-port)) - (display " " (current-error-port)))) - row) - (display "|" (current-error-port)) - (newline (current-error-port))) - grid) - (display "+" (current-error-port)) - (for-each (lambda (x) (display "-" (current-error-port))) (car grid)) - (display "+" (current-error-port)) - (newline (current-error-port))) - -(define tmp-color (make-object color%)) - -(define (colored-pixel? value) - (lambda (bitmap-dc x y) - (send bitmap-dc get-pixel x y tmp-color) - (= value - (send tmp-color red) - (send tmp-color green) - (send tmp-color blue)))) - -(define white-pixel? (colored-pixel? 255)) -(define black-pixel? (colored-pixel? 0)) - -(define (get-puzzle-height bitmap-dc raw-height) - (let loop ([i raw-height]) - (cond - [(white-pixel? bitmap-dc 0 (- i 1)) - (loop (- i 1))] - [else i]))) - -(define (get-grid-start bitmap-dc x?) - (let loop ([i 0]) - (cond - [(if x? - (white-pixel? bitmap-dc i 0) - (white-pixel? bitmap-dc 0 i)) - (loop (+ i 1))] - [else i]))) - - -(define (on-off->blocks l) - (let loop ([l l] - [in? #f] - [size 0]) - (cond - [(null? l) (if (= size 0) - null - (list size))] - [else - (let ([on? (eq? (car l) 'x)]) - (cond - [(and in? on?) - (loop (cdr l) - on? - (+ size 1))] - [(and in? (not on?)) - (cons size - (loop (cdr l) - #f - 0))] - [(and (not in?) on?) - (loop (cdr l) - #t - 1)] - [(and (not in?) (not on?)) - (loop (cdr l) - #f - 0)]))]))) - -(define (transpose l) (apply map list l)) - -(define (build-problem n on-off-lists) - (list (format "Hattori ~a" n) - (map on-off->blocks on-off-lists) - (map on-off->blocks (transpose on-off-lists)) - on-off-lists)) - -(provide main) -(define (main) - (call-with-output-file "raw-hattori.rkt" - (lambda (port) - (parameterize ([current-output-port port]) - (printf "`(\n") - (let loop ([n 1]) - (when (<= n 139) - (main-n n) - (loop (+ n 1)))) - (printf ")"))) - #:exists 'truncate)) diff --git a/pkgs/games/paint-by-numbers/raw-problems/build-rows-cols.rkt b/pkgs/games/paint-by-numbers/raw-problems/build-rows-cols.rkt deleted file mode 100644 index c04aa1ded1..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/build-rows-cols.rkt +++ /dev/null @@ -1,93 +0,0 @@ -#lang racket -(require racket/gui - racket/class) -(define argv (current-command-line-arguments)) - -(module test racket/base) - -(when (equal? (vector) argv) - (error 'build-rows-cols.rkt - "expected an image file on the command-line")) - -(define image (vector-ref argv 0)) -(eprintf "processing ~a\n" image) - -(define bitmap (make-object bitmap% image)) -(when (send bitmap is-color?) - (eprintf "expected a monochrome bitmap -- all non-black spaces will be considered white\n")) - -(newline (current-error-port)) - -(define bitmap-dc (make-object bitmap-dc% bitmap)) - -(define on-off-lists - (let ([color (make-object color%)]) - (let loop ([i (send bitmap get-height)] - [ans null]) - (cond - [(zero? i) ans] - [else - (loop - (- i 1) - (cons - (let loop ([j (send bitmap get-width)] - [ans null]) - (cond - [(zero? j) ans] - [else - (send bitmap-dc get-pixel (- j 1) (- i 1) color) - (loop (- j 1) - (cons - (if (and (= 0 (send color red)) - (= 0 (send color blue)) - (= 0 (send color green))) - 'on - 'off) - ans))])) - ans))])))) - -(define (on-off->blocks l) - (let loop ([l l] - [in? #f] - [size 0]) - (cond - [(null? l) (if (= size 0) - null - (list size))] - [else - (let ([on? (eq? (car l) 'on)]) - (cond - [(and in? on?) - (loop (cdr l) - on? - (+ size 1))] - [(and in? (not on?)) - (cons size - (loop (cdr l) - #f - 0))] - [(and (not in?) on?) - (loop (cdr l) - #t - 1)] - [(and (not in?) (not on?)) - (loop (cdr l) - #f - 0)]))]))) - -(define (transpose l) (apply map list l)) - -(for-each - (lambda (l) - (for-each - (lambda (i) (display (if (eq? i 'on) "#" " ") (current-error-port))) - l) - (newline (current-error-port))) - on-off-lists) -(newline (current-error-port)) - -(define rows (map on-off->blocks on-off-lists)) -(define cols (map on-off->blocks (transpose on-off-lists))) - -(write (list image rows cols)) -(newline) diff --git a/pkgs/games/paint-by-numbers/raw-problems/build-solution-sets.rkt b/pkgs/games/paint-by-numbers/raw-problems/build-solution-sets.rkt deleted file mode 100644 index 7aed452b6c..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/build-solution-sets.rkt +++ /dev/null @@ -1,290 +0,0 @@ -#lang racket - -#| - -Shell script to read in the ../problems/raw-*.rkt file and produce -the files in the ../solution-sets subdirectory via John's solver. - -This file must produce code that evaluates to a list of problem -structs. The problem struct should have four fields: a string, a col, -a row and a (union #f solution) - -The col and row type specs are in sig.rkt and the solution type is: - - (vectorof (vectorof (union 'on 'off 'unknown))) - -|# - - -(define argv (current-command-line-arguments)) - -(require racket/gui - "raw-hattori.rkt" - (prefix-in solve: "../solve.rkt")) - -(if (equal? (vector) argv) - (printf "pass any command line argument to skip the solver\n\n") - (printf "skipping the solver\n")) - -(define memory-limit (* 1024 1024 400)) ;; in bytes (500 megs) - -(define memory-frame% - (class frame% - (define/augment (can-close?) #f) - (super-instantiate ()))) - -(define memory-frame (parameterize ([current-eventspace (make-eventspace)]) - (make-object memory-frame% "memory stats frame" #f 500 50))) -(define memory-hp (make-object horizontal-panel% memory-frame)) -(define memory-vp (make-object vertical-panel% memory-hp)) -(define memory-text (make-object text%)) -(define memory-ec (make-object editor-canvas% memory-vp memory-text '(hide-hscroll hide-vscroll))) -(define memory-gauge (make-object gauge% #f 10000 memory-vp)) -(define memory-canvas (make-object canvas% memory-hp)) -(define memory-on-bitmap (make-object bitmap% (build-path (collection-path "icons") "recycle.png"))) -(define memory-off-bitmap (make-object bitmap% - (send memory-on-bitmap get-width) - (send memory-on-bitmap get-height))) - -(let ([memory-off-bitmap-dc (make-object bitmap-dc% memory-off-bitmap)]) - (send memory-off-bitmap-dc clear) - (send memory-off-bitmap-dc set-bitmap #f)) - -(register-collecting-blit memory-canvas 0 0 - (send memory-on-bitmap get-width) (send memory-on-bitmap get-height) - memory-on-bitmap memory-off-bitmap) -(send memory-canvas min-width (send memory-on-bitmap get-width)) -(send memory-canvas min-height (send memory-on-bitmap get-height)) -(send memory-canvas stretchable-width #f) -(send memory-canvas stretchable-height #f) -(send memory-ec set-line-count 1) -(send memory-text hide-caret #t) -(define (format-memory-txt use) - (format "~a megs (~a bytes)" (bytes->megs use) use)) -(define (bytes->megs n) (floor (/ n 1024 1024))) -(define (update-memory-display) - (let ([use (current-memory-use)]) - (send memory-text lock #f) - (send memory-text begin-edit-sequence) - (send memory-text erase) - (send memory-text insert (format-memory-txt use)) - (send memory-text end-edit-sequence) - (send memory-text lock #t) - (send memory-gauge set-value (min 10000 (floor (* 10000 (/ use memory-limit))))))) -(update-memory-display) -(send memory-frame show #t) - -(define problems-dir (collection-path "games" "paint-by-numbers")) - -(define hattori-sets - (let* ([set-size 30] - [hattori-count (length raw-hattori)]) - (let o-loop ([n 0]) - (cond - [(= n (- hattori-count 1)) null] - [else - (let ([first n] - [last (if (< (+ n set-size) hattori-count) - (+ n set-size) - (- hattori-count 1))]) - (let i-loop ([i first] - [set null]) - (cond - [(= i last) (cons - (list (format "Hattori ~a - ~a" (+ first 1) last) - (format "h~a-~a" (+ first 1) last) - (reverse set)) - (o-loop last))] - [else (i-loop (+ i 1) - (cons (list-ref raw-hattori i) - set))])))])))) - -(define (build-set name output-file input-file) - (list name - output-file - (call-with-input-file (build-path problems-dir input-file) (compose eval read)))) - -(require "raw-problems.rkt") -(define games-set (list "Games Magazine" "games" raw-problems)) - -(require "raw-misc.rkt") -(define misc-set (list "Misc" "misc" raw-misc)) - -(require "raw-kajitani.rkt") -(define kajitani-sets raw-kajitani) - -(define sets (append (list games-set) - (list misc-set) - kajitani-sets - hattori-sets)) - -(define (sum-list l) (apply + l)) -(define (sum-lists ls) (sum-list (map sum-list ls))) - -(define board #f) -(define known 0) -(define solving-progress-output void) - -(define (set-entry i j nv) - (when (and (eq? (get-entry i j) 'unknown) - (not (eq? nv 'unknown))) - (solving-progress-output)) - (vector-set! (vector-ref board i) j nv)) - -(define (get-entry i j) - (vector-ref (vector-ref board i) j)) - -(define progress-bar-max 64) -(define guide-string ".......:.......|.......:.......|.......:.......|.......:........") - -(define (build-progress-outputer max cleanup) - (let ([counter 0] - [dots-printed 0]) - (lambda () - (set! counter (+ 1 counter)) - (cond - [(= counter max) - - (cleanup) - - ;; dots-printed should always equal progress-bar-max - (let loop ([n (- progress-bar-max dots-printed)]) - (cond - [(zero? n) (void)] - [else (display ".") - (loop (- n 1))])) - (newline)] - [else - (let ([dots-to-print (floor (- (* progress-bar-max (/ counter (- max 1))) dots-printed))]) - '(printf "~spercentage: ~a ~a ~a ~a\n" - cleanup - dots-to-print - counter - (exact->inexact (/ counter max)) - (exact->inexact (* progress-bar-max (/ counter max)))) - (set! dots-printed (+ dots-to-print dots-printed)) - (let loop ([n dots-to-print]) - (cond - [(zero? n) (void)] - [else - (display ".") - (loop (- n 1))])) - (flush-output))])))) - -(define (setup-progress max cleanup) - (display guide-string) - (newline) - (build-progress-outputer max cleanup)) - -(define (solve name rows cols) - (cond - [(equal? argv (vector)) - (printf "Solving ~s; memory limit ~a\n" - name (format-memory-txt memory-limit)) - (let ([row-count (length rows)] - [col-count (length cols)]) - (set! board - (build-vector col-count - (lambda (i) (make-vector row-count 'unknown)))) - (set! known 0) - (set! solving-progress-output (build-progress-outputer - (* row-count col-count) - void))) - (letrec ([done (make-semaphore 0)] - [kill (make-semaphore 1)] - [sucessful? #f] - [t (thread - (lambda () - (with-handlers ([(lambda (x) #t) - (lambda (x) - (semaphore-wait kill) - (set! sucessful? #f) - (kill-thread k) - (eprintf "\nsolver raised an exception\n~a\n" - (if (exn? x) (exn-message x) x)) - (semaphore-post done))]) - (solve:solve rows cols set-entry - (lambda (max) - (setup-progress - max - (lambda () - (semaphore-wait kill) - (set! sucessful? #t) - (kill-thread k))))) - (semaphore-post done))))] - [k - (thread - (lambda () - (let ([check-interval 10]) ;; in seconds - (let loop () - (sleep check-interval) - (update-memory-display) - (if (<= (current-memory-use) memory-limit) - (loop) - (begin (collect-garbage)(collect-garbage)(collect-garbage) - (update-memory-display) - (if (<= (current-memory-use) memory-limit) - (loop) - (void)))))) - (semaphore-wait kill) - (kill-thread t) - (eprintf "\n memory limit expired.\n") - (collect-garbage)(collect-garbage)(collect-garbage)(collect-garbage)(collect-garbage) - (update-memory-display) - (semaphore-post done)))]) - (semaphore-wait done) - (newline) - (newline) - (if sucessful? - board - #f))] - [else #f])) - -(define (sanity-check problem) - (let ([name (first problem)] - [cols (second problem)] - [rows (third problem)]) - (when (null? cols) - (error 'build-solution-sets.rkt - "problem ~a doesn't have any cols" name)) - (when (null? rows) - (error 'build-solution-sets.rkt - "problem ~a doesn't have any rows" name)) - (unless (= (sum-lists cols) (sum-lists rows)) - (error 'build-solution-sets.rkt - "problem ~a: sum of the column lists is not the same as the sum of the row lists" - name)))) - - -(for-each - (lambda (set) - (let ([set-name (car set)] - [output-file (build-path (collection-path "games" "paint-by-numbers" "solution-sets") - (cadr set))] - [problems (caddr set)]) - (for-each sanity-check problems) - (if (file-exists? output-file) - (printf "skipping ~s (~a)\n" set-name (normalize-path output-file)) - (call-with-output-file output-file - (lambda (port) - (printf "Building ~s\n" set-name) - (parameterize ([current-output-port port]) - (write - `(unit - (import paint-by-numbers:problem^) - (export paint-by-numbers:problem-set^) - (define set-name ,set-name) - - (define problems - (list - ,@(map (lambda (x) - (let ([name (first x)] - [rows (second x)] - [cols (third x)]) - `(make-problem - ,(first x) - ',rows - ',cols - ',(solve name rows cols)))) - problems))))))))))) - sets) diff --git a/pkgs/games/paint-by-numbers/raw-problems/raw-hattori.rkt b/pkgs/games/paint-by-numbers/raw-problems/raw-hattori.rkt deleted file mode 100644 index e79b3ea767..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/raw-hattori.rkt +++ /dev/null @@ -1,5471 +0,0 @@ -#lang racket/base - -(provide raw-hattori) -(define raw-hattori -`( -("Hattori 1" - ((5) (1) (3 1) (8) (2 1) (1 6) (1 1 1) (3) (1) (10)) - ((1) (4 1) (2 3) (1 2 1) (1 1 1 1) (1 2 1 1) (4 1 1) (1 2 1 1) (1 1 1 1) (5 1)) - ((o o o o x x x x x o) - (o o o o o o x o o o) - (o o o o o x x x o x) - (o o x x x x x x x x) - (o x x o o o o o o x) - (o x o o x x x x x x) - (o x o x o o o o o x) - (o x x x o o o o o o) - (o o x o o o o o o o) - (x x x x x x x x x x))) - -("Hattori 2" - ((5 1 5) (5 2 6) (15) (4 5) (3 5 2) (3 6 1 2) (3 4 1 2) (3 3) (3 4) (1 1 1 1) (8) () (2) (1 9 1) (2 2 2)) - ((10 2) (9 1) (9) (4 2 1) (3 2 1 3) (1 3 1 3) (2 3 1 1) (3 3 1 1) (1 3 1 1) (2 1 1 1) (4 2 1) (4 2 1 1) (4 2) (9 1) (10 2)) - ((x x x x x o o x o o x x x x x) - (x x x x x o x x o x x x x x x) - (x x x x x x x x x x x x x x x) - (x x x x o o o o o o x x x x x) - (x x x o x x x x x o o o o x x) - (x x x o x x x x x x o x o x x) - (x x x o o x x x x o o x o x x) - (x x x o o o o o o o o o x x x) - (x x x o o o o o o o o x x x x) - (x o o x o o o o o o x o o o x) - (o o o x x x x x x x x o o o o) - (o o o o o o o o o o o o o o o) - (o o o o x x o o o o o o o o o) - (x o o x x x x x x x x x o o x) - (x x o o x x o o o o o o o x x))) - -("Hattori 3" - ((11) (1 11) (2 3 4 2) (4 2 2) (3 4) (2 3 3 3) (2 1 1 3) (2 1 1 3) (2 3 4) (2 1 4) (3 3 4) (2 2 2 4) (4 6) (11) (9)) - ((9) (12) (1 2 4) (4 1 3) (3 1 4) (3 4 2 2) (2 3 2) (2 4 2 2) (3 1 4) (3 1 3) (4 4) (5 7) (2 10) (12) (9)) - ((o o x x x x x x x x x x x o o) - (o x o x x x x x x x x x x x o) - (x x o x x x o o x x x x o x x) - (x x x x o o o o o o x x o x x) - (x x x o o o o o o o o x x x x) - (x x o x x x o x x x o o x x x) - (x x o o o x o x o o o o x x x) - (x x o o o x o x o o o o x x x) - (x x o o o x x x o o o x x x x) - (x x o o o o x o o o o x x x x) - (x x x o o x x x o o o x x x x) - (o x x o x x o x x o x x x x o) - (o x x x x o o o x x x x x x o) - (o o x x x x x x x x x x x o o) - (o o o x x x x x x x x x o o o))) - -("Hattori 4" - ((6) (3 2) (2 1) (2 2) (2 1) (1 1) (2 1) (5 1) (2 4 5) (1 4 2 4) (1 5 1 4) (7 1 5) (7 7) (5 7) (5)) - ((5) (2 3) (1 4) (8) (10) (2 7) (2 5) (2) (1 5) (2 2 3) (1 1 4) (1 12) (4 7) (2 7) (1 5)) - ((o o o o o o o o o x x x x x x) - (o o o o o o o x x x o o x x o) - (o o o o o o x x o o o o x o o) - (o o o o o x x o o o o x x o o) - (o o o o x x o o o o o x o o o) - (o o o o x o o o o o o x o o o) - (o o o x x o o o o o o x o o o) - (o x x x x x o o o o o x o o o) - (x x o x x x x o o x x x x x o) - (x o o x x x x o x x o x x x x) - (x o x x x x x o x o o x x x x) - (x x x x x x x o x o x x x x x) - (x x x x x x x o x x x x x x x) - (o x x x x x o o x x x x x x x) - (o o o o o o o o o x x x x x o))) - -("Hattori 5" - ((2 1) (11) (3 3) (2 4) (3 3) (2 2 2 3) (2 2 2 2) (2 1 1 2) (2 2 2 2) (3 2) (1 1 2) (1 4) (1 3 1 1) (1 1 1 2) (6)) - ((7) (8) (4 5) (3 1) (2 4 3) (1 2 1 1 1) (1 3) (1 1) (1 2 1 1) (1 4 1) (1 2) (4 1) (5 1) (10) (10)) - ((o o o x x o o o o o o x o o o) - (o o x x x x x x x x x x x o o) - (o x x x o o o o o o o x x x o) - (o x x o o o o o o o o x x x x) - (x x x o o o o o o o o o x x x) - (x x o o x x o o x x o o x x x) - (x x o o x x o o x x o o o x x) - (x x o o x o o o o x o o o x x) - (x x o o x x o o x x o o o x x) - (x x x o o o o o o o o o o x x) - (x o x o o o o o o o o o o x x) - (o o x o o o o o o o o x x x x) - (o o x o x x x o o o x o o o x) - (o o x o x o x o o x x o o o o) - (o o o x x x x x x o o o o o o))) - -("Hattori 6" - ((4) (6 1) (2 1 1 2) (5 1 3) (5 1 2 1) (6 1 2 1) (6 3 1) (6 2 2) (4 1 1 2) (2 1 1) (2 2) (7) (1 1) (2 2) (6)) - ((1 1) (1 6) (1 7) (9) (8) (2 4) (1 1 6 1) (1 2 2) (8 4) (3 1 1) (2 1 2) (2 4) (2 1 1) (2 2 2) (6 2)) - ((o o o o o x x x x o o o o o o) - (x x x x x x o o x o o o o o o) - (o o o x x o x o x o o o o x x) - (x x x x x o o o x o o o x x x) - (o x x x x x o o x o o x x o x) - (o x x x x x x o x o x x o o x) - (o x x x x x x o x x x o o o x) - (o x x x x x x o x x o o o x x) - (o x x x x o x o o x o o x x o) - (o o x x o o x o o o o o o o x) - (o o o o o o x x o o o o o x x) - (o o o o o o o x x x x x x x o) - (o o o o o o o o x o o x o o o) - (o o o o o o o x x o x x o o o) - (o o o o o o x x x x x x o o o))) - -("Hattori 7" - ((3) (5) (3 1) (3 3 1) (6 2 1) (7 3) (2 2 1) (1 1 1 1 1) (2 1 1 1 1) (1 1 2 1) (1 1 1) (13) (4 8) (9) (4 3)) - ((3 3) (3 2 4) (2 5) (3 2 4) (3 1 1 1) (3 2 4) (3 6) (5 4) (3) (2) (4 2) (6 2) (4 8) (2 1 1) (4)) - ((o o o o o o o o o o o x x x o) - (o o o o o o o o o o x x x x x) - (o o o o o o o o o o x x x o x) - (o o o x x x o o o o x x x o x) - (o x x x x x x o o o x x o o x) - (o x x x x x x x o o o x x x o) - (x x o o o o x x o o o o x o o) - (x o o x o x o x o o o o x o o) - (x x o x o x o x o o o o x o o) - (o x o o x o x x o o o o x o o) - (o o x o o o x o o o o o x o o) - (o x x x x x x x x x x x x x o) - (x x x x o x x x x x x x x o o) - (x x x x x x x x x o o o o o o) - (x x x x o x x x o o o o o o o))) - -("Hattori 8" - ((7) (6 2) (1 3 3) (2 2 2) (2 1) (3 2 1) (3 3 2 1) (1 4 2 1) (1 2 2) (2 2 6) (1 2 1) (1 1 3) (1 4 1) (2 5) (9)) - ((4) - (3 1 5) - (1 2 2 2) - (1 2 1 1) - (2 1 1 1) - (2 3 1 1) - (3 1 2 1) - (1 1 2 3 1) - (1 2 2 1 1) - (1 1 2 1 1) - (2 1 3) - (2 2 1 1) - (1 2 3 1) - (2 2 1 1) - (7 3)) - ((o o o o x x x x x x x o o o o) - (o x x x x x x o o o x x o o o) - (o x o o o o x x x o o x x x o) - (o x x o o o o o x x o o o x x) - (o o x x o o o o o o o o o o x) - (o o o x x x o o o o o x x o x) - (x x x o o x x x o o o x x o x) - (x o x x x x o x x o o o o o x) - (x o o o o o o o x x o o o x x) - (x x o o o x x o o x x x x x x) - (o x o o o o x x o o o o x o o) - (o x o o o o o x o o o o x x x) - (o x o o o o o x x x x o o o x) - (o x x o o o o o o o x x x x x) - (o o x x x x x x x x x o o o o))) - -("Hattori 9" - ((3) (2 2) (1 2) (1 11) (1 2 4) (2 2 2 1) (3 3 1 1) (2 2) (1 1) (1 1) (7) (3 3) (2 2) (3 3) (3 3)) - ((5) (2 2) (1 1) (2 2 5) (5 8) (3 2 2 2) (1 1 1) (1 2 2 2) (1 8) (1 5) (4) (3) (2) (4) (1)) - ((o x x x o o o o o o o o o o o) - (x x o x x o o o o o o o o o o) - (x o o o x x o o o o o o o o o) - (x o o o x x x x x x x x x x x) - (x o o o x x o o o o x x x x o) - (x x o x x o o o o o x x o x o) - (o x x x o x x x o o x o o x o) - (o o o o x x o x x o o o o o o) - (o o o o x o o o x o o o o o o) - (o o o o x o o o x o o o o o o) - (o o o x x x x x x x o o o o o) - (o o o x x x o x x x o o o o o) - (o o o x x o o o x x o o o o o) - (o o o x x x o x x x o o o o o) - (o o o x x x o x x x o o o o o))) - -("Hattori 10" - ((7 1) - (2 2 1) - (1 1 3) - (1 1 1 3) - (5 2) - (13) - (15) - (3 5) - (2 7 1) - (3 10) - (3 7) - (6 2) - (2 4) - (2 3 2) - (1 3 1) - (1 3 1) - (1 3 1) - (2 2) - (2 2) - (6)) - ((5) (5) (3 2) (2 5) (1 2 2 2) (10 2 2) (2 6 1 2 1) (1 7 1 4 1) (2 13 1) (14 1 1) (1 2 5 2) (2 3 2 2) (2 2 2 5) (7 3) (5 4)) - ((o o o o x x x x x x x o o x o) - (o o o o o x x o x x o o o x o) - (o o o o o x o o o x o o x x x) - (o o o o o x o x o x o o x x x) - (o o o o o x x x x x o o o x x) - (o o x x x x x x x x x x x x x) - (x x x x x x x x x x x x x x x) - (x x x o o x x x x x o o o o o) - (x x o o o x x x x x x x o o x) - (x x x o o x x x x x x x x x x) - (x x x o o o o o x x x x x x x) - (o o o o o x x x x x x o o x x) - (o o o o x x o o x x x x o o o) - (o o o x x o o x x x o x x o o) - (o o o x o o x x x o o o x o o) - (o o o x o o x x x o o o x o o) - (o o o x o o o x x x o o x o o) - (o o o x x o o o o o o x x o o) - (o o o o x x o o o o x x o o o) - (o o o o o x x x x x x o o o o))) - -("Hattori 11" - ((4) (6) (6) (3 6) (3 2 6) (3 6 4) (4 7) (11) (2 13) (1 13) (14) (9 4) (9 2) (8) (7) (6) (5 1) (3 4 3) (5 3 4) (16)) - ((5) - (4) - (3 1) - (3 2) - (5 3) - (8 2) - (10 2) - (12 2) - (13 1) - (1 12 1) - (14 1) - (1 1 12) - (12) - (3 8) - (4 3 1) - (6 4 1) - (6 3 2) - (6 3 3) - (6 2 3) - (4 4)) - ((o o o o o o o o o o o o o o o x x x x o) - (o o o o o o o o o o o o o o x x x x x x) - (o o o o o o o o o o o o o o x x x x x x) - (o o o o o o o x x x o o o o x x x x x x) - (o o o o o o x x x o x x o o x x x x x x) - (x x x o o x x x x x x o o o o x x x x o) - (x x x x o x x x x x x x o o o o o o o o) - (x x x x x x x x x x x o o o o o o o o o) - (x x o x x x x x x x x x x x x x o o o o) - (x o o o x x x x x x x x x x x x x o o o) - (o o o o x x x x x x x x x x x x x x o o) - (o o o o x x x x x x x x x o o x x x x o) - (o o o o o x x x x x x x x x o o o x x o) - (o o o o o o x x x x x x x x o o o o o o) - (o o o o o o o x x x x x x x o o o o o o) - (o o o o o o o o x x x x x x o o o o o o) - (o o o o o o o o o x x x x x o o o o o x) - (o o x x x o o o o o x x x x o o o x x x) - (o o o x x x x x o o o x x x o o x x x x) - (o o o o x x x x x x x x x x x x x x x x))) - -("Hattori 12" - ((5 7) - (5 3 3) - (4 2 7 2) - (4 1 1) - (3 1 1) - (2 1 3 1) - (1 1 1 1) - (1 1 9 1) - (13) - (2 11) - (2 13) - (3 11 2) - (16 1) - (15 1) - (15 1) - (13 1) - (12 2) - (10 3) - (12) - (18)) - ((8 1) - (6 2) - (5 3 1) - (4 4 1) - (2 6 1) - (6 1) - (7 8 1) - (2 12) - (1 13) - (3 13) - (1 1 13) - (1 1 1 13) - (1 1 15) - (1 1 1 13) - (1 1 13) - (3 10 2) - (1 9 2) - (2 3 3 3) - (7 2 4) - (7 1)) - ((x x x x x o o o o x x x x x x x o o o o) - (x x x x x o o x x x o o o o o x x x o o) - (x x x x o o x x o x x x x x x x o x x o) - (x x x x o o x o o o o o o o o o o o x o) - (x x x o o o x o o o o o o o o o o o x o) - (x x o o o o x o o o o x x x o o o o x o) - (x o o o o o x o o o o o x o o o o o x o) - (x o o o o o x o x x x x x x x x x o x o) - (o o o o o o x x x x x x x x x x x x x o) - (x x o o o o o x x x x x x x x x x x o o) - (o x x o o o x x x x x x x x x x x x x o) - (o o x x x o x x x x x x x x x x x o x x) - (o o x x x x x x x x x x x x x x x x o x) - (o o o x x x x x x x x x x x x x x x o x) - (o o o x x x x x x x x x x x x x x x o x) - (o o o o x x x x x x x x x x x x x o o x) - (o o o o x x x x x x x x x x x x o o x x) - (o o o o o x x x x x x x x x x o o x x x) - (o o o o o o o x x x x x x x x x x x x o) - (o o x x x x x x x x x x x x x x x x x x))) - -("Hattori 13" - ((2 2) (2 3) (3) (2 12) (2 15) (17) (18) (3 12) (4 1 13) (4 13) (8 7) (10 7) (11 7) (18) (18) (17) (14) (3) (3) (2)) - ((2 2 2) (2 7) (2 9) (2 11) (2 6) (3 1 7) (3 7) (14) (14) (7 6) (10 8) (10 7) (10 6) (14) (14) (14) (14) (14) (14) (3 2 2 2)) - ((o o x x o o o o o o x x o o o o o o o o) - (o o x x o o o o o o x x x o o o o o o o) - (o o o o o o o o o o x x x o o o o o o o) - (x x o o o o o x x x x x x x x x x x x o) - (x x o o o x x x x x x x x x x x x x x x) - (o o o x x x x x x x x x x x x x x x x x) - (o o x x x x x x x x x x x x x x x x x x) - (o x x x o o o x x x x x x x x x x x x o) - (x x x x o x o x x x x x x x x x x x x x) - (x x x x o o o x x x x x x x x x x x x x) - (o x x x x x x x x o o o x x x x x x x o) - (x x x x x x x x x x o o o x x x x x x x) - (x x x x x x x x x x x o o x x x x x x x) - (o x x x x x x x x x x x x x x x x x x o) - (o o x x x x x x x x x x x x x x x x x x) - (o o o x x x x x x x x x x x x x x x x x) - (o o o o o x x x x x x x x x x x x x x o) - (o o o o o o o o o o x x x o o o o o o o) - (o o o o o o o o o o x x x o o o o o o o) - (o o o o o o o o o o x x o o o o o o o o))) - -("Hattori 14" - ((8) - (9) - (1 5) - (1 1 3) - (1 2) - (2 2) - (1 2 2) - (3 3) - (1 10) - (12) - (1 4 2 1) - (1 5 6) - (1 5 2 1) - (1 6) - (1 7) - (1 3 3) - (1 1 3 4) - (1 6 3) - (2 1 3 4) - (19)) - ((3) - (2) - (1) - (3 1 1) - (2 11) - (3 1 1) - (5 2 7) - (2 2 2 8) - (2 1 14) - (3 8 1) - (3 11 2) - (7 12) - (6 2 1 6) - (4 3 1 4) - (2 5 1) - (1 1) - (1 1) - (1 1) - (3 1) - (1 1)) - ((o o o o o o o x x x x x x x x o o o o o) - (o o o o o o x x x x x x x x x o o o o o) - (o o o o o o x o o x x x x x o o o o o o) - (o o o o o o x o x o o x x x o o o o o o) - (o o o o o o x o o o o x x o o o o o o o) - (o o o o o o x x o o o x x o o o o o o o) - (o o o o x o o x x o x x o o o o o o o o) - (o o o x x x o o x x x o o o o o o o o o) - (o o o x o x x x x x x x x x x o o o o o) - (o o o x x x x x x x x x x x x o o o o o) - (o o o o x o o o x x x x o x x o o o x o) - (o o o o x o o o x x x x x o x x x x x x) - (o o o o x o o x x x x x o x x o o o x o) - (o o o o x o x x x x x x o o o o o o o o) - (o o o o x o x x x x x x x o o o o o o o) - (o o o o x o x x x o x x x o o o o o o o) - (x o o o x o x x x o x x x x o o o o o o) - (x o o x x x x x x o o x x x o o o o o o) - (x x o o x o x x x o x x x x o o o o o o) - (o x x x x x x x x x x x x x x x x x x x))) - -("Hattori 15" - ((1) - (1 17) - (3 1 1) - (1 1 1 3 3 3 1) - (1 1 1 3 1 1 1 1 1) - (3 1 3 3 3 1) - (1 3 1) - (1 16) - (1) - (1) - (1 9) - (1 2 1 2) - (1 2 1 1 1) - (1 2 1 3 2) - (2 16) - (3 16) - (1 4 7 3 1) - (1 1 4 8) - (1 2 1 8) - (1 2 1)) - ((20) - (1 1 2) - (6 2) - (1 2 1) - (7 3) - (1 1 5) - (1 3 1 4 1) - (1 3 1 2 5) - (1 3 1 2 4) - (1 1 1 4) - (1 3 1 1 5) - (1 1 1 1 7 1) - (1 3 1 1 6) - (1 1 1 6) - (1 3 1 1 4 2) - (1 1 1 1 1 6) - (1 3 1 2 5) - (1 1 8) - (7 3 3) - (5)) - ((x o o o o o o o o o o o o o o o o o o o) - (x o x x x x x x x x x x x x x x x x x o) - (x x x o x o o o o o o o o o o o o o x o) - (x o x o x o x x x o x x x o x x x o x o) - (x o x o x o x x x o x o x o x o x o x o) - (x x x o x o x x x o x x x o x x x o x o) - (x o x x x o o o o o o o o o o o o o x o) - (x o o x x x x x x x x x x x x x x x x o) - (x o o o o o o o o o o o o o o o o o o o) - (x o o o o o o o o o o o o o o o o o o o) - (x o o o o o o o x x x x x x x x x o o o) - (x o o o o o o x x o o x o o o o x x o o) - (x o o o o o x x o o o x o o x o o x o o) - (x o o o o x x o o o o x o x x x o x x o) - (x x o o x x x x x x x x x x x x x x x x) - (x x x o x x x x x x x x x x x x x x x x) - (x o x x x x o x x x x x x x o x x x o x) - (x o o o o x o x x x x o x x x x x x x x) - (x o o o o o x x o o x o x x x x x x x x) - (x o o o o o o o o o o x x o o o o o x o))) - -("Hattori 16" - ((6) (10) (3 5 3) (8 7) (6 7 3) (2 8 7) (5 10 3) (1 5 4 1) (5 5) (3 3) (3 4 2) (3 5 3) (3 5 2) (13) (5) (6) (7) (7) (7) (5)) - ((5) - (3 4) - (10) - (2 3 2) - (7 2) - (5 1 1) - (7 1) - (2 1 2 1) - (7 4) - (7 7) - (3 3 9) - (7 9) - (5 1 9) - (1 4 7) - (7 1 5) - (2 4 1 4) - (4 2 2 3) - (7 2) - (3 4) - (7)) - ((o o o o o o o x x x x x x o o o o o o o) - (o o o o o x x x x x x x x x x o o o o o) - (o o o o x x x o x x x x x o x x x o o o) - (o o x x x x x x x x o x x x x x x x o o) - (o x x x x x x o x x x x x x x o x x x o) - (o x x o x x x x x x x x o x x x x x x x) - (x x x x x o x x x x x x x x x x o x x x) - (x o x x x x x o o o o o o o x x x x o x) - (x x x x x o o o o o o o o o o x x x x x) - (x x x o o o o o o o o o o o o o o x x x) - (x x x o o o o o x x x x o o o o o o x x) - (o x x x o o o o x x x x x o o o o x x x) - (o o x x x o o o x x x x x o o o x x o o) - (o o o o x x x x x x x x x x x x x o o o) - (o o o o o o o o o x x x x x o o o o o o) - (o o o o o o o o o x x x x x x o o o o o) - (o o o o o o o o o x x x x x x x o o o o) - (o o o o o o o o o o x x x x x x x o o o) - (o o o o o o o o o o x x x x x x x o o o) - (o o o o o o o o o o o o x x x x x o o o))) - -("Hattori 17" - ((9 9) - (6 10) - (5 11) - (4 3 5) - (2 1 3) - (2 4 2) - (1 3 6) - (5 1 1 1) - (2 2 1 3 1) - (7 4 1) - (7 4 2) - (1 3 9) - (1 2 4 6) - (1 6 9) - (1 4 7) - (2 1 4 2) - (5 3 4) - (5 7) - (5 10) - (5 11)) - ((1 8) - (2 4 4) - (4 1 2 4) - (8 2 4) - (6 1 3 7) - (4 8 4) - (3 7 1) - (1 2) - (1 2) - (2 2 2 1) - (3 2 1 1 1 2) - (7 8 2) - (3 7 4 2) - (3 1 1 2 3 3) - (3 4 6 3) - (4 1 4 3) - (4 1 4 4) - (5 1 4 4) - (7 4 5) - (7 6 5)) - ((x x x x x x x x x o o x x x x x x x x x) - (o x x x x x x o o o x x x x x x x x x x) - (o o x x x x x o o x x x x x x x x x x x) - (o o x x x x o o o x x x o o o x x x x x) - (o o o x x o o o o o o x o o o o o x x x) - (o o o x x o o o o o o x x x x o o o x x) - (o o o x o o o o o o x x x o x x x x x x) - (o x x x x x o o o o x o x o x o o o o o) - (x x o o o x x o o x o o x x x o o o o x) - (x x x x x x x o o x x x x o o o o o o x) - (x x x x x x x o o o o x x x x o o o x x) - (x o o o x x x o o o o x x x x x x x x x) - (x o o o o x x o x x x x o o x x x x x x) - (x o o o x x x x x x o x x x x x x x x x) - (x o o o x x x x o o o x x x x x x x o o) - (x x o o x o o o o o o x x x x o o o x x) - (o x x x x x o o o o x x x o o o x x x x) - (o x x x x x o o o o o o o x x x x x x x) - (o x x x x x o o o o x x x x x x x x x x) - (o o x x x x x o o x x x x x x x x x x x))) - -("Hattori 18" - ((3 4) - (1 3 2 1) - (1 6 3 2) - (1 1 2 1 1 6) - (3 2 1 1) - (1 1 1 1 2 1 1 1) - (1 1 2 1 2 2 2) - (1 1 2 1 1 2 1) - (1 2 4 1 3) - (1 16) - (2 5 10) - (8 4 2) - (8 2 4) - (5 2 1 4) - (1 5 6) - (2 7 3 2) - (2 8 2) - (2 3 5 1 1) - (2 5 7 3) - (2 5 5 4)) - ((5 7 6) - (1 1 3 5) - (2 3 3) - (3 2 3 2) - (2 1 6 2) - (2 2 5 5) - (2 2 11) - (2 1 5 6) - (3 3 4) - (1 1 5 6) - (1 1 3 6) - (6 2 5) - (1 2 3 4) - (3 2 4 3) - (1 1 8 2) - (1 2 3 5) - (1 2 2 5 1) - (1 1 3 3 2) - (3 10 2) - (1 2 8 3)) - ((x x x o o o o o x x x x o o o o o o o o) - (x o x x x o o x x o o x o o o o o o o o) - (x o o x x x x x x o o x x x o o o o x x) - (x o o x o x x o o x o x o x x x x x x o) - (x x x o o o o o o o x x o x o o o o x o) - (o o x o x o o x o x o x x o x o o x o x) - (x o x o o x x o o x o o x x o x x o x x) - (x o o x o x x o o x o o o x o x x o x o) - (x o o x x o o x x x x o o o x o o x x x) - (x o o o x x x x x x x x x x x x x x x x) - (x x o o x x x x x o x x x x x x x x x x) - (x x x x x x x x o o o o x x x x o o x x) - (x x x x x x x x o o o o o x x o x x x x) - (o o x x x x x o x x o o o o x o x x x x) - (x o o o o o x x x x x o o o x x x x x x) - (x x o o o x x x x x x x o o x x x o x x) - (x x o o o x x x x x x x x o o x x o o o) - (x x o o o x x x o x x x x x o x o o o x) - (x x o x x x x x o x x x x x x x o x x x) - (x x o x x x x x o o x x x x x o x x x x))) - -("Hattori 19" - ((2 2 2 3) - (2 2 3 5) - (2 2 3 5) - (1 1 2 5) - (2) - (8 2 2) - (10 3 2 1) - (11 3 2 1) - (11 2 1 1) - (11) - (11 5) - (10 7) - (6 7) - (4 6) - (5 6) - (6 5) - (7 6) - (7 7) - (7 7) - (6 6)) - ((4 7) - (3 14) - (15) - (4 15) - (3 15) - (8 6) - (3 7 5) - (4 7 4) - (3 7) - (1 6) - (4 4) - (5) - (4 2 2) - (4 4 2 3) - (2 4 5 4) - (10) - (3 10) - (4 10) - (9) - (3 7)) - ((x x o x x o o x x o o x x x o o o o o o) - (x x o x x o x x x o x x x x x o o o o o) - (x x o x x o x x x o x x x x x o o o o o) - (x o o x o o x x o x x x x x o o o o o o) - (o o o o o o o o o o x x o o o o o o o o) - (o x x x x x x x x o o o o x x o x x o o) - (x x x x x x x x x x o o x x x o x x o x) - (x x x x x x x x x x x o x x x o x x o x) - (x x x x x x x x x x x o o x x o o x o x) - (x x x x x x x x x x x o o o o o o o o o) - (x x x x x x x x x x x o o o x x x x x o) - (x x x x x x x x x x o o o x x x x x x x) - (x x x x x x o o o o o o o x x x x x x x) - (o x x x x o o o o o o o o o x x x x x x) - (o x x x x x o o o o o o o o x x x x x x) - (o x x x x x x o o o o o o o o x x x x x) - (o x x x x x x x o o o o o o x x x x x x) - (o x x x x x x x o o o o o x x x x x x x) - (o x x x x x x x o o o o x x x x x x x o) - (o o x x x x x x o o o o x x x x x x o o))) - -("Hattori 20" - ((3 3 5) - (9 1) - (2 16) - (1 2 6 4) - (1 1 1 1 6 4) - (1 1 6 2) - (1 1 5 1) - (1 1 4 3) - (2 1 2 2 4) - (1 3 5) - (9 5) - (7 4) - (6 3) - (4 1 2) - (3 7 1) - (5 1 6 1) - (1 1 1 1 6 1) - (1 1 1 1 1 1 1 1) - (1 1 1 1 1 1) - (3 3 3)) - ((3) - (11) - (2 1 1) - (1 1 5) - (2 1 10) - (2 1 6 1) - (4 5 5) - (13 1) - (3 5 5) - (4 2 1) - (5 7) - (6 1) - (7 3) - (7 4) - (6 3) - (1 1 2 4) - (1 3 4 3) - (1 3 6 5) - (1 4 7 1) - (20)) - ((x x x o o o x x x o o o o o o x x x x x) - (x x x x x x x x x o o o o o o o o o o x) - (x x o o x x x x x x x x x x x x x x x x) - (o x o o o o x x o x x x x x x o x x x x) - (o x o x o x o x o x x x x x x o x x x x) - (o x o o o o o x o x x x x x x o o o x x) - (o x o o o o o x o o x x x x x o o o o x) - (o x o o o o o x o o o x x x x o o x x x) - (o x x o x o o x x o o o x x o o x x x x) - (o x o o o o x x x o o o o o o x x x x x) - (o x x x x x x x x x o o o o o x x x x x) - (o o o x x x x x x x o o o o o o x x x x) - (o o o x x x x x x o o o o o o o o x x x) - (o o o x x x x o o o x o o o o o o o x x) - (o o o x x x o o o o x x x x x x x o o x) - (o o o o x x x x x o x o x x x x x x o x) - (o o o o x o x o x o x o x x x x x x o x) - (o o o o x o x o x o x o o x o x o x o x) - (o o o o x o x o x o x o o o o o o x o x) - (o o o o x x x o x x x o o o o o o x x x))) - -("Hattori 21" - ((4 10) - (2 1 3) - (1 1 10) - (1 1 4) - (1 1 4) - (1 1 2 2) - (1 1 2 2 2) - (1 1 1 1 1 1) - (1 1 6 1 1) - (2 1 2 1 4 2) - (6 1 2 1 4) - (11 3) - (1 4) - (1 4) - (1 4) - (1 5) - (1 6) - (18) - (18) - (18)) - ((9) - (2 2) - (1 1 3) - (1 1 3) - (11 3) - (10) - (4 3) - (2 2 1 3) - (6 2 3) - (2 2 1 3) - (9 2 3) - (7 4 3) - (3 1 1 3) - (1 1 4 3) - (1 1 1 1 4) - (1 1 1 5) - (1 1 4 8) - (1 1 1 11) - (1 1 1 10) - (1 1 1 10)) - ((o x x x x o o o o o x x x x x x x x x x) - (x x o o x o o o o o x x x o o o o o o o) - (x o o o x o o o o o x x x x x x x x x x) - (x o o o x o o o x x x x o o o o o o o o) - (x o o o x o o o x x x x o o o o o o o o) - (x o o o x o o x x o x x o o o o o o o o) - (x o o o x o o x x o x x o o o o o x x o) - (x o o o x o o o x o x o o o o o x o o x) - (x o o o x o x x x x x x o x o o x o o o) - (x x o o x o x x o x o x x x x o x x o o) - (o x x x x x x o x o x x o x o o x x x x) - (o o o o o x x x x x x x x x x x o x x x) - (o o o o o x o o o o o o o o o o x x x x) - (o o o o o x o o o o o o o o o o x x x x) - (o o o o o x o o o o o o o o o o x x x x) - (o o o o o x o o o o o o o o o x x x x x) - (o o o o o x o o o o o o o o x x x x x x) - (o o x x x x x x x x x x x x x x x x x x) - (o o x x x x x x x x x x x x x x x x x x) - (o o x x x x x x x x x x x x x x x x x x))) - -("Hattori 22" - ((7) (3 1 7) (1 3 7) (2 2 8) (7 8) (4 1 8) (1 1 4 8) (2 3 8) (3 10) (14) (15) (15) (18) (16 1) (8 6) (7 5) (7 2 2) (2 2 1) (1) (1)) - ((2 10) (11) (9) (3 9) (3 8) (1 4 9) (2 2 1 9) (14) (3 1 6) (10) (9) (2 8 2) (1 14) (16) (16) (9 5) (9 1 2) (7 2) (6) (6)) - ((o o o o o o o o o o o x x x x x x x o o) - (o o o o o x x x o o o x o x x x x x x x) - (o o o x o o x x x o o o o x x x x x x x) - (o o o x x o o x x o o o x x x x x x x x) - (o o o x x x x x x x o o x x x x x x x x) - (o o o o x x x x o x o o x x x x x x x x) - (x o o o o x o x x x x o x x x x x x x x) - (x x o o o x x x o x x x x x x x x o o o) - (o x x x o o o x x x x x x x x x x o o o) - (o x x x x x x x x x x x x x x o o o o o) - (x x x x x x x x x x x x x x x o o o o o) - (x x x x x x x x x x x x x x x o o o o o) - (x x x x x x x x x x x x x x x x x x o o) - (x x x x x x x x x x x x x x x x o x o o) - (x x x x x x x x o o x x x x x x o o o o) - (x x x x x x x o o o o o x x x x x o o o) - (x x x x x x x o o o o x x o o x x o o o) - (x x o o o x x o o o o x o o o o o o o o) - (x o o o o o o o o o o o o o o o o o o o) - (x o o o o o o o o o o o o o o o o o o o))) - -("Hattori 23" - ((8 4) - (10 1) - (12 1 1) - (3 1 1 2) - (2 2 2 1 1 2) - (2 1 1 1 1 2) - (2 1 1 2) - (2 1 1 1 1 1 2) - (3 1 1 1 1 1 1) - (2 6 1 1 2) - (2 1 1 4) - (2 9 4) - (14 4) - (15) - (8 4 2) - (8 2 2 1) - (8 1 1 3) - (2 5 1 2 1) - (11 1) - (10 5)) - ((9) - (10) - (5 1 5) - (8 8) - (4 1 9) - (3 1 12) - (3 2 1 1 9) - (3 2 9) - (3 1 1 3 2) - (3 2 2 3 2) - (3 1 1 1 3 2 2) - (3 6 3) - (9 4 2) - (1 4 1) - (5) - (3) - (13 1) - (1 3 1 2 1) - (1 5 4 3 1) - (1 11 1 1)) - ((o o o o x x x x x x x x o o o o x x x x) - (o o o x x x x x x x x x x o o o x o o o) - (o o x x x x x x x x x x x x o o x o o x) - (o o x x x o o o o o o o x o o o x o x x) - (o o x x o x x o o x x o x o o o x o x x) - (o o x x o o x o o x o o x o o o x o x x) - (o o x x o o o o o o o o x o o o x o x x) - (o o o x x o x o x o x o x o o o x o x x) - (o x x x o x o x o x o o x o o o x o o x) - (x x o o o x x x x x x o x o o o x o x x) - (x x o o o x o o o o o x o o o o x x x x) - (x x o o x x x x x x x x x o o o x x x x) - (x x x x x x x x x x x x x x o o x x x x) - (x x x x x x x x x x x x x x x o o o o o) - (x x x x x x x x o o o x x x x o o x x o) - (x x x x x x x x o o x x o x x o o o x o) - (x x x x x x x x o o x o o o x o o x x x) - (x x o x x x x x o o o x o o x x o x o o) - (o o o x x x x x x x x x x x o x o o o o) - (o o o x x x x x x x x x x o o x x x x x))) - -("Hattori 24" - ((5 3) - (4 4 4) - (1 2 10) - (1 1 6 1 3) - (1 1 2 1 6 2) - (1 1 1 1 4) - (3 1 1 1 1 1) - (2 1 1 1 1 1) - (2 3 4 4) - (5 1 2 3 1) - (1 3 1 1) - (3 1 1 1) - (5 3 1 2) - (7 1 8) - (10 1 1 1) - (5 11) - (3 7) - (3 6 2) - (3 7 1) - (2 5)) - ((7) - (1 3 6) - (1 1 1 2 7) - (2 1 7) - (2 1 4) - (1 1 4) - (12) - (1 1 1 4) - (2 9 2) - (4 1 2) - (4 7 1) - (5 2 1 1 3) - (1 5 2 1 3) - (1 1 1 7) - (3 2 1 5) - (1 1 5 5) - (2 2 2 6) - (4 4 1 2) - (6 1 2 3) - (2 16)) - ((o o o o o o o x x x x x o o o o o x x x) - (x x x x o o o o x x x x o o o o x x x x) - (x o o x x o o o o x x x x x x x x x x o) - (x o o o x o x x x x x x o o x o o x x x) - (x o x o o x x o x o o x x x x x x o x x) - (x o o o o o x o x o o o x o o o x x x x) - (x x x o o o x o x o o o x o o o o x o x) - (x x o o o o x o x o o o x o o o o x o x) - (o x x o o o x x x o o x x x x o x x x x) - (o o x x x x x o x o x x o o x x x o o x) - (o o o o o o x o x x x o o o o x o o o x) - (o o o o o o x x x o x o o o o x o o o x) - (o o o x x x x x o o x x x o o x o o x x) - (o o x x x x x x x o x o x x x x x x x x) - (o x x x x x x x x x x o o x o o x o o x) - (o x x x x x o o o x x x x x x x x x x x) - (o x x x o o o o o o o o o x x x x x x x) - (o x x x o o o o o o o x x x x x x o x x) - (o x x x o o o o o o x x x x x x x o o x) - (o x x o o o o o o o o x x x x x o o o o))) - -("Hattori 25" - ((6 7) - (3 2 8) - (3 2 2 4) - (2 3 1 2 3) - (2 1 1 1 4 3) - (2 4 1 2 2) - (2 2 1 1 3) - (3 2 2 1) - (4 2 1 2) - (7 2 1) - (2 1 1 1) - (2 1 1 1) - (2 3 1) - (2 2 1) - (2 5) - (2 1 1) - (2 2 1) - (4 1 1) - (18) - (18)) - ((7) - (9) - (3 3 2) - (2 2 3) - (1 3 11) - (1 1 1 11) - (1 4 1 3) - (2 2 2 2) - (2 2 2) - (6 2) - (2) - (2) - (3 2 2) - (8 6 4) - (2 2 3 5 2) - (2 1 3 1 2) - (3 3 1 2) - (5 1 12) - (7 2) - (5 2)) - ((o o x x x x x x o o o o x x x x x x x o) - (o x x x o o o x x o o o x x x x x x x x) - (x x x o o o o o x x o o x x o o x x x x) - (x x o o x x x o o x o o o x x o o x x x) - (x x o o x o x o o x o o x x x x o x x x) - (x x o o x x x x o x o o x x o o o o x x) - (x x o o o o x x o x o o o x o o x x x o) - (x x x o o o o o x x o o o x x o x o o o) - (x x x x o o o x x o o o o o x o x x o o) - (o x x x x x x x o o o o o x x o o x o o) - (o o o o x x o o o o o o o x o x o x o o) - (o o o o x x o o o o o o o x o x o x o o) - (o o o o x x o o o o o o o x x x o x o o) - (o o o o x x o o o o o o o x x o o x o o) - (o o o o x x o o o o o o o x x x x x o o) - (o o o o x x o o o o o o o o x o o x o o) - (o o o o x x o o o o o o o x x o o x o o) - (o o o x x x x o o o o o o x o o o x o o) - (o o x x x x x x x x x x x x x x x x x x) - (o o x x x x x x x x x x x x x x x x x x))) - -("Hattori 26" - ((1 1 1 2) - (2 2 2 2) - (9 4) - (1 1 1 3) - (2 1 1 3 2) - (3 1 1 1 4 2) - (1 1 1 2 1 2) - (1 4 5 1 2) - (1 4 5 1 2) - (1 8 1 3) - (1 8 1 3) - (1 8 1 3) - (1 7 1 3) - (2 7 2 3) - (1 1 7 1 3) - (2 7 2 3) - (2 1 1 1 1 3) - (7 2 9) - (16) - (1 1 6)) - ((2 1) - (3) - (5 2) - (2 4 1) - (7 2 2) - (3 5 4) - (2 2 9 2) - (1 10 2) - (2 2 7 2) - (1 9 2) - (1 2 10 1) - (2 9 2) - (15 3) - (5 4) - (2 3 3) - (2 9 3) - (2 3) - (2 11) - (20) - (20)) - ((o o o o o x o o o o o o x o o x o o x x) - (o o o o o x x o o o o x x o o x x o x x) - (o o o o x x x x x x x x x o o o x x x x) - (o o o o x o o o x o o o x o o o o x x x) - (o o o x x o x o o o x o x x x o o o x x) - (o o x x x o x o x o x o x x x x o o x x) - (o o x o x o o o x o o o x x o x o o x x) - (o o x o x x x x o x x x x x o x o o x x) - (o o x o x x x x o x x x x x o x o o x x) - (o o x o o x x x x x x x x o o x o x x x) - (o o o x o x x x x x x x x o o x o x x x) - (o o o x o x x x x x x x x o o x o x x x) - (o o o x o o x x x x x x x o o x o x x x) - (o o o x x o x x x x x x x o x x o x x x) - (x o o o x o x x x x x x x o x o o x x x) - (x x o o o x x x x x x x o x x o o x x x) - (o x x o o x o x o o x o o x o o o x x x) - (x x x x x x x o x x o x x x x x x x x x) - (o o o o x x x x x x x x x x x x x x x x) - (o o o o o o o x o o o o x o x x x x x x))) - -("Hattori 27" - ((6) - (8) - (1 6) - (10) - (2 1 1 1 1) - (2 1 1 1 1) - (1 1 1 3) - (3 3 1) - (3 2) - (1 2 2) - (2 2 3 2) - (2 3 3 2) - (2 3 2 6) - (5 3 7) - (4 4 3 1) - (7 2 3 3) - (6 4 3 1 1) - (9 3 2) - (8 6) - (11 5)) - ((11) - (10) - (7) - (8) - (4 3 5) - (1 5 3 6) - (1 1 1 2 2 3) - (2 6 2 4) - (4 1 3 2 1) - (9 2 2 1) - (4 1 2 2 1) - (8 3) - (4 1 3) - (5 3 3) - (7) - (13) - (7 2) - (2 2 2) - (1 1 3) - (7)) - ((o o o o o o o x x x x x x o o o o o o o) - (o o o o o x x x x x x x x o o o o o o o) - (o o o o x o o o x x x x x x o o o o o o) - (o o o o x x x x x x x x x x o o o o o o) - (o o o o x x o x o x o x o x o o o o o o) - (o o o o x x o x o x o x o x o o o o o o) - (o o o o o x o x o x o x x x o o o o o o) - (o o o o o x x x o x x x o o o x o o o o) - (o o o o o o o x x x o o o o o x x o o o) - (x o o o o o o o o o x x o o o x x o o o) - (x x o o o x x o o o x x x o o x x o o o) - (x x o o x x x o o o o x x x o x x o o o) - (x x o x x x o o x x o o x x x x x x o o) - (x x x x x o o x x x o o o x x x x x x x) - (x x x x o x x x x o o o o o x x x o o x) - (x x x x x x x o o x x o o x x x o x x x) - (x x x x x x o x x x x o o x x x o x o x) - (x x x x x x x x x o o o o x x x o o x x) - (x x x x x x x x o o o o o o x x x x x x) - (x x x x x x x x x x x o o o o x x x x x))) - -("Hattori 28" - ((1 1) - (5) - (3 3) - (8) - (9) - (1 1 3 3) - (1 1 3 1) - (4 4 1) - (2 2 2 3 1) - (5 2 2 1) - (5 3 1) - (6 3 1) - (5 5 2) - (4 3 3 2) - (8 2 3 2) - (7 3 6) - (6 3 6) - (5 3 6) - (5 3 5) - (7 4)) - ((2 1) - (3 4 1) - (3 1 5 1) - (10 1) - (14) - (3 4) - (4 4 1) - (9 5 1) - (8 5 1) - (8 2 1) - (2 2 6 6) - (4 5 6) - (4 4 5) - (4 3) - (3 7) - (2 6) - (5) - (5) - (7) - (12)) - ((o o o o o o o o x o x o o o o o o o o o) - (o o o o o o o o x x x x x o o o o o o o) - (o o o o o o o x x x o x x x o o o o o o) - (o o o o o o o x x x x x x x x o o o o o) - (o o o o o o o x x x x x x x x x o o o o) - (o o x o x o o x x x o o o x x x o o o o) - (o o x o x o o x x x o o o o o o o o o x) - (o x x x x o o x x x x o o o o o o o o x) - (x x o x x o x x o x x x o o o o o o o x) - (x x x x x o x x o o x x o o o o o o o x) - (o o o x x x x x o o x x x o o o o o o x) - (o x x x x x x o o o x x x o o o o o o x) - (o x x x x x o o o x x x x x o o o o x x) - (o x x x x o o x x x o o x x x o o o x x) - (o x x x x x x x x o x x o x x x o o x x) - (o o x x x x x x x o x x x o x x x x x x) - (o o o x x x x x x o x x x o x x x x x x) - (o o o o x x x x x o x x x o x x x x x x) - (x x x x x o o o o o x x x o x x x x x o) - (o o o o o o x x x x x x x o x x x x o o))) - -("Hattori 29" - ((2) - (2) - (2) - (4) - (3 2) - (5 2 2) - (1 1 2 2) - (5 2 2) - (5 2 4) - (5 2 3) - (6 2 2) - (1 1 4 1) - (1 1 2 3 1) - (2 2 1 4) - (2 2 3 1 2) - (1 4 5 3) - (1 17) - (4 4 4 2) - (5 5 5) - (3 3)) - ((8) - (6 2 1) - (1 4 3) - (1 4 5) - (1 4 2 2) - (15) - (6) - (2) - (2 4) - (4 2 1) - (3 2 3 1) - (3 2 5 1) - (2 2 2 2 5) - (1 2 3 2) - (2 2 3) - (2 2 5) - (2 5 2) - (2 2 5) - (3 2 3) - (7)) - ((o o o o o o o o o o o o x x o o o o o o) - (o o o o o o o o o o o x x o o o o o o o) - (o o o o o o o o o o x x o o o o o o o o) - (o o o o o o o o o x x x x o o o o o o o) - (o o o o o o o o x x x o x x o o o o o o) - (o x x x x x o o x x o o o x x o o o o o) - (o x o o o x o o o x x o o o x x o o o o) - (o x x x x x o o o o x x o o o x x o o o) - (o x x x x x o o o o o x x o o o x x x x) - (o x x x x x o o o o o o x x o o o x x x) - (x x x x x x o o o o o o o x x o o o x x) - (x o o o o x o o o o o o x x x x o o o x) - (x o o o o x o o o o o x x o o x x x o x) - (x x o o o x x o o o o x o o o o x x x x) - (x x o o o x x o o o x x x o o o x o x x) - (x o o x x x x o x x x x x o o x x x o o) - (x o x x x x x x x x x x x x x x x x x o) - (x x x x o x x x x o o o x x x x o x x o) - (o o x x x x x o x x x x x o x x x x x o) - (o o o x x x o o o o o o o o o x x x o o))) - -("Hattori 30" - ((3 6) - (6 7) - (7 6) - (19) - (7 6) - (3 3) - (1 3) - (2 4 4 1) - (9 6 2) - (1 2 2 1 3 2) - (1 2 1 2 1 1 3 1) - (1 2 2 1 3 1) - (1 6 7 1) - (1 4 5 1) - (1 3 1) - (1 3 5 1) - (2 1 8) - (3 7) - (5 6 6) - (5 4 5)) - ((3 9 2) - (5 2 4) - (12 3) - (6 6 3) - (5 2 2 2) - (5 2 1 2) - (4 2 2 1) - (1 6 2 2) - (1 4 3 2) - (1 2 2) - (1 5 2) - (1 2 2 1) - (2 1 2 1 2 1) - (5 2 2 3) - (5 7 4) - (6 6 5) - (7 4 5) - (7 5) - (4 4 4) - (12)) - ((o o o x x x o o o o o o x x x x x x o o) - (o x x x x x x o o o o o x x x x x x x o) - (x x x x x x x o o o o o o x x x x x x o) - (x x x x x x x x x x x x x x x x x x x o) - (x x x x x x x o o o o o o x x x x x x o) - (o x x x o o o o o o o o o o o x x x o o) - (o o x o o o o o o o o o o o o o x x x o) - (o x x o x x x x o o o x x x x o o o x o) - (x x x x x x x x x o x x x x x x o o x x) - (x o x x o o o x x o x o o o x x x o x x) - (x o x x o x o x x o x o x o x x x o o x) - (x o x x o o o x x o x o o o x x x o o x) - (x o x x x x x x o o x x x x x x x o o x) - (x o o x x x x o o o o x x x x x o o o x) - (x o o o o o o x x x o o o o o o o o o x) - (x o o o o o o x x x o o o x x x x x o x) - (x x o o o o o o x o o o x x x x x x x x) - (o x x x o o o o o o o o o x x x x x x x) - (x x x x x o x x x x x x o o x x x x x x) - (x x x x x o o x x x x o o o o x x x x x))) - -("Hattori 31" - ((8 7) - (10 8) - (10 9) - (7 1 9) - (5 2 3) - (4 4 3) - (4 1 3) - (4 1 2 3) - (4 2 1 2 1) - (4 1 1) - (4 1 1) - (3 1 1 2) - (3 1 2 1) - (4 2) - (4 1 3) - (3 2 2) - (3 1 2 2) - (1 8 2) - (19) - (20)) - ((16 1) - (17 2) - (20) - (11 2 2) - (5 2) - (4 2) - (4 1 1 2) - (3 2 3) - (3 3) - (3 3 2 4) - (4 5 3) - (4 2 5) - (3 1 1 4) - (4 1 3) - (4 3) - (4 1 1 2) - (4 2 2) - (8 2 2) - (8 1 1 3) - (13 1 3)) - ((o x x x x x x x x o o o o x x x x x x x) - (x x x x x x x x x x o o x x x x x x x x) - (x x x x x x x x x x o x x x x x x x x x) - (x x x x x x x o o x o x x x x x x x x x) - (x x x x x o o o o o x x o o o o o x x x) - (x x x x o o o o o o x x x x o o o x x x) - (x x x x o o o o o o x o o o o o o x x x) - (x x x x o o o x o o x x o o o o o x x x) - (x x x x o o x x o x o x x o o o o o o x) - (x x x x o o o o o x o o o o o o o o o x) - (x x x x o o o o o x o o o o o o o o o x) - (x x x o o o o o o o x o o o o x o o x x) - (x x x o o o x o o x x o o o o o o o o x) - (x x x x o o o o o x x o o o o o o o o o) - (x x x x o o o o o o x o o o o o o x x x) - (x x x o o o o o o o x x o o o o x x o o) - (x x x o o o o o o x o x x o o x x o o o) - (o o x o o o o x x x x x x x x o o o x x) - (o x x x x x x x x x x x x x x x x x x x) - (x x x x x x x x x x x x x x x x x x x x))) - -("Hattori 32" - ((11 5) - (11 7) - (11 7) - (9 2 2) - (7 3 3) - (7 3 3) - (7 3 3) - (1 1 3 3) - (1 1 4 4) - (2 2 4 4) - (1 1 4 4) - (2 2 4 4) - (1 1 4 4) - (1 3 1 4 4) - (1 1 1 4 4) - (2 1 2 3 3) - (2 1 2 3 3) - (5 9) - (3 9) - (3 1 1)) - ((3) (4 5) (7 3 2) (10 2) (7 1 3) (7 7) (7 1 3) (10 2) (7 3 2) (4 5) (3) (16) (18) (19) (3 7 2) (3 2) (3 7 2) (19) (18) (16)) - ((x x x x x x x x x x x o o x x x x x o o) - (x x x x x x x x x x x o x x x x x x x o) - (x x x x x x x x x x x o x x x x x x x o) - (o x x x x x x x x x o o x x o o o x x o) - (o o x x x x x x x o o x x x o o o x x x) - (o o x x x x x x x o o x x x o o o x x x) - (o o x x x x x x x o o x x x o o o x x x) - (o o o x o o o x o o o x x x o o o x x x) - (o o o x o o o x o o o x x x x o x x x x) - (o o x x o o o x x o o x x x x o x x x x) - (o o x o o o o o x o o x x x x o x x x x) - (o x x o o o o o x x o x x x x o x x x x) - (o x o o o o o o o x o x x x x o x x x x) - (o x o o x x x o o x o x x x x o x x x x) - (o x o o o x o o o x o x x x x o x x x x) - (o x x o o x o o x x o x x x o o o x x x) - (o o x x o x o x x o o x x x o o o x x x) - (o o o x x x x x o o o x x x x x x x x x) - (o o o o x x x o o o o x x x x x x x x x) - (o o o o x x x o o o o x o o o o o o o x))) - -("Hattori 33" - ((1 1 1 1) - (3 3 3) - (3 1 5 5) - (6 6) - (6 1) - (4 3 2) - (4 4 4) - (4 11) - (17) - (18) - (18) - (16 1) - (16 1) - (4 5 4) - (2 6 2) - (3 2 2 1) - (2 2 1 1) - (1 1 1 1) - (1 1 1 1) - (2 2 2 2)) - ((2) (3) (11) (14) (1 11) (16) (9 1) (6 5) (9) (1 12 1) (2 16) (3 10) (2 9 1) (1 7 6) (1 9) (2 10 1) (3 14) (4 7) (3 3) (2 4)) - ((o o o x o x o o o o o x o o o o o x o o) - (o o o x x x o o o o x x x o o o x x x o) - (o x x x o x o o o x x x x x o x x x x x) - (x x x x x x o o o o o o o o x x x x x x) - (x x x x x x o o o o x o o o o o o o o o) - (o o x x x x o o o x x x o o x x o o o o) - (o o x x x x o o x x x x o x x x x o o o) - (o o x x x x o x x x x x x x x x x x o o) - (o o x x x x x x x x x x x x x x x x x o) - (o o x x x x x x x x x x x x x x x x x x) - (o o x x x x x x x x x x x x x x x x x x) - (o o x x x x x x x x x x x x x x x x o x) - (o o x x x x x x x x x x x x x x x x o x) - (o o o x x x x o x x x x x o x x x x o o) - (o o o o o x x o x x x x x x o x x o o o) - (o o o o o x x x o x x o x x o o x o o o) - (o o o o o o x x o x x o o x o o x o o o) - (o o o o o o o x o o x o o x o o x o o o) - (o o o o o o o x o o x o o x o o x o o o) - (o o o o o o x x o x x o x x o x x o o o))) - -("Hattori 34" - ((10) - (14) - (13 1) - (11 3) - (14) - (1 1) - (15) - (3 3 3 1 1) - (1 1 1 1 1 1) - (1 1 1 2 3) - (1 11 1 2) - (1 2 1) - (2 5 1 1) - (2 3 2 1) - (5 2 1) - (1 4 5 1) - (1 4 7 1) - (1 16 1) - (8 11) - (6 10)) - ((5) - (6 1 2) - (4 4 3) - (1 5 7) - (2 1 1 6) - (3 2 1 5) - (4 3 1 1 4) - (4 2 1 2 2) - (5 1 2 2 1) - (5 1 1 2 2) - (5 2 1 1 4) - (5 3 1 5) - (5 2 1 5) - (5 1 2 6) - (5 4 7) - (3 3 3 5) - (3 6 4) - (4 1 3) - (1 1 2 2) - (3 10)) - ((o o o o o o o o x x x x x x x x x x o o) - (o o o o o o x x x x x x x x x x x x x x) - (o o o o o x x x x x x x x x x x x x o x) - (o o o o x x x x x x x x x x x o o x x x) - (o o x x x x x x x x x x x x x x o o o o) - (o o x o o o o o o o o o o o o x o o o o) - (o o x x x x x x x x x x x x x x x o o o) - (o x x x o x x x o o x x x o x o x o o o) - (o x o x o o x o o o o x o o x o x o o o) - (o x o x o o o o x o o o o x x o x x x o) - (o x o x x x x x x x x x x x o o x o x x) - (o x o o o o o o o o o o o o o x x o o x) - (o x x o o o x x x x x o o o o x o o o x) - (o o x x o o o x x x o o o o x x o o o x) - (x x x x x o o o o o o o o x x o o o o x) - (x o x x x x o o o o o x x x x x o o o x) - (x o o x x x x o o o x x x x x x x o o x) - (x o x x x x x x x x x x x x x x x x o x) - (x x x x x x x x o x x x x x x x x x x x) - (o x x x x x x o o o x x x x x x x x x x))) - -("Hattori 35" - ((3 3) - (1 2 2 1) - (1 4 2) - (3 1 1 4) - (4 3 2 2) - (2 2 6 4 1) - (8 11) - (2 3 2 2 2 2) - (5 2 3 3) - (4 3 3 3) - (1 2 3 2 1 1) - (4 2 2 3) - (2 1 2 2 4) - (5 1 1 3) - (1 4 5) - (3 3 4 2) - (19) - (3 3 5 3) - (4 4 5) - (13)) - ((10) - (5 3 2) - (3 4 5) - (2 9 3) - (6 7) - (8 3 2) - (1 1 3 5) - (2 2 5 2 1) - (2 1 4 4) - (8 1 2) - (1 3 4) - (8 4) - (2 5 2 1) - (1 1 5 5) - (7 5 5) - (6 3 2) - (1 4 8) - (4 7 3) - (1 4 7) - (3 4 3)) - ((o o o o o x x x o o o o x x x o o o o o) - (o o o o o x o x x o o x x o x o o o o o) - (o o o o o x o o x x x x o o x x o o o o) - (o o o x x x o o o x o x o o x x x x o o) - (o o x x x x o o o x x x o o x x o x x o) - (o x x o x x o x x x x x x o x x x x o x) - (x x x x x x x x o x x x x x x x x x x x) - (x x o x x x o o x x o x x o o x x o x x) - (x x x x x o o o x x o x x x o o x x x o) - (x x x x o o o x x x o o x x x o o x x x) - (x o x x o o x x x o o o o x x o o x o x) - (x x x x o o x x o o o o o x x o o x x x) - (x x o x o o x x o o o o o x x o x x x x) - (x x x x x o o x o o o o o o x o x x x o) - (x o x x x x o o o o o o o o o x x x x x) - (x x x o x x x o o o o o o x x x x o x x) - (o x x x x x x x x x x x x x x x x x x x) - (o o x x x o x x x o x x x x x o x x x o) - (o o o x x x x o x x x x o x x x x x o o) - (o o o o x x x x x x x x x x x x x o o o))) - -("Hattori 36" - ((3 3) - (1 6 1) - (1 7) - (1 1 2) - (1 2 2 1 2) - (1 1 1 1 1) - (2 2 1) - (2 2 1) - (1 2 2 2 1) - (1 2 2 1 1) - (1 1 1) - (4 3 1 1) - (2 1 1 1 1 1) - (13 1 1) - (1 1 1) - (2 4 1 1) - (11 1 1) - (1 4 5 1) - (1 1 1 1 1 1 1) - (5 5 6)) - ((9) - (2 3 2) - (7 1 1 1 1) - (1 2 3 4) - (2 2 2 1 1 1) - (1 1 1 1 1) - (1 1 4) - (1 1 2) - (1 2 2 1 2 1) - (2 1 2 3 4) - (1 1 1 1 1) - (7 3 2 1) - (1 2 1 1 3) - (1 2 1 1) - (1 8 3) - (1 1 1) - (1 5) - (2 1) - (2 1) - (16)) - ((o o x x x o o o o x x x o o o o o o o o) - (o o x o x x x x x x o x o o o o o o o o) - (o o x o o o o o o o o x x x x x x x o o) - (o o x o o o o o o o o x o o o o o x x o) - (o o x o x x o o x x o x o o o o o o x x) - (o o x o x o o o x o o x o o o o o o o x) - (o x x o o o o o o o o x x o o o o o o x) - (x x o o o o o o o o o o x x o o o o o x) - (x o o x x o o o x x o o o x x o o o o x) - (x o o x x o o o x x o o o o x o o o o x) - (x o o o o o o o o o o o o o x o o o o x) - (x x x x o o o o o x x x o o x o o o o x) - (x x o x o o o o o x o x o o x o o o o x) - (x x x x x x x x x x x x x o x o o o o x) - (x o o o o o o o o o o o o o x o o o o x) - (x x o o o o o o o o o x x x x o x o o x) - (o x x x x x x x x x x x o o o o x o o x) - (o o o x o o x x x x o o x x x x x o o x) - (o o o x o o x o o x o o x o x o x o o x) - (o o x x x x x o x x x x x o x x x x x x))) - -("Hattori 37" - ((6) - (2 3) - (10) - (1 1 1 1) - (1 1 1 1) - (8) - (3 1 3) - (15) - (2 10 2) - (1 8 1) - (1 2 2 1 1) - (2 1 2 9) - (3 1 2 1 4 3) - (1 2 2 3 3) - (4 5 2) - (2 8 1 3) - (1 5 2 2) - (2 3 1 2) - (9 1 2) - (4 2 7)) - ((4 5) - (2 2 2 3) - (2 1 1 2) - (3 5 2) - (10 2 1) - (3 1 3 1 1 2) - (1 4 3 1 1 4) - (1 1 5 3 5) - (1 4 3 1 2 2) - (3 1 3 4) - (3 1 10) - (11 2) - (1 3 4 4) - (1 2 7 1) - (1 3 1) - (2 2 2) - (4 5) - (7 1) - (5 1) - (2)) - ((o o o o o x x x x x x o o o o o o o o o) - (o o o o x x o o o x x x o o o o o o o o) - (o o o o x x x x x x x x x x o o o o o o) - (o o o o x o x o x o o x o o o o o o o o) - (o o o o x o x o x o o x o o o o o o o o) - (o o o o x x x x x x x x o o o o o o o o) - (o o x x x o o x o o o x x x o o o o o o) - (o x x x x x x x x x x x x x x x o o o o) - (x x o x x x x x x x x x x o o x x o o o) - (x o o o x x x x x x x x o o o o x o o o) - (x o o x x o o o o o x x o x o o x o o o) - (x x o x o o x x o o x x x x x x x x x o) - (o x x x o x o x x o x o x x x x o x x x) - (o o o x o o x x o x x o x x x o o x x x) - (o x x x x o o o o x x x x x o o o x x o) - (x x o o x x x x x x x x o x o o x x x o) - (x o o o o o x x x x x o x x o o x x o o) - (x x o o o x x x o o o o x o o o x x o o) - (x x x x x x x x x o o o x o o x x o o o) - (x x x x o o o x x o o o x x x x x x x o))) - -("Hattori 38" - ((6 6) - (9 8) - (3 5 3) - (2 2 1) - (1) - (1) - (2 1) - (1 4) - (9 3) - (11 2) - (14 2) - (8 3 2) - (8 1 4 2) - (8 5 3) - (20) - (12 7) - (1 1 1 1 2 5) - (1 1 1 1 3 4) - (13 3) - (16)) - ((2 6 1) - (3 11) - (2 8 2) - (3 12) - (2 8 2) - (2 12) - (2 8 2) - (2 12) - (3 3 2 2) - (3 3 1 6) - (2 1 4 6) - (2 7 3) - (3 5 2) - (2 6 1) - (2 5 1) - (2 7) - (2 2 6) - (3 3 6) - (2 11) - (2 10)) - ((o o o x x x x x x o o o x x x x x x o o) - (o x x x x x x x x x o x x x x x x x x o) - (o x x x o o o o x x x x x o o o o x x x) - (x x o o o o o o o x x o o o o o o o o x) - (x o o o o o o o o o o o o o o o o o o o) - (o o o o o o o o o o x o o o o o o o o o) - (o o o o o o o o o o o o o o o o x x o x) - (o o o o o o o o o o x o o o o o x x x x) - (o o x x x x x x x x x o o o o o o x x x) - (o x x x x x x x x x x x o o o o o o x x) - (x x x x x x x x x x x x x x o o o o x x) - (x x x x x x x x o o o x x x o o o o x x) - (x x x x x x x x o x o x x x x o o o x x) - (x x x x x x x x o o o x x x x x o x x x) - (x x x x x x x x x x x x x x x x x x x x) - (x x x x x x x x x x x x o x x x x x x x) - (o x o x o x o x o x x o o o x x x x x o) - (o x o x o x o x o x x x o o o x x x x o) - (x x x x x x x x x x x x x o o x x x o o) - (o x x x x x x x x x x x x x x x x o o o))) - -("Hattori 39" - ((2) - (1) - (10 9) - (10 7 1) - (10 5 3) - (8 8) - (7 4 2) - (7 2 2 4) - (7 2 7) - (2 1) - (1) - (1 4) - (1 1 1) - (1 2 1 1 1) - (2 2 1 4 1) - (2 1 1 4 2) - (3 4 1 1) - (1 1) - (1 2 2 1) - (18)) - ((15 1) - (8 3) - (7 2 1) - (7 2 1) - (7 3 2) - (7 2) - (7 1) - (4 1) - (3 4 1) - (1 3 2 1 1 1) - (2 2 1 3 1) - (3 1 4 1) - (4 1 3 1) - (7 4 1) - (7 1) - (5 1 1) - (2 4 2) - (4 2 1 2) - (1 5 1 1) - (8 6)) - ((o o o o o o o o o x x o o o o o o o o o) - (o o o o o o o o o o x o o o o o o o o o) - (x x x x x x x x x x o x x x x x x x x x) - (x x x x x x x x x x o x x x x x x x o x) - (x x x x x x x x x x o x x x x x o x x x) - (x x x x x x x x o o o o x x x x x x x x) - (x x x x x x x o o o o o o x x x x o x x) - (x x x x x x x o o x x o o x x o x x x x) - (x x x x x x x o o x x o o x x x x x x x) - (x x o o o o o o o o o o o o o o o o o x) - (x o o o o o o o o o o o o o o o o o o o) - (x o o o o o o o o x x x x o o o o o o o) - (x o o o o o o o x o o o o x o o o o o o) - (x o o x x o o o x o o x o x o o o o o o) - (x x o x x o o o x o x x x x o o o o o x) - (x x o o x o o o x o x x x x o o o o x x) - (x x x o o o o o o x x x x o o o o x o x) - (o o x o o o o o o o o o o o o o o o o x) - (x o o o x x o o o o o o o o o o x x o x) - (o o x x x x x x x x x x x x x x x x x x))) - -("Hattori 40" - ((8) - (3 8) - (3 1 4 2) - (4 1 1 2) - (1 1 1 1 3 4) - (1 1 1 1 3) - (1 1 1 1 1) - (1 1 4) - (2 1 1) - (1 5 2 1) - (3 1 3 3) - (3 1 3 1) - (3 2 3 3) - (3 3 1) - (1 1 1 1 3) - (1 5 1 1) - (11 2) - (1 1 3) - (13 5) - (13 6)) - ((2) - (5 3 4) - (1 9 2) - (2 4 1 2) - (1 2 3 2) - (3 1 2 2) - (1 4 2 2) - (4 1 1 2 2) - (1 2 3 2) - (6 4 1 2) - (1 8 2) - (6 3 4) - (3 2) - (4) - (5 4 1) - (3 4 1 2) - (2 1 1 5 2) - (2 4 1 1 3) - (3 1 1 1 4) - (3 1 5)) - ((o o o o o o o o o o o o x x x x x x x x) - (o o o o o o o x x x o o x x x x x x x x) - (o o o o o x x x o x o o x x x x o o x x) - (o o x x x x o x o x o o o x x o o o o o) - (o x o x o x o x o x x x o o x x x x o o) - (o x o o o o o o o x o x o o o x o x x x) - (o x o o o o o o o x o x o o o x o x o o) - (o x o o o o o o o o o x o o x x x x o o) - (o x x o o o o o o o o x o o x o o o o o) - (o o x o x x x x x o x x o o x o o o o o) - (o o x x x o x o x x x o o o x x x o o o) - (o x x x o o x o o x x x o o o o x o o o) - (o x x x o o x x o x x x o o o o x x x o) - (o x x x o o o o o x x x o o o o x o o o) - (o o x o x o o o x o x o o o o o x x x o) - (o o x o x x x x x o x o o o o o o o o x) - (o x x x x x x x x x x x o o o o o o x x) - (o x o o o o o o o o o x o o o o o x x x) - (x x x x x x x x x x x x x o o x x x x x) - (x x x x x x x x x x x x x o x x x x x x))) - -("Hattori 41" - ((6 1 3) - (5 1) - (3) - (2) - (2 2 2) - (1 4 4) - (2 2 3 2) - (5 6) - (3 5) - (2 3) - (1 4 1) - (1 2 3 3) - (1 2 3 1) - (2 2 1) - (2 3) - (2 5) - (1 5) - (1 6) - (1 1 1 1 1 1 1 6) - (1 1 1 1 1 1 1 6)) - ((6 10) - (5 3) - (3 2) - (2 2) - (2 4 2) - (1 2 2) - (5 2 2) - (3 3) - (2 2) - (4) - (1 4 2) - (2 3) - (4 2) - (6) - (2 3 3) - (5 5) - (3 5) - (1 2 6) - (1 1 6) - (2 9)) - ((x x x x x x o o o o x o o o o o o x x x) - (x x x x x o o o o o o o o o o o o o o x) - (x x x o o o o o o o o o o o o o o o o o) - (x x o o o o o o o o o o o o o o o o o o) - (x x o o o x x o o o o o o x x o o o o o) - (x o o o x x x x o o o o x x x x o o o o) - (o o o x x o x x o o o x x x o x x o o o) - (o o o x x x x x o o o x x x x x x o o o) - (o o o o x x x o o o o o x x x x x o o o) - (o o o o o o o o x x o o o x x x o o o o) - (x o o o o o o x x x x o o o o o o x o o) - (x o o o o o x x o x x x o o o o o x x x) - (x o o o o o x x o x x x o o o o o o o x) - (x x o o o o o o o o x x o o o o o o o x) - (x x o o o o o o o o o o o o o o o x x x) - (x x o o o o o o o o o o o o o x x x x x) - (x o o o o o o o o o o o o o o x x x x x) - (x o o o o o o o o o o o o o x x x x x x) - (x o x o x o x o x o x o x o x x x x x x) - (x o x o x o x o x o x o x o x x x x x x))) - -("Hattori 42" - ((9) - (3 6) - (3 1 6) - (4 1 1 4) - (4 5) - (6 1 7) - (4 2 2 4) - (3 6 3) - (2 1 2 2 3) - (1 1 1 1 2) - (1 6 1) - (1 4 2) - (1 1 2) - (3 2 2 3) - (10 2 1) - (9 1 1) - (10 3 2) - (15 1) - (11 2 1) - (7 3)) - ((2) - (5 2) - (7 4) - (12 5) - (6 7) - (2 6 6) - (1 2 2 2 6) - (2 1 2 10) - (4 5 7) - (3 3 2 6) - (9 1 2 4) - (6 2 3 3) - (6 2 3) - (10 2) - (6 3) - (4 2) - (5) - (2 2) - (1 1 1) - (7)) - ((o o o x x x x x x x x x o o o o o o o o) - (o o o x x x o x x x x x x o o o o o o o) - (o o x x x o x o x x x x x x o o o o o o) - (o x x x x o x o x o x x x x o o o o o o) - (o x x x x o o o o o x x x x x o o o o o) - (x x x x x x o x o x x x x x x x o o o o) - (x x x x o x x o o x x o x x x x o o o o) - (o x x x o x x x x x x o o x x x o o o o) - (o o x x o x o x x o x x o x x x o o o o) - (o o o x o x o o x o o x o x x o o o o o) - (o o o x o x x x x x x o o x o o o o o o) - (o o o x o o x x x x o o x x o o o o o o) - (o o o o x o o x o o o x x o o o o o o o) - (o o o x x x o x x o x x o o o o o x x x) - (o o x x x x x x x x x x o o o o x x o x) - (o x x x x x x x x x o o o o o o x o o x) - (o x x x x x x x x x x o o o x x x o x x) - (o o x x x x x x x x x x x x x x x o o x) - (o o o o x x x x x x x x x x x o x x o x) - (o o o o o o x x x x x x x o o o o x x x))) - -("Hattori 43" - ((5) - (3 3 3) - (1 2 4 1) - (2 10) - (1 1 3 1) - (2 1 3 2 2 1) - (2 1 5 1 1 1) - (2 7 1) - (3 7 3 2) - (3 7 3 2) - (4 6 2 2) - (4 7 2) - (5 11) - (5 1 4 3) - (3 4 3 3 2) - (4 2 3 2) - (2 3 1) - (2 2 1) - (2 1) - (5)) - ((3 3) - (3 4) - (9) - (8) - (6 3) - (5 9) - (3 3 5) - (1 5 1) - (2 7 1 1) - (1 10 1 1) - (1 11 6) - (13 2 1) - (2 1 7 1) - (3 1 3) - (2 2 2 4) - (2 3 4) - (3 2 3 1 2) - (1 1 1 3) - (3 7) - (8 2)) - ((o o o o o o o o x x x x x o o o o o o o) - (o o o o o o x x x o o x x x o o x x x o) - (o o o o o o x o o o x x o x x x x o x o) - (o o o o o x x o o o x x x x x x x x x x) - (x o o o o x o o o x x x o o o o o o o x) - (x x o o o x o o o x x x o x x o x x o x) - (x x o o o x o x x x x x o o x o x o o x) - (o x x o o x x x x x x x o o o o o o o x) - (o o x x x o x x x x x x x o x x x o x x) - (o o x x x o x x x x x x x o x x x o x x) - (o o x x x x o x x x x x x o o x x o x x) - (o o x x x x o o x x x x x x x o o x x o) - (o o x x x x x o x x x x x x x x x x x o) - (o o x x x x x o o x o o x x x x o x x x) - (o x x x o x x x x o x x x o x x x o x x) - (x x x x o x x o o x x x o o o x x o o o) - (x x o o x x x o o o x o o o o o o o o o) - (x x o o x x o o o o x o o o o o o o o o) - (o o o o x x o o o o x o o o o o o o o o) - (o o o o o o o o x x x x x o o o o o o o))) - -("Hattori 44" - ((5) - (5 6) - (2 2 6 1) - (6 6 2) - (8 5 3) - (2 1 1 5 5) - (11 6) - (4 5 7) - (13) - (9) - (4 6) - (5 3 4) - (4 5 1 2) - (2 4 3 3) - (1 5 1 3) - (6 2 3) - (6 3 3) - (5 3 2) - (4 3 1) - (3 3)) - ((4 4 4) - (4 3 5) - (2 2 3 6) - (7 3 5) - (4 1 3 5) - (1 8 5) - (4 4 5) - (4 8) - (7) - (6 2 4) - (3 4 7) - (3 6 5) - (4 5) - (5 2 2) - (5 3 2) - (4 4 2) - (4 4 3) - (3 5 3) - (2 5 3) - (5 3)) - ((o o o o o o o o o o o o o o x x x x x o) - (o o o x x x x x o o o o o x x x x x x o) - (o o o x x o x x o o o o x x x x x x o x) - (o o x x x x x x o o o x x x x x x o x x) - (x x x x x x x x o o x x x x x o o x x x) - (x x o x o x o o o x x x x x o x x x x x) - (x x x x x x x x x x x o o o x x x x x x) - (x x x x o x x x x x o o x x x x x x x o) - (o o o o o x x x x x x x x x x x x x o o) - (o o o o x x x x x x x x x o o o o o o o) - (o o x x x x o x x x x x x o o o o o o o) - (x x x x x o x x x o x x x x o o o o o o) - (x x x x o x x x x x o x o x x o o o o o) - (x x o o x x x x o x x x o o x x x o o o) - (x o x x x x x o o o x o o o o x x x o o) - (o x x x x x x o o o x x o o o o x x x o) - (x x x x x x o o o x x x o o o o o x x x) - (x x x x x o o o o x x x o o o o o o x x) - (x x x x o o o o o x x x o o o o o o o x) - (x x x o o o o o o x x x o o o o o o o o))) - -("Hattori 45" - ((8 3) - (3 11) - (9 1 3) - (1 6) - (2 7 2) - (2 1 4) - (4 5 3) - (3 5) - (1 2 3 2) - (1 6) - (11 1) - (3 5) - (3 6 3) - (4 6 4) - (4 15) - (3 7 4) - (8 3) - (1 2 5) - (5 5) - (4)) - ((1) - (1 1 1) - (1 2 1) - (2 3 2 3) - (3 3 1 1 1) - (2 1 1 4 2) - (2 1 1 6 1) - (4 4 3 1) - (4 4 6) - (11 7) - (8 8) - (8 9) - (2 6 9) - (2 1 3 9) - (2 1 1 2 1 4) - (2 1 1 3) - (3 2) - (1 1 1 5 1) - (1 1 1 1 1 5) - (1 1 1 1 1 1 5)) - ((o o o o o o o x x x x x x x x o o x x x) - (o x x x o x x x x x x x x x x x o o o o) - (o o o x x x x x x x x x o o o x o x x x) - (o o o o x o o x x x x x x o o o o o o o) - (o o o x x o o o o x x x x x x x o o x x) - (o o x x o o x o o x x x x o o o o o o o) - (o x x x x o o o o x x x x x o o o x x x) - (o o o o x x x o o x x x x x o o o o o o) - (o o o o x o o o x x o o x x x o o o x x) - (o o o x o o x x x x x x o o o o o o o o) - (o o o x x x x x x x x x x x o o o o o x) - (o o o o o o x x x o x x x x x o o o o o) - (o o o o o x x x o x x x x x x o o x x x) - (o o o x x x x o x x x x x x o o x x x x) - (x x x x o x x x x x x x x x x x x x x x) - (o o o x x x o x x x x x x x o o x x x x) - (o o o o o o o x x x x x x x x o o x x x) - (o o o o o x o o x x o x x x x x o o o o) - (o o o o o x x x x x o o x x x x x o o o) - (o o o o o o o o o o o o o o x x x x o o))) - -("Hattori 46" - ((5) - (4 8) - (15) - (3 10) - (2 9) - (1 1 1 1 3 5) - (1 1 6 2 4) - (1 2 2 4 3) - (4 4 3 1) - (3 2 1 2 3 1) - (1 1 4 3 2) - (1 2 2 1 2 2) - (2 5 2 1) - (3 6 1) - (10 4 2) - (6 5 1) - (2 2 2) - (2 2 2) - (5 6) - (2 13)) - ((10) - (2 2 3) - (2 1 3 2 1) - (2 2 1 2 2) - (2 3 2 2 1) - (2 1 3 1 5) - (2 8 5) - (2 3 3 2 2) - (1 2 3 1 3 1) - (3 2 1 2 2 1) - (6 2 1 3 3) - (14 1 2) - (12 3 2) - (5 3 2) - (5 2 3 2) - (5 3 2 2) - (6 1 1 1 1) - (5 2 1) - (5 3 1) - (5 3 1)) - ((o o o o o o o o o o x x x x x o o o o o) - (o o o o x x x x o x x x x x x x x o o o) - (o o x x x x x x x x x x x x x x x o o o) - (o x x x o o o o o x x x x x x x x x x o) - (x x o o o o o o o o x x x x x x x x x o) - (x o o o x o x o x o x x x o o x x x x x) - (x o x o x x x x x x o x x o o o x x x x) - (x o o x x o x x o x x x x o o o o x x x) - (x x x x o x x x x o x x x o o o o o o x) - (x x x o o x x o x o o x x o x x x o o x) - (x o x o o x x x x o x x x o x x o o o o) - (x o o x x o x x o x o x x o o x x o o o) - (x x o o x x x x x o x x o o o o o o o x) - (x x x o o o o o o x x x x x x o o o o x) - (o x x x x x x x x x x o x x x x o o x x) - (o o o x x x x x x o o x x x x x o o x o) - (o o o o o x x o x x o o o o o o o x x o) - (o o o o o x x o o x x o o o o o x x o o) - (o o o x x x x x o o x x x x x x o o o o) - (o o x x o o o x x x x x x x x x x x x x))) - -("Hattori 47" - ((12) - (2 3) - (1 8 3) - (1 3 3 2) - (1 2 2 2) - (1 2 2 2) - (1 3 2) - (11 3) - (7 7) - (3 3) - (3 2) - (1 1) - (3 1) - (2 1 2 1 1) - (6 2 1 1) - (2 1 5 5 1) - (2 1 1 1 1 1 1 1) - (2 1 1 2 1 1 1) - (2 3 3) - (2 2)) - ((7) - (7) - (6 1) - (2 1 4) - (1 7 1) - (1 7 3) - (1 2 5 1 2) - (1 1 2 5 1 2 1) - (1 1 2 4 1 2) - (1 1 2 4) - (1 1 2 2) - (1 2 1 2) - (1 1 1 1) - (1 1 2 4) - (2 1 1) - (1 1 3) - (2 1 1) - (1 3 4) - (9 2) - (17)) - ((o o o x x x x x x x x x x x x o o o o o) - (o o x x o o o o o o o o o o x x x o o o) - (o o x o x x x x x x x x o o o o x x x o) - (o o x o x x x o o o o x x x o o o o x x) - (o o x o x x o x x o o o o o o o o o x x) - (o o x o x x o x x o o o o o o o o o x x) - (o o x o x x x o o o o o o o o o o o x x) - (o o o x x x x x x x x x x x o o o x x x) - (o o o o x x x x x x x o o x x x x x x x) - (o o o o o o x x x o o o o o o o o x x x) - (o o o o o o x x x o o o o o o o o o x x) - (o o o o o o o x o o o o o o o o o o o x) - (o o o o o o o o o o o x x x o o o o o x) - (x x o o o o o x o o x x o x o o o o o x) - (x x x x x x o o o x x o o x o o o o o x) - (x x o x o x x x x x o o o x x x x x o x) - (x x o x o x o x o x o o o o o x o x o x) - (x x o x o o x o x x o o o o o x o x o x) - (x x o o o o x x x o o o o o o o o x x x) - (x x o o o o o o o o o o o o o o o o x x))) - -("Hattori 48" - ((5 3) - (10 1 1) - (5 4) - (3) - (7 3) - (14) - (16) - (5 4) - (4 3) - (3 3 3 2) - (1 1 3 2 2 1) - (1 1 4 1 3 1) - (1 1 4 1 3 1) - (1 4 4 2) - (1 3) - (2 4) - (3 6) - (18) - (16) - (12)) - ((1 10) - (1 3 4) - (1 4 3) - (1 4 3) - (1 3 2 3) - (3 3 1 1 3) - (3 3 1 3 3) - (3 3 5 3) - (3 3 5 3) - (3 3 3 3) - (3 3) - (3 4 3) - (3 2 1 3) - (2 1 3 4) - (2 5 4) - (4 3 3) - (6 4) - (5 3 4) - (1 2 3 4) - (3 8)) - ((o o o o o x x x x x o o o o o o o x x x) - (x x x x x x x x x x o o o o o o o x o x) - (o o o o o x x x x x o o o o o o x x x x) - (o o o o o o o o o o o o o o o o x x x o) - (o o o o o o x x x x x x x o o x x x o o) - (o o o x x x x x x x x x x x x x x o o o) - (o o x x x x x x x x x x x x x x x x o o) - (o x x x x x o o o o o o o o o x x x x o) - (x x x x o o o o o o o o o o o o o x x x) - (x x x o o o x x x o o o x x x o o o x x) - (x o o o o x o x x x o x x o x x o o o x) - (x o o o x o x x x x o x o x x x o o o x) - (x o o o x o x x x x o x o x x x o o o x) - (x o o o o x x x x o o x x x x o o o x x) - (x o o o o o o o o o o o o o o o o x x x) - (x x o o o o o o o o o o o o o o x x x x) - (x x x o o o o o o o o o o x x x x x x o) - (x x x x x x x x x x x x x x x x x x o o) - (o x x x x x x x x x x x x x x x x o o o) - (o o o x x x x x x x x x x x x o o o o o))) - -("Hattori 49" - ((2 2) - (2 2) - (3 3 3 3) - (5 8 5) - (3 3 3 3) - (2 1 1 4 1 1 2) - (2 1 8 1 2) - (1 2 2 1) - (1 1 1 1 1 1 1 1) - (2 2 1 1) - (1 1 1 1 2 1 1) - (2 1 1 1 1) - (1 1 1 1) - (1 4 1) - (9) - (7 7) - (1 7 1) - (13 1) - (4 4) - (5 5)) - ((3) - (7 1) - (7 1 1 2) - (1 5) - (8 1 3) - (1 1 3 1 3) - (6 5 1) - (1 4 4) - (1 2 9) - (1 2 1 5) - (1 2 2 2 2) - (1 2 1 5) - (1 2 3 4) - (9 4) - (1 1 4 1) - (10 1 3) - (1 1 2) - (7 5) - (7 1 1 2) - (3 1)) - ((o x x o o o o o o o o o o o o o o x x o) - (o x x o o o o o o o o o o o o o o x x o) - (x x x o x x x o o o o o o x x x o x x x) - (x x x x x o x x x x x x x x o x x x x x) - (x x x o x x x o o o o o o x x x o x x x) - (o x x o x o x o x x x x o x o x o x x o) - (o x x o x o x x x x x x x x o x o x x o) - (o o o o x o x x o o o o x x o x o o o o) - (o o x o x o o x o x o x o x o x o o x o) - (o o o o x x o x x o o o o x o x o o o o) - (o o x o o x o o x o x o x x o x o o x o) - (o o o o o x x o x o x o x o o x o o o o) - (o o o o o o x o x o o o x o x o o o o o) - (o o o o o o x o x x x x o o x o o o o o) - (o o o o o o x x x x x x x x x o o o o o) - (o o o x x x x x x x o x x x x x x x o o) - (o o o x o o o x x x x x x x o o o x o o) - (o o o x x x x x x x x x x x x x o x o o) - (o o x x x x o o o o o o o o o x x x x o) - (o x x x x x o o o o o o o o o x x x x x))) - -("Hattori 50" - ((1 1) - (1 1) - (2 15 1) - (3 2 2) - (3 1 4 2) - (2 5 1) - (2 1 3 3 1) - (1 7 2) - (1 1 5 1) - (2 1 6) - (3 9) - (5 5 3) - (6 4 3) - (4 2 5) - (1 2 1 6) - (2 1 3 6) - (1 2 4 6) - (1 3 3 6) - (2 1 3 3 1) - (4 2 2)) - ((8 3) - (5 2 2) - (2 1 1 1 3 1) - (1 1 4 3) - (1 6 3) - (1 1 1 3 1) - (1 1 1 4) - (1 2 4) - (1 5 2) - (1 6 4) - (1 1 6 5) - (1 2 8 4) - (5 6) - (6 4 5) - (1 5 1 6) - (1 9) - (1 8) - (1 7) - (2 5 1) - (7 2)) - ((x o o o o o o o o o o o o o o o o o o x) - (x o o o o o o o o o o o o o o o o o o x) - (x x o x x x x x x x x x x x x x x x o x) - (x x x o o o o o o o o o x x o o o o x x) - (x x x o o x o o o o o x x x x o o o x x) - (x x o o o o o o o o x x x x x o o o o x) - (x x o x o o o x x x o o x x x o o o o x) - (x o o o o x x x x x x x o x x o o o o o) - (o o x o x o o o x x x x x o x o o o o o) - (o o o x x o x o x x x x x x o o o o o o) - (o o x x x o o o x x x x x x x x x o o o) - (o o o x x x x x o x x x x x o x x x o o) - (o o x x x x x x o o x x x x o x x x o o) - (o o o o x x x x o o o x x o x x x x x o) - (o x o o o o x x o o o x o x x x x x x o) - (o x x o x o o o x x x o o x x x x x x o) - (o o x o x x o o x x x x o x x x x x x o) - (x o x x x o o o o x x x o x x x x x x o) - (x x o x o o o o o x x x o x x x o o o x) - (x x x x o o o o o o x x o o o o o o x x))) - -("Hattori 51" - ((1 1 3 3) - (4 2 4) - (6 6) - (3 1 7) - (1 2 1 8) - (3 2 1 8) - (2 1 8) - (4 1 9) - (2 1 13) - (2 1 2 6) - (1 3 1 2) - (1 3 2 1) - (4 2 1) - (2 3) - (3 2) - (7) - (1 1) - (2 1 2) - (4 1) - (5)) - ((1 1 3) - (1 5) - (8) - (2 7) - (3 2 3) - (2 2 1 1 1) - (1 1 2 2 2) - (9 1 1 1) - (2 1 2 4) - (1 1 1 2) - (3 1 1) - (3 5) - (5 2 1 1) - (7 2 1) - (10 2) - (10 3) - (12) - (9) - (9) - (10)) - ((o o x o x o x x x o o o o o x x x o o o) - (o o x x x x o x x o o o o o x x x x o o) - (o o x x x x x x o o o o o x x x x x x o) - (x x x o o o o x o o o o o x x x x x x x) - (o o x o x x o x o o o o x x x x x x x x) - (x x x o x x o x o o o o x x x x x x x x) - (o x x o o o o x o o o o x x x x x x x x) - (x x x x o o o x o o o x x x x x x x x x) - (x x o x o o o x x x x x x x x x x x x x) - (x x o x o o o o o o x x o o x x x x x x) - (o o o x o o o o x x x o o o o o x o x x) - (o o o x o o x x x o o o o o o x x o o x) - (o o o x x x x o o o o o o o x x o o o x) - (o o o x x o o o o o o o o x x x o o o o) - (o o o o x x x o o o o o x x o o o o o o) - (o o o o o o x x x x x x x o o o o o o o) - (o o o o o o o o x o o x o o o o o o o o) - (o o o o o x x o x o o x x o o o o o o o) - (o o o o o o x x x x o x o o o o o o o o) - (o o o o o o o o o x x x x x o o o o o o))) - -("Hattori 52" - ((5 6) - (2 4 2) - (2 6 2) - (2 2 2 2) - (2 2 2 1 1) - (1 2 2 2 1 1) - (1 2 2 1 2 1) - (1 2 3 5 4) - (1 3 2 1 1 1) - (1 8 4 1) - (1 3 1 3 1) - (1 2 1 1 1 1) - (1 1 2 2 2 1) - (1 13 1) - (7 2 1 1) - (3 2 1) - (2 2 3 2) - (2 1 1 2 3) - (4 1 1) - (2 1 1)) - ((12) - (2 3) - (2 7) - (2 3 2 2 2) - (2 5 2 2) - (1 7 1 2) - (1 3 1 3 3) - (1 5 1) - (2 7) - (5 1 2) - (10 2) - (3 1 2 3 1) - (1 1 2 1 1 1 2) - (1 1 2 1 1 1 1) - (1 2 2 1 2 2) - (2 4 1 1 1 1) - (2 1 1 1) - (2 3 3) - (5 2) - (13)) - ((o o o o x x x x x o x x x x x x o o o o) - (o o o x x o o o x x x x o o o x x o o o) - (o o x x o o o o o x x x x x x o x x o o) - (o x x o o o o o o x x o o o x x o x x o) - (x x o o o o o o o x x o x x o x o o x o) - (x o o o o o x x o x x o x x o x o o x o) - (x o o x x o x x o o x o o o x x o o x o) - (x o o x x o x x x o x x x x x o x x x x) - (x o o x x x o x x o x o o o o o o x o x) - (x o o o x x x x x x x x o o x x x x o x) - (x o o x x x o o x o o x x x o o o o o x) - (x o x x o x o o x o o o o o o o x o o x) - (x o x o o x x o x x o o o o x x o o o x) - (x o x x x x x x x x x x x x x o o o o x) - (x x x x x x x o o o x x o o o x o o o x) - (x x x o o o o o o o o x x o o o o o o x) - (o x x o o x x o o o o o x x x o o o x x) - (o o x x o o x o o o o x o o x x o x x x) - (o o o x x x x o o o o o o o o o o x o x) - (o o o o x x o o o o o o o o o o o x o x))) - -("Hattori 53" - ((1 1 1) - (3 1 1 1) - (1 3 3 3) - (4 4 1) - (11) - (4 4 3) - (1 1 2 1 2 1 1 1 1) - (4 3 3 3) - (2 4 4 4 1) - (1 1 2 1 2 1 2 2) - (4 3 3 3) - (18) - (2 2) - (1 1 1 1 1 1 1 1) - (15) - (3 3) - (3 4 3 3) - (2 2 2 3) - (2 1 3 1 3 1 2) - (1 2 1 1 1 2 1)) - ((1 5 4) - (3 2 3 4) - (1 2 8) - (1 2 2 2 2) - (3 2 1 2 2 1) - (4 2 1 1 1 2) - (4 2 2 2 1 1) - (4 2 3 1 1 2) - (1 4 2 2 2) - (3 2 1 1 2) - (1 5 2 1 2) - (5 2 2 1 2) - (3 2 3 2 1 1) - (3 2 2 1 1 2) - (3 2 1 2 2 1) - (1 2 1 2 2) - (1 3 7) - (3 1 4 3) - (1 6 3) - (3)) - ((o x o o o o o o x o x o o o o o o o o o) - (x x x o o o o x o o o x o o o o o x o o) - (o x o o o o x x x o x x x o o o x x x o) - (o o o o o x x x x o x x x x o o o x o o) - (o o o o x x x x x x x x x x x o o o o o) - (o o o x x x x o x x x x o x x x o o o o) - (x o x o x x o x o x x o x o x o x o x o) - (x x x x o o x x x o o x x x o o x x x o) - (x x o x x x x o x x x x o x x x x o x o) - (x o x o x x o x o x x o x o x x o x x o) - (x x x x o o x x x o o x x x o o x x x o) - (o x x x x x x x x x x x x x x x x x x o) - (o x x o o o o o o o o o o o o o x x o o) - (o o x o x o x o x o x o x o x o x o o o) - (o o x x x x x x x x x x x x x x x o o o) - (o x x x o o o o o o o o o o o x x x o o) - (x x x o x x x x o o o o x x x o x x x o) - (x x o x x o o o o o o o o o x x o x x x) - (x x o x o x x x o x o x x x o x o o x x) - (x o o o x x o x o x o x o x x o o o o x))) - -("Hattori 54" - ((3 3) - (7 1 1 1 1) - (2 2 3 3) - (2 2 1 1) - (2 3 2 2 1) - (1 2 2 1 1 1) - (1 2 2 2 1 1) - (1 1 1 2 1 4) - (1 1 3 1 7) - (1 1 1 2 2 6) - (1 1 2 1 1 8) - (1 2 1 3 5) - (2 2 2 2 6) - (1 3 1 7) - (2 1 7) - (3 10) - (14) - (12 1) - (12 2) - (12 4)) - ((9 1) - (2 3 1) - (2 6 2 2) - (2 2 2 1 2) - (1 2 3 2 2 2) - (1 1 2 1 1 4) - (1 2 2 2 4) - (1 2 4 4) - (1 2 4) - (2 3 5) - (2 11) - (2 2 5) - (3 2 5) - (3 3 1 6) - (1 3 3 6) - (3 14) - (11 1) - (3 10 1) - (1 14 2) - (3 6 3)) - ((o o o o o o o o o o o o o x x x o x x x) - (o o o x x x x x x x o o o x o x o x o x) - (o o x x o o o o o x x o o x x x o x x x) - (o x x o o o o o o o x x o o x o o o x o) - (x x o o x x x o o o o x x o x x o o x o) - (x o o x x o x x o o o o x o o x o o x o) - (x o x x o o o x x o o o x x o x o o x o) - (x o x o o x o o x x o o o x o x x x x o) - (x o x o x x x o o x o o o x x x x x x x) - (x o x o x o x x o x x o o o x x x x x x) - (x o x o x x o x o o x o x x x x x x x x) - (x o x x o o o x o o x x x o o x x x x x) - (x x o x x o x x o o x x o o x x x x x x) - (o x o o x x x o o o x o o x x x x x x x) - (o x x o o o o o o o x o x x x x x x x o) - (o o x x x o o o o x x x x x x x x x x o) - (o o o o x x x x x x x x x x x x x x o o) - (o o o o o x x x x x x x x x x x x o o x) - (o o x x x x x x x x x x x x o o o o x x) - (x x x x x x x x x x x x o o o o x x x x))) - -("Hattori 55" - ((2 4 2) - (4 7 4) - (1 14 1) - (1 11 1) - (2 11 2) - (1 2 4 1 1) - (1 3 4 2 2) - (2 11 1) - (1 9 1) - (1 13 1) - (1 1 7 3) - (5 6 1) - (1 2 5 2) - (3 2 3 2 1) - (1 1 3 1) - (2 1 5 1) - (2 1 5 1 1) - (1 1 1 1) - (1 1 1 1 1 1 1 1) - (7 7)) - ((4 5 2) - (2 4 1 4) - (2 1 1) - (2 9) - (1 3 1) - (6 1 2) - (8 1 1 1) - (4 5 2 2 2) - (5 6 2 1) - (12 5) - (17) - (16) - (14 4) - (4 6 1) - (3 4 2 2) - (6 1 1 1) - (2 1 2) - (1 3 1) - (2 3 1 8) - (5 5)) - ((o x x o o o o o x x x x o o o o o o x x) - (x x x x o o o x x x x x x x o o x x x x) - (x o o x x x x x x x x x x x x x x o o x) - (x o o o o x x x x x x x x x x x o o o x) - (x x o o o x x x x x x x x x x x o o x x) - (o x o o o x x o o x x x x o o x o o x o) - (o x o o o x x x o x x x x o x x o o x x) - (x x o o o x x x x x x x x x x x o o o x) - (x o o o o o x x x x x x x x x o o o o x) - (x o o o x x x x x x x x x x x x x o o x) - (x o o o x o o x x x x x x x o o o x x x) - (x x x x x o o o x x x x x x o o o x o o) - (o o o x o o o x x o x x x x x o o x x o) - (o x x x o o x x o o x x x o x x o o x o) - (o x o x o o o o o o x x x o o o o o x o) - (x x o x o o o x x x x x o o o o o o x o) - (x x o x o o x x x x x o x o o o o o x o) - (o o o x o o o o o x o o x o o o o o x o) - (o o o x o x o x o x o o x o x o x o x o) - (o o o x x x x x x x o o x x x x x x x o))) - -("Hattori 56" - ((2 3) - (2 4) - (2 5) - (8) - (11) - (2 7) - (4 1 2 4) - (11 1) - (2 9 1) - (1 8 1) - (1 6 2) - (1 6 1) - (1 8 1) - (8 1 2 3) - (7 2 1 2) - (5 1 3) - (1 2) - (2 2 1) - (4 1) - (2)) - ((6) (2 2) (2 4 1) (10 2) (10 1) (10 1) (9 2) (10 1) (2 6) (1 3 3) (1 4 6) (8 1) (6) (1 4 4) (9 4) (7 2) (7 2) (6 2) (4 1) (1)) - ((o o o o o o o o o o o o x x o x x x o o) - (o o o o o o o o o o o x x o o x x x x o) - (o o o o o o o o o o o x x o x x x x x o) - (o o o o o o o o o o o x x x x x x x x o) - (o o o o o o o o x x x x x x x x x x x o) - (o o o o o o o x x o o x x x x x x x o o) - (o o x x x x o x o o x x o x x x x o o o) - (o x x x x x x x x x x x o o x o o o o o) - (x x o x x x x x x x x x o o x o o o o o) - (x o o x x x x x x x x o o o x o o o o o) - (x o o x x x x x x o o o o x x o o o o o) - (x o o x x x x x x o o o o x o o o o o o) - (x o x x x x x x x x o o o x o o o o o o) - (x x x x x x x x o x o o o x x o o x x x) - (o x x x x x x x o x x o o o x o x x o o) - (o o x x x x x o o o x o o o x x x o o o) - (o o o o o o o o o o x o o o x x o o o o) - (o o x x o o x x o o x o o o o o o o o o) - (o o o x x x x o o o x o o o o o o o o o) - (o o o o o o o o o o x x o o o o o o o o))) - -("Hattori 57" - ((2 6) - (3 1 1 4) - (3 2 3 3) - (6 7) - (6 2) - (5 2 2 3) - (3 1 2 1 3) - (3 1 1 2 2) - (11 2 1) - (4 3 5) - (1 2 9 3) - (2 6 5 1) - (5 3 3 1) - (1 5 3 1) - (1 2 2 5) - (9 3 1) - (2 2 3 1) - (2 14 1) - (2 2 2) - (2 2 3)) - ((2 3 2) - (4 1 2 4) - (6 1 2 2 2) - (7 2 1 2 1) - (5 2 1 2 1 2) - (2 3 1 1 1 1 3) - (1 3 1 1 1 1 1 1) - (2 1 6 1) - (2 10) - (1 6 3) - (1 4 1) - (1 1 1 1) - (2 1 4 1) - (1 2 2 4 1) - (1 2 7 2) - (1 1 2 9 1) - (2 1 1 2 7 1) - (4 2 1 2 2 3) - (6 1 1 2 1) - (5 2 3 4)) - ((o o o o o x x o o o o o o x x x x x x o) - (o o o x x x o x o o o o x o o o x x x x) - (o o x x x o x x o o o o x x x o o x x x) - (o x x x x x x o o o o o o x x x x x x x) - (o x x x x x x o o o o o o o o o o o x x) - (o x x x x x o o x x o o x x o o o x x x) - (o x x x o o o o x o x x o x o x x x o o) - (o o x x x o o o o x o o x o x x o o x x) - (o o o o x x x x x x x x x x x o x x o x) - (x x x x o o o o x x x o x x x x x o o o) - (x o o x x o o x x x x x x x x x o x x x) - (o x x o o x x x x x x o o x x x x x o x) - (x x x x x o o x x x o o o o x x x o o x) - (x o o o x x x x x o o o o o x x x o x o) - (x o x x o o o x x o o o o o o x x x x x) - (o x x x x x x x x x o o o o o x x x o x) - (x x o o o o o o x x o o o o x x x o o x) - (x x o o x x x x x x x x x x x x x x o x) - (o x x o x x o o o o o o o o o o o x x o) - (o o x x o x x o o o o o o o o x x x o o))) - -("Hattori 58" - ((1 2 2) - (1 2 1) - (5 3) - (4 2) - (3 1) - (3 1) - (7 2 1) - (1 8 6) - (3 9) - (3 6 2 3) - (9 8) - (5 6 1) - (2 8 1) - (10) - (12) - (1 8) - (1 9) - (1 2 4) - (1 2) - (2 4)) - ((3 2) - (2 1) - (1 2 3) - (5 2) - (5 2) - (4 2 1) - (7 6) - (1 7 1) - (3 9) - (2 6 2 3) - (9 8) - (4 6 1) - (2 7 1) - (10 1) - (11) - (2 8) - (2 9) - (1 2 5) - (1 2) - (2 3)) - ((x o x x o o o x x o o o o o o o o o o o) - (x o o x x o o o x o o o o o o o o o o o) - (x x x x x o o o x x x o o o o o o o o o) - (o x x x x o o o o x x o o o o o o o o o) - (o o o x x x o o o o x o o o o o o o o o) - (o o o o x x x o o o x o o o o o o o o o) - (o o o o o x x x x x x x o o o x x o o x) - (x o o o o x x x x x x x x o x x x x x x) - (x x x o o o x x x x x x x x x o o o o o) - (o o x x x o x x x x x x o x x o x x x o) - (o o x x x x x x x x x o x x x x x x x x) - (o o o o o x x x x x o x x x x x x o o x) - (o o o o o o o x x o x x x x x x x x o x) - (o o o o o o o o x x x x x x x x x x o o) - (o o o o o o x x x x x x x x x x x x o o) - (o o o o o o x o o o x x x x x x x x o o) - (o o o o o o x o o x x x x x x x x x o o) - (o o o o o o x o o x x o o x x x x o o o) - (o o o o o o x o o x x o o o o o o o o o) - (o o o o o x x o o o x x x x o o o o o o))) - -("Hattori 59" - ((6) - (2 2) - (2 2 6) - (1 2 2 1 2 2) - (1 1 1 1 1 1) - (1 2 8) - (2 2 2 1 1) - (8 1 2) - (3 3 2 1) - (3 2 1 2) - (2 2 1 1) - (1 14) - (2 3 4) - (1 2 4) - (1 2 2 4) - (4 3 4) - (3 4 4) - (3 4 4) - (9 3) - (3 4 2)) - ((5 2) - (2 2 2) - (2 1 3) - (1 2 4) - (1 3 9) - (1 2 1 2 5) - (1 1 1 1 5) - (2 3 1 2 1) - (2 7 1 1) - (4 4 4) - (2 5) - (12) - (6 9) - (2 1 1) - (1 1 9) - (1 1 9) - (1 1 8) - (1 1 9) - (2 1 3) - (5)) - ((o o x x x x x x o o o o o o o o o o o o) - (o x x o o o o x x o o o o o o o o o o o) - (x x o o o o o o x x o o o x x x x x x o) - (x o x x o x x o o x o o x x o o o o x x) - (x o o x o x o o o x o o x o o o o o o x) - (x o o o o o o o x x o o x x x x x x x x) - (x x o x x o o x x o o o x o o o o o o x) - (o x x x x x x x x o o o x o o o o o x x) - (o o x x x o o x x x o x x o o o o o x o) - (o x x x o o o o x x o x o o o o o x x o) - (x x o o o o o o x x o x o o o o o x o o) - (x o o o x x x x x x x x x x x x x x o o) - (o o o o x x o o o o x x x o x x x x o o) - (o o o o x o o o o o o x x o x x x x o o) - (o o o o x o o x x o o x x o x x x x o o) - (o o o o x x x x o o x x x o x x x x o o) - (o o o o x x x o o x x x x o x x x x o o) - (o o o o x x x o o x x x x o x x x x o o) - (o o o o x x x x x x x x x o x x x o o o) - (o o o o x x x o o x x x x o x x o o o o))) - -("Hattori 60" - ((3) - (2 2 6) - (1 1 3 8) - (2 2 2 9) - (2 2 1 1 10) - (1 1 2 2 1 4) - (2 2 2 5 3) - (3 1 3 1 1 1 1 1) - (2 2 4 1 3 1) - (1 1 5 1 1) - (5 1 1 1) - (1 1 3 2) - (2 1 4 1) - (2 1 3) - (2 1 1) - (2 3 5) - (2 1 1 3) - (5 1 8) - (1 10) - (2 9)) - ((3 3) - (4 3 3) - (2 1 1 1 2 2) - (1 1 1 3 1 2) - (2 4 3 2 3) - (3 1 1 1 3 1) - (1 1 1 2 2) - (2 5 1) - (3 11) - (2 1) - (1 4) - (9 2) - (3 1 1 3) - (3 3 5 3) - (4 1 1 2 1 3) - (4 3 2 1 3) - (5 1 1 3) - (7 5) - (6 1 4) - (12 4)) - ((o o x x x o o o o o o o o o o o o o o o) - (o x x o x x o o o o o o o o x x x x x x) - (o x o x o x x x o o o o x x x x x x x x) - (o x x o x x o x x o o x x x x x x x x x) - (x x o x x o x o x o x x x x x x x x x x) - (x o x o x x o x x o o x o o o o x x x x) - (x x o x x o x x o o o x x x x x o x x x) - (o x x x o x o x x x o x o x o x o x o x) - (x x o x x o x x x x o x o x x x o o o x) - (x o x o x x x x x o o x o o o o o o o x) - (x x x x x o o o x o o x o o o o o o o x) - (o x o o o o o o x o o x x x o o o o x x) - (o x x o o o o o x o o o o x x x x o o x) - (o o x x o o o o x o o o o x x x o o o o) - (o o o x x o o o x o o o o x o o o o o o) - (o o o o x x o o x x x o o x x x x x o o) - (o o o o o x x o x o x o o o o o o x x x) - (o o o o x x x x x o x o x x x x x x x x) - (o o o o x o o o o o x x x x x x x x x x) - (o o o o x x o o o o o x x x x x x x x x))) - -("Hattori 61" - ((6) - (2 3) - (5 1 3) - (6 4) - (10) - (11) - (1 8) - (1 7) - (1 5 1) - (1 5 3) - (2 5 4) - (3 4 5) - (4 4 6) - (5 4 5) - (5 3 5) - (3 2 2 5) - (1 2 5) - (2 5) - (2 7) - (11 2)) - ((1) - (2) - (2) - (2 5) - (4 5) - (6 6 1) - (1 11 1) - (1 1 2 3 1) - (1 2 2 1) - (7 3 2 1) - (7 5 3) - (14 2) - (13 1) - (7 3 2) - (5 2 2) - (4 10) - (2 10) - (12) - (11) - (8)) - ((o o o o o x x x x x x o o o o o o o o o) - (o o o o x x o o o x x x o o o o o o o o) - (o x x x x x o x o x x x o o o o o o o o) - (x x x x x x o o o x x x x o o o o o o o) - (o o o o x x x x x x x x x x o o o o o o) - (o o o o o x x x x x x x x x x x o o o o) - (o o o o o o x o o x x x x x x x x o o o) - (o o o o o o x o o o o x x x x x x x o o) - (o o o o o o x o o o o x x x x x o x o o) - (o o o o o o x o o o x x x x x o x x x o) - (o o o o o x x o o x x x x x o x x x x o) - (o o o o x x x o o x x x x o x x x x x o) - (o o o x x x x o o x x x x o x x x x x x) - (o o o x x x x x o o x x x x o x x x x x) - (o o o x x x x x o o o x x x o x x x x x) - (o o o x x x o x x o o o x x o x x x x x) - (o o o x o o o o x x o o o o o x x x x x) - (o o o o o o o o o x x o o o o x x x x x) - (o o o o o o o o o o x x o x x x x x x x) - (o o o o o x x x x x x x x x x x o o x x))) - -("Hattori 62" - ((3 5 2) - (1 3 1 1 3) - (2 3 1 1 3) - (1 2 1 3) - (1 1 2 4) - (2 3 1 4) - (2 1 5) - (5 1 5) - (3 1 2 2 5) - (9 2 5) - (8 1 5) - (5 2 2 5) - (4 1 2 5) - (2 1 1 1 1 5) - (1 8 1 7) - (5 1 2 6) - (1 1 1 6) - (1 1 6) - (1 4 2 4) - (4 1)) - ((6) - (6 1) - (2 5 2) - (12 1) - (4 1 3 2 2) - (1 1 4 4 1) - (2 1 1 3 1 2) - (1 2 5 3 1) - (2 1 2 1 2) - (1 2 1) - (3 1) - (1 1 3 3) - (1 2 2 2 2 1) - (1 5 3 3) - (5 4) - (13) - (15) - (18) - (19) - (17)) - ((o o o o x x x o o o x x x x x o o o x x) - (o o o o x o x x x o x o o o x o o x x x) - (o o o o x x o o x x x o x o x o o x x x) - (o o o o x o o o o o o x x o x o o x x x) - (o o o x o o o x o o o o o x x o x x x x) - (o o x x o o x x x o o o o x o o x x x x) - (o o x x o o o o o o o o o x o x x x x x) - (o o o x x x x x o o o o o x o x x x x x) - (o x x x o x o x x o o o x x o x x x x x) - (x x x x x x x x x o o x x o o x x x x x) - (x x x x x x x x o o o x o o o x x x x x) - (x x x x x o x x o o o x x o o x x x x x) - (x x x x o o o o o o x o x x o x x x x x) - (x x o x o o o o o x o x o x o x x x x x) - (x o x x x x x x x x o x o x x x x x x x) - (o x x x x x o x o o o x x o x x x x x x) - (o o o o o x o x o o o o x o x x x x x x) - (o o o o o x o o x o o o o x x x x x x o) - (o o o o x o x x x x o o x x o x x x x o) - (o o o x x x x o o o o o o x o o o o o o))) - -("Hattori 63" - ((5) (7) (1 1) (2 2) (1 1) (1 1 1) (7) (9) (2 4 2) (16) (3 4 3) (5) (3 2) (2 2) (2 2) (3 2) (1 3 1) (20) (1 1) (1 1)) - ((1 4) - (1 1) - (2 1) - (1 1) - (1 1) - (2 1) - (3 1 1) - (1 2 1 4 1) - (8 1 5 1) - (2 1 7 1) - (2 7 2) - (2 1 12) - (18) - (1 2 1 1) - (3 1) - (2 1) - (1 1) - (2 1) - (1 1) - (1 4)) - ((o o o o o o o o x x x x x o o o o o o o) - (o o o o o o o x x x x x x x o o o o o o) - (o o o o o o o o x o o o x o o o o o o o) - (o o o o o o o o x x o x x o o o o o o o) - (o o o o o o o o x o o o x o o o o o o o) - (o o o o o o o o x o x o x o o o o o o o) - (o o o o o o o x x x x x x x o o o o o o) - (o o o o o o x x x x x x x x x o o o o o) - (o o o o o x x o o x x x x o x x o o o o) - (o o x x x x x x x x x x x x x x x x o o) - (x x x o o o o o o x x x x o o o o x x x) - (o o o o o o o o x x x x x o o o o o o o) - (o o o o o o o x x x o x x o o o o o o o) - (o o o o o o o x x o o x x o o o o o o o) - (o o o o o o o x x o o x x o o o o o o o) - (o o o o o o x x x o o x x o o o o o o o) - (x o o o o o o o o o x x x o o o o o o x) - (x x x x x x x x x x x x x x x x x x x x) - (x o o o o o o o o o o o o o o o o o o x) - (x o o o o o o o o o o o o o o o o o o x))) - -("Hattori 64" - ((4) - (19) - (1 5) - (3) - (9) - (2 1 4 2) - (2 1 3 1 2) - (1 1 3 9 1) - (1 5 7 2 1) - (1 1 2 3 2) - (3 3 3) - (2 1 4) - (7) - (1 1 1) - (11 1) - (1 1 1) - (1 1 1) - (12 5 1) - (2 3 3 3 1) - (3 4 2 2)) - ((1 5 2 3) - (2 2 2 1 3) - (2 2 8 1 1) - (2 1 1 1 1 1) - (2 1 2 3 1 2) - (1 7 1 1 3) - (1 1 6 1 3) - (1 2 2 1 1 1) - (1 12 1 1) - (11 1 2) - (1 8 1 2) - (1 2 3) - (1 2 1) - (2 2 3) - (2 2 2) - (2 1 4) - (2 3 2) - (2 1 2 4) - (1 2 1 1) - (3 3)) - ((o x x x x o o o o o o o o o o o o o o o) - (x x x x x x x x x x x x x x x x x x x o) - (o o o o o o o o o x o o o x x x x x o o) - (o o o o o o o o x x x o o o o o o o o o) - (o o x x x x x x x x x o o o o o o o o o) - (o x x o o x o x x x x o o o o o o x x o) - (x x o o o x o o x x x o o o o o x o x x) - (x o x o x x x o x x x x x x x x x o o x) - (x o x x x x x o x x x x x x x o x x o x) - (x o x o o x x o x x x o o o o o o x x o) - (x x x o x x x o x x x o o o o o o o o o) - (o x x o x o x x x x o o o o o o o o o o) - (o o x x x x x x x o o o o o o o o o o o) - (x o x o o o o o x o o o o o o o o o o o) - (x x x x x x x x x x x o o o o o o x o o) - (o o o o o o o o o o o o o x o x o x o o) - (o o o o o o o o o o o o o x o x o x o o) - (x x x x x x x x x x x x o x x x x x o x) - (x x o o x x x o o x x x o o x x x o o x) - (x x x o o x x x x o o x x o o o o o x x))) - -("Hattori 65" - ((4 3) - (3 1 4) - (3 6) - (12) - (8) - (8) - (1 1 7 3) - (2 1 5 1) - (6 1 5) - (1 2 2 1 2 1) - (1 1 2 1 2 3) - (2 1 2) - (5) - (3) - (6) - (1 1 2 1 2 3) - (1 1 1 2 1 2 1) - (1 1 3 1 5) - (5 3 1) - (1 1 5 3)) - ((5 4) - (2 2) - (2 3) - (5 2) - (1 1 4) - (1 2 1) - (4 2 2) - (1 5 2 2) - (8 2 2 1) - (1 5 3 2) - (17) - (5 3 2) - (6 2 1 1) - (7 2 2) - (6 2 2) - (4 2 2) - (3 1 1) - (2 5 3 1) - (1 1 1 1 1 1) - (1 1 1 1 3)) - ((o o o o o o x x x x o o o x x x o o o o) - (o o o o x x x o x o o o o x x x x o o o) - (o o o o o o x x x o o o x x x x x x o o) - (o o o o o o x x x x x x x x x x x x o o) - (o o o o o o o x x x x x x x x o o o o o) - (o o o o o o o x x x x x x x x o o o o o) - (x o o x o o o x x x x x x x o o o x x x) - (x x o x o o o o x x x x x o o o o x o o) - (x x x x x x o o o o x o o o o x x x x x) - (x o x x o x x o o o x o o o x x o x o o) - (x o o x o o x x o o x o o x x o o x x x) - (o o o o o o o x x o x o x x o o o o o o) - (o o o o o o o o x x x x x o o o o o o o) - (o o o o o o o o o x x x o o o o o o o o) - (o o o o o o o o x x x x x x o o o o o o) - (x o o o x o o x x o x o o x x o o x x x) - (x o x o x o x x o o x o o o x x o x o o) - (x o x o x x x o o o x o o o o x x x x x) - (x x x x x o o o o x x x o o o o o o o x) - (o x o x o o o o x x x x x o o o o x x x))) - -("Hattori 66" - ((4 6) - (2 3) - (3 1 4 2) - (2 4 1) - (2 1 3 3) - (2 1 3) - (2 1 3 3 7) - (1 5 9) - (2 1 3 3 7) - (1 2 1 3) - (2 1 2 2) - (1 3 2) - (3 1 3 1 1) - (3 2 3) - (4 6 3) - (3) - (9) - (2 6) - (3 1 2) - (11)) - ((1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 1) - (1 1 1 1) - (1 5 1) - (3 2) - (2 4 2) - (1 4 1) - (2 3 2) - (1 2 1 1) - (1 3 3 3 1 2) - (1 5 5 1 3) - (1 3 3 2 1 4) - (2 1 2 1 1) - (1 3 1 1 1) - (2 3 1 4) - (3 3 2 5 1) - (14 1) - (6 5 1) - (5 4) - (3 4)) - ((x x x x o o o x x x x x x o o o o o o o) - (o o o o o o x x o o o o x x x o o o o o) - (x x x o o x o o x x x x o o x x o o o o) - (o o o o x x o o x x x x o o o x o o o o) - (x x o o x o o o o x x x o o o x x x o o) - (o o o x x o o o o o x o o o o o x x x o) - (x x o x o x x x o x x x o x x x x x x x) - (o o o x o x x x x x o x x x x x x x x x) - (x x o x o x x x o x x x o x x x x x x x) - (o o o x o x x o o o x o o o o o x x x o) - (x x o o x o o o o x x o o o o x x o o o) - (o o o o x o o o o x x x o o o x x o o o) - (x x x o o x o o o x x x o o x o x o o o) - (o o o o o x x x o o o o x x o x x x o o) - (x x x x o o o x x x x x x o o x x x o o) - (o o o o o o o o o o o o o o o x x x o o) - (o o o o o o o o o o o x x x x x x x x x) - (o o o o o o o o o o x x o o x x x x x x) - (o o o o o o o o o x x x o o x o o o x x) - (o o o o o o o o o x x x x x x x x x x x))) - -("Hattori 67" - ((3 4 2) - (3 6 2) - (2 8 1) - (1 2) - (8) - (2 5 1 3) - (2 5 1 2 2) - (4 1 1 2) - (3 4 1 2 1) - (1 1 7 1 3) - (3 5 1 1 1) - (11 2 2) - (1 1 4 1 1) - (3 7 3) - (4 3 1) - (4 1 1) - (1 4 3 2) - (1 1 6 1 1 2) - (1 2 12) - (2 2 1 2 2)) - ((6 3) - (1 2 1 1) - (2 6 3) - (4 2 1 2) - (3 8 1) - (2 12) - (14) - (15) - (1 4 3 1 3) - (2 3 1 1 1 2) - (3 2 5 3) - (5 2) - (9 1 1) - (3 1 3 5) - (2 1 3 1 1 1) - (1 3 1 1 4) - (1 1 2) - (2 2 1 1 2) - (2 2 1 1 1 2) - (10)) - ((o o o x x x o o o o x x x x o o x x o o) - (o o o x x x o o o x x x x x x o o x x o) - (o o o x x o o o x x x x x x x x o o x o) - (o o o x o o o o o o o x x o o o o o o o) - (o o o o o o o o x x x x x x x x o o o o) - (o o x x o o x x x x x o x o o x x x o o) - (o o x x o x x x x x o o x o x x o x x o) - (o o o o o x x x x o o o x o x o o o x x) - (x x x o x x x x o o o o x o x x o o o x) - (x o x o x x x x x x x o o x o o o x x x) - (x x x o x x x x x o x o o x o o o o o x) - (x x x x x x x x x x x o x x o o o o x x) - (x o x o x x x x o o x o o o o o o o o x) - (x x x o x x x x x x x o o o o o o x x x) - (o o o o x x x x o o o o o x x x o o o x) - (o o o o x x x x o o o o o x o o o o o x) - (o o x o o x x x x o o o o x x x o o x x) - (x o x o o x x x x x x o o x o x o x x o) - (x o x x o o x x x x x x x x x x x x o o) - (x x o x x o o x o o x x o o o x x o o o))) - -("Hattori 68" - ((8) - (3 2 2) - (2 1 1 2) - (2 2 1 1) - (1 1 2 2) - (1 6 3) - (2 2 1 3 2) - (5 3 4) - (1 4 7) - (1 9) - (1 9) - (1 6 3) - (1 6 2) - (1 2 2) - (2 2 1) - (2 2 1) - (3 2 1) - (6 1) - (4 6) - (6 5)) - ((4) - (2 2) - (2 2) - (1 3) - (2 3) - (1 1 1 2) - (2 1 1) - (4 1 7 1) - (1 6 2 2) - (1 1 2 2) - (1 2 1 4 1 2) - (2 1 1 7 4) - (2 1 8 1 1) - (5 5 3) - (2 6 3) - (8 3) - (5 3) - (5 2) - (5 2) - (9)) - ((o o o o x x x x x x x x o o o o o o o o) - (o o x x x o x x o o o x x o o o o o o o) - (o x x o o x o x o o o o x x o o o o o o) - (x x o o o o o x x o x o o x o o o o o o) - (x o o o o o o o x o x x o x x o o o o o) - (x o o x x x x x x o o o o x x x o o o o) - (x x o x x o o o x o o x x x o x x o o o) - (o x x x x x o o x x x o o o x x x x o o) - (o o x o o x x x x o o x x x x x x x o o) - (o o o o o o o x o o x x x x x x x x x o) - (o o o o o o o x o o x x x x x x x x x o) - (o o o o o o o x o o x x x x x x o x x x) - (o o o o o o o x o o x x x x x x o o x x) - (o o o o o o o x o o o x x o o o o o x x) - (o o o o o o o x x o o x x o o o o o o x) - (o o o o o o o o x x o o x x o o o o o x) - (o o o o o o o o o x x x o x x o o o o x) - (o o o o o o o o o o o x x x x x x o o x) - (o o o o o o o o x x x x o o x x x x x x) - (o o o o o o o x x x x x x o o x x x x x))) - -("Hattori 69" - ((7) - (2 2) - (1 1) - (10) - (6 1 1 6) - (4 1 2 2 1 3) - (2 2 3 2) - (1 6 2 2 2 1) - (3 1 1 2) - (1 1) - (1 3 2) - (4 1 1 1 1 4) - (1 1 2 2 1) - (2 3 7 1) - (2 1 1 1) - (3 1 3 2) - (3 3 1 3) - (1 3 1 3) - (2 4 4 1) - (17 2)) - ((12 3) - (3 1 1 4 2) - (2 2 1 3 1) - (2 1 2 1 4) - (1 1 1 3 3) - (5 1 1 2) - (3 2 2 2) - (2 1 2 2 1 1) - (1 1 1 1 1 3 1) - (1 3 1 1 1 1) - (1 1 1 1 1) - (1 3 1 1) - (1 1 1 2 1 1 1) - (2 1 2 2 1 1) - (6 3 3 2) - (1 1 1 1 2) - (1 1 1 3) - (2 1 1 3) - (3 1 1 3 1) - (6 6 2)) - ((o o o o o o o x x x x x x x o o o o o o) - (o o o o o o x x o o o o o x x o o o o o) - (o o o o o o x o o o o o o o x o o o o o) - (o o o o o x x x x x x x x x x o o o o o) - (x x x x x x o o o x o x o o x x x x x x) - (x x x x o x o o x x o x x o x o o x x x) - (x x o o o x x o o o o o o x x x o o x x) - (x o x x x x x x o x x o x x o o x x o x) - (x x x o o o o x o o o o x o o o o o x x) - (x o o o o o o o o o o o o o o o o o o x) - (x o o x x x o o o o o o o o x x o o o o) - (x x x x o o x o x o o o x o x o x x x x) - (x o o o x o x x o o o o o x x o o o o x) - (x x o x x x o x x x x x x x o o o o o x) - (x x o o x o o o o o o o o o x o o o o x) - (x x x o o o o o x o o o o x x x o o x x) - (o x x x o o o x x x o o o o x o o x x x) - (x o x x x o o o x o o o o o o o x x x o) - (x x o x x x x o o o o o o o x x x x o x) - (x x x x x x x x x x x x x x x x x o x x))) - -("Hattori 70" - ((10) - (3 3) - (3 2) - (2 5 1) - (1 8 1) - (2 2 5 1) - (1 1 1 1 3 2) - (1 1 2 1) - (3 2 1 1 3 2) - (1 2 5 1 3) - (8 3 3) - (13) - (4 6) - (8) - (11) - (1 1 1 1) - (1 1 1 1) - (1 3 2) - (8) - (1 1)) - ((3) - (4 1) - (3 4) - (2 3 1) - (1 5) - (2 4 9) - (1 2 7 1) - (2 2 1 10) - (1 2 2 1 2 3) - (1 2 1 10) - (1 2 6 1) - (1 3 2 9) - (1 4 2 1 3) - (1 3 5 1) - (1 2 1 3) - (1 1 3) - (2 1) - (1 2) - (2 3) - (5)) - ((o o o o o o o x x x x x x x x x x o o o) - (o o o o o x x x o o o o o o o o x x x o) - (o o o x x x o o o o o o o o o o o o x x) - (o o x x o o o x x x x x o o o o o o o x) - (o o x o o o x x x x x x x x o o o o o x) - (o x x o o x x o o o o x x x x x o o o x) - (o x o o o x o x o x o o x x x o o o x x) - (o x o o o x o o o o o x x o o o o o x o) - (x x x o o x x o x o o x o x x x o x x o) - (x o x x o o x x x x x o o x o x x x o o) - (x x x x x x x x o x x x o x x x o o o o) - (o o x x x x x x x x x x x x x o o o o o) - (o o o o x x x x o x x x x x x o o o o o) - (o o o o x x x x x x x x o o o o o o o o) - (o o o x x x x x x x x x x x o o o o o o) - (o o o o o x o x o x o x o o o o o o o o) - (o o o o o x o x o x o x o o o o o o o o) - (o o o o o x o x x x o x x o o o o o o o) - (o o o o o x x x x x x x x o o o o o o o) - (o o o o o o o o x o o o x o o o o o o o))) - -("Hattori 71" - ((1 1 4) - (2 3 7) - (3 1 9) - (2 3 5) - (1 5 2) - (7 1) - (1 1 1 2) - (1 3 1 2) - (1 3 1 3) - (1 1 2 1) - (8 4) - (2 2 1 2) - (2 2 3) - (2 3 2 3) - (2 1 1 1 2 2) - (1 2 2 2 2 3 1) - (1 2 1 1 2 1 1 1) - (1 2 1 1 2 1 1 1) - (1 1 1 1 1 1) - (1 5 1 1 1)) - ((5 6) - (3 2) - (1 2 3) - (2 3) - (7) - (2 1 6) - (1 3 2 1 1 1 1) - (9 1 2 1) - (1 3 2 1 1 1 1) - (2 1 6) - (1 6) - (2 2 3) - (3 2 3) - (4 2) - (5 7) - (5 2) - (4 4 5) - (2 4 2) - (1 3 5) - (2 4 7)) - ((x o o o o o o x o o o o o x x x x o o o) - (x x o o o o x x x o o x x x x x x x o o) - (x x x o o o o x o o x x x x x x x x x o) - (x x o o o o x x x o o o x x x x x o o o) - (x o o o o x x x x x o o o o x x o o o o) - (o o o o x x x x x x x o o o o o o o o x) - (o o o o x o o x o o x o o o o o o o x x) - (o o o o x o x x x o x o o o o o o x x o) - (o o o o x o x x x o x o o o o o o x x x) - (o o o o x o o o o o x o o o o o x x o x) - (o o o o x x x x x x x x o o o o x x x x) - (o o o x x o o o o o o x x o o o x o x x) - (o o x x o o o o o o o o x x o o x x x o) - (o x x o o o x x x o o o o x x o o x x x) - (x x o o o x o x o x o o o o x x o o x x) - (x o x x o x x o x x o x x o x x x o o x) - (x o x x o x o o o x o x x o x o x o o x) - (x o x x o x o o o x o x x o x o x o o x) - (x o o o o x o o o x o o o o x o x o o x) - (x o o o o x x x x x o o o o x o x o o x))) - -("Hattori 72" - ((2 5 5) - (3 1 1 1) - (4 3 3 2) - (5 1 3 1 3) - (5 7 4) - (5 3 4) - (4 1 1 3) - (1 1 1 1) - (1 10) - (5 2) - (7) - (8) - (7 2) - (8 2 2 1) - (6 3 2 1) - (4 1 2 3) - (3 1 1) - (1 1) - (1 1 1 1) - (4 4)) - ((4 3 3) - (5 1 4) - (5 1 4 2) - (5 1 3 1) - (4 2 3 1) - (3 1 8) - (1 4 1 2) - (1 1 4) - (1 3 1 4) - (1 1 1 5) - (7 6) - (3 2 1 2) - (7 1 1 1) - (1 1 1 1 1 2) - (1 3 1 2 5) - (1 4 2 1) - (1 3 2 1) - (4 2 2) - (4 1) - (4 3)) - ((x x o o o o x x x x x o x x x x x o o o) - (x x x o o o o o o o x o x o o o o o o x) - (x x x x o o o o x x x o x x x o o o x x) - (x x x x x o o o x o x x x o x o o x x x) - (o x x x x x o o x x x x x x x o x x x x) - (o o x x x x x o o o x x x o o x x x x o) - (o o o x x x x o o o x o x o o x x x o o) - (x o o o o o x o o o o x o o o x o o o o) - (x o o o o o x x x x x x x x x x o o o o) - (x x x x x o o o o x x o o o o o o o o o) - (o o o o x x x x x x x o o o o o o o o o) - (o o o o o o o x x x x x x x x o o o o o) - (o o o o x x x x x x x o o o x x o o o o) - (o x x x x x x x x o x x o o o x x o o x) - (x x x x x x o o o o o x x x o o x x o x) - (x x x x o x o o o o o o o x x o o x x x) - (x x x o o x o o o o o o o o x o o o o o) - (o o o o o x o o o o o o o o x o o o o o) - (o o x o o x o o o o o o o o x o o x o o) - (o o x x x x o o o o o o o o x x x x o o))) - -("Hattori 73" - ((2) - (3 4) - (5 4) - (9) - (6) - (4 3) - (3 2 3) - (5 3) - (10 5) - (12) - (1 1 1 1 1) - (1 1 1 1 2 1) - (1 1 1 2 3 2) - (5 2 3 2) - (12 3) - (1 2 1 1 3) - (1 4 1 4) - (12 5) - (10 6) - (7)) - ((1) - (1 9) - (2 2 2 2) - (1 2 4 2) - (8 2 2) - (18) - (4 3 5) - (4 3 3 3) - (3 12) - (2 2 1 2) - (1 2 3 2) - (1 2 4 2) - (2 9) - (1 1 1) - (1 1 2) - (2 3 3) - (1 1 1 4) - (1 2 1 6) - (2 1 1 8) - (1 1 1 10)) - ((o o o o o o o o o o o o o o o o o o x x) - (o o o o o x x x o o o o o o o x x x x o) - (o o o o x x x x x o o o x x x x o o o o) - (o o o o x x x x x x x x x o o o o o o o) - (o o o o x x x x x x o o o o o o o o o o) - (o o x x x x o o o o o o o o o o o x x x) - (x x x o x x o o o o o o o o o x x x o o) - (o o o o x x x x x o o o o x x x o o o o) - (o o x x x x x x x x x x o o o x x x x x) - (o x x x x x x x x x x x x o o o o o o o) - (o x o o o x o o x o o o x o o o o o o x) - (o x o x o x o o x o o x x o o o o o o x) - (o x o x o x o x x o x x x o o o o o x x) - (o x x x x x o x x o x x x o o o o o x x) - (o x x x x x x x x x x x x o o o o x x x) - (o x o o o x x o x o o o x o o o o x x x) - (o x o o o x x x x o o o x o o o x x x x) - (o x x x x x x x x x x x x o o x x x x x) - (o o x x x x x x x x x x o o x x x x x x) - (o o o o o o o o o o o o o x x x x x x x))) - -("Hattori 74" - ((6 5) - (5 5) - (1 1 1 1) - (5 4) - (5 5) - (12) - (10) - (11) - (13) - (4 3) - (3 2 2 2) - (2 1 1 1 1 1) - (2 1 1) - (2 4 4) - (2 2 3 1) - (2 4 1) - (15) - (1 3) - (1 1) - (20)) - ((1 2 1) - (2 4 1) - (6 3 2 2) - (2 7 2 1 1) - (2 7 3 1) - (9 1 3 1) - (6 1 2 1) - (4 2 1 4) - (4 2 1 1) - (5 2 1 1) - (8 1 1 1 1) - (2 6 1 2 1) - (2 6 2 2 1) - (6 3 3 1) - (2 9 1) - (1 2 2 1 1) - (2 1 1) - (1 1 1) - (3 1) - (1)) - ((x x x x x x o o o o o x x x x x o o o o) - (o x x x x x o o o o x x x x x o o o o o) - (o o x o o x o o o o x o o x o o o o o o) - (o o x x x x x o o o x x x x o o o o o o) - (o o x x x x x o o x x x x x o o o o o o) - (o o x x x x x x x x x x x x o o o o o o) - (o o o x x x x x x x x x x o o o o o o o) - (o o o x x x x x x x x x x x o o o o o o) - (o o x x x x x x x x x x x x x o o o o o) - (o x x x x o o o o o o o o x x x o o o o) - (x x x o o o x x o o o x x o x x o o o o) - (x x o o o x o x o o x o x o x o o o o o) - (o x x o o o o o o o o o o o x o x o o o) - (o o x x o o o x x x x o o o x x x x o o) - (o o o x x o o o x x o o o x x x o o x o) - (o o o o x x o o o o o x x x x o o o x o) - (o o o o x x x x x x x x x x x x x x x o) - (o o o x o x x x o o o o o o o o o o o o) - (o o x o o o o x o o o o o o o o o o o o) - (x x x x x x x x x x x x x x x x x x x x))) - -("Hattori 75" - ((7 1 1) - (9 3 2) - (1 4 5 3) - (2 1 3 10) - (2 1 2) - (1 9) - (1 2 3 4) - (1 3 1 2) - (6 1 2) - (5 4 1) - (2 7 2 1) - (7 1 3) - (3 2 2 2) - (1 2 1 1 1) - (11 2) - (1 4 1 1 2) - (6 1 2) - (1 1 1 3) - (1 2 7) - (1 12)) - ((7 3) - (2 2 1 2 4) - (2 1 1 3) - (2 2 1 1 7 1) - (2 9 2) - (3 3 2 6) - (4 3 1 1 1) - (5 2 1 1 2 1) - (6 3 1 1) - (2 3 1 2) - (1 1 1 8) - (2 1 1 2) - (3 1 1 2) - (4 1 2 2) - (3 2 4 3) - (2 5 2 2) - (1 2 2 2) - (2 2 2 2) - (3 2 2 2) - (4 7)) - ((o x x x x x x x o o o o o x o o o o o x) - (x x x x x x x x x o o o x x x o o o x x) - (x o o o o x x x x o o x x x x x o x x x) - (x x o x o o x x x o x x x x x x x x x x) - (x x o x o o o x x o o o o o o o o o o o) - (x o o o o o o o x x x x x x x x x o o o) - (x o x x o o o x x x o o o o x x x x o o) - (x o o o o x x x o o o o o o o x o x x o) - (o x x x x x x o o o o o o o o x o o x x) - (o o o o x x x x x o o o o x x x x o o x) - (o o o x x o o o x x x x x x x o x x o x) - (o o o x x x x x x x o o o o x o o x x x) - (o o o x x x o o o x x o o o x x o o x x) - (o x o x x o o o o o x o o o o x o o o x) - (x x x x x x x x x x x o o o o o o o x x) - (x o x x x x o x o o x o o o o o o x x o) - (x x x x x x o o o o x o o o o o x x o o) - (o x o o o x o o o o x o o o x x x o o o) - (o x o o x x o o o x x x x x x x o o o o) - (o x o x x x x x x x x x x x x o o o o o))) - -("Hattori 76" - ((1 1 3) - (3 3 1 1) - (1 7 1 4) - (3 3 1) - (1 8) - (2 1 1 2 2) - (1 2 2 1 2) - (1 1 1) - (1 7 1 1) - (1 2 2 1 1) - (1 1 1 1 1 1 1) - (1 1 1 1 1 1 1) - (1 2 2 1 1) - (1 7 1 1) - (2 1 1) - (11 1) - (1 1 1 2) - (2 4 6 1) - (1 1 1 1 1 1 1) - (3 3 5)) - ((10) - (6 2) - (1 1 4 1) - (3 1 2 2 3) - (1 2 1 1 1 3) - (1 1 2 1 1 1) - (1 1 1 1 3) - (1 1 2 1 1 1) - (1 2 1 1 1 1) - (3 1 2 2 1 3) - (2 1 4 1 1) - (5 1 3) - (11 2) - (1 1) - (1 3) - (1 1 1) - (3 1 4) - (1 1 2 1) - (7 4) - (1 11)) - ((o x o o o o o o o o x o o o o o x x x o) - (o x x x o o o o o x x x o o o o x o x o) - (o x o x x x x x x x o x o o o o x x x x) - (o x x x o o o o o x x x o o o o o o x o) - (o x o o o o o o o o o x x x x x x x x o) - (x x o o x o o o x o o x x o o o o x x o) - (x o o x x o o o x x o o x o o o o o x x) - (x o o o o o o o o o o o x o o o o o o x) - (x o o x x x x x x x o o x o o o o o o x) - (x o x x o o o o o x x o x o o o o o o x) - (x o x o o x o x o o x o x o o o o o o x) - (x o x o o x o x o o x o x o o o o o o x) - (x o x x o o o o o x x o x o o o o o o x) - (x o o x x x x x x x o o x o o o o o o x) - (x x o o o o o o o o o o x o o o o o o x) - (o x x x x x x x x x x x o o o o o o o x) - (o o o x o o o o o o o o x o o o x o x x) - (o o o x x o x x x x o x x x x x x o x o) - (o o o o x o x o o x o x o o x o x o x o) - (o o o o x x x o o x x x o o x x x x x o))) - -("Hattori 77" - ((14) - (4 5) - (1 1 3) - (3 2) - (4 1) - (5 3) - (4 1 4) - (1 2 4) - (2 1 2) - (5 1 4) - (1 5 1) - (1 6 3) - (4 2 1) - (10 2 1 1) - (1 10 2) - (2 2 2 1 1) - (3 1 2 2 1) - (4 2 2 2) - (11 4) - (12 2)) - ((1) - (1 1 2) - (2 1 2) - (2 1 1 2) - (4 1 2 2) - (1 2 7) - (1 1 4 3) - (2 3 11) - (2 5 6 3) - (3 3 4 2) - (2 3 1 3 3) - (1 6 2 6) - (1 1 1 3 1) - (1 2 2 1 1) - (1 4 1 4) - (2 2 2 3 1) - (2 2 1 2 1) - (3 1 2 2) - (4 3 4) - (5 1 2)) - ((o o o o o o x x x x x x x x x x x x x x) - (o o o o o o o x x x x o o o o x x x x x) - (o o o o o o o o o x o x o o o o o x x x) - (o o o o o o o o o o x x x o o o o o x x) - (o o o o o o o o x x x x o o o o o o o x) - (o o o o o o o x x x x x o o x x x o o o) - (o o o o o o x x x x o x o x x x x o o o) - (o o o o o x o x x o o x x x x o o o o o) - (o o o x x o o o x o o o o o x x o o o o) - (o x x x x x o x o o o o o o o x x x x o) - (o o x o x x x x x o o o o o o o o o x o) - (o o o o x o x x x x x x o o o o o x x x) - (o o o o o o x x x x o x x o o o o x o o) - (o x x x x x x x x x x o x x o o x o o x) - (o o o o o x o x x x x x x x x x x o x x) - (o o o o x x o x x o x x o o o x o o x o) - (o o o x x x o x o o o x x o x x o o x o) - (o o o o o x x x x o x x o x x o o x x o) - (o x x x x x x x x x x x o o x x x x o o) - (x x x x x x x x x x x x o x x o o o o o))) - -("Hattori 78" - ((8) - (2 2) - (1 1) - (1 1 2) - (1 1 1 4) - (1 1 3 3) - (3 11 2) - (3 1 2 2) - (3 1 2 2) - (1 12 3) - (1 1 2 2 1 4) - (1 1 1 1 1 1) - (1 1 1 1) - (3 2 2 2 3) - (1 1 2 2 1 1 1) - (4 8 3) - (1 4 4 1) - (2 1 1 1) - (1 4) - (4 1 1 1)) - ((3 5) - (8 1 3) - (3 3 1) - (2 1) - (13 1 1) - (2 1 1 2 1) - (1 1 2 3) - (1 1 3 1 1 1) - (1 1 1 3) - (1 1 1 3) - (1 1 3 1) - (1 3 2 1 1 1) - (2 1 1 3) - (13 2) - (5 1) - (2 2 1 2) - (2 1 4 1) - (3 5 1 1) - (7 6) - (5)) - ((o o o o o x x x x x x x x o o o o o o o) - (o o o o x x o o o o o o x x o o o o o o) - (o o o o x o o o o o o o o x o o o o o o) - (o o o o x o o o o o o o o x o o x x o o) - (o o o o x o o o o o o x o x o x x x x o) - (o o o o x o o o o o o x o x x x o x x x) - (x x x o x x x x x x x x x x x o o o x x) - (x x x o x o o o o o o o o x x o o o x x) - (x x x o x o o o o o o o o x x o o o x x) - (o x o o x x x x x x x x x x x x o x x x) - (o x o o x o x x o o x x o x o x x x x o) - (o x o o x o o x o o x o o x o o o x o o) - (o x o o x o o o o o o o o x o o o x o o) - (x x x o x x o o x x o o x x o o x x x o) - (x o x o o x x o x x o o x o o o x o x o) - (x x x x o o x x x x x x x x o o x x x o) - (x o o x x x x o o o o o o x x x x o x o) - (x x o o o o o x o o o x o o o o o o x o) - (o x o o o o o o o o o o o o o x x x x o) - (o x x x x o o x o o o x o o o x o o o o))) - -("Hattori 79" - ((1 1 1 1 1 1) - (1 1 1 1 2 2 2) - (1 2 2 1 3 1 1) - (3 1 2 2 4) - (2 1 2 4) - (2 3 2) - (4 1 2) - (3 2 2) - (4 9) - (1 4 6) - (2 2 1) - (2 3 2) - (3 2 1 3) - (2 3 4) - (1 3) - (2 1 1) - (4 5) - (6 5) - (6 7 3) - (4 3)) - ((4 3 2) - (2 1 2 2) - (4 1 2 3) - (3 2 2 1 4) - (2 2 2 4) - (9 6) - (3 5 2) - (2 1 2) - (2 1 1) - (3 3 1 1) - (4 3 2) - (2 2 1 1 2) - (3 4 3 2) - (8 2) - (2 2 4 1) - (2 1 3 2) - (2 2 3) - (3 6) - (2 1 2 1 1) - (2 3)) - ((x o o x o o x o o o o x o o o x o o x o) - (x o o x o o x o o x o x x o x x o x x o) - (x o x x o x x o o x o o x x x o o x o x) - (x x x o o x o o x x o o x x o o x x x x) - (o x x o o x o x x o o o o x x x x o o o) - (o o x x o x x x o o o o o x x o o o o o) - (o o o x x x x o o o x o x x o o o o o o) - (o o o o x x x o o x x o x x o o o o o o) - (x x x x o x x x x x x x x x o o o o o o) - (x o o x x x x o o x x x x x x o o o o o) - (x x o o x x o o o o o o o o x o o o o o) - (o x x o o o o o o o x x x o x x o o o o) - (o o x x x o o o o x x o x o x x x o o o) - (o o o o x x o o o o x x x o o x x x x o) - (o o o o o x o o o o o o o o o o o x x x) - (o o o o x x o o o o o o o o o o o x o x) - (o o o x x x x o o o o o o o o x x x x x) - (o o x x x x x x o o o o o x x x x x o o) - (x x x x x x o x x x x x x x o o x x x o) - (x x x x o o o o o o x x x o o o o o o o))) - -("Hattori 80" - ((7) - (1 1 1) - (15) - (2 2 2 2) - (2 3 2) - (3 1 4) - (3 1 4) - (3 3 4) - (2 1 2 2) - (1 1) - (1 1) - (1 1) - (1 1) - (4 1 3) - (1 2 1 1 3) - (2 2 1 1 1 1) - (2 3 1 1 3) - (2 1 1 1 1) - (2 5 1) - (2 3)) - ((5) - (6 3) - (2 3 1 2) - (1 1 2) - (1 2 2) - (1 2 2) - (1 1 2 1) - (4 1) - (1 3 10) - (3 4) - (1 3 2) - (4 11) - (1 1 1 1) - (1 6) - (1 1 1) - (1 6) - (2 3 1 1) - (6 4) - (5) - (3)) - ((o o o o o o x x x x x x x o o o o o o o) - (o o o o o o o x o x o x o o o o o o o o) - (o o x x x x x x x x x x x x x x x o o o) - (o x x o o o o x x o x x o o o o x x o o) - (x x o o o o o o x x x o o o o o o x x o) - (x x x o o o o o o x o o o o o o x x x x) - (x x x o o o o o o x o o o o o o x x x x) - (x x x o o o o o x x x o o o o o x x x x) - (x x o o o o o o x o x x o o o o o x x o) - (o o o o o o o o x o o x o o o o o o o o) - (o o o o o o o o x o o x o o o o o o o o) - (o o o o o o o o x o o x o o o o o o o o) - (o o o o o o o o x o o x o o o o o o o o) - (o x x x x o o o x o o x x x o o o o o o) - (o x o o x x o o x o o x o x x x o o o o) - (o x x o o x x o x o o x o x o x o o o o) - (o o x x o o x x x o o x o x o x x x o o) - (o o o x x o o o o o o x o x o x o x o o) - (o o o o x x o o o o o x x x x x o x o o) - (o o o o o x x o o o o o o o o x x x o o))) - -("Hattori 81" - ((1 1 1) (2 1 2) (7) (7) (5) (1 1 1) (2 1 2) (4 1 3) (10) (6)) - ((4) (3) (3 3) (5 3) (3 2) (10) (3 2) (5 3) (3 3) (4)) - ((o o o x o x o x o o) - (o o x x o x o x x o) - (o o x x x x x x x o) - (o o x x x x x x x o) - (o o o x x x x x o o) - (x o o o o x o o o x) - (x x o o o x o o x x) - (x x x x o x o x x x) - (x x x x x x x x x x) - (o o x x x x x x o o))) - -("Hattori 82" - ((1) (2) (3) (2) (4) (4 1) (5 2) (6 2) (7 3) (8 4) (15) (1) (15) (13) (11)) - ((1 1) (2 2) (3 3) (4 3) (5 3) (6 3) (7 3) (8 3) (15) (2 1 1 3) (1 6 3) (5 3) (3 3) (2 2) (1 1)) - ((o o o o o o o o x o o o o o o) - (o o o o o o o o x x o o o o o) - (o o o o o o o o x x x o o o o) - (o o o o o o o x x o o o o o o) - (o o o o o o x x x x o o o o o) - (o o o o o x x x x o x o o o o) - (o o o o x x x x x o x x o o o) - (o o o x x x x x x o x x o o o) - (o o x x x x x x x o x x x o o) - (o x x x x x x x x o x x x x o) - (x x x x x x x x x x x x x x x) - (o o o o o o o o x o o o o o o) - (x x x x x x x x x x x x x x x) - (o x x x x x x x x x x x x x o) - (o o x x x x x x x x x x x o o))) - -("Hattori 83" - ((1 1 1 1 12) - (1 1 13) - (1 1 14) - (1 15) - (1 16) - (1 1) - (1 5 7) - (2 2 8) - (1 1 1 1 1 8) - (1 1 1 1 1 2 5) - (1 1 1 3) - (1 1 1 1 1 2) - (1 3 1 1 2 2) - (1 2 2 3 1 2) - (1 1 1 1 1 2 2) - (2 1 1 1 1 1) - (1 1 2 2 5 1) - (1 1 1 2 1 1) - (1 7 3 4) - (10)) - ((3 2 3) - (3 3) - (1 4 4) - (2 2 1 3 1) - (2 1 1 2 2 1) - (4 1 1) - (1 3 1 2 2 1) - (4 2 1 4 1) - (5 4 3) - (5 3) - (5 1 4) - (5 9) - (5 3 2) - (5 11 1) - (5 3 1 1 1) - (5 4 2 1 1) - (5 4 1 1 2) - (5 5 4) - (5 9 2) - (5 14)) - ((x o x o x o x o x x x x x x x x x x x x) - (x o o o x o o x x x x x x x x x x x x x) - (x o o x o o x x x x x x x x x x x x x x) - (o o o x o x x x x x x x x x x x x x x x) - (o x o o x x x x x x x x x x x x x x x x) - (o x o o o x o o o o o o o o o o o o o o) - (o x o x x x x x o o o o o x x x x x x x) - (o o x x o o o x x o o o x x x x x x x x) - (x o x o x o x o x o o o x x x x x x x x) - (x o x o x o x o x o o o x x o x x x x x) - (o o x o o o o o x o o o o x o o o x x x) - (o o o x o o o x o o o x o x o x o o x x) - (o x o o x x x o o o o x o x o x x o x x) - (o x o x x o x x o x x x o x o o o o x x) - (o x o x o o o x o x o x o x x o o o x x) - (o o x x o o o x o x o x o x o o o o o x) - (x o x o o o o x x o x x o x x x x x o x) - (x o x o o o o o x o x x o o o o o x o x) - (x o x x x x x x x o x x x o o o x x x x) - (o o o o o o o o o o x x x x x x x x x x))) - -("Hattori 84" - ((2) - (3) - (2 2) - (4 2) - (2 3 2) - (8 1 2) - (10 4) - (2 16) - (4 3 3 2) - (3 3 3 1) - (3 3 2) - (4 3) - (10) - (3 4) - (1 3 3 1) - (2 2 3 2) - (3 3 5) - (5 4) - (16) - (12)) - ((2 3) - (4 3) - (5 3) - (2 2 2) - (8 4) - (2 6 6) - (2 13 2) - (2 10 2) - (2 8 2) - (4 2 2) - (4 1 2) - (4 1 2) - (4 2 2) - (1 4 2) - (9 2) - (13) - (4 4) - (3 3) - (4 3) - (4 3)) - ((o o o o x x o o o o o o o o o o o o o o) - (o o o o x x x o o o o o o o o o o o o o) - (o o o x x o x x o o o o o o o o o o o o) - (o o x x x x o x x o o o o o o o o o o o) - (o x x o x x x o x x o o o o o o o o o o) - (x x x x x x x x o x o o o o o o o x x o) - (x x x x x x x x x x o o o o o o x x x x) - (o x x o x x x x x x x x x x x x x x x x) - (o o o o o x x x x o x x x o x x x o x x) - (o o o o o o x x x o x x x o x x x o o x) - (o o o o o o x x x o x x x o x x o o o o) - (o o o o o o x x x x o o o x x x o o o o) - (o o o o o o x x x x x x x x x x o o o o) - (o o o o o o x x x o o o x x x x o o o o) - (x o o o o x x x o o o o o x x x o o o x) - (x x o o o x x o o o o o o o x x x o x x) - (x x x o x x x o o o o o o o o x x x x x) - (o x x x x x o o o o o o o o o x x x x o) - (o o x x x x x x x x x x x x x x x x o o) - (o o o o x x x x x x x x x x x x o o o o))) - -("Hattori 85" - ((1 1 1 1 1 1) - (1 1 1 5 1 1) - (1 1 9 1) - (1 4 1 4) - (6 6) - (8 8) - (10 9) - (2 4 1 3 2) - (1 1 1 1 1) - (5 1) - (8 1 6) - (9 1 8) - (5 1 1 8) - (4 3 1 1 4) - (3 1 1 1 3 3) - (3 1 1 2 1 2) - (4 3 1 1 2 1) - (3 1 1 2 1) - (1 2 1 2 2) - (6 2 1 2)) - ((3 3 6) - (3 8) - (3 3 9 1) - (3 5 4) - (2 4 4 1) - (5 3 1) - (1 6 3 2 1 1) - (7 2 1 1 2) - (2 3 9) - (2 1) - (4 13) - (2 1 1) - (2 2 2 3) - (6 6 3) - (1 7 3 1 1 1) - (5 3 3) - (2 4 4) - (3 5) - (2 4 6 2) - (4 9)) - ((o o x o x o x o o o x o o o x o x o o o) - (x o x o x o o o x x x x x o o o x o x o) - (x o x o o o x x x x x x x x x o o o x o) - (x o o o x x x x o o x o o x x x x o o o) - (o o x x x x x x o o o o o x x x x x x o) - (o x x x x x x x x o o o x x x x x x x x) - (x x x x x x x x x x o x x x x x x x x x) - (x x o o o x x x x o x o o x x x o o x x) - (x o o o o o o x o o x o o o x o o o o x) - (o o x x x x x o o o x o o o o o o o o o) - (o x x x x x x x x o x o o x x x x x x o) - (x x x x x x x x x o x o x x x x x x x x) - (x x x x x o o o x o x o x x x x x x x x) - (x x x x o o x x x o x o o x o o x x x x) - (x x x o o o x o x o x o o x x x o x x x) - (x x x o o o o o x o x o x x o x o o x x) - (x x x x o o x x x o x o x o x x o o o x) - (o x x x o o o o x o x o x x o o o o o x) - (o o o x o o o x x o x o o x x o o o x x) - (o o x x x x x x o o x x o x o o o o x x))) - -("Hattori 86" - ((3 6 1) - (3 6 3) - (4 6 1) - (4 9 2) - (3 6 3) - (3 6 3) - (3 6) - (2) - (6) - (2 2 2 3) - (3 2 2 4) - (3 1 1 1 4) - (2 1 3 2 1 3) - (3 1 1 2) - (5 4) - (8 2 7) - (6 2 5) - (6 1 1 5) - (6 5) - (13)) - ((4 4 3) - (5 4 5) - (7 2 5) - (5 7) - (3 7) - (1 10) - (2 1 2) - (7 2 1 1 1 1) - (7 1 3 1) - (7 1 1 2 1) - (7 1 2 1) - (7 1 2 1) - (7 2 1 1 1 1) - (1 2 1 2) - (1 10) - (2 7) - (2 1 2 5) - (1 2 4 5) - (2 1 1 4 3) - (1 1 4)) - ((x x x o o o o x x x x x x o o o o o x o) - (x x x o o o o x x x x x x o o o x x x o) - (x x x x o o o x x x x x x o o o x o o o) - (x x x x o o o x x x x x x x x x o o x x) - (o x x x o o o x x x x x x o o x x x o o) - (o o x x x o o x x x x x x o o o o x x x) - (o o x x x o o x x x x x x o o o o o o o) - (o o o o x x o o o o o o o o o o o o o o) - (o o o o o o o x x x x x x o o o o o o o) - (x x o o o o x x o o o o x x o o o x x x) - (x x x o o x x o o o o o o x x o x x x x) - (x x x o o x o o x o o o o o x o x x x x) - (x x o o o x o x x x o x x o x o o x x x) - (o o o x x x o o x o o x o o x x o o o o) - (o x x x x x o o o o o o o o x x x x o o) - (x x x x x x x x o x x o x x x x x x x o) - (x x x x x x o o o x x o o o x x x x x o) - (x x x x x x o x o o o o x o x x x x x o) - (o x x x x x x o o o o o o x x x x x o o) - (o o o x x x x x x x x x x x x x o o o o))) - -("Hattori 87" - ((5 5) - (1 1 1 1) - (3 1 3 1) - (3 1 3 1) - (1 1 3 1 2) - (13) - (15) - (17) - (3 2 12) - (20) - (5) - (20) - (11 4) - (9 4 3) - (8 5 2) - (7 8) - (3 11) - (3 3 8) - (3 3 6) - (4 4 7)) - ((2 1 1) - (3 2 1) - (4 3 2) - (8 1 4 3) - (1 2 5 8) - (1 8 7 1) - (1 3 1 6 1) - (10 5 2) - (6 5 3) - (10 8) - (1 2 5 7) - (1 8 2 1 1) - (1 5 1 5 1) - (10 1 7) - (6 1 7) - (7 7) - (7 6) - (7 5) - (11) - (9)) - ((o o o x x x x x o x x x x x o o o o o o) - (o o o x o o o x o x o o o x o o o o o o) - (o o o x x x o x o x x x o x o o o o o o) - (o o o x x x o x o x x x o x o o o o o o) - (o o o x o x o x x x o x o x x o o o o o) - (o o o x x x x x x x x x x x x x o o o o) - (o o x x x x x x x x x x x x x x x o o o) - (o x x x x x x x x x x x x x x x x x o o) - (x x x o x x o x x x x x x x x x x x x o) - (x x x x x x x x x x x x x x x x x x x x) - (o o o o o o o o o o o o o o o x x x x x) - (x x x x x x x x x x x x x x x x x x x x) - (o x x x x x x x x x x x o o o o x x x x) - (o o x x x x x x x x x o x x x x o x x x) - (o o o x x x x x x x x o x x x x x o x x) - (o o o o x x x x x x x o x x x x x x x x) - (o o o o x x x o o x x x x x x x x x x x) - (o o o x x x o o x x x o x x x x x x x x) - (o o x x x o o x x x o o o x x x x x x o) - (x x x x o x x x x o o x x x x x x x o o))) - -("Hattori 88" - ((4 4 5) - (1 2 2 1 6) - (1 1 1 8) - (1 1 1 5) - (3 2 2 2 1) - (1 1 1 2 5) - (2 3 2 1 3) - (1 1 1 1 1 1) - (2 4 1 3) - (5 2 1 1) - (1 3 1 1) - (1 3 1 1 4) - (6 2 2 1 2) - (1 1 1 4 1 3) - (1 2 5 2) - (4 1 2) - (1 3 4) - (2 1 1) - (1 1 5) - (1 11)) - ((5 4) - (1 3 4 1) - (1 1 4 1 4) - (2 2 4 3) - (4 1 2) - (3 6) - (2 2 1) - (3 2 3 1) - (4 2 3 4) - (2 3 4 1) - (1 2 1 2 1) - (1 2 5 1) - (5 2) - (2 2) - (14 2) - (4 1 2 2) - (4 4 2 5) - (3 2 1 3 1 1) - (3 4 1 1 1 1) - (3 1 1 1)) - ((x x x x o o o o o x x x x o o x x x x x) - (x o o x x o o o x x o o x o x x x x x x) - (x o o o x o o o x o o o x x x x x x x x) - (x o o o x o o o x o o o x x x x x o o o) - (x x x o x x o x x o o x x o x o o o o o) - (o x o o o x o x o o x x o o x x x x x o) - (o x x o o x x x o x x o o o x o x x x o) - (o o x o o o x o o x o o o o x o x o x o) - (o o x x o o o o x x x x o o x o x x x o) - (o x x x x x o x x o o x o o x o o o o o) - (o x o o o x x x o o o x o o x o o o o o) - (o x o o x x x o o o o x o o x o x x x x) - (x x x x x x o x x o x x o o x o x x o o) - (x o o x o x o x x x x o o o x o o x x x) - (x o x x o x x x x x o o o o x x o o o o) - (x x x x o o o o o x o o o o o x x o o o) - (o o x o o o o x x x o o o o o o x x x x) - (o o x x o o o o x o o o o o o o x o o o) - (o o o x o o o o x o o o x x x x x o o o) - (o o o x o o o o x x x x x x x x x x x o))) - -("Hattori 89" - ((9) - (4 4) - (4 3) - (5 4) - (4 4 2) - (4 2 2 5 3) - (4 1 1 5 2) - (4 2 2 5 2) - (4 9) - (4 5 2) - (2 1 2 5 1) - (2 1 2 2 2 1) - (2 2 1) - (6 1) - (1 1) - (2 1 1 1 1) - (2 2 5 1) - (3 2 2 1 1) - (1 2 2 2 1) - (10 6)) - ((9) - (10) - (9 3) - (13 1 1) - (4 2 2 1) - (2 1 1 1 2 1) - (1 3 2 3 2) - (1 2 1 3) - (1 1 1 1 2 1) - (2 3 2 2 1) - (4 2 1) - (12 2) - (10 2) - (9 3) - (8 1 2) - (6 4) - (1 1 1) - (2 1 2 1) - (6 1) - (15)) - ((o o o x x x x x x x x x o o o o o o o o) - (o o x x x x o o o x x x x o o o o o o o) - (o x x x x o o o o o x x x o o o o o o o) - (x x x x x o o o o o x x x x o o o o o o) - (x x x x o o o o o o o x x x x o o x x o) - (x x x x o x x o x x o x x x x x o x x x) - (x x x x o o x o o x o x x x x x o o x x) - (x x x x o x x o x x o x x x x x o o x x) - (x x x x o o o o o o o x x x x x x x x x) - (x x x x o o o o o o o x x x x x o o x x) - (x x o x o o x x o o o x x x x x o o o x) - (x x o x o o x x o o x x o x x o o o o x) - (o o o x x o o o o x x o o o o o o o o x) - (o o o o x x x x x x o o o o o o o o o x) - (o o o o o o x o o o o o o o o o o o o x) - (o o o o o x x o o x o o o x o o o x o x) - (o o o o x x o o x x o o o x x x x x o x) - (o o x x x o o x x o o o x x o x o o o x) - (o o x o o o x x o o o x x o x x o o o x) - (o o x x x x x x x x x x o o x x x x x x))) - -("Hattori 90" - ((2 6) - (11) - (3 9) - (3 1 1 1 2) - (2 1 1 1 1) - (3 1 2) - (1 1 1 1 1) - (1 2 2 1 2) - (1 2 1 1) - (2 6 3) - (2 6 5) - (13 2) - (5 4 3) - (4 4 5) - (1 7) - (6 3) - (7 2) - (14) - (4 10 4) - (4 4)) - ((5 2) - (1 2 2) - (5 2 2) - (3 2 1 3) - (3 6 1) - (3 5 3) - (2 5 4) - (7 5 4) - (3 6 5) - (5 3 1 4) - (3 2 3 4) - (5 3 4) - (3 5 2) - (3 6 1 2) - (3 3 3 2 3) - (4 2 6) - (6 3) - (5 2) - (2 2) - (2)) - ((o o o o o x x o x x x x x x o o o o o o) - (o o o o x x x x x x x x x x x o o o o o) - (o o o x x x o x x x x x x x x x o o o o) - (o o x x x o o x o x o x o o x x o o o o) - (o o x x o o o x o x o x o o o x o o o o) - (x x x o o o o x o o o o o o x x o o o o) - (x o x o o o o x o o x o o o x o o o o o) - (x o x x o o o x x o x o o x x o o o o o) - (x o o x x o o o x o o o o x o o o o o o) - (x x o o x x x x x x o o o x x x o o o o) - (o x x o x x x x x x o o x x x x x o o o) - (o o x x x x x x x x x x x x x o x x o o) - (o o o o x x x x x o x x x x o x x x o o) - (o o o o x x x x o x x x x o x x x x x o) - (o o o o o o o o x o o o x x x x x x x o) - (o o o o o o x x x x x x o o o x x x o o) - (o o o o o x x x x x x x o o x x o o o o) - (o o o x x x x x x x x x x x x x x o o o) - (x x x x o x x x x x x x x x x o x x x x) - (x x x x o o o o o o o o o o o o x x x x))) - -("Hattori 91" - ((5 5) - (1 1 1 1) - (1 1) - (7) - (4 1 2 2 3) - (6 1 1 1 5) - (4 3 1 3 3) - (3 7 2) - (2 1 1 1) - (1 1 3 1 1) - (1 1 1) - (2 1 3 1 2) - (18) - (2 3 2) - (2 1 4 1 1) - (1 6 1) - (2 5 2 2) - (2 2 4 2 2) - (4 3 3) - (1 2 1)) - ((7) - (5 2 3) - (4 3 2) - (3 2 2) - (2 1 2 1 2) - (2 2 1 1) - (1 1 1 2) - (1 5 1 2) - (1 1 1 1 2) - (5 3 7) - (5 10) - (4 3 9) - (1 2 1 1 2 3) - (1 5 1 2) - (1 1 1 2) - (2 2 1 2) - (2 1 2 1 2) - (3 1 2) - (4 3 2) - (7 4)) - ((o o o o o x x x x x o x x x x x o o o o) - (o o o o o x o o o x o x o o o x o o o o) - (o o o o o o o o o x o x o o o o o o o o) - (o o o o o o o x x x x x x x o o o o o o) - (o x x x x o o x o x x o x x o o x x x o) - (x x x x x x o x o o x o o x o x x x x x) - (x x x x o x x x o o x o o x x x o x x x) - (x x x o o o o x x x x x x x o o o o x x) - (x x o o o o o o o x o x o o o o o o o x) - (x o o o x o o o o x x x o o o o x o o x) - (x o o o o o o o o o x o o o o o o o o x) - (x x o o x o o o o x x x o o o o x o x x) - (o x x x x x x x x x x x x x x x x x x o) - (o o x x o o o o o x x x o o o o o o x x) - (o x x o x o o o o x x x x o o o x o o x) - (o x o o o o o o x x x x x x o o o o o x) - (o x x o o o o x x x x x o x x o o o x x) - (o o x x o o x x o x x x x o x x o x x o) - (o o o x x x x o o o x x x o o x x x o o) - (o o o o x o o o o o o x x o o o x o o o))) - -("Hattori 92" - ((5) - (5 2) - (7 4) - (8 5) - (9 6) - (9 6) - (9 8) - (1 7 8) - (1 4 8) - (4 2 7) - (1 2 3 6) - (2 2 1 5 5) - (2 1 1 2 2 5) - (1 2 1 5 5) - (1 2 2 3 6) - (3 2 6) - (1 2 7) - (4 1 6) - (1 1 4) - (1 1 3)) - ((4) - (2 2 1) - (9 5) - (5 1 1) - (6 1 1 2 1) - (7 1 4 1) - (7) - (8 5) - (10 2) - (10 3 2) - (1 3 5 4) - (1 2 2) - (1 3 5 4) - (10 3 5) - (10 6) - (17) - (16) - (15) - (13) - (9)) - ((o o o o o o o o o x x x x x o o o o o o) - (o o o o o x x x x x o o o x x o o o o o) - (o o o x x x x x x x o o o x x x x o o o) - (o o x x x x x x x x o o o x x x x x o o) - (o x x x x x x x x x o o o x x x x x x o) - (o x x x x x x x x x o o o x x x x x x o) - (o o x x x x x x x x x o x x x x x x x x) - (o o x o x x x x x x x o x x x x x x x x) - (o o x o o o o x x x x o x x x x x x x x) - (o o x x x x o o x x o o o x x x x x x x) - (o o x o o o o x x o x x x o x x x x x x) - (o x x o x x o x o x x x x x o x x x x x) - (x x o o o x o x o x x o x x o x x x x x) - (x o o o x x o x o x x x x x o x x x x x) - (x o o o x x o x x o x x x o x x x x x x) - (x x x o o o o o x x o o o x x x x x x o) - (o o x o o o o o o x x o x x x x x x x o) - (o o x x x x o o o o x o x x x x x x o o) - (o o x o o o o o o o x o x x x x o o o o) - (o o x o o o o o o o x o x x x o o o o o))) - -("Hattori 93" - ((8 3) - (3 1 3 1) - (2 3 1) - (1 2 2 4) - (1 3 1 5) - (2 1 1 2 1) - (1 2 1 3) - (1 2 2) - (2 3 1) - (3 1 3 2) - (8 3) - (5 9) - (2 4 1) - (2 9) - (2 6 2) - (2 1 4 1 1) - (2 9 1) - (2 1 1 1) - (13 1) - (15 3)) - ((9) - (3 1 3 1) - (2 3 2) - (1 2 2) - (1 2 10) - (2 1 1 11) - (1 3 2 2) - (2 2 2 2 2) - (3 3 3 1 2) - (3 1 3 9) - (7 6 2) - (6 2) - (1 4 2) - (4 4) - (1 1 1 2) - (1 1 1 2 1) - (7 1 2) - (5 2 3 6) - (1 2 1 1 1) - (1 2 1 1)) - ((o x x x x x x x x o o o o o o o o x x x) - (x x x o o x o x x x o o o o o o o x o o) - (x x o o o o o o x x x o o o o o o x o o) - (x o o o o o x x o x x o o o o o x x x x) - (x o o o o x x x o o x o o o o x x x x x) - (x x o o x o x o o x x o o o o o x o o o) - (x o o o x x o o o o x o o o o o x x x o) - (x o o o o o o o o x x o o o o o x x o o) - (x x o o o o o o x x x o o o o o x o o o) - (x x x o o x o x x x o o o o o o x x o o) - (o x x x x x x x x o o o o o o o o x x x) - (o o x x x x x o o x x x x x x x x x o o) - (o o o o x x o o x x x x o x o o o o o o) - (o o o o x x o o x x x x x x x x x o o o) - (o o o o x x o o x x x x x x o o x x o o) - (o o o o x x o x o x x x x o o x o x o o) - (o o o o x x o x x x x x x x x x o x o o) - (o o o o x x o o o x o o o x o o o x o o) - (o o x x x x x x x x x x x x x o o x o o) - (o x x x x x x x x x x x x x x x o x x x))) - -("Hattori 94" - ((3 5) - (2 1 2 1) - (2 3 2 1) - (2 2 3 1) - (2 2 4 1) - (2 2 3 1 3) - (1 2 4 2 1 2) - (1 3 2 5 1) - (1 2 3 2 1) - (2 4 2 1) - (1 1) - (2 3 2 1) - (1 1 1 2 1) - (1 3 2 1) - (1 2 1) - (1 2 1) - (1 1 2 2 1) - (3 3 6 2) - (5 3 3) - (6 10)) - ((7) - (3 2) - (6 3) - (4 2) - (3 2 3 2) - (2 3 1 1 3) - (1 4 3 1 1) - (6 1 2 1) - (2 2 1 1 2) - (2 4 1 2) - (2 4 2 3) - (1 5 1 3 1 1) - (1 3 2 6 1) - (1 2 2 2 1) - (8 1 1 1) - (2 1) - (5 1) - (1 1 2) - (2 3) - (14)) - ((o o o o o x x x o o x x x x x o o o o o) - (o o o o x x o x o x x o o o x o o o o o) - (o o o x x o o x x x o x x o x o o o o o) - (o o o x x o o x x o x x x o x o o o o o) - (o o x x o o x x o x x x x o x o o o o o) - (o o x x o o x x o x x x o o x o x x x o) - (o o x o o x x o x x x x o x x o x o x x) - (o o x o x x x o x x o o x x x x x o o x) - (o o x o x x o o o o x x x o o x x o o x) - (o x x o o o o x x x x o o o o o x x o x) - (o x o o o o o o o o o o o o o o o o o x) - (x x o o x x x o o o o o o x x o o o o x) - (x o o o x o x o o o o o x x o o o o o x) - (x o o o x x x o o o o x x o o o o o o x) - (x o o o o o o o o o o x x o o o o o o x) - (x o o o o o o o o o o x x o o o o o o x) - (x o x o o o o x x o o o x x o o o o o x) - (x x x o o x x x o x x x x x x o o o x x) - (o x x x x x o o x x x o o o o o o x x x) - (o o o x x x x x x o x x x x x x x x x x))) - -("Hattori 95" - ((3 9) - (1 2 1 1 1 2) - (1 1 1 2) - (5 1 3 1) - (4 1 1) - (13) - (13) - (2 3) - (8 3) - (11 2) - (2 5) - (11 1) - (1 1 1 1 5) - (2 1 1 1 2) - (2 2 3) - (5 2 2) - (2 1 4 1 2) - (3 4 2 2 2) - (6 1 2 5) - (3 2 5 2 2)) - ((4 3) - (1 1 4) - (2 2 5) - (5 1 1) - (4 2 3 3) - (4 7 3) - (1 5 1 3) - (4 2 2 3 2) - (1 3 2 1 1 1) - (2 1 2 2 4 2 1) - (1 1 2 2 1 1 2 1) - (2 1 2 2 1 1 1) - (1 3 2 3 2) - (4 2 2 1 2) - (3 3 4 3) - (4 6 2) - (5 3 2) - (3 1 2 1) - (3 5) - (4)) - ((x x x o o o x x x x x x x x x o o o o o) - (x o x x o o o x o x o x o x x o o o o o) - (x o o x o o o x o o o o o x x o o o o o) - (x x x x x o o x o x x x o x o o o o o o) - (o o x x x x o o x o o o x o o o o o o o) - (o o o x x x x x x x x x x x x x o o o o) - (o o o o x x x x x x x x x x x x x o o o) - (o o o o o x x o o o o o o o x x x o o o) - (o o o o o o x x x x x x x x o x x x o o) - (o o o o x x x x x x x x x x x o x x o o) - (o o o o x x o o o o o o o o x x x x x o) - (o o o o o x x x x x x x x x x x o o x o) - (o o o o o x o x o x o o x o x x x x x o) - (o o o o x x o x o x o o x o o x x o o o) - (o o o o x x o o o x x o o o o x x x o o) - (o o x x x x x o o o o o o o x x o x x o) - (o x x o o o x o x x x x o o x o o o x x) - (x x x o x x x x o x x o o x x o o o x x) - (x x x x x x o x o o o o x x o x x x x x) - (x x x o x x o o x x x x x o o x x o x x))) - -("Hattori 96" - ((4 4) - (2 3) - (5 8) - (3 10) - (3 3 1 4) - (3 2 2 2 1 1) - (3 2 1 1 1) - (3 2 1 1 2) - (4 2 1 3) - (4 1 3) - (9 5) - (4 6) - (14) - (1 1 1 2 4) - (3 2 3) - (6 3 3) - (13 3) - (4 1 4 4) - (3 2 4 1 1) - (4 2 5 4)) - ((2) - (9 1) - (1 8 4) - (1 9 5) - (3 4 5) - (1 4 4 4) - (2 6 3 3 1) - (1 3 9 2) - (1 2 1 1 1 4) - (1 2 3 1 2 1 1) - (3 1 1 1 1 2) - (2 3 1 2 4) - (2 1 1 5) - (3 11) - (4 10) - (2 6) - (5 4 3) - (8 1) - (7 1) - (7)) - ((o x x x x o x x x x o o o o o o o o o o) - (x x o o x x x o o o o o o o o o o o o o) - (x x x x x o o x x x x x x x x o o o o o) - (o x x x o o x x x x x x x x x x o o o o) - (o x x x o x x x o o x o o x x x x o o o) - (o x x x o x x o x x o x x o x o x o o o) - (o x x x o x x o o x o x o o o o x o o o) - (o x x x o x x o o x o x o o o x x o o o) - (o x x x x o x x o o x o o o x x x o o o) - (o o x x x x o x o o o o o x x x o o o o) - (o o o x x x x x x x x x o x x x x x o o) - (o o o o x x x x o o o o o x x x x x x o) - (o o o o o x x x x x x x x x x x x x x o) - (o o o o o o o x o x o x o x x o x x x x) - (o o o o o x x x o o o o o x x o o x x x) - (o o o x x x x x x o o o x x x o o x x x) - (o o x x x x x x x x x x x x x o o x x x) - (o o x x x x o o x o o x x x x o x x x x) - (o o x x x o o x x o x x x x o o x o o x) - (o x x x x o x x o x x x x x o o x x x x))) - -("Hattori 97" - ((7 3 2) - (2 6 3) - (12 2 4) - (3 6 1) - (2 4 3 3) - (2 1 1 1 1) - (3 1 3) - (1 1 1 1) - (1 2 3 2) - (2 1 4 2) - (1 1 1 1) - (2 2 3 2) - (1 2 1 2) - (2 2 2 2) - (1 2 2 1 1) - (1 2 4 2) - (1 2 3 4) - (1 5 2 3) - (2 1 1 1) - (16 1)) - ((8 5) - (6 3 1 2) - (3 3 4 1) - (1 1 2 1 1) - (1 1 2 1 1) - (1 1 2 2 1) - (1 1 1 1 2 2 1) - (1 1 2 2 2 1 1) - (1 1 1 5 1 1 1) - (10 1 1 1 1) - (3 2 1 1 1) - (5 2 2 1) - (2 2 4 1) - (5 4) - (3 1 1) - (1 1) - (1 4) - (8 3) - (3 1 1 4 7) - (3 3 1 1 1)) - ((o o o x x x x x x x o x x x o o o o x x) - (o x x o o o o o o x x x x x x o o x x x) - (x x x x x x x x x x x x o x x o x x x x) - (x x x o o o o o o x x x x x x o o x o o) - (x x o o o o x x x x o x x x o o o x x x) - (x x o o o o o x o x o o o o o o o x o x) - (x x x o o o o o o x o o o o o o o x x x) - (x o x o o o o o o x o o o o o o o x o o) - (x o x x o o o x x x o o o o o o o x x o) - (x x o x o o x x x x o o o o o o o o x x) - (o x o o x o o o x o o o o o o o o o x o) - (o x x o x x o o x x x o o o o o o o x x) - (o o x o o x x o x o x x o o o o o o o o) - (o x x o o o x x o o o x x o o o o o x x) - (x o x x o o o x x o o o x o o o o o x o) - (x o o o x x o o o x x x x o o o o x x o) - (x o o o o x x o o o o x x x o x x x x o) - (x o o o o o x x x x x o o x x o x x x o) - (x x o o o o o o o o o o o x o o x o x o) - (o x x x x x x x x x x x x x x x x o x o))) - -("Hattori 98" - ((3) (7) (2 3 3) (8 1 4) (2 3 5) (10) (9) (3 4) (4 10) (3 10) (3 9) (2 4 4) (2 15) (2 15) (3 13) (4 5 5) (7 7) (18) (17) (13)) - ((1 1 8) - (3 11) - (1 3 5) - (1 2 5) - (1 2 3 4) - (1 1 4 4) - (3 5 4) - (5 7 3) - (6 3 4 3) - (2 2 3 4 3) - (2 1 2 3 4 3) - (2 2 3 4 3) - (6 3 4 3) - (9 3 4) - (8 4 4) - (7 9) - (5 8) - (8) - (6) - (4)) - ((o o o o o o o o o x x x o o o o o o o o) - (o o o o o o o x x x x x x x o o o o o o) - (x x o o o o x x x o o o x x x o o o o o) - (o x x x x x x x x o x o x x x x o o o o) - (x x o o o o x x x o o o x x x x x o o o) - (o o o o o o o x x x x x x x x x x o o o) - (o o o o o o o o x x x x x x x x x o o o) - (o o o x x x o o o o o o o x x x x o o o) - (o x x x x o o x x x x x x x x x x o o o) - (x x x o o o x x x x x x x x x x o o o o) - (x x x o x x x x x x x x x o o o o o o o) - (x x o o x x x x o o o o o o x x x x o o) - (x x o o x x x x x x x x x x x x x x x o) - (x x o o o x x x x x x x x x x x x x x x) - (x x x o o o o x x x x x x x x x x x x x) - (x x x x o o o o x x x x x o o x x x x x) - (x x x x x x x o o o o o o x x x x x x x) - (o x x x x x x x x x x x x x x x x x x o) - (o x x x x x x x x x x x x x x x x x o o) - (o o o x x x x x x x x x x x x x o o o o))) - -("Hattori 99" - ((8) (14) (14) (14) (8 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 4) (4 6) (6 7) (7 7) (7 6) (6 4) (4)) - ((3) (5) (5) (6) (6) (5) (17) (4) (4) (4) (4) (4) (5) (5 3) (4 5) (4 5) (4 6) (4 6) (4 5) (17)) - ((o o o o o o o o o o o o x x x x x x x x) - (o o o o o o x x x x x x x x x x x x x x) - (o o o o o o x x x x x x x x x x x x x x) - (o o o o o o x x x x x x x x x x x x x x) - (o o o o o o x x x x x x x x o o o o o x) - (o o o o o o x o o o o o o o o o o o o x) - (o o o o o o x o o o o o o o o o o o o x) - (o o o o o o x o o o o o o o o o o o o x) - (o o o o o o x o o o o o o o o o o o o x) - (o o o o o o x o o o o o o o o o o o o x) - (o o o o o o x o o o o o o o o o o o o x) - (o o o o o o x o o o o o o o o o o o o x) - (o o o o o o x o o o o o o o o o o o o x) - (o o o o o o x o o o o o o o o o x x x x) - (o o o x x x x o o o o o o o x x x x x x) - (o x x x x x x o o o o o o x x x x x x x) - (x x x x x x x o o o o o o x x x x x x x) - (x x x x x x x o o o o o o x x x x x x o) - (x x x x x x o o o o o o o o x x x x o o) - (o x x x x o o o o o o o o o o o o o o o))) - -("Hattori 100" - ((3 7) - (4 9 2) - (4 10 1) - (4 1 6 1) - (5 1 1 1 2 1) - (5 1 1 1 2 1) - (5 7 2 1) - (16 1) - (11 1) - (3 8 2) - (2 1 11) - (2 14) - (3 13) - (5 11) - (3 6 3 3) - (2 4 2 4 1) - (1 3 2 7) - (6 4 2 5) - (3 3 2 2 1) - (4 3 2)) - ((7 3 3) - (7 5 1 2) - (8 1 3 2) - (7 2 2 2) - (4 3 2 1) - (1 3 3 1) - (3 2 3 2) - (3 2 2 3) - (9 5 2) - (3 9 2) - (3 1 12) - (3 10 2) - (14 4) - (4 11 1) - (4 1 10) - (4 12) - (8 4 5) - (6 2 2 2 1) - (1 3 2 2) - (10 2 2)) - ((x x x o o o o o o x x x x x x x o o o o) - (x x x x o o o o x x x x x x x x x o x x) - (x x x x o o o o x x x x x x x x x x o x) - (x x x x o o o o x o o o x x x x x x o x) - (x x x x x o o o x o x o x o o o x x o x) - (x x x x x o o o x o o o x o x o x x o x) - (x x x x x o x x x x x x x o o o x x o x) - (o o x x x x x x x x x x x x x x x x o x) - (o o o o o o x x x x x x x x x x x o o x) - (o x x x o o o o x x x x x x x x o o x x) - (x x o x o o o o o x x x x x x x x x x x) - (x x o o o x x x x x x x x x x x x x x o) - (x x x o x x x x x x x x x x x x x o o o) - (o x x x x x o o x x x x x x x x x x x o) - (o o x x x o x x x x x x o x x x o x x x) - (x x o o o x x x x o x x o x x x x o o x) - (x o o o x x x o o x x o x x x x x x x o) - (x x x x x x o x x x x o x x o x x x x x) - (o x x x o o x x x o o x x o o x x o o x) - (o o o o x x x x o o o x x x o o x x o o))) - -)) diff --git a/pkgs/games/paint-by-numbers/raw-problems/raw-kajitani.rkt b/pkgs/games/paint-by-numbers/raw-problems/raw-kajitani.rkt deleted file mode 100644 index 7858af6de9..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/raw-kajitani.rkt +++ /dev/null @@ -1,14480 +0,0 @@ -#lang racket/base -(provide raw-kajitani) -(define raw-kajitani -'(("Kajitani 15x15" - "k15x15" - (("19980519-KHA (1)" - ((2 2) - (4 4) - (6 6) - (15) - (1 2 1 2 1 1) - (2 2 1 1 1) - (2 3 2 1 1) - (1 3 3 1) - (13) - (11) - (9) - (7) - (5) - (3) - (1)) - ((5) - (2 2 1) - (3 2) - (4 2 3) - (12) - (4 7) - (2 7) - (2 7) - (2 7) - (4 7) - (12) - (4 3) - (6 2) - (2 1) - (5))) - ("19980805-BER (2)" - ((1 13) - (1 1 1) - (1 1 9 1) - (1 1 1) - (1 3 9) - (1 1 1 1) - (1 1 11) - (1 1) - (1 11 1) - (1 1 3) - (1 1 7 1) - (1 1 1 1 1) - (1 1 5 1 3) - (1 1) - (14)) - ((15) - (1) - (3 3 5 1) - (1 1 1 1) - (1 5 1 3 1) - (1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1) - (1 1 1 1 1 5) - (1 1 1 1 1 1) - (1 1 1 1 2 1 1) - (1 1 1 1 1 1) - (13))) - ("19980828-PAU (3)" - ((4 4) - (6 6) - (1 1 1 1) - (3 3) - (4 5 4) - (1 1 1 1) - (1 1 1) - (1) - (3) - (3) - (3 5 3) - (2 2) - (3 3) - (9) - (7)) - ((1) - (2 1 1) - (2 1 3) - (2 3 4) - (2 1 1 3) - (2 3 1 2) - (2 1 3 2) - (1 5 2) - (2 1 3 2) - (2 3 1 2) - (2 1 1 3) - (2 3 4) - (2 1 3) - (2 1 1) - (1))) - ("19990211bJAM (4)" - ((3 2) - (2 2 2) - (2 4) - (2 3) - (2 5 2) - (2 1 1 1 2) - (3 5 3) - (1 1 1 1 1) - (1 5 1) - (1 1) - (1 4 1) - (1 1 1 1) - (1 1 1 1) - (1 1 1 1) - (1 1 1 1)) - ((1) - (2) - (11) - (2) - (2 5) - (2 5 1) - (2 1 1 1 1) - (1 5 5) - (2 1 1 1) - (2 5) - (2) - (5) - (15) - (2) - (1))) - ("19990221bFRA (5)" - ((1) - (1 1) - (2 2) - (3 3) - (4 4) - (5 5) - (6 6) - (7 7) - (1) - (1) - (15) - (13) - (11) - (9) - (9)) - ((1 1) - (2 2) - (3 3) - (4 5) - (5 5) - (6 5) - (7 5) - (1 7) - (7 5) - (6 5) - (5 5) - (4 5) - (3 3) - (2 2) - (1 1))) - ("19990421aMIJ (6)" - ((3) - (3) - (2) - (4 4) - (1 1 2) - (1 1) - (13) - (1 1) - (12) - (1 1) - (14) - (1 1) - (1 3 1) - (4 3) - ()) - (() - (7) - (1 1 1 1 1) - (1 1 1 1 1) - (1 1 1 1 1) - (1 1 1 1 1) - (1 1 1 1 2) - (2 1 1 1 1 1) - (4 1 1 1 1) - (2 1 1 1 1 1) - (1 1 1 1 1 1) - (1 1 1 1 1) - (1 3 1 1) - (1 1 3) - (1 1))) - ("19990527cDRA (7)" - ((3 4) - (1 2) - (1 6 1) - (1 11) - (5 4) - (4 2 4) - (3 3 3) - (1 1 3 1 2) - (1 2 2 1) - (1 1 2 2) - (3 7 3) - (4 5 4) - (5 5) - (15) - (15)) - ((15) - (1 3 5) - (1 4 1 5) - (3 2 4) - (2 2 3) - (2 2 2) - (2 3 2 2) - (2 3 2 2) - (2 2 2 2) - (2 2 2) - (3 2 3) - (1 3 3 4) - (1 4 1 5) - (2 4 6) - (3 10))) - ("19990723aDAH (8)" - (() - () - (6 6) - (1 3 1) - (1 1) - (3 3) - (2 2 2 2) - (9) - (9) - (1 5 1) - (1 3 1) - (1 1 1) - (1 1) - (9) - ()) - ((4) - (1 1) - (1 2) - (1 8) - (1 2 1) - (1 4 1) - (1 5 1) - (1 5 1) - (1 5 1) - (1 4 1) - (1 2 1) - (1 8) - (1 2) - (1 1) - (4))) - ("19990723bDAH (9)" - ((4 6) - (2 4 2) - (1 2 2) - (1 1 2 1) - (1 1 4 1) - (1 1 1 2 1) - (1 6 1) - (1 1 2 2) - (1 1 2 2) - (1 1 1 2) - (2 2 1 2) - (1 1 1 1) - (4 4) - (1 1 1 1) - (1 1 1 1)) - ((10) - (2 5) - (1 1) - (1 1) - (2 5) - (10) - (2 1) - (2 1 7) - (1 5 1) - (1 2 2 1) - (1 4 5) - (1 2 2) - (2 2) - (2 2) - (6))) - ("19990728-DAH (10)" - ((5 5) - (3 5 3) - (2 4 3 2) - (1 4 2 1) - (1 1 5 1 1) - (3 5 2) - (4 4 1) - (5 6) - (1 1 1 1) - (1 1 1 1) - (1 7 2 1) - (1 8 1 1) - (2 8 2) - (3 5 3) - (5 5)) - ((5 5) - (3 5 3) - (2 4 2 2) - (1 1 3 3 1) - (1 2 2 3 1) - (4 1 4) - (5 1 4) - (1 4 5) - (1 4 4) - (2 5 3) - (1 1 3 1 1 1) - (1 2 1 1 1) - (2 3 1 2 2) - (3 5 3) - (5 5))) - ("19990917aMAT (11)" - ((2 3 2) - (1 5 1) - (2 1 2) - (3 3) - (1 1 1 1) - (1 1 5 2 1) - (1 3 4 1) - (3 4) - (2 2) - (2 2) - (2 2) - (2 2) - (11) - (1 2 2 1) - (3 3)) - (() - (2 1) - (1 1 1 1) - (2 6 1 1) - (1 2 9) - (6 3) - (2 1 1 1) - (3 1 1) - (2 1 1 1) - (6 3) - (1 2 9) - (2 6 1 1) - (3 1 1) - (1 1 1) - (2))) - ("19990917bMAT (12)" - ((3 2) - (4 2) - (7 2) - (1 11) - (1 7) - (1 1 4) - (7 3) - (2 1 2 3) - (1 1 1 1 3) - (7 3) - (7 3) - (3) - (3) - (5) - (15)) - ((1 1) - (1 1 1) - (11 1) - (3 2 2 1) - (3 1 3 1) - (3 2 2 1) - (2 1 3 1) - (2 2 1 1) - (8 1) - (2 1) - (2 2) - (3 2) - (12) - (15) - (15))) - ("19990917cMAT (13)" - ((1) - (1 1) - (11) - (1 5 1) - (1 7 1) - (1 1) - (1 1 5 1) - (1 1) - (1 1 5 1) - (1 1) - (1 1 5 1) - (1 1) - (1 1 5 1) - (1 1) - (11)) - (() - () - (13) - (1 1) - (1 1 1 1 1 1 1) - (3 1) - (4 1 1 1 1 1) - (1 3 1 1 1 1 1) - (4 1 1 1 1 1) - (3 1 1 1 1 1) - (1 1 1 1 1 1 1) - (1 1) - (13) - () - ())) - ("19990917dMAT (14)" - ((9 3) - (1 1 3) - (1 1 3) - (2 2 3) - (3 3 5) - (5 2 1 2) - (5 1 1 1) - (1 1 1 2 1) - (1 1 1 1 1) - (1 1 2 2) - (1 1 1 5) - (1 1 1 3) - (1 3 1 3) - (7 3) - (9 3)) - ((1 1) - (5 5) - (1 4 2 2) - (1 4 3) - (1 2 1 5) - (1 4 3) - (1 4 2 2) - (5 5) - (1 5 1) - (2 2) - (5 1 5) - (8 5) - (5 5) - (2 2) - (5))) - ("19990917eMAT (15)" - ((3) - (1 2) - (2) - (1) - (2) - (1) - (5) - (5 5) - (7 5) - (9 5) - (1 1 5) - (7 5) - (1 1 3) - (9 3) - (7 3)) - ((2 2) - (2 1 2) - (3 1 2) - (3 1 2) - (3 1 2) - (3 1 2) - (1 3 1 2) - (1 2 1 2) - (1 2 2) - (2) - (2 6) - (3 9) - (11) - (9) - (6))) - ("19990918aMAT (16)" - ((5) - (3) - (9) - (2 2) - (2 3 2) - (2 1 1 1 2) - (2 2 2 2) - (2 3 2) - (2 2 1 2 2) - (2 2 2 2) - (2 3 2) - (2 2 2 2) - (2 2 2 2) - (3 3) - (13)) - (() - (11) - (12) - (2 2) - (1 1 1 1) - (1 1 2 2 2 1) - (3 1 2 3 1) - (3 2 2 1 1) - (3 1 2 3 1) - (1 1 2 2 2 1) - (1 1 1 1) - (2 2) - (12) - (11) - ())) - ("19990918bMAT (17)" - ((1 1) - (5) - (1 1 1 1 1) - (2 5 1 1) - (1 2 3 2 1) - (2 3 3 1) - (2 1 1 2) - (4 4) - (1 1) - (4 4) - (3 3 2) - (2 2 2 2) - (2 2 1) - (3 1 1) - (1)) - ((2 1) - (2 2) - (2 2 1 1) - (2 1 2 1) - (2 1 1 2) - (3 5 2) - (2 3 3) - (4 1) - (2 3 3) - (3 5 2) - (2 1 1 3) - (3 1 2) - (2 2) - (4 3) - ())) - ("19990918cMAT (18)" - ((2 3) - (2 3) - (4) - (2) - (4) - (15) - (1 3 1 1) - (1 5 1 1 1) - (1 2 1 2 1 1) - (1 3 3 1 1 1) - (1 1 3 1 1 1) - (1 1 1 1 1 1) - (1 3 1 1) - (15) - (1 1)) - ((9) - (1 2) - (1 3 1) - (1 1 3 1 1) - (2 3 2 2) - (2 5 1 2) - (6 2 2) - (4 3 1 1) - (2 2 3 1) - (1 1 1) - (2 9) - (1 1 1) - (1 1 1 1 1 1) - (1 2) - (9))) - ("19990918dMAT (19)" - ((1) - (3) - (1) - (1) - (5) - (9) - (13) - (15) - (1 1 1 1 1) - (1 1 1 1 1 1 1) - (1 1 1 1 1) - (3 1 3) - (3 1 3) - (3 1 3) - (15)) - ((1 1) - (9) - (2 4) - (10) - (3 1) - (4 1 1) - (1 4 1) - (15) - (1 4 1) - (4 1 1) - (3 1) - (10) - (2 4) - (9) - (1 1))) - ("19990918eMAT (20)" - (() - (3) - (8) - (4 1 2) - (1 1 1 1) - (2 2 6) - (12) - (1 8) - (1 11) - (1 13) - (3 5 3) - (1 1 2 2) - (2 1 2 2) - (5 4) - (6)) - ((6) - (3 3) - (1 1 2 2) - (1 4 1) - (2 5 2) - (13) - (1 5 2) - (2 6 1) - (11 1) - (2 10) - (1 5 2) - (2 2 2 1) - (3 3 2) - (5) - (3))) - ("19990918fMAT (21)" - ((1 1) - (2 1 1 2) - (2 1 1 2) - (3 3 3) - (4 3 4) - (15) - (15) - (15) - (4 3 4) - (3 3 3) - (2 1 2) - (2 1 2) - (1 1 1) - (1 1 1) - (1)) - ((3) (7) (11) (14) (5) (3) (9) (12) (9) (3) (5) (14) (11) (7) (3))) - ("19990918gMAT (22)" - ((1 1) - (1 2) - (1 4) - (1 5) - (1 6) - (8 2) - (9) - (10) - (1 9) - (1 10) - (2 1 1 1) - (1 1 1 1 1) - (1 1 1 2 1) - (2 1 1 1) - (1)) - ((2) - (1 1) - (1 1) - (7) - (6) - (5 3) - (5) - (15) - (5) - (6 1) - (11) - (7 2) - (4 5) - (4) - (3))) - ("19990918hMAT (23)" - ((4) - (6) - (12 1) - (12 1) - (2 1 2 6) - (6) - (4) - () - (3) - (2 2) - (2 1 2) - (1 13) - (2 1 2 1 1) - (2 2 2 2) - (3)) - ((2 3) - (3 2 2) - (3 2 1 2) - (2 1 3 1) - (3 2 1 2) - (2 5) - (3 3) - (3 1) - (2 1) - (5 1) - (7 1 1) - (7 3) - (2 3 1) - (2 3 3) - (5 1 1))) - ("19990918iMAT (24)" - ((2 1) - (1 2 1) - (1 1 1) - (1 1) - (3) - (7) - (9) - (2 8) - (1 9) - (1 9) - (11) - (11) - (11) - (9) - (7)) - (() - (6) - (2 4) - (2 7) - (10) - (11) - (13) - (1 11) - (1 10) - (1 10) - (1 8) - (1 6) - (1) - (2 1) - (1))) - ("19990918jMAT (25)" - ((3 3) - (2 2 2 1) - (1 3) - (1) - (1 4) - (1 6) - (1 9) - (2 9) - (2 10) - (10 3) - (13) - (8 5) - (10) - (2 10) - (1)) - ((3 3) - (2 3 3) - (2 4) - (1 4) - (2 5) - (2 6) - (12) - (2 8) - (2 9) - (1 7 2) - (2 8 1) - (5 2 1) - (8 1) - (7 1) - (6))) - ("19990918kMAT (26)" - ((1 1 2) - (3 1 2) - (1 3 1 2 2) - (7 1 1) - (3 1 1) - (3 1 1) - (1 2 2) - (6 2 3) - (2 6 1) - (1 3) - (1 4) - (6) - (2 3) - (2 3) - (3)) - ((3) - (2 2 1) - (1 1 4) - (6 8) - (11) - (6 5) - (1 2 4) - (2 1 3) - (2 2) - (3 2) - (2 2) - (1 1) - (2 2) - (2 2) - (5))) - ("19990918lMAT (27)" - ((5) - (2 2) - (2 5 2) - (2 2 2 2) - (4 1 4) - (5 2 5) - (1 1 3 1 1) - (5 3 5) - (1 2 2 1) - (6 1 4) - (4 2 5) - (3 4 4) - (11) - (3 4) - (5)) - ((5) - (3 1 3) - (4 1 4) - (2 2 1 5) - (1 8 2) - (1 2 2 4) - (1 1 1 3 1) - (1 1 3 4 1) - (1 1 4 4) - (1 2 1 1 3) - (1 3 2 4) - (2 10) - (4 1 4) - (3 1 3) - (5))) - ("19990918mMAT (28)" - ((15) - (5 1) - (4 3 5) - (1 4 3 2) - (3 2 1) - (1 2 1 1 1) - (1 4 3 2) - (7 7) - (1 6 6) - (1 6 6) - (2 7) - (12) - (1 2 5) - (3 6 4) - (15)) - ((1 2 4 3) - (1 1 1 2) - (1 1 1 3 3) - (1 2 7 1) - (2 2 6 2) - (10 1 2) - (10 1 2) - (3 2 1 2) - (2 5 2 2) - (1 3 6 2) - (1 2 7 1) - (1 1 8) - (1 1 1 8) - (1 2 9) - (2 12))) - ("19990918nMAT (29)" - ((7) - (1) - (6) - (7) - (3 1) - (3 1) - (3 1) - (8) - (9) - (8) - (4 3) - (2 3 2 2) - (3 3 1 1 1) - (1 1 1 1 1) - (2 2)) - ((1 1) - (1 1) - (1 2) - (1 1 1) - (1 1 1) - (1 2) - (13) - (11) - (10) - (2 4 2) - (2 3 1 1) - (8 1 1) - (1 4 2) - (5) - (1 4))) - ("19990918oMAT (30)" - ((2) - (3) - (1 1) - (1 2 4) - (1 1 2 1) - (1 1 2 1) - (1 1 2 2 1) - (1 2 2 3) - (2 8) - (14) - (4 5 2) - (2 2 3 2 1) - (1 1 1 1 1 1) - (1 1 1 1 1) - (2 2)) - ((1 2) - (5 1 4) - (2 2 3) - (3 2 2) - (7 1 1) - (4 1 1) - (2 2) - (9) - (11) - (1 4) - (1 3 2) - (6 1 1) - (3 1 1) - (4 2) - (1 2))) - ("19990920aMAT (31)" - ((4) - (1 1) - (1 1) - (1 1) - (3 1 1) - (15) - (1 9 1) - (6 2 1) - (5 3 5) - (4 5 4) - (4 5 4) - (4 5 4) - (5 3 5) - (1 4 6) - (15)) - ((10) - (2 6 1) - (11) - (11) - (4 3) - (3 3 2) - (2 5 1) - (2 5 1) - (2 5 1) - (3 3 2) - (9 3) - (1 1 7) - (1 1 7) - (6 7) - (10))) - ("19990920bMAT (32)" - ((2 1 1) - (1 1 1 1) - (3 1 1) - (1 1 1 1) - (1 1) - (2 1 1 2) - (3 3) - (4 1 4) - (13) - (9) - (1 1) - (11) - (11) - (11) - (9)) - ((1) - (3) - (1 3 4) - (2 5 4) - (1 4 2 4) - (1 1 2 4) - (1 1 2 4) - (2 3 4) - (2 1 2 4) - (2 4) - (4 2 4) - (2 5 4) - (3 4) - (3) - (1))) - ("19990920cMAT (33)" - ((1) - (5) - (1 3) - (5) - (2 2) - (5) - (1 3) - (5) - (2 2) - (5) - (6 1) - (8 1) - (9 1) - (10) - (6 3)) - (() (2) (3) (3) (4) (5) (15) (1 3 7) (3 3 6) (14) (14) (1) (1 1) (1) ())) - ("19990920dMAT (34)" - ((2) - (3) - (4 1) - (3 1 2) - (1 3 1 1) - (1 1 1 1) - (1 1 1 1) - (1 1 2 1 1) - (2 1 1 1 2) - (1 4 1) - (3 3) - (6) - (2) - (2) - (6)) - (() - (2) - (3) - (4 1) - (1 1 2) - (3 1 1 1) - (4 3 1 1) - (1 1 2 1 4) - (1 1 1 4) - (2 1 1 2 1) - (1 4 1 1) - (3 3) - (6) - () - ())) - ("19990920eMAT (35)" - ((2) - (1 1) - (2 1) - (15) - (1 10) - (1 2 2 1) - (1 1 1 2 1 1) - (1 4 2 1 1) - (1 1 2 1 1) - (1 1 1 1 1) - (1 1 1 1) - (1 1 2) - (1 1) - (1 1) - (1 1)) - ((12) - (1) - (1 8) - (1 2) - (1 1 1) - (5) - (2) - (8) - (8 1) - (1 2 1 1) - (1 2 3 1) - (1 2 1) - (8) - (2) - (2))) - ("19990923-MAT (36)" - ((5 5) - (4 5 4) - (3 1 1 3) - (2 9 2) - (1 1 5 1 1) - (9) - (2 2) - (2 2) - (2 2) - (2 2) - (1 2 2 1) - (2 2 2 2) - (3 2 2 3) - (4 4) - (5 5)) - ((5 5) - (4 4) - (3 1 3) - (2 3 3 2) - (1 2 3 2 1 1) - (1 4 3) - (1 3 1) - (1 3 1) - (1 3 3) - (1 5 2 1) - (1 2 2 3 1) - (2 3 1 2) - (3 3) - (4 4) - (5 5))) - ("19990924aMAT (37)" - ((1) - (1 1 1 1) - (3 1 1 3) - (1 1 1 5 1 1) - (8 2 1 1) - (1 1 1 1 1 1 1) - (1 1 1 1 1 1 1) - (1 1 1 1 1 1 1) - (1 1 1 1 1 1 1) - (1 1 1 1 1 1 1) - (1 1 2 1 2 1) - (1 1 1 1 1 1) - (1 1 1 1 1 1) - (1 1 9 1) - (1 3 2 2 3)) - ((12) - (1) - (13) - (2 1 1) - (13) - (1 1 1) - (8 2) - (1 2 2) - (1 1 4) - (1 2 2) - (8 2) - (1 1) - (13) - (2 1) - (13))) - ("19990924bMAT (38)" - ((15) - (6 7) - (6 7) - (9 2 1) - (7 2 1 1) - (5 1 3 1 1) - (5 1 4 1) - (2 1 1 4 1) - (2 2 4 1) - (2 3 3 2) - (1 2 2 1 2) - (3 2 2 2 1) - (3 1 2 2 1) - (3 1 1 7) - (3 1 1 7)) - ((9 5) - (10 4) - (7 1 4) - (7) - (8 1 2) - (5 4) - (1 12) - (1 1) - (15) - (3 11) - (4 5 2) - (5 3 5) - (3 1 4) - (3 2 2) - (15))) - ("19990924cMAT (39)" - ((2) - (2 2) - (1 1 4) - (1 2 1 2) - (1 2 1 2) - () - (4 4) - (7 1 2 1) - (1 2 2 2 1) - (1 4 1 2 1) - (6 4) - (6 1 1) - (8 1 1) - (8 1 1) - (8 2 2)) - ((2 3) - (2 1 5) - (1 2 6) - (1 2 9) - (1 2 9) - (1 2 6) - (2 1 5) - (2 3) - (2) - (1 1) - (1 1 5) - (5 5) - (5 5) - (1 1 5) - (3 1))) - ("19990924dMAT (40)" - ((3 3) - (5 5) - (7 7) - (7 7) - (7 7) - (5 5) - (3 3) - (11) - (6 1 2 2) - (13) - (7 5) - (10 2) - (1 1 1) - (1 1 1) - (1 1 1)) - ((3) - (5 2) - (12) - (12) - (12 1) - (5 7) - (3 5) - (1 6) - (3 5) - (5 1 1 3) - (12 1) - (12) - (7 2) - (5 4) - (3 4))) - ("19990924eMAT (41)" - ((1 10) - (8) - (2 2 4) - (1 1 4 3) - (7 3) - (1 6 3) - (1 8 2) - (2 9 2) - (3 8 2) - (4 7 1) - (6 6 1) - (7 3 1) - (9 1 2) - (10 2) - (12 1)) - ((1 10) - (8) - (2 7) - (1 1 6) - (2 3 5) - (1 5 5) - (1 6 4) - (2 8 3) - (11 3) - (12 2) - (2 10 1) - (3 6 1) - (6 2 2) - (9 2) - (12 1))) - ("19990925-MAT (42)" - ((9 4) - (9 1 2) - (10 2 1) - (10 1 1) - (6 1) - (5 1 4) - (4 1 4) - (4 1 4) - (4 4) - (4 5) - (2 6) - (2 10) - (1 1 10) - (1 2 10) - (2 11)) - ((11 2) - (11 1 1) - (10 1 1) - (10 3) - (6 1) - (5 2 4) - (4 1 4) - (4 4) - (4 4) - (2 5) - (1 6) - (1 2 10) - (1 1 11) - (2 10) - (4 10))) - ("19990927aMAT (43)" - ((12) - (12) - (2 7) - (2 5) - (2 1) - (2 7) - (2 1 1 4) - (2 1 1 2) - (2 1 1 1 2) - (2 1 1 2) - (2 9 2) - (2 9 2) - (2 7) - (2 5) - (12)) - ((15) - (15) - (2 1) - (2 1 3 1) - (3 2 1 3 1) - (4 1 1 5) - (4 1 5) - (7 1 5) - (4 1 5) - (4 3 5) - (3 1 1 3 1) - (2 1 3 1) - (2) - (5) - (4))) - ("19990927bMAT (44)" - (() - (2) - (1 2) - (2 2) - (6 3) - (3 3 1) - (4 4 2) - (15) - (1 7 1) - (3 5 3) - (2 2 3 2 2) - (1 1 1 3 1 1 1) - (2 2 2 2) - (3 3) - ()) - ((2 2 3) - (5 2 2) - (4 1 1 1) - (4 2 2) - (1 3 3) - (1 1 3) - (1 5) - (2 6) - (2 7) - (7) - (5 3) - (1 1 2 2) - (3 1 1 1) - (2 2 2) - (2 3))) - ("19990927cMAT (45)" - (() - (10) - (2 1) - (1 1) - (1 1) - (1 1) - (2 2) - (2 3 2) - (13) - (1 3 1) - (13) - (1 1 1 1 1 1 1 1) - (2 1 1 1 1 1 2) - (1 1 1 1 1 1 1 1) - (15)) - ((4) - (5 1 1) - (5 2 2) - (1 1 1 1 1) - (1 1 2 2) - (2 1 1 1 1) - (1 5 2) - (1 4 1 1) - (1 5 2) - (1 1 1 1 1) - (1 1 2 2) - (1 1 1 1 1) - (1 5 2 2) - (1 1 5 1 1) - (2 4))) - ("19990927dMAT (46)" - ((3) - (2 2) - (1 1) - (1 1) - (1 2) - (3 3) - (2 2 2) - (1 2 6) - (1 10) - (2 2 2) - (4 2) - (2 2) - (2) - (2) - (1)) - ((4 1) - (2 3) - (1 1) - (1 1) - (1 2) - (4) - (3 2) - (2 3 6) - (1 10) - (2 2 2) - (4 2) - (2) - (2) - (2) - (1))) - ("19990930-TPV (47)" - (() - (13) - (1 11) - (13) - (13) - (13) - (13) - (13) - (13) - (2 4) - (2 3 4) - (2 3 4) - (2 3 4) - (1 3 4) - ()) - (() (12) (1 11) (8) (8 4) (8 4) (8 4) (8) (8) (8) (13) (13) (13) (13) ())) - ("19991001aMAT (48)" - ((2) - (4) - (4 2) - (2 5) - (7) - (2 4) - (4) - (6) - (1 5) - (5) - (5 1) - (6 2) - (2 4 1) - (3 4 2) - (2 2 3)) - ((2) - (2 1) - (1 2) - (4 1 1) - (2 2 1 2) - (6 1 2) - (13) - (9 1) - (11) - (8) - (6) - (4) - (1) - (2 2) - (3))) - ("19991001bMAT (49)" - ((2) - (1 2) - (1 1 2) - (1 4) - (1 3) - (13) - (3 11) - (2 8 1) - (3 7 2) - (13) - (3 2) - (3 2) - (3 2) - (3 2) - (2 1)) - ((3) - (5) - (6 3) - (1 3) - (2 5) - (5 3) - (5 3) - (5 2) - (2 5) - (1 7) - (11 1) - (7 6) - (3 1 1 1) - (2 2) - (3))) - ("19991001cMAT (50)" - ((3) - (3) - (3) - (3) - (9) - (5 3) - (3) - (1 1 1) - (1 1 1 1) - (1 1 1 1 1) - (1 1 1 1) - (1 1 1 1 1) - (1 1) - (1 1) - (2 2)) - (() - (1) - (1) - (2 1 1) - (1 1 1 1) - (2 1 1 4) - (3 3 1 1) - (3 4 1 1) - (3 3 1 1) - (2 1 1 4) - (1 1 1 1) - (2 1 1) - (1) - (1) - ())) - ("19991001dMAT (51)" - ((1 3) - (2 4) - (1 2) - (2 3) - (1 4) - (2 4) - (4 4) - (1 5) - (2 1 2) - (3 1 1 1) - (1 1 1 1 1 1) - (1 1 2) - (3 2 1) - (2 2 1) - (1 3)) - ((4) - (2 4 3) - (3 1 2 2) - (4) - (2 1) - () - (1) - () - (5) - (1 2) - (4 1 1 2) - (7 2 1) - (9 3) - (2 8) - (2))) - ("19991010bTPV (52)" - ((1) - (1) - (2 1) - (1 4) - (2 3 2 1) - (6 6) - (14) - (12) - (12) - (11) - (3 2) - (3 2) - (5) - (3) - (2 2)) - ((2 3) - (6) - (6) - (8) - (9) - (6 2) - (5 1 1) - (1 4 3) - (1 1 4 3) - (1 1 7 2) - (9 1) - (7) - (1 2) - (3) - (1))) - ("19991012-PIX (53)" - ((2) - (2 2) - (6 7) - (3 1 1 4) - (4 1 3) - (11 3) - (1 6 2) - (2 2 3) - (2 2 2) - (2 2 2) - (1 1 1) - (2 2 2) - (15) - (15) - (15)) - ((2 4 3) - (5 1 3) - (5 3) - (5 3) - (1 5 4) - (2 10) - (2 3) - (2 3) - (2 1 3) - (1 1 4) - (1 2 7) - (4 3 3) - (8 3) - (8 4) - (4 7))) - ("19991112-SHE (54)" - ((9) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1) - (9) - (11) - (7 1) - (11) - (1) - (9) - (2 2 2 2) - (13)) - (() - (1) - (3 2) - (11 3) - (1 4 1 1) - (1 4 3) - (1 4 3) - (1 4 1 1) - (1 4 3) - (1 2 1 3) - (1 2 3 1) - (9 1 3) - (3 2) - (1) - ())))) - ("Kajitani 15x20" - "k15x20" - (("19990127aLLO (1)" - ((6 2) - (1 1 6) - (1 1 2 2) - (2 2 1 1) - (1 2 1) - (6 1 4 1) - (1 1 1 1 1) - (1 1 1 1) - (3 1 1 1 1 1) - (1 1 1 1) - (5 1 1 1 1) - (1 1 1 1 1 1) - (3 1 1 1 1) - (1 1 1 1) - (1 1 1 1 1 1) - (6 1 1 1) - (1 1 1 1 1) - (1 2 2 1) - (5 4 1) - (1 1 2 1)) - ((4 2 1 1 3 2) - (1 1 1 1 1 1 1) - (1 1 1 3 1 1) - (1 1 1 1 1 3) - (1 1 1 1 3 1 1) - (4 1 3) - () - (16) - (2 2) - (1 10 2) - (2 2 2) - (2 2 2) - (1 13) - (2) - (18))) - ("19990127bLLO (2)" - ((3) - (5) - (7) - (1 7) - (2 4) - (7) - (5) - (5) - (5) - (8) - (6 2) - (2 3 1 1) - (2 2 2) - (8) - (5) - (5) - (5) - (7) - (7) - (5)) - ((1) - (3) - (2 2) - (2 3 1) - (1 2 3 1 2) - (3 15) - (4 6 8) - (4 5 1 7) - (11 8) - (19) - (4 2) - (2) - () - () - ())) - ("19990421bMIJ (3)" - (() - (1 1 1) - (2 2) - (1 1 1) - (2 1) - (1 1) - (1 1) - (1) - (1) - (1 1 1 1) - (3 1 3) - (3 4) - (1 3) - (1 2) - (1 1 1) - (2 1 1) - (2 1) - (1 1) - (15) - (15)) - ((2) - (1 2) - (3 1 2) - (10) - (3 1 2) - (5 1 2) - (1 1 1 2) - (1 1 13) - (1 1 3 2) - (5 3 2) - (2 2) - (2 2) - (2) - (2) - (2))))) - ("Kajitani 15x25" - "k15x25" - (("19990804aVAC (1)" - ((3) - (4) - (4 4) - (7 3) - (7 3) - (2 2 2) - (1 2) - (4 2) - (7) - (8) - (2 1 3) - (1 2) - (2 2) - (2 2) - (1 1 1 2) - (1 1 1 2) - (1 1 1 1 2) - (6 2 1) - (1 1 1 4) - (1 3 1 4) - (1 1 3 1) - (1 6 2) - (1 4 2) - (1 2 2) - (1 2)) - ((2 5) - (3 1 1) - (4 6 1 1) - (3 4 3 1 1) - (3 2 1 1 2 1) - (4 2 6 3) - (7 3) - (4 3 1) - (3 3 3 1) - (2 3 1 1) - (3 3 2) - (5 14 2) - (7 10 1) - (4 3) - (3))))) - ("Kajitani 20x15" - "k20x15" - (("19990524-KHO (1)" - ((1) - (2 2 1) - (1 1 2) - (3 1) - (5 2) - (3 3 1) - (8 1) - (19) - (1 14) - (1 13) - (13) - (2 1 1 3 3) - (4 1 1 2 2) - (4 1 1 1 1) - (2 1 1 2 2)) - ((2) - (3 1 4) - (1 4 4) - (1 4 2) - (3 2) - (6 1) - (12) - (1 7 1) - (1 8) - (4) - (4) - (4) - (5) - (6 1) - (8) - (4) - (6 1) - (3 8) - (3 5) - (4))))) - ("Kajitani 20x20" - "k20x20" - (("19980407-KVL (1)" - ((10 8) - (9 6) - (5 5 5) - (6 7 4) - (6 9 3) - (4 2 2 1 1 3) - (5 3 2 1 1 3) - (5 2 2 1 2 2) - (4 2 2 1 2 2) - (5 3 7 2) - (5 1 2 1 3) - (2 1 1 7 3) - (3 1 6 4) - (3 1 8 3) - (2 6 5 2) - (3 4 3 2) - () - (2 3 3 3 3 1) - (2 3 3 3 3 1) - ()) - ((16 2) - (16 2) - (11 2 1) - (12 1 2) - (5 2 2 2 2) - (2 2 5 2) - (2 5 2) - (2 6 2 2) - (2 4 2 2 2) - (1 3 4 2) - (8 3) - (8 4 2) - (1 3 1 5 2) - (1 14 2) - (2 2 1 5) - (3 6 1 2 2) - (4 3 1 2) - (7 4 2) - (16) - (16 2))) - ("19980501aGOS (2)" - ((7 7) - (5 5) - (3 3) - (2 2) - (2 2) - (1 2 2 1) - (1 4 4 1) - (2 1 2 1) - (2 2) - () - (2 2) - (4 4) - (1 1 4 1 1) - (1 2 1 1 2 1) - (1 3 3 1) - (2 4 2) - (2 2) - (3 3) - (5 5) - (7 7)) - ((7 7) - (5 5) - (3 3) - (2 1 2) - (2 3 2) - (1 2 1 1 1) - (1 4 4 1) - (2 1 1 1) - (2 4) - (1 1) - (1 1) - (2 4) - (4 1 1) - (1 2 1 4 1) - (1 2 1 1 1) - (2 3 2) - (2 1 2) - (3 3) - (5 5) - (7 7))) - ("19980608-JEN (3)" - ((3 2 2 1) - (1 2 2 2) - (1 1) - (1 1) - (1 2 1) - (1 2 1 3) - (1 1 3 1 1) - (1 1 2 1 1) - (1 2 2 3) - (1 1 1) - (1 1 3) - (2 1 3) - (5 1 3) - (1 5 1 3) - (3 4 4) - (4 1 4) - (5 6) - (7) - (5) - (4)) - ((15) - (1 2 1) - (2 2 1 2) - (1 1 1 1 1) - (1 1 1 2 1) - (1 1 1 2) - (1 1 1 1) - (1 3 1 1) - (1 1 2 2 1) - (1 1 1 1 2) - (1 3 1 3) - (6 12) - (1 1 4) - (3 5) - (5) - (8) - (8) - (5) - () - ())) - ("19980907-KEV (4)" - (() - (7 2 3) - (8 2 4) - (2 2 4 1 1) - (2 2 4 4) - (2 2 1 1 3) - (2 2 4 1 2) - (5 2 1 1 1 2) - (4 5 3 2) - () - () - (1 1 2 3 2) - (1 1 2 4 3) - (1 1 4 1 1 2) - (1 1 4 4 2) - (1 1 1 1 1 3 2) - (1 1 1 4 1 2 2) - (5 1 1 1 6) - (3 2 3 5) - ()) - ((2 7) - (2 2 2) - (4 2 4) - (2 4 2) - (2 2 7) - (2 1) - (8 6) - (8 4 1) - (2 1 4 1) - (2 1 6) - (6 1) - (4 1 8) - (4 1 2 2) - (6 2 3) - (1 3 3) - (8 2) - (2 2 2 2) - (2 3 4 2) - (3 3 2 4) - (2 2 2))) - ("19990126aLLO (5)" - ((1 1 1) - (2 1 2) - (1 2 1) - (1 1 1) - (2 2 2) - (1 1 1) - (1 1 1) - (2 2 2) - (1 1 1) - () - (11) - (2 2 3) - (2 4 1) - (4 5 1) - (17 1) - (15 3) - (13) - (11) - (2 7 2) - (17)) - ((1) - (4 2) - (6 1) - (2 2 5 1) - (4 2 1 5 1) - (4 1 6) - (1 6) - (3 1 6) - (3 2 1 6) - (4 1 6) - (1 6) - (2 4 1 6) - (4 2 1 5 1) - (2 5 1) - (6 1) - (4 1) - (3 1) - (2 2 2) - (1 1 1) - (5))) - ("19990211aJAM (6)" - (() - (4 4) - (2 3 3 2) - (1 2 2) - (2 1 1 2) - (2 2) - (2) - (4) - (4) - (4) - (6) - (6) - (2) - () - (9) - (11) - (3 3) - (2 5 3) - (2 3 3) - ()) - (() - (2) - (2 1) - (1 2) - (1 2 2) - (2 2 2) - (1 3) - (2 2 2) - (2 5 2 1) - (7 2 2) - (7 2 2) - (2 5 2 2) - (2 2 2 1) - (1 2) - (2 3) - (1 2 3) - (1 2 3) - (2 2) - (1 1) - ())) - ("19990214bFRA (7)" - ((20) - (1 3 3 2) - (3 4 1 1) - (3 4 1) - (3 4 1) - (3 5 2) - (3 6 3) - (3 7 4) - (3 8 5) - (1 7 6) - (20) - (20) - (1 4 3 5 3) - (1 3 3 3 3) - (1 2 4 1 4) - (1 1 1 5 5) - (1 2 6 6) - (1 3 6 6) - (1 4 6 6) - (20)) - ((20) - (1 7 2 1) - (1 7 3 5) - (1 4 4) - (1 7 5 3) - (1 7 6 2) - (12 1) - (20) - (2 15) - (1 14) - (1 5 6) - (1 5 5) - (2 5 4) - (3 5 1) - (2 5 4) - (1 5 5) - (1 5 6) - (1 14) - (2 15) - (20))) - ("19990306-RMA (8)" - ((1) - (8) - (6 1 2) - (5 2 2) - (5 2 2) - (5 3 3) - (5 4 3) - (2 1 1 5 1 3) - (2 1 2 5) - (1 1 1) - (1) - (1) - (1) - (1) - (1) - (1) - (1) - (1) - (1 1) - (3)) - ((1) - (3) - (3) - (5) - (5) - (5) - (4 1 2) - (3 1 1) - (2 2 1) - (2 3 6) - (1 10) - (8) - (1 3) - (2 1) - (2 1) - (3 1) - (6) - (4) - (3) - (2))) - ("19990412-RAB (9)" - (() - (9) - (1 1 1 1 3) - (9 2) - (1 3 1) - (2 1 1 1 3) - (2 1 1 1 2) - (1 1 3) - (9 3) - (1 1 1 4 9) - (12 1 1 1 1) - (1 12) - (3 1 1) - (2 1 1 1 1 2) - (2 1 1 2 1 2) - (2 1 1) - (14) - (2 1 1 1 1 1 1) - (12) - ()) - ((3 3) - (1 1 2 1 1) - (3 2 3) - (1 1 1 1) - (10) - (1 1 1 1 4) - (3 2 10) - (1 1 3 1 2) - (11 2 1 1) - (1 1 3 3) - (4 2 7 1) - (1 7 3) - (6 1 2 1 1) - (3 1 3) - (1 1 1 1) - (10) - (1 1 1 1) - (3 2 3) - (1 1 2 1 1) - (3 3))) - ("19990806-ELS (10)" - (() - (1 1) - (2 2) - (3 3) - (4 4) - (4 4) - (4 4) - (4 4) - (4 4) - (3 3) - (5) - (3) - (5) - (11) - (2 1 1 2) - (2 1 1 2) - (1 2 2 1) - (1 2 2 1) - (4 4) - ()) - (() - (4) - (4 4) - (4 2 1) - (4 2 1) - (4 1 2) - (4 1 2) - (4 5) - (6) - (4) - (6) - (4 5) - (4 1 2) - (4 1 2) - (4 2 1) - (4 2 1) - (4 4) - (4) - () - ())) - ("19990929-LSA (11)" - ((4 3) - (3 5 2) - (2 9 1) - (1 11) - (1 13) - (1 2 1) - (8 5) - (9 5) - (3 3 1 1) - (4 4 2 2) - (9 5) - (9 5) - (5 2 4) - (6 5) - (13) - (4 4) - (1 4 4 1) - (2 8 1) - (3 5 3) - (5 7)) - ((5) - (3) - (2) - (1 5) - (11 4) - (2 10 3) - (3 2 8 2) - (3 2 8 1) - (4 2 9 1) - (4 6 2 3) - (12 1 2) - (12 1 2) - (4 2 3) - (3 14) - (3 2 9 1) - (2 2 7 2) - (4 7 2) - (1 6 4) - (2 1) - (3 1))) - ("19991002aTPV (12)" - (() - () - (6) - (2 2 3) - (1 1 1 3 1) - (1 2 1) - (2 3 1) - (3 4 1) - (3 3 1) - (4 3 4 1) - (5 9) - (6 7) - (7 4) - (6 3) - (7 4) - (7 3) - (6 3) - (6) - () - ()) - (() - () - (6) - (10) - (1 10) - (1 8) - (2 7) - (1 7) - (1 1 6) - (3 2 4) - (2 2 3) - (1 1 1 2 1) - (10 2) - (9 3) - (1 11) - (1 7) - (2 5) - (6) - () - ())) - ("19991119bKHO (13)" - ((4 4) - (3 2 1 1 1 1 1 3) - (2 2 1 1 1 1 2) - (2 1 1 1 1 1 1 2 2) - (1 1 1 1 1 1 1 1 1 2) - (1 1 1 1 1 2 1 2) - (1 1 1 1 1 1 1 2 2) - (2 13 3) - (3 4) - (3 4) - (3 4) - (3 4) - (3 4) - (4 5) - (4 5) - (5 6) - (6 7) - (8 9) - (9 10) - (20)) - ((20) - (4 13) - (2 1 1 12) - (1 2 1 1 7) - (2 1 2 5) - (1 1 1 4) - (1 1 2 3) - (1 1 1 1 3) - (1 2 2) - (1 1 1 1 1) - (1 1 2 2) - (1 1 1 1 3) - (1 2 3) - (1 1 1 1 4) - (1 2 1 5) - (1 1 2 7) - (1 5 12) - (2 13) - (20) - (20))))) - ("Kajitani 20x25" - "k20x25" - (("19980620-KKA (1)" - (() - (1) - (3) - () - () - () - () - (1) - (2) - (1) - (2) - (2) - (2 1 1) - (2 3 2) - (1 2 4 1 1) - (1 2 1 1 2 1) - (1 1 2 2 1 1 2) - (1 4 1 4 4) - (20) - () - (11 1 3 1) - (1 1 1 1 1 1 1 1) - (1 3 1 2 1 3 1) - (1 1 1 1 1 1 1) - (1 3 1 1 1 1 3 1)) - ((1 1) - (5 5) - (1 1) - (5 5) - (1 2 2 1 1 1) - (2 2 1 1 1) - (6 1) - (1 1 1 1 5) - (2 2 1 1 1) - (1 4 2 3 5) - (4 2 1 1 1) - (1 2 1 2) - (3) - (3 2 5) - (2 4) - (1 3 1) - (5 1 1 1) - (3 1 3) - (2) - (2 3 1))) - ("19991113cBAR (2)" - ((3 1 2 1) - (2 3 2 3 2) - (17 1) - (19) - (19) - (12 7) - (8 2 1 5) - (4 1 5) - (3 4) - (6 7) - (2 3 3 4) - (3 2 2 4) - (4 5) - (4 6) - (5 3 6) - (4 5 6) - (5 1 6) - (4 5 5) - (4 3 3 3) - (2 3) - (5 6) - (8 7) - (17) - (13 1) - (1 2 3 3)) - ((1 5 4 3 1) - (21) - (23) - (7 1 7 5) - (5 1 3 4) - (7 2 1 4) - (8 2 1 4) - (7 2 1 2 3) - (4 2 1 4) - (7 4 3) - (6 2 1 3) - (4 2 1 2 3) - (5 2 1 4) - (7 2 1 5) - (5 1 4 5) - (8 7 3) - (24) - (22) - (18) - (1 4 2 6))) - ("19991113gBAR (3)" - (() - () - (4 4) - (8 6) - (14 3) - (3 7 2) - (3 5 2) - (6 2) - (6 2) - (6 3) - (6 4) - (8 4) - (14) - (14) - (10 3) - (14) - (16) - (18) - (3 14) - (3 14) - (4 13) - (4 11) - (3 9) - (12) - (10)) - ((2 4) - (3 6) - (3 9) - (4 5 4) - (4 8 4) - (4 10 2) - (2 16 2) - (3 18) - (21) - (21) - (21) - (21) - (3 3 10) - (3 13) - (3 12) - (2 12) - (2 4 6) - (3 4 4) - (9) - (7))) - ("19991115cBAR (4)" - ((8 9) - (8 8) - (4 2 5 1) - (4 2 3 1) - (4 2 2 1) - (1 2 1 1 2) - (1 3 1 3) - (1 1 3) - (1 1 3 2 1) - (2 5 1 1) - (4 2 4 1) - (2 2 4 2 2) - (1 1 5 3) - (4 2 5) - (2 4 4) - (1 2 5 2) - (4 3 1) - (2 1 1 1) - (1 2 2 1) - (1 2 1 2 1) - (2 1 1 4) - (5 1 4) - (4 2 4) - (4 4 5) - (5 7 5)) - ((13 10) - (5 3 2 5) - (5 1 1 4) - (6 1 1 4) - (2 2 1 1 2 1) - (2 1 1 1 1) - (3 2 1 1) - (4 1 5 1 1) - (2 3 3 2 2) - (2 2 3 2 2) - (9 3) - (1 3 1 3 7) - (3 7 2 1) - (7 5) - (5) - (4 2 1 2 2) - (3 1 2 6) - (2 2 3 5) - (2 3 5 5) - (18 6))))) - ("Kajitani 20x30" - "k20x30" - (("19991007aKHO (1)" - ((1 1 1 1 1) - (1 5 1) - (8 2) - (8) - (8) - (2 2) - (1 1) - (2 2) - (1 6 1) - (2 8 2) - (1 1) - (1 2 2 1) - (1 1 1 1 1 1) - (1 4 4 1) - (3 4 4 3) - (1 1 1 1 1 1 1 1) - (1 1 2 2 2 1 1) - (2 1 4 1 2) - (3 4 3) - (1 4 1) - (1 2 1) - (2 2) - (14) - (2 2) - (1 2 4 2 1) - (1 6 1) - (1 1) - (14) - (5 5) - (7 7)) - ((3) - (1 2 1) - (1 1 2) - (21) - (1 3 3 3) - (2 3 4 1 1 3) - (4 1 1 2 1 1 1 3) - (1 3 2 1 2 1 1 1 1 1) - (4 2 4 3 1 2 1) - (5 2 5 1 2 1) - (4 2 5 1 2 1) - (5 2 4 3 1 2 1) - (4 2 1 2 1 1 1 1 1) - (1 3 1 1 2 1 1 1 3) - (1 3 4 1 1 3) - (2 3 3 3) - (21) - (1 1 2) - (1 2 1) - (3))) - ("19991007bKHO (2)" - ((20) - (1 1) - (1 16 1) - (1 16 1) - (1 2 2 1) - (1 2 2 1) - (1 5 2 1) - (1 2 6 1) - (1 2 1 1 2 1) - (1 2 3 2 1) - (1 2 1 1 2 1) - (1 3 1 1 1 1 1 2 1) - (1 2 1 1 1 1 1 3 1) - (1 16 1) - (1 16 1) - (1 1) - (1 6 1) - (1 2 1) - (1 2 4 1) - (1 2 2 4 1) - (1 6 4 2 1) - (1 6 4 1) - (1 2 2 1) - (1 2 1) - (1 1 1 1) - (1 1 1 1 1) - (1 2 2 1 1 1) - (1 1 1 1 1) - (1 1 1 1) - (20)) - ((30) - (1 1) - (1 13 2 1) - (1 13 2 1) - (1 2 1 1 2 6 1) - (1 2 1 3 6 1) - (1 2 1 1 1 2 2 1 1) - (1 2 1 3 1 2 1 1) - (1 2 4 2 1 1) - (1 2 1 3 1 1 1) - (1 2 2 2 1 2 1 1) - (1 2 3 1 4 1) - (1 2 1 1 2 1 4 1) - (1 2 1 3 2 1 1 1) - (1 2 1 1 2 2 1 1 2) - (1 2 1 3 4 1 1 1) - (1 13 4 1 1 2) - (1 13 2 1 1 1) - (1 1) - (30))) - ("19991113bBAR (3)" - ((6) - (8) - (10) - (3 8) - (1 2 1) - (12) - (1 1 1 3) - (1 6 1) - (1 2) - (1 4 1) - (3 2 4) - (5 6) - (7 8) - (19) - (4 10 3) - (4 11 3) - (17 1) - (2 14 1) - (1 2 1 1 1 1) - (3 15) - (14) - (14) - (13) - (11) - (4 5) - (1 1 2 1) - (4 4) - (5 5) - (6 6) - (6 6)) - ((5) - (5 1) - (5 1) - (3 6 1) - (1 1 5 6) - (4 7 3 4 2) - (2 3 8 5 3) - (4 1 1 7 11) - (4 3 1 6 6 4) - (4 1 1 2 5 6 4) - (4 1 1 2 17) - (4 3 1 5 5) - (4 1 1 14) - (3 2 7 11) - (5 10 6 4) - (3 8 6 4) - (4 2 11) - (6 6 3) - (5 1 2) - (7))))) - ("Kajitani 25x15" - "k25x15" - (("19990709-DAH (1)" - ((25) - (1 1) - (1 3 1) - (1 3 1 3 1) - (1 3 1 1 1 1) - (1 1 1 1 1 1) - (1 1 1 1 1 1) - (1 1 1 3 1 1) - (1 1 3 4 3 1) - (1 3 4 4 4 1) - (1 4 4 2 4 1) - (1 4 2 2 1) - (1 2 1) - (1 1) - (25)) - ((15) - (1 1) - (1 2 1) - (1 4 1) - (1 4 1) - (1 8 1) - (1 1 1) - (1 1 2 1) - (1 1 4 1) - (1 1 4 1) - (1 8 1) - (1 1) - (1 1) - (1 2 1) - (1 4 1) - (1 4 1) - (1 8 1) - (1 1 1) - (1 1 2 1) - (1 1 4 1) - (1 1 4 1) - (1 8 1) - (1 1) - (1 1) - (15))))) - ("Kajitani 25x20" - "k25x20" - (("19980410-GOS (1)" - (() - (9) - (3 1 4 3) - (4 2 1 3 4) - (2 1 11 4) - (4 2 3 2 1 1) - (1 1 2 1 3 1 2 1 1) - (2 1 2 3 2 5) - (5 5 5 1 1) - (3 1 4 3 2 1 1 1) - (5 4 3 4 5) - (1 4 1 4 2) - (1 1 2 1 1 1 2 2 1) - (2 1 2 3 3 2 4) - (3 3 1 1 1 3 3) - (3 1 1 1 3) - (2 3 2) - (2 2) - (7) - ()) - ((7) - (6 2) - (2 3 1) - (3 1 5) - (1 7) - (3 4) - (2 11) - (1 7 3) - (1 2 3 1 3) - (4 1 3 1 2) - (1 1 1 3 1) - (1 4 2 1 1 1) - (7 4 3 1) - (2 4 2 1 1 1) - (4 1 3 1) - (4 1 3 1 2) - (1 2 3 1 3) - (1 5 1 3) - (2 11) - (3 4) - (9) - (2 1 5) - (1 1 1 3) - (3 2 2) - (7))) - ("19981116-JAM (2)" - ((10) - (17) - (4 9 3) - (4 2 7 2 3) - (3 4 5 3 4) - (3 4 5 3 4) - (4 4 5 3 4) - (4 2 5 2 5) - (5 6 6) - (6 4 2 7) - (12 11) - (11 10) - (10 9) - (5 6 5 5) - (5 13 4) - (4 15 3) - (1 1 13 1 1) - (5 11 5) - (5 5) - (8 7)) - ((10) - (15) - (14 2) - (14 3) - (3 7 4) - (2 3 4 1 3) - (1 4 7 2) - (1 5 8 1) - (3 4 9 1) - (4 10 1) - (12 5 1) - (11 5) - (9 4) - (9 4 1) - (11 5 1) - (4 3 5 1) - (3 3 8 1) - (2 5 8 1) - (1 5 8 2) - (2 5 1 3) - (14 3) - (14 2) - (13 2) - (14) - (7))) - ("19981119-MSS (3)" - ((3 1 3 1 1 1 1 1) - (1 1 1 1 1 2 1 1 1 1) - (1 1 1 3 1 2 1 1) - (1 1 1 1 1 1 1 1 2) - () - (3) - (2 3) - (2 2 3) - (1 2 2 3) - (1 2 2 3) - (4 3 1 2) - (1) - (8 1) - (16) - (25) - (24) - (21) - (16) - (11) - (4)) - ((1 1 4) - (4 1 4) - (1 1 4) - (3 5) - (4 5) - (4 5) - (1 4 5) - (4 1 6) - (1 4 5) - (4 5) - (3 1 5) - (1 1 5 5) - (3 5 6) - (5 6) - (4 1 6) - (1 9) - (1 5) - (4 5) - (6) - (4 6) - (6) - (2 6) - (1 1 5) - (1 1 3) - (1))) - ("19990126bLLO (4)" - ((2 2 1) - (3 7) - (6 2 2 5) - (6 4 4 2) - (4 4 1) - (3 2 2 1) - (2 3 2) - (1 2 3) - (1 3 2) - (3 2 3) - (5 1 3) - (7 2) - (7 2) - (7 2) - (5 2) - (25) - (3) - (20 3) - (3) - (18 2)) - ((1 1 1) - (1 1 1 1) - (2 1 1 1) - (3 1 1 1) - (3 3 1 1 1) - (2 6 1 1) - (2 7 1 1) - (1 7 1 1) - (1 7 1 1) - (6 1 1) - (3 3 1 1 1) - (2 1 1 1) - (2 1 1 1) - (3 1 1 1) - (3 1 1 1) - (3 3 1 1 1) - (1 1 4 1 1 1) - (3 5 1 1 1) - (7 1 1) - (1 2 1 1) - (8 1) - (4 6 5) - (2 13) - (1 2 10) - (4 1))))) - ("Kajitani 25x25" - "k25x25" - (("19980522-SDN (1)" - ((1 1) - (1 1 1) - (1 1 3) - (3 3) - (1 1 3) - (1 1 5) - (5) - (7) - (7) - (9) - (11) - (15) - (17) - (19) - (19) - (19) - (17) - (15) - (11) - (7 1) - (1 1 1) - (3 1 1) - (5 3) - (9 1 1) - (9 1 1)) - (() - (5) - (1 1) - (5 3) - (5) - (7) - (7) - (9) - (10 2) - (13 2) - (15 3) - (18 4) - (25) - (18 4) - (15 3) - (13 2) - (10 2) - (9) - (7) - (7) - (5) - (3) - (5) - (1 1) - (5))) - ("19980909-YEN (2)" - ((10 10) - (8 5 8) - (5 9 5) - (4 7 4 4) - (3 7 4 3) - (2 7 3 2) - (2 8 4 2) - (2 9 5 2) - (1 16 1) - (1 15 1) - (14) - (12) - (11) - (9) - (7) - (1 5 1) - (1 4 1) - (2 3 1 2) - (2 3 3 2) - (2 3 5 2) - (3 2 3 3) - (4 2 1 4) - (5 5) - (8 8) - (10 10)) - ((10 10) - (8 5 8) - (5 9 5) - (4 15 4) - (3 17 3) - (2 19 2) - (2 13 1 2) - (2 12 2) - (1 12 1) - (1 12 1) - (4 7 1) - (3 6 3) - (2 4 5) - (3 4 3) - (4 5 1) - (1 8 1) - (1 8 1) - (2 5 2) - (2 2) - (2 2) - (3 3) - (4 4) - (5 5) - (8 8) - (10 10))) - ("19990924-VAL (3)" - (() - () - (1) - (1) - (1) - (10) - (12) - (6 3 3) - (3 2 1 1 1 2) - (2 1 1 1 1 2 1) - (1 3 3 4) - (6 7) - (7 2 4) - (2 7 2 1) - (2 10 1) - (6 8) - (5 7) - (2 7 2) - (1 7 1) - (11) - (4 4) - (4 4) - (2 6) - (1 5) - (5)) - (() - () - () - () - () - (3 4) - (3 7) - (3 3 5) - (3 8 4) - (4 14) - (5 11 1) - (3 5 8) - (4 3 7 3) - (1 3 15) - (5 14) - (3 2 10) - (2 9 4) - (3 11) - (3 3 3) - (3 5) - () - () - () - () - ())) - ("19991020aSHE (4)" - ((20 2) - (3 14 2) - (2 11 2) - (1 9 3) - (2 9 3) - (3 9 4) - (12 4) - (8 5) - (7 6) - (6 7) - (5 8) - (5 9) - (7 9) - (7 6) - (7 4) - (3 2 3) - (2 4 3) - (3 3 3) - (1 6) - (2 6) - (1 6) - (2 1 6) - (2 1 8) - (1 11) - (13)) - ((25) - (3 14 1 2 1) - (2 11 1 2) - (1 9 3) - (2 10 2) - (3 6 3 3) - (9 4 4) - (8 2 3) - (7 2 5) - (7 9) - (7 9) - (7 7) - (6 7) - (5 5) - (4 4) - (3 3) - (2 6) - (2 6) - (1 6) - (1 7) - (7) - (9) - (10) - (13) - (13))))) - ("Kajitani 25x30" - "k25x30" - (("19980714-GAS (1)" - (() - (3) - (4) - (4) - (5) - (4) - (3) - (4 2 4) - (8 8) - (20) - (21) - (20) - (20) - (20) - (19) - (19) - (19) - (19) - (20) - (21) - (21) - (22) - (22) - (20) - (18) - (16) - (14) - (3 3) - () - ()) - (() - (8) - (13) - (15) - (17) - (18) - (20) - (21) - (21) - (21) - (19) - (19) - (4 18) - (5 18) - (5 19) - (5 19) - (4 21) - (2 21) - (21) - (20) - (6 8) - (4 6) - (2 4) - (2) - ())) - ("19980716cGAS (2)" - (() - (7) - (3 3) - (2 3 2) - (2 3 3 2) - (1 2 2 1) - (1 2 2 1) - (1 1 1 1) - (1 1 1 1) - (1 1 7 1 1) - (1 2 2 1) - (3 3) - (2 2) - (2 5 2) - (1 4 4 1) - (2 5 5 2) - (1 2 7 2 1) - (1 3 5 3 1) - (1 6 6 1) - (1 5 5 1) - (1 1 2 2 1 1) - (1 5 5 1) - (1 6 6 1) - (2 3 5 3 2) - (1 2 7 2 1) - (2 5 5 2) - (2 4 4 2) - (2 5 2) - (3 3) - (9)) - (() - () - (9) - (3 3) - (2 2) - (9 5 2) - (2 1 4 4 2) - (2 6 5 5 1) - (1 2 1 2 7 2 2) - (2 2 1 3 5 3 1) - (1 1 1 6 6 1) - (1 2 1 5 5 1) - (1 1 1 1 2 2 1 1) - (1 2 1 5 5 1) - (1 1 1 6 6 1) - (2 2 1 3 5 3 1) - (1 2 1 2 7 2 2) - (2 6 5 5 1) - (2 1 4 4 2) - (9 5 2) - (2 2) - (3 3) - (9) - () - ())) - ("19980802-JON (3)" - (() - (1) - (3) - (4) - (4) - (4) - (3) - (2) - (7 6) - (18) - (20) - (22) - (21) - (20) - (19) - (19) - (19) - (19) - (19) - (20) - (21) - (21) - (21) - (19) - (19) - (17) - (15) - (13) - (4 4) - ()) - (() - (10) - (13) - (16) - (18) - (19) - (20) - (21) - (21) - (21) - (21) - (19) - (19) - (3 19) - (25) - (4 21) - (4 21) - (4 21) - (2 20) - (19) - (5 7) - (3 5) - (1 2) - () - ())) - ("19990723-KHO (4)" - ((8 8) - (6 6) - (4 5 4) - (3 7 3) - (2 9 2) - (1 6 1 1) - (1 5 3 1) - (4 4) - (4 4) - (2 4) - (3) - (3) - (3 3) - (5 5) - (13) - (15) - (3 9 1) - (3 9 3) - (3 2 1 4) - (3 1 2 3 3) - (3 5 5 1) - (3 11 1) - (3 9 3) - (1 3 7 3 1) - (1 3 3 1) - (2 11 2) - (3 8 3) - (4 4) - (6 6) - (8 8)) - ((7 7) - (5 5) - (4 4) - (3 5 3) - (2 7 2) - (2 9 2) - (1 3 3 1) - (1 4 3 3 1 3 1) - (6 6 3 3) - (7 6 4 2) - (7 7 5 2) - (5 9 5 2) - (4 5 5 4 2) - (3 5 6 1 3 2) - (3 4 6 5 2) - (2 3 6 5 2) - (2 4 1 3 2) - (1 3 5 3 1) - (1 2 4 3 1) - (2 1 3 2 2) - (2 1 3 2) - (3 3) - (4 4) - (5 5) - (7 7))) - ("19990920-LLO (5)" - ((6) - (4 4) - (3 3) - (2 2) - (2 2 2) - (2 2 2) - (1 2 1) - (2 2 2) - (1 2 1) - (1 4 1) - (22) - (3 3) - (22) - (22) - (1 1) - (1 5 1) - (2 2) - (20) - (12) - (8 5) - (4 7) - (1 2 4 4) - (1 2 3 3) - (1 2 3 5) - (1 2 3 3) - (1 2 4 4) - (1 2 7) - (1 2 5) - (1 2) - (1 2)) - ((4 5) - (3 4 2) - (2 4 1) - (2 4 1) - (2 1 2 1) - (1 1 2 2) - (2 1 1 2 2) - (1 2 1 2 3) - (2 2 1 2 3) - (2 2 2 2 13) - (1 4 2 4) - (1 3 2 13) - (2 2 2 13) - (2 1 2 3) - (1 1 2 1 3) - (2 1 2 1 2) - (1 1 2 1 2 5) - (2 1 2 1 1 7) - (2 4 1 1 9) - (2 4 1 3 3) - (3 4 2 2 1 2) - (4 5 3 1 3) - (9) - (7) - (5))))) - ("Kajitani 25x35" - "k25x35" - (("19981015bGAS (1)" - (() - (21) - (1 1) - (1 15 1) - (1 1 1 1) - (1 1 1 1) - (1 15 1) - (1 1) - (1 1) - (1 3 3 3 3 1) - (1 1 1 1 1 1 1 1 1 1) - (1 3 3 3 3 1) - (1 1) - (1 3 3 3 3 1) - (1 1 1 1 1 1 1 1 1 1) - (1 3 3 3 3 1) - (1 1) - (1 3 3 3 3 1) - (1 1 1 1 1 1 1 1 1 1) - (1 3 3 3 3 1) - (1 1) - (1 3 3 3 3 1) - (1 1 1 1 1 1 1 1 1 1) - (1 3 3 3 3 1) - (1 1) - (1 3 3 3 3 1) - (1 1 1 1 1 1 1 1 1 1) - (1 3 3 3 1 1 1) - (1 1 1 1) - (1 7 3 1 1 1) - (1 1 1 1 1 1 1 1) - (1 7 3 3 1) - (1 1) - (21) - ()) - (() - () - (33) - (1 1) - (1 1) - (1 4 3 3 3 3 3 3 1) - (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1 1 3 3 3 3 3 1 1 1) - (1 1 1 1 1 1) - (1 1 1 3 3 3 3 3 1 1 1) - (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1 1 3 3 3 3 3 3 1) - (1 1 1 1) - (1 1 1 3 3 3 3 3 3 1) - (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1 1 3 3 3 3 3 3 1) - (1 1 1 1) - (1 1 1 3 3 3 3 7 1) - (1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 4 3 3 3 3 7 1) - (1 1) - (1 1) - (33) - () - ())) - ("19990527dDRA (2)" - ((25) - (25) - (20 2) - (8 7 2) - (7 1 1 1 5 1) - (6 1 1 1 4 1) - (5 1 1 1 1 1 2) - (5 1 1 1 1 1 2) - (5 1 1 1 1 1 2) - (5 1 1 1 1 1 2 1 1) - (5 1 1 1 1 1 2 2 2) - (5 1 1 1 1 1 4 2) - (5 1 1 1 1 1 5 3) - (5 1 1 1 1 1 5 3) - (5 1 1 1 1 1 5 3) - (5 1 1 1 5 3) - (4 4 1 1 5 3) - (3 8 5 3) - (2 12 5 3) - (1 12 5 3) - (1 8 1 5 3) - (1 3 4 2 5 3) - (1 3 2 3 5 3) - (1 3 5 3 5 3) - (1 3 5 3 5 3) - (1 3 5 3 5 3) - (1 9 3 4 2) - (1 9 3 3 1) - (1 9 13) - (1 9 13) - (11 13) - (11 13) - (11 13) - (25) - (25)) - ((35) - (19 5) - (18 1 14) - (17 2 14) - (16 3 14) - (6 5 9) - (5 9 5 13) - (4 5 13) - (3 11 6 12) - (3 5 12) - (3 12 5 12) - (3 5 2) - (3 13 3 13) - (4 2 14) - (5 11 1 15) - (6 7) - (35) - (35) - (6 24) - (4 18 7) - (2 1 14 7) - (2 7) - (2 1 14 7) - (4 18 7) - (6 24))) - ("19990607bDRA (3)" - (() - (4 1 1 4 1 1) - (1 1 1 1 1 2 1) - (4 1 1 1 4 1 1 1) - (1 2 2 1 1 1 2) - (4 1 1 1 1 1 1) - () - () - () - () - () - (3) - (2 2) - (7) - (3) - (3) - (3) - (3) - (3) - (3) - (3) - (2 3) - (2 2 4 3) - (2 10 3) - (12 1 3) - (3 7 2 3) - (3 4 8) - (4 8) - (15) - (13) - (10) - () - () - () - ()) - (() - () - (3 1) - (1 1 1 4) - (1 1 1 5) - (1 3 5) - (4 4) - (5 5 4) - (1 3 4) - (1 4 3) - (1 5 3) - (5 5 3) - (3 5 3) - (5 5 4 4) - (1 1 1 4 2 5) - (1 1 3 3 1 6) - (5 2 3 7) - (1 3 4) - (5 1 3 4) - (1 10) - (1 8) - (1 6) - (5) - () - ())) - ("19991010cTPV (4)" - ((25) - (3 1 1 9) - (2 8) - (2 8) - (2 9) - (3 3 10) - (3 2 7) - (3 2 6) - (3 3 6) - (3 2 7) - (4 3 8) - (5 2 5) - (4 3 2 4) - (4 2 3) - (3 1 3) - (3 4) - (3 5) - (2 7) - (2 1 2 7) - (2 2 4 8) - (2 2 4 8) - (2 6 7) - (2 3 5) - (2 3) - (2 2 2) - (2 1 3 2) - (3 1 4 2) - (3 3 1 4 2) - (4 4 1 3 3) - (5 5 2 4) - (6 5 9) - (7 5 9) - (8 3 10) - (10 11) - (25)) - ((35) - (35) - (2 12 9) - (1 4 7) - (1 1 6) - (1 5) - (2 2 4) - (1 2 3) - (1 1 2 2) - (1 2 1 2) - (1 2 4 3 1) - (1 5 5 1) - (2 1 5 1 6 1) - (1 2 3 7 1) - (1 1 1 5 2) - (1 1 1 1 1 3) - (2 2 2 2 8) - (6 2 2 2 6) - (7 2 1 5 3 5) - (11 2 5 4 5) - (12 2 7 5 5) - (13 8 4 6) - (24 7) - (35) - (35))))) - ("Kajitani 30x20" - "k30x20" - (("19981106-KVL (1)" - (() - (1 1) - (2 2) - (8) - (8) - (2 2 2) - (10 8) - (15 6) - (19 4) - (21 2 1) - (22 3) - (28) - (17 10) - (3 10 3 4 2) - (3 6 2 2 3 3) - (3 5 3 4) - (12 3 6) - (9 2 4) - () - ()) - (() - (3) - (6) - (8) - (5 3) - (7 2) - (8 2) - (8 2) - (9 2) - (9 2) - (9 2) - (9 2) - (8 3) - (8 3) - (8 3) - (7 3) - (7 2) - (7 1) - (5 5) - (11) - (6 1) - (4 5 1 2) - (7 6 2) - (3 3 5 2) - (7 3 3) - (7 3 2) - (3 3 3 3) - (7 7) - (4 5) - ())) - ("19990311-FRA (2)" - (() - (2) - (2) - (2) - (3) - (4) - (27) - (27) - (27) - (4) - (4 1) - (4 1) - (6 1 3) - (3 1 1) - (3 1 1 3 1 1 1) - (1 3 1 1 2 1 3 1) - (1 3 1 2 1 1 1) - (1 1 1 3) - (1 1 1) - (1 3)) - (() - (1) - (8 1) - (9 6) - (10 1) - (11) - (2 3 1) - (1 3) - (3) - (3) - (3 6) - (3 1 1) - (3 3) - (3) - (3 1 3) - (3 1 1 1) - (3 5) - (3) - (3 4) - (3 1) - (3 1) - (3 4) - (3) - (3 3 1) - (3 1 1 1) - (3 5) - (3) - (3 4 1) - (3) - ())) - ("19990601cDRA (3)" - (() - (3 1 3 1) - (1 1 1 1) - (2 1 2 3 1 2 1 1 2 3) - (1 1 1 2 1 1 1 1 1 2) - (1 1 1 3 1 1 2 2 1 1) - () - () - (26) - (2 2 7) - (2 6 2 1) - (9 1 1 1 2 1) - (1 1 1 1 1 2 1) - (1 2 2 1) - (1 2 2 1) - (1 1 1 1 1 1) - (2 2 11 2 7) - (2 2) - () - ()) - ((5) - (1 1 1 6) - (1 1 1 1) - (1 1 1) - (1 3 4 1 2) - (4 1 2) - (3 1 1 1) - (1 1 1 1) - (1 1 1) - (3 1 2 1) - (3 1 1 1) - (1 1 1 4 1) - (1 1 1) - (3 1) - (1 3 1) - (5 1 1 1) - (1 1 4 1) - (3 1 1 1) - (1 1 3 1) - (3 1 2) - (2 2 1 2) - (1 2 1) - (3 2 2 1) - (2 2 1) - (3 2 1) - (1 1 3 1) - (1 2 1) - (5 4) - (2 1) - (2 1))) - ("19991106-BDH (4)" - ((7) - (9) - (6 3) - (6 3) - (13) - (16) - (1 13) - (2 10) - (3 7) - (5 5 7) - (23) - (7 10 5) - (7 8 6) - (8 7) - (25) - (25) - (25) - (24) - (22) - (20)) - ((8) - (12) - (12) - (12) - (11) - (10) - (10) - (1 7) - (2 6) - (4 6) - (4 6) - (4 6) - (4 6) - (4 6) - (4 3 6) - (7 4 6) - (13 6) - (12 6) - (11 7) - (20) - (2 16) - (2 16) - (9 10) - (7 8) - (6 6) - (3) - (3) - (2) - (1) - (1))))) - ("Kajitani 30x25" - "k30x25" - (("19980715-GAS (1)" - ((30) - (30) - (30) - (13 15) - (12 14) - (12 14) - (12 14) - (12 14) - (12 14) - (13 15) - (13 12) - (7 6) - (4 3) - (1 1) - (1 2) - (3 1 3 4) - (3 3 4 3) - (2 4 4 3) - (2 3 3 2) - (1 2 2 1 2) - (1 1 1 1 3 1) - (3 4 1) - (4 5) - () - ()) - ((11 7) - (11 4) - (11 2) - (12) - (13) - (14) - (13 2) - (13 3) - (12 2) - (12 1 1) - (11 3) - (11 4) - (4 2 6) - (3) - (3) - (4 2) - (11 6) - (11 5) - (11 4) - (11 2 1) - (12 2) - (12 3) - (13 4) - (13 3) - (13) - (12) - (11 1) - (10 3) - (10 6) - (10 9))))) - ("Kajitani 30x30" - "k30x30" - (("19981106-GAS (1)" - (() - () - (5 6) - (1 2 2 1) - (2 12 2) - (1 2 2 1) - (3 3) - (1 3 3 1) - (1 1 1 1 1 1) - (2 1 3 3 1 2) - (1 1 3 1 3 1 1) - (1 4 1 4 1) - (1 2 1 2 1) - (1 1 1) - (1 1 1) - (1 3 1) - (2 7 2) - (1 3 1) - (2 1 1 2) - (2 2 11 2 2) - (2 2 1 1 1 2 2) - (1 2 1 2 1) - (2 1 1 1 1) - (1 7 1) - (1 1) - (1 1) - (1 1 6 1) - (1 1 1 1) - (1 1 1 2) - (25)) - (() - () - (8) - (3 1) - (3 8 2 1) - (1 6 4 1) - (1 1 1 4) - (1 1 1 1) - (2 1 2 1 1) - (3 1 1 1 1) - (1 1 4 3 1) - (1 1 4 1 1 1) - (1 5 1 5 1) - (1 1 1 1 1) - (1 3 1 1 1) - (1 8 5 1) - (1 3 1 1 1) - (1 1 1 1 3) - (1 5 1 5 1 1) - (1 1 4 1 1 1 1) - (2 1 4 3 1 1) - (2 1 1 1 1 1 1) - (1 1 2 1 1 1) - (1 1 1 1 1) - (1 1 1 1) - (1 6 4 1) - (3 8 2 2) - (9) - () - ())) - ("19981230-SQU (2)" - (() - () - (4 4) - (6 6) - (8 8) - (9 9) - (9 9) - (8 8) - (7 6 7) - (5 8 5) - (10) - (13) - (14) - (14) - (18) - (2 14 2) - (2 14 2) - (2 16 2) - (2 2 12 2 2) - (1 2 10 2 1) - (4 3 2 3 4) - (2 2 6 2 2) - (4 2 2 2 4) - (1 2 1 2 1 2 1) - (2 1 2 2 2 1 2) - (2 2 2 2 2) - (2 2 2 2) - (2 2 2 2) - (2 2 2 2) - (30)) - ((1) - (3 1) - (5 3 3 1) - (7 2 3 2 1) - (7 2 3 2 1) - (8 2 2 2 2 1) - (8 2 2 2 3) - (7 1 2 2) - (6 7 3 1) - (5 8 2 2 1) - (12 2 1) - (12 2 1) - (14 3) - (12 1 2) - (18 1) - (18 1) - (12 1 2) - (14 3) - (12 2 1) - (12 2 1) - (5 8 2 2 1) - (6 6 3 1) - (7 1 2 2) - (8 2 2 2 3) - (8 2 2 2 2 1) - (7 2 3 2 1) - (7 2 3 2 1) - (5 3 3 1) - (3 1) - (1))) - ("19990104-FRA (3)" - ((7) - (7) - (7) - (7) - (7) - (7) - (8) - (9) - (18) - (19) - (30) - (11 1 3 8) - (12 4 1 9) - (11 5 10) - (10 5 10) - (10 4 1 9) - (9 3 3 8) - (25) - (3 20) - (1 17) - (15) - (12) - (10) - (7) - (7) - (5) - (4) - (5) - (3) - ()) - ((2) - (3) - (4) - (6) - (7) - (8) - (9) - (10) - (9) - (8) - (19) - (11 8) - (11 9) - (11 5) - (11 11) - (11 11) - (25) - (5 4 9) - (5 2 12) - (5 13) - (4 2 13) - (3 4 12) - (17 2) - (15) - (14) - (13) - (13) - (12) - (10) - (9))) - ("19990708-VEG (4)" - ((1 1 3 1 1 3 1 1) - (1 1 1 1 2 2 1 5) - (3 1 1 1 1 1 2 5) - (1 1 1 1 1 1 1 3) - (1 1 3 1 1 3 1) - () - () - () - () - (1) - (3) - (5 1) - (7 1) - (10) - (11) - (13) - (15) - (2 2) - (2 2 2 2) - (2 2 2 2) - (2 2) - (2 2) - (12 3 9) - (1 1 1 3 3 3 1 1) - (2 2 2 2 3 2 2 2) - (1 1 1 3 3 3 1 1) - (30) - (13) - (1 1) - (1 1)) - ((5 2 2) - (1 1 1 1) - (5 1 1 1) - (2 2) - (5 1 1 1) - (1 1 1 1 1) - (5 2 2) - (1 1 1) - (5 1 1 1) - (1 1 2 2) - (1 13) - (1 14) - (5 4 2) - (5 2 2) - (5 6 2 2) - (1 1 1 7 6) - (1 1 8 6) - (7 2 6) - (6 2 3) - (5 2 1) - (2 4 3) - (4 17 1) - (4 13) - (4 1 2 2) - (2 1 1 1) - (1 1 1) - (2 2) - (1 1 1) - (1 1 1) - (2 2))) - ("19990729-WHO (5)" - ((3) - (1 2) - (1 5) - (1 1 1 4) - (1 1 1 3) - (1 1 1 2) - (1 5) - (1 3) - (1 2) - (1 1) - (1 1) - (1 1) - (3 2) - (12 5) - (13 6) - (14 8) - (15 9) - (16 9) - (16 10) - (16 10) - (16 9) - (16 9) - (8 7 9) - (8 16) - (27) - (26) - (25) - (22) - (15) - (5)) - (() - (3) - (6) - (12) - (13) - (14) - (15) - (16) - (16) - (17) - (9 6) - (9 6) - (17) - (17) - (16) - (16) - (17) - (17) - (28) - (1 5) - (28) - (2 3 16) - (6 15) - (1 1 15) - (5 14) - (3 13) - (2 11) - (1 10) - (7) - (2))) - ("19990820-DAH (6)" - (() - (7 1 8) - (1 4 2 1 2 1) - (1 2 3 1 1 1 1) - (1 2 4 1 1 1 1) - (1 3 5 1 2 1) - (1 2 1 2 1 1 1 1) - (3 2 1 2 2) - (3 2 8) - () - () - (8 4) - (8 3 4 2 2) - (2 2 2 3 2) - (1 1 1 1 3) - (1 2 1 1 1 2) - (1 1 1 1) - (8 1 1 2) - (6 2) - () - () - (6 3) - (1 1 2 1 1 1) - (1 1 1 4 2 1 1) - (1 1 1 1 2 2 1) - (1 1 1 5 3 2) - (6 1 1 1 2 2) - (4 2 1 2) - (1 2 1 6) - ()) - (() - (7 6) - (1 1 2 1 6 1) - (1 1 1 1 2 1 2) - (2 1 1 1 1 1 3) - (2 1 1 1 1 1 1 3) - (8 1 1 2 1 2) - (7 2 1 6 1) - (6) - () - () - (3 6) - (3 2 1 2) - (6 2 1 1 1 1 1) - (4 1 1 1 1 1) - (4 2 1 1 1 1) - (5 3 1 1 1 1 1) - (1 1 3 2 3 1) - (3 2) - () - () - (8 6) - (1 2 1 5) - (1 2 1 1 2 1) - (2 1 1 1 2 2 2) - (2 1 1 1 2 2 1 1 1) - (1 2 1 1 4 1 3) - (1 2 2 1 1) - (8 3) - ())) - ("19990821-ICO (7)" - (() - () - (1 1 1 1 1) - (2 1 1 1 1) - (2 2 1 1 1 1) - (1 2 1 4 3 1 1 1 1) - (1 2 1 6 3 1 1 1 1) - (1 2 1 6 3 1 1 1 1) - (1 2 1 6 3 1 1 1 1) - (1 2 1 6 3 1 1 1 1) - (1 2 1 6 3 1 1 1 1) - (1 2 1 6 3 7) - (6 4 3 5) - (6 2 2 3) - (2 2 2 1) - (2 2 2 1) - (2 2 2 1) - (2 2 2 1) - (2 2 2 1) - (2 2 2 1) - (2 2 2 1) - (2 2 2 1) - (2 2 2 1) - (2 2 2 1) - (1 1 3 3 1 1 3 1 1 3) - (1 1 1 1 2 1 1 1 1 1) - (1 1 1 3 1 2 3 1 1 3) - (1 1 1 1 1 1 1 1 1 1) - (3 1 3 1 1 3 1 2 3) - ()) - ((9) - (2 5) - (19 1) - (24) - (2) - (9 1) - (5) - (1) - (6) - (8 5) - (21 1 1) - (21 1 1) - (8) - (6 5) - (1) - (1) - (5) - (22) - (24 1) - (8 1 1 1) - (1 3) - () - (10 5) - (2) - (12 5) - (13 1) - (12) - (2 3 1) - (10 1 1 1) - (1 3))) - ("19990908-ALE (8)" - ((12 16) - (11 15) - (10 14) - (4 4 14) - (3 4 3 10) - (2 4 3 9) - (2 3 4 8) - (3 4 4 8) - (4 5 5 9) - (6 5 5 10) - (7 4 6 10) - (8 3 5 11) - (8 3 4 12) - (8 4 3 12) - (8 4 2 5 6) - (8 4 2 4 5) - (8 4 2 3 5) - (9 3 2 3 4) - (9 4 1 2 1 1 3) - (10 4 1 3 3 2) - (10 4 3 4) - (11 2 3) - (16 1 1 2) - (21 2 2) - (21 5) - (20 4) - (19 3) - (21 1 6) - (21 1 6) - (20 1 5)) - ((30) - (30) - (5 23) - (4 22) - (3 21) - (3 21) - (4 1 20) - (5 3 19) - (11 13) - (17 11) - (2 15 9) - (1 1 12 8) - (3 8 8) - (7 3 8) - (1 13 2 8) - (2 15 8) - (6 6 7) - (5 3 8 7) - (4 1 7 2 7) - (4 7 2 3 3) - (5 7 2 3 2) - (6 7 1) - (14 3) - (14) - (15 1 2) - (17 2 3 3) - (18 2 3 3) - (19 2 6) - (30) - (30))) - ("19990913-TUC (9)" - ((12 14) - (13 15) - (13 15) - (13 15) - (1 6 6 3) - (1 3 5 5 3 3) - (1 1 4 4 3 3) - (1 1 1 3 3 1 3) - (1 3 3 3 1 1 3) - (1 3 3 3 3 3) - (1 3 3 6 3 3 3) - (2 1 4 6 4 1 4) - (3 5 6 5 5) - (3 5 6 5 5) - (3 5 5 5) - (3 5 5 5) - (3 5 5 5) - (2 4 4 4) - (1 1 1 3 3 1 1 3) - (1 3 3 3 3 3) - (2 4 4 4) - (30) - () - (30) - (1 1 2 1 1 1 2) - (1 2 1 2 1 4 4 2 1 3) - (1 4 1 2 2 2) - (1 2 1 2 1 4 4 2 4) - (1 1 2 1 1 1 2 1) - (30)) - ((22 7) - (4 7 2 1 1) - (4 1 4 5 2 1 1 3 1) - (4 2 4 1 1 1 3 1) - (4 1 4 5 2 1 1 1 1) - (4 7 2 7) - (22 1 1) - (22 3 3) - (22 3 3) - (7 1 1 1) - (6 1 7) - (5 4 1 1 1) - (3 4 1 1 1 1 1) - (4 1 1 1 1 1) - (4 1 1 3 1) - (3 4 1 7) - (5 4 1 1 1) - (6 1 1 1 1 1) - (7 1 1 1 1 1) - (22 1 3 1) - (22 7) - (22 1 1) - (4 7 2 1 1 3) - (4 2 3 5 2 1 1 1 3) - (4 3 3 1 1 2 1 1) - (4 2 3 5 2 1 7) - (4 7 2 1 1 1) - (22 1 1 1 1) - (22 1 1 1 1) - (22 1 1 1))) - ("19990916bCAR (10)" - ((30) - (30) - (30) - (7 7 6) - (6 5 5) - (5 3 3 3 4) - (5 5 1 5 4) - (5 6 6 4) - (5 15 4) - (5 5 5 4) - (6 4 4 5) - (6 3 3 5) - (7 4 4 6) - (8 3 3 7) - (9 5 8) - (9 3 8) - (10 1 9) - (11 10) - (12 11) - (13 12) - (14 13) - (15 8 3) - (23 3 2) - (7 12 3 1) - (7 2) - (7 2) - (7 1 1 12 3 1) - (7 1 13 3 2) - (24 3) - (30)) - ((30) - (30) - (30) - (30) - (30) - (5 20) - (4 18) - (3 10 2) - (3 3 9 4) - (3 5 7 2) - (3 6 6 4) - (3 8 5 3) - (4 8 5 4) - (5 8 4 4) - (6 1 4 3 4) - (7 1 3 2 4) - (6 1 4 3 4) - (5 8 4 4) - (4 8 5 4) - (3 8 6 4) - (3 6 7 4) - (3 5 8 4) - (3 3 10 4) - (3 9 1 1 2) - (4 9 1 1 1) - (5 11 2 2 1) - (21 2 2 1) - (22 4 2) - (23 2 3) - (24 4))) - ("19990920-BBA (11)" - ((6) - (3 2 1 2) - (1 1 1 4 4) - (3 1 1 1 2 3) - (8 2 2 1 4) - (11 8 2) - (1 1 1 6 9 1) - (1 24) - (1 2 12 4 3) - (4 1 1 1 1 1 3 7 1) - (1 5 3 5 4 1 2) - (3 5 2 4 7 1) - (3 1 5 1 1 4 2 1) - (1 4 3 4 5 7) - (1 1 3 4 1 3 2 3 1) - (4 1 6 4 9) - (7 1 2 2 4 3) - (3 4 2 2 2 1 3 2) - (3 1 1 1 2 2 1 8) - (2 3 3 4 1 3 1 1) - (3 2 2 1 2 2 1 4) - (2 1 3 3 2 4 2) - (1 1 3 3 2 1 1 1) - (1 1 1 1 1 3 1) - (1 3 1 1) - (2 6) - (5 6) - (3 5 2 1 1) - (1 3 1 1 2 4) - (2 3 3 4 1)) - ((4) - (4 2 1) - (2 6 6) - (1 3 1 4 2) - (2 3 3 5 1) - (1 2 2 5 1 1) - (4 4 1 1 3 1 1) - (1 2 1 4 3 4 2) - (1 7 5 3 2 1) - (5 2 8 3 1 1) - (1 8 1 2 4 1 1) - (1 1 5 2 4 1 2) - (2 6 1 1 6 4) - (3 6 1 3 8) - (1 2 4 2 3 4 2) - (3 1 6 14) - (1 1 2 2 4 4 2 1 1) - (1 1 7 3 7 2) - (2 7 3 7 3 1) - (8 2 2 5) - (2 3 1 1 2 2 2) - (1 9 6 1 2 1) - (1 8 2 5 1 1) - (11 1 3 1 1 3) - (2 10 2 4 1) - (4 1 1 6 1 1 1) - (2 1 8 5 1) - (4 2 4 2 2 1) - (2 2 3 3) - (3 2))) - ("19991002bTPV (12)" - ((30) - () - (2 1) - (3 2) - (3 3) - (1 2 4) - (1 1 5) - (30) - (1 2 4 1) - (1 1 4 1) - (1 3 1) - (1 2 1) - (1 1 1) - (1 1 1) - (30) - (1 1 1) - (5 1 5) - (6 1 1 6) - (6 1 6) - (4 1 1 4) - (1 1 1) - (30) - (4 1) - (4 5) - (2 1 6) - (1 2 6) - (4 4) - (4) - (30) - (1 1)) - ((1 1 1 1 1) - (1 1 1 2 1 1) - (1 1 1 4 1 1) - (1 1 1 4 1 1) - (1 1 1 4 1 1) - (1 1 1 4 1 1) - (1 17 1 1) - (1 3 1 1 1 1) - (1 3 1 1 1 1 1) - (1 4 1 1 1) - (1 3 1 1 2 2) - (1 1 1 10) - (1 1 1 3 3) - (1 1 1 11) - (1 1 1 2 2 1) - (1 1 1 1 1) - (1 1 1 1 2 1) - (1 1 1 1 4 1) - (1 1 1 1 4 1) - (1 1 1 1 4 1) - (1 1 1 1 4 1) - (1 1 17 1) - (1 5 1 1 1) - (1 4 1 2 1 1) - (1 4 1 4 1 1) - (1 4 1 4 1 1) - (1 4 1 4 1 1) - (1 5 1 4 1 1) - (1 17 1 1) - (1 1 1 1 1))) - ("19991012-LSA (13)" - ((16 13) - (4 4 5 4 3 1) - (2 1 2 5 2 2 1) - (4 2 2 3 1 3 3) - (5 1 3 3 2 4 3) - (1 2 1 1 2 2 2 3) - (2 2 1 2 2 1 2 3) - (3 1 2 2 2 1 2 4) - (1 2 2 2 1 2 1 2 5) - (2 1 1 2 1 2 2 1 1 1) - (3 2 2 2 2 1 1 1) - (4 1 1 1 1 1 1 3) - (5 2 3 1 2 1 2 4) - (1 2 2 2 1 1 1 5) - (3 1 1 1 1 2 2 2 1) - (7 3 1 1 2 1 4) - (7 2 1 2 1 1 1) - (3 2 1 1 1 2 3 1 1) - (1 1 1) - (1 1 22 1 1) - (3 1 1 3) - (2 2 1 1 1 3 1 1 3 1 3) - (2 2 1 1 1 1 1 1 1 1 1 1 2) - (2 2 1 3 1 1 3 1 1 5) - (2 2 5) - (6 6) - (7 7) - (8 8) - (9 9) - (10 10)) - ((30) - (5 2 4 4 10) - (2 2 2 3 4 2 5) - (2 3 1 2 2 9) - (1 3 1 1 2 11) - (3 3 1 1 2 1 5) - (2 1 1 2 1 3 1 1 1 4) - (2 3 1 1 1 1 1 1 3) - (2 2 2 1 1 1 1 2) - (1 2 3 4 1 2 1) - (1 3 3 2 1 1 1) - (1 3 3 1 1 1) - (2 1 2 2 1 1 1) - (3 3 4 1 2) - (4 1 1 1) - (5 12 1 1) - (10 1 1 1) - (1 1 2 1 4 1 2) - (1 8 1 1 1) - (3 7 1 1) - (6 1 1 1 1 1 1) - (2 1 7 1 2 2) - (2 1 4 1 1 1 3) - (1 5 1 1 1 1 1 4) - (1 5 3 1 1 1 5) - (5 2 1 1 11) - (2 2 2 2 7) - (2 6 4 1 5 7) - (1 6 3 1 10) - (10 19))) - ("19991028-BDH (14)" - ((7 7) - (9 9) - (11 11) - (12 12) - (12 12) - (12 12) - (12 12) - (12 12) - (30) - (28) - (8 4 8) - (5 1 2 1 5) - (2 3 3 2) - (3 3 3 3) - (2 3 3 2) - (2 3 3 2) - (3 3 3 3) - (3 1 1 3) - (2 2) - (2 2) - (2 4 2) - (2 6 2) - (2 4 2) - (1 1) - (1 1 1 1) - (2 14 2) - (2 10 2) - (3 4 3) - (3 3) - (10)) - ((7) - (9) - (11) - (12 7) - (12 13) - (18 2) - (14 2) - (12 1) - (11 2 2) - (10 5 1 1) - (8 7 2 2) - (7 5 2 1) - (2 1 2 1) - (3 3 3 1) - (4 3 3 1) - (4 3 3 1) - (3 3 3 1) - (2 1 2 1) - (7 5 2 1) - (8 7 2 2) - (10 5 1 1) - (11 2 2) - (12 1) - (14 2) - (18 2) - (12 13) - (12 7) - (11) - (9) - (7))) - ("19991101-SHE (15)" - ((4) - (2 2) - (1 2) - (2 1 3) - (2 3) - (2 1 3) - (3 3) - (3 4) - (5 4) - (1 7) - (2 7) - (2 8) - (2 4) - (1 2 2 2) - (1 2 3 4) - (3 3 4 7) - (3 4 4 2) - (8 7 1) - (6 11 1) - (5 8 3) - (5 8) - (17) - (17) - (16) - (15) - (14) - (13) - (11) - (9) - (5)) - (() - (3) - (3) - (5) - (5) - (7) - (9) - (11) - (1 4 8) - (5 8) - (3 8) - (9) - (9) - (9) - (3 11) - (4 8 13) - (8 16) - (2 3 15) - (1 1 3 13) - (1 1 3 11) - (2 1 4 8) - (14 6) - (14 1) - (9 2 1) - (5 2 1) - (2 1 1) - (1 1 1) - (1 2 1) - (5) - ())) - ("19991105bBDH (16)" - ((1) - (1 1) - (1 1) - (1 1 1) - (1 1 2) - (2 3) - (1 1 1) - (2 1) - (4 1) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1) - (1 1 4) - (1 1 1 1) - (1 1 1 1) - (4 1 1 1 1) - (6 1 1 5) - (7 1 1 4) - (4 1 1 6) - (17) - (16) - (14)) - ((2) - (2) - (3) - (3) - (2) - (3) - (3) - (4) - (5) - (3) - (22) - (1 3) - (3 1 3) - (1 1 1 3) - (1 4 3) - (3 1 3) - (1 3) - (1 3) - (2 3) - (27) - (3) - (4) - (3) - (2) - (2) - (6) - (1 3) - (1 1) - (1 1) - (5))) - ("19991113aBAR (17)" - ((11) - (15) - (18) - (20) - (22) - (24) - (25) - (27) - (24 2) - (5 4 1) - (2 2 1) - (1 5 5 1 1) - (6 2 2 5 2) - (4 6 7) - (2 18 2) - (2 3 3 2) - (8 3 3 6) - (6 7 8) - (4 3 2 2 4 4) - (3 5 6 2) - (2 3 4 3 2) - (2 13 1) - (2 4 4 1) - (2 1) - (2 1 2) - (3 2 3) - (4 1 1 3 1 3) - (6 1 1 2 4) - (11 2 2 11) - (30)) - ((12) - (3 13) - (3 8 5) - (3 7 4) - (5 2 2 3) - (6 3 3 5) - (7 2 1 4 2 2) - (7 1 3 3 2) - (8 1 3 3 2) - (8 1 3 3 4) - (9 2 1 2 2 2) - (9 3 2 2 1) - (9 2 1 2 1) - (9 2 2 3 2) - (9 2 2 2 2) - (9 2 2 2 1 1) - (9 3 1 3 1 2) - (9 2 1 2 2 4) - (9 1 3 2 2 1) - (9 1 3 4 2) - (9 1 3 3 2) - (9 2 1 4 2) - (9 3 4 2) - (8 2 4 3) - (9 7 4) - (6 8 2) - (4 1 3 3) - (3 1 3 5) - (3 2 4 6) - (6 12))) - ("19991113eBAR (18)" - ((6) - (1 8) - (11 1) - (12) - (1 6) - (2 1 7 1) - (1 2 7) - (5 10) - (6 9) - (4 8) - (7 8) - (5 8) - (2 10) - (2 2 9) - (1 3 13) - (1 2 3 8) - (6 4 3 5) - (1 1 1 4 3) - (6 9) - (7 8) - (8 8) - (8 8) - (8 5 2) - (8 6 1) - (18) - (17) - (16) - (14) - (12) - (10)) - ((4) - (2 1 1 1) - (2 2 2 1 1) - (2 4 2 1 1) - (11 2 1) - (4 7 7) - (4 1 5 1 7) - (4 3 1 9) - (6 1 10) - (6 3 17) - (17 12) - (16 11) - (13 1 10) - (12 7) - (2 11 6) - (11 6) - (13 6) - (2 7 6) - (1 1 2 6) - (2 7) - (3 6) - (4 6) - (11) - (10) - (8) - (5) - (5) - (5) - (6) - (6))) - ("19991115aBAR (19)" - ((3 11) - (3 9) - (4 8) - (5 6) - (6 5) - (12 4) - (6 3) - (8 3) - (1 7 2) - (8 2) - (3 2 2) - (2 4 1) - (7 1) - (10 1) - (11 1) - (3 4 4 1) - (9 4 4) - (10 4 1) - (9 3 1) - (13 1) - (13 1) - (13 1) - (13 2) - (8 3 2) - (7 4 2) - (4 2 1 2 3) - (6 3 3) - (6 4 4) - (5 1 2 5) - (4 6)) - ((3) - (4) - (4) - (4) - (3) - (2) - (2) - (1) - (1 2 1 2) - (1 1 3 2 5) - (6 4 5 6) - (11 13) - (9 4 9) - (27) - (25) - (6 13 3) - (4 12 2) - (1 1 3 7) - (1 2 6) - (1 1 3 6) - (1 2 7) - (2 2 6) - (3 2 3 3) - (3 3 2) - (4 3 1) - (5 1 2) - (6 2 3) - (8 1 5) - (11 1 8) - (30))))) - ("Kajitani 30x35" - "k30x35" - (("19990507aJOJ (1)" - ((6 2 1 3 1 2 1 1 4) - (5 1 1 1 4 1 1 1 1 3) - (5 1 1 1 1 1 1 1 1 1) - (4 1 1 1 1 1 2 1 1 1 3) - (2 1 1 3 2 2 3 3 1) - (1 2 18 2) - (1 23) - (2 21 2) - (1 25) - (3 22 2) - (3 11 8 3) - (2 10 7 2) - (2 5 6 1) - (1 5 2 2 5) - (3 1 1 1 1 2) - (2 1 1 1 1 1 1 1 1 1) - (2 1 1 1 2 1 1 1 1) - (2 1 2 4 2 1 1) - (2 1 6 1 2) - (1 3 6 3) - (2 2 6 2 1) - (3 2 2 4 2 2 1) - (3 2 3 3 2 1) - (4 2 5 5 2 2) - (4 2 12 2 3) - (3 4 6 3 3) - (1 7 5 2) - (3 4 3 2 1) - (29) - (1 8 2) - (12 10) - () - (30) - () - (30)) - ((7 6 3 8 3 1 1) - (5 1 4 5 6 2 1 1 1) - (4 1 1 2 2 2 5 2 1 1 1) - (4 1 1 4 2 2 3 1 1 1) - (3 1 1 6 3 4 2 1 1 1 1) - (1 1 8 1 6 1 1 1 1) - (1 1 8 4 1 1 1 1) - (1 1 8 1 2 1 1 1 1) - (2 1 7 2 3 1 1 1) - (1 8 2 3 1 1 1) - (2 9 2 3 2 1 1 1) - (1 8 1 1 2 2 1 1 1) - (2 1 7 1 1 1 2 2 1 1) - (2 7 1 1 3 3 2 1 1) - (2 8 2 5 2 2 1 1) - (2 5 6 2 2 1 1) - (1 7 6 2 2 1 1) - (9 2 5 2 2 1 1) - (1 6 1 1 3 3 2 1 1) - (1 8 1 1 1 2 2 1 1) - (2 8 1 1 2 2 1 1 1) - (1 9 2 3 2 1 1 1) - (1 8 2 3 1 1 1) - (1 10 2 2 1 1 1 1) - (1 1 10 1 3 1 1 1 1) - (1 1 8 1 4 1 1 1 1) - (1 1 1 1 3 3 5 3 1 1 1) - (2 1 1 1 1 3 4 2 2 1 1 1) - (2 1 1 1 3 2 2 4 3 1 1) - (3 1 1 4 4 8 2 1 1))))) - ("Kajitani 30x40" - "k30x40" - (("19980514-KVL (1)" - ((14) - (14) - (16) - (18) - (20) - (1 7 6) - (1 3 4 4) - (3 9 3) - (5 8 2) - (1 4 8 2) - (1 1 13 1) - (1 1 5 1 1) - (1 1 2 1) - (1 1 1 3 1) - (3 1 1 6 1) - (5 1 9 1) - (1 4 8 2) - (1 1 10 2) - (1 1 8 3) - (1 1 2 4 4) - (1 4 6) - (3 13) - (5 11) - (1 4 11) - (1 1 15) - (1 1 14) - (1 1 1 11) - (1 1 3 3) - (3 4 2) - (5 2 2) - (1 4 2 2) - (1 15) - (1 14) - (1 1 14) - (1 14) - (3 13) - (5 11) - (7 11) - (18) - (16)) - (() - () - () - () - () - (34) - (2 2 2 2 2 4) - (3 2 2 2 2 5) - (6 5 2 1 5 2 1 4) - (6 2 2 2 2 4) - (7 2 2 2 2 3) - (7 2 4 3 5 5 3) - (8 2 1 3 2 5 2) - (6 1 2 2 2 2 5 2) - (6 12 20) - (5 7 5 19) - (5 6 5 8 9) - (5 5 6 6 1 9) - (5 5 7 6 9) - (6 4 6 7 9) - (6 4 6 7 9) - (7 3 4 8 9) - (6 2 2 10 9) - (7 23) - (34) - () - () - () - () - ())) - ("19990224aJOJ (2)" - ((13 1 1) - (14 1) - (1 14) - (7 1 1 13) - (8 3 12) - (2 2 1 3 11) - (2 2 4 11) - (2 2 1 3 11) - (2 2 4 11) - (2 2 1 3 11) - (8 3 12) - (7 1 1 13) - (1 14) - (14 1) - (13 1 1 3 2) - (12 3 3 2) - (11 3 1 4 2) - (11 4 5 2) - (11 3 1 2 2 2) - (11 4 2 5) - (11 3 1 2 4) - (12 3 2 3) - (13 1 1 2 3) - (14 1) - (1 14) - (4 1 1 13) - (6 3 12) - (2 2 1 3 11) - (2 2 4 11) - (8 1 3 11) - (8 4 11) - (2 2 1 3 11) - (2 2 3 12) - (2 2 1 1 13) - (1 14) - (14 1) - (13 1 1) - (12 3) - (11 3 1) - (11 4)) - ((2 11 5) - (2 9 11 6 5) - (2 9 11 8 5) - (2 2 2 11 3 2 5) - (2 2 2 11 2 2 5) - (2 2 2 11 2 2 5) - (2 2 2 11 3 2 5) - (2 9 11 8 5) - (2 7 11 6 5) - (2 11 5) - (2 11 5) - (2 5 3 3 5 3) - (2 1 1 1 1 2 1 1 1 2 1 1 1 1 2 1) - (1 2 1 1 2 1 1 1 1 1 2 1 1 2 1 1) - (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1) - (2 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1) - (3 3 5 3 3 2) - (11 11) - (11 11) - (11 9 11) - (11 9 11) - (11 4 11) - (11 4 11) - (11 4 11) - (11 4 11) - (11 9 11) - (11 9 11) - (11 11))) - ("19990507bJOJ (3)" - ((2 1 1 2 1 1 1) - (2 1 1 1 1 1 1 3) - (3 1 1 1 1 2 1 1) - (2 11 2) - (3 12 2) - (2 12 2) - (13 2) - (1 2 14 2) - (2 1 16) - (18) - (3 9) - (2 2) - (2 2) - (2 2) - (2 2) - (2 2) - (2 8 2) - (2 10 2) - (2 2) - (3 3 3 3) - (3 2 1 1 2 3) - (2 1 2 2 2 1 2) - (2 1 1 2 2 2 1 1 2) - (2 1 2 1 1 2 1 2) - (2 1 3 2 3 1 2) - (2 1 4 1 2) - (2 4 2) - (2 6 2) - (2 6 2) - (2 6 2) - (2 4 2) - (2 2) - (2 12 2) - (2 3 2 2) - (3 7 3) - (6 6) - (3 6 6 3) - (2 1 1 11 1 1 2) - (3 1 1 1 3 1 1 1 3) - (2 1 1 1 2 2 1 1 1 2)) - (() - (1) - (3 2) - (5 2) - (1 1 2 2 2 4) - (2 1 1 2 3 6 2) - (1 2 1 1 4 1 13) - (1 1 1 1 5 4) - (1 1 1 2 4 6) - (2 2 2 6 4 1 2) - (1 1 2 4 1 2 2 2 5) - (1 8 2 1 2 1 2 2 1) - (9 2 1 2 1 3 3 2) - (1 7 2 1 1 6 1 1 2) - (9 2 2 7 1 1 2) - (1 7 2 2 7 1 1 2) - (10 2 1 1 6 1 1 2) - (8 2 1 2 1 3 1 1 2) - (10 2 1 2 1 3 2) - (1 9 1 2 2 2 2 1) - (1 9 4 1 5) - (1 2 1 8 2) - (1 1 4 6 6) - (1 1 1 3 5 4) - (2 1 1 1 1 3 1 13) - (1 1 1 1 2 3 6 2) - (2 1 2 2 2 4) - (1 5 2) - (3 2) - (1))) - ("19990525bKHO (4)" - ((2) - (2) - (2) - (2) - (2) - (2) - (4) - (10) - (2 2) - (1 4 1) - (1 1 1 1) - (1 1 4 1 1) - (1 1 1 1) - (1 1 4 1 1) - (1 1 1 1) - (1 4 1) - (1 1) - (12) - (1 1) - (1 1 2 1 1) - (1 2 2 2 1) - (1 1) - (1 2 2 2 1) - (1 2 2 2 1) - (1 1) - (1 2 2 2 1) - (1 2 2 2 1) - (1 1) - (1 2 2 2 1) - (1 2 2 2 1) - (1 1) - (1 2 2 2 1) - (1 1 2 1 1) - (1 1) - (1 3 1) - (1 5 1) - (1 5 1) - (1 3 1) - (2 2) - (10)) - (() - () - () - () - () - () - () - (31) - (2 1 2) - (1 3 1 1 2 2 2 1 1) - (1 1 1 1 2 2 2 2 2 2 1) - (1 1 1 1 1 1 4 1) - (1 1 1 1 1 1 2 2 2 2 2 4 1) - (1 1 1 1 1 1 2 2 2 2 2 4 1) - (2 1 1 1 1 1 2 1) - (8 1 1 1 2 2 2 2 2 1) - (8 3 1 1 2 2 2 1 1) - (3 1 2) - (31) - () - () - () - () - () - () - () - () - () - () - ())) - ("19990611-KVL (5)" - (() - (9) - (13) - (11 2) - (9 6 1) - (6 5) - (4 2) - (3 2) - (3 1) - (4 2) - (4 1) - (5 1) - (5 1) - (10 2 1) - (11 7 3) - (12 1 2) - (12 5 2) - (12 4 2) - (13 2 1) - (12) - (4 2) - (5 3) - (5 3) - (6 7) - (13) - (12) - (11) - (10) - (13 1) - (10) - (10) - (10) - (7) - (6) - (7) - (10 2) - (14 2) - (16 2) - (15 3) - (15 4)) - ((1) - (7 3) - (18 3) - (20 4) - (25 4) - (16 12 5) - (4 9 17) - (5 7 16) - (4 7 16) - (5 7 17) - (4 7 19) - (4 27) - (4 18 6) - (4 4 3 5 5) - (3 1 1 2 5) - (4 1 1 1 3) - (4 1 2 1 2) - (2 1 6) - (1 1 2 3 1) - (1 2 1 2) - (3 1 1) - (1 1 1) - (2) - (2) - (2) - (3 1 1) - (10 5) - (4 4) - (2) - (1))) - ("19990612-ARE (6)" - ((9) - (3 3) - (4 5) - (20 5) - (23 1) - (2 19 5) - (18 1) - (1 17 5) - (1 15) - (1 13 5) - (1 5 10 1 1) - (5 9 5) - (4 7 1 1) - (4 11 1 1) - (4 1 10) - (4 12 3) - (3 1 4 6 1) - (2 1 4 6 1) - (1 6 1) - (1 1 5 3) - (1 1 7) - (1 5 1) - (2 7 1) - (1 3 4 1) - (6 1) - (6 5) - (2 4) - (2 4 5) - (2 4 1 1) - (9 1 1) - (8 1 1) - (6 5) - (6) - (8 5) - (10 1 1) - (10 5) - (10 1 1) - (9 1 1) - (6 1) - (2 1)) - ((1) - (3 2) - (4 9 1 2 1) - (3 6 3) - (4 8) - (5 7 1) - (1 4 2 2) - (1 5 1 2) - (1 6 1 1 1 2) - (1 8 1 1 1 2 6) - (1 8 5 2 7) - (1 9 5 1 3 6) - (1 10 5 2 1 11) - (1 10 4 1 10) - (1 13 1 1 2 11) - (1 16 1 1 14) - (1 36) - (1 26 6) - (1 25 3) - (23) - (10 8) - (6) - (5) - (3) - () - (3 1 5 5 5 5) - (1 1 1 1 1 1 1 1 1 1 1 1) - (1 1 1 1 1 5 1 1 1 1 1) - (1 1 1 1 1 1 1 1 1 1 1 2) - (1 3 5 1 5 3 1))) - ("19990715-TAN (7)" - ((17) - (2 2) - (2 6 6 2) - (2 6 6 2) - (2 5 5 2) - (2 9 1 6 2) - (2 4 9 2) - (1 5 3 4 1) - (1 9 4 6 1) - (1 4 5 3 1) - (1 3 4 2 1) - (1 7 6 3 1) - (1 5 1) - (1 4 2 2 7) - (1 3 1 1 3 2) - (1 3 1 3 5) - (1 3 1 2 6) - (1 5 1 2) - (1 7 2 2) - (1 4 4 1 2) - (2 2 2 4 1) - (2 2 1 2 4 1) - (2 3 3 3 1) - (4 7 1) - (2 3 1) - (1 1 4 2 1) - (6 2 6 1) - (1 1 1) - (1 4 3 2 4 1) - (1 4 2 4 4 1 2 1) - (1 3 2 4 2 1) - (1 3 8 12 1) - (1 11 11 1) - (2 9 9 2) - (2 8 8 2) - (2 5 5 2) - (2 2 2 2) - (2 13 2) - (2 2) - (17)) - ((15 8) - (2 2 1 2) - (2 11 2 1 4 2) - (2 13 2 1 5 2) - (2 15 1 1 6 2) - (2 5 3 5 4 2 3 2) - (2 5 2 5 1 2 5 2) - (1 6 1 1 1 1 8 1) - (1 4 1 2 3 1 1 1 2 9 1) - (1 4 1 1 2 3 5 1 1) - (1 4 2 1 3 1 5 1 1) - (1 2 1 1 1 1 2 4 1 1) - (1 2 1 1 2 4 1 1) - (1 1 1 2 2 1 1) - (1 1 1) - (1 1 2 2 1 1) - (1 2 2 1 2 4 1 1) - (1 2 1 2 1 1 4 1 1) - (1 5 2 1 2 1 2 1 5 1 1) - (1 5 2 1 3 2 2 1 5 1 1) - (1 5 1 1 3 1 2 1 9 1) - (1 4 2 1 2 1 1 2 7 1) - (2 5 1 5 2 1 2 6 2) - (2 4 4 2 1 1 1 5 2) - (2 4 1 1 1 6 1 1 3 2) - (2 5 1 2 7 5 2) - (2 4 1 2 11 2) - (2 1 2 2) - (8 15) - ())) - ("19990803aDAH (8)" - ((30) - (1 1) - (1 2 2 3 2 3 1) - (1 1 1 1 1 1 1 2 1) - (1 2 3 1 1 2 1 1 1 1) - (1 3 2 1 1 7 1) - (1 1 1 1 1 3 2 1) - (1 3 6 1 2 2 1) - (1 2 1 1 2 1 1 2 1 1) - (1 1 2 1 6 1 2 1) - (1 6 2 3 2 1 1 1 1) - (1 1 1 3 3 6 1) - (1 2 3 2 1 3 1 1) - (1 1 2 2 2 4 1 1) - (1 3 3 7 3 1 1) - (1 3 1 8 3 3 1) - (1 1 16 4 1) - (1 4 12 1 1 1) - (1 1 10 2 1 1) - (1 1 1 3 9 1 1 1) - (1 5 7 4 2 1) - (1 1 7 4 1) - (1 6 1) - (1 6 1) - (1 6 1) - (1 6 1) - (12 6 10) - (12 6 10) - (12 6 10) - (12 6 10) - (12 6 9) - (10 7 7) - (8 3 1 1 3 6) - (7 3 2 1 2 2) - (3 2 3 3 5 1) - (1 5 2 1 2 2 2 1) - (1 1 1 1 3 1 3 1 1) - (1 3 2 3 4 2 2 3 1) - (1 1) - (30)) - ((40) - (1 9 1) - (1 2 2 2 2 2 9 2 1) - (1 1 1 1 1 1 8 1 1) - (1 2 2 1 1 2 1 3 8 3 1) - (1 2 5 3 1 8 1 1) - (1 1 1 1 1 2 2 8 1 1 1) - (1 6 2 2 1 1 7 3 1) - (1 1 1 1 1 4 6 2 1) - (1 3 3 3 4 6 2 1 1) - (1 1 1 1 1 2 5 1 1 1) - (1 5 2 4 5 2 2 1) - (1 1 2 1 2 9 1 2 1) - (1 1 1 19 4 1) - (1 5 24 2 1 1) - (1 3 25 1 1) - (1 1 3 2 18 1 1) - (1 3 2 22 1) - (1 3 20 1 1 1) - (1 2 1 1 4 2 4 1) - (1 1 3 3 2 2 3 4 1 1 1) - (1 1 1 1 1 1 1 5 2 1 1) - (1 4 2 2 4 2 5 5 1) - (1 1 2 1 1 1 2 6 3 1) - (1 3 1 3 2 3 1 7 1 2 1) - (1 1 1 1 2 1 1 7 1 1 1) - (1 1 3 1 2 7 2 1 1) - (1 2 2 2 3 7 2 1) - (1 8 1) - (40))) - ("19990803bDAH (9)" - ((30) - (1 1 1 1 1 1 1 1) - (1 1 4 1 1 1 1 3 1 1 1) - (1 1 1 1 1 1 3 1 1 1) - (1 4 3 3 2 1 2 2 2) - (1 1 1 5 1 1 1 1) - (1 1 1 5 2 2 2 2) - (1 2 1 1 1 1 1 1 1 1) - (1 1 3 3 1 2 1 2 1 1) - (2 1 1 1 1 1 1 1 1 3 1) - (1 1 2 2 1 3 1 2 4 1 1) - (1 2 1 1 1 1 1 1 1 1) - (1 3 2 4 1 6 2 1) - (2 1 1 1 1 1 1 1) - (1 1 6 1 5 3 1 2) - (1 2 1 1 1 1 1) - (1 1 2 1 1 2 1 10) - (6 1 1 2 2 1 1 1 1) - (1 1 2 1 1 4 1) - (1 4 1 5 1 1 1 1 1) - (1 1 1 6 1 3 1 2 1) - (1 2 1 1 1 1 1 1 1) - (1 1 1 5 7 3 1 1) - (1 4 1 1 1 1) - (1 1 1 1 3 13 1) - (1 6 1 1 1 1 1 1 1 1 1 1) - (1 1 1 2 1 2) - (1 3 6 1 2 2 1) - (1 1 1 1 2 4 4 1) - (1 1 1 1 1 3 1 9 1) - (1 1 1 1 1 1 1 1 9 1) - (1 1 1 1 1 2 2 1 7 2) - (1 1 1 2 7 3) - (1 3 3 1 3 1 5 2) - (1 1 1 1 1 1 1 3 1 1) - (1 1 1 1 1 5 1 2 1 2 1) - (1 1 1 1 1 1 1 2 1) - (1 3 1 4 2 1 5 3) - (1 1 1) - (30)) - ((1 38) - (1 1 1 1 1) - (5 1 1 1 1 3 3 1 3 1 2 2) - (1 1 10 1 1 1 1 1 1 1 1) - (1 3 1 1 1 1 1 5 3 1 1) - (1 1 4 2 1 4 5 1 1 1) - (1 1 1 1 1 5 3 1 1) - (1 3 3 1 1 5 4 1 1 1) - (1 1 1 5 1 1 1 1 3 5 1) - (1 3 1 1 1 1 1 1 6 1) - (1 1 3 3 1 1 7 3 1) - (1 5 3 1 1 1 2 1 1 1 1 1 1) - (1 1 1 1 4 2 1 1 1 1 1 1 1) - (1 4 2 3 1 1 1 3 5 1 1) - (1 1 1 1 1 2 4 1 1 1) - (4 1 6 1 2 1 1 5 1 1) - (1 1 1 2 1 2 1 1 8 1) - (1 1 2 6 1 1 1 1 1) - (1 1 1 1 1 4 1 2 2 3 4 1) - (3 1 3 1 1 6 1 1) - (1 3 3 2 6 1 2 7 2 1) - (3 1 1 3 1 7 1 1) - (1 3 1 1 3 3 1 3 7 1 1) - (2 2 5 1 1 1 1 7 1 1) - (1 2 2 1 5 2 7 2 1) - (2 2 2 2 1 1 1 1 6 2 1) - (1 3 1 3 1 1 1 2 3 2 1) - (3 5 1 7 1 1 1) - (1 1 1 1 1 1 3 1 1) - (40))) - ("19991021-BBA (10)" - ((3 2) - (5 2) - (5 5 2) - (5 1 3) - (1 3 3 9) - (3 5 1 3) - (3 3 1 5 2) - (3 5 1 1 2) - (3 5 3 2) - (4 5 1 2) - (6 5 2 2) - (5 3 7 2) - (4 3 9 2) - (3 4 13) - (1 6 1 8) - (8 4 2) - (2 3 2 2) - (1 1 1 1 1 2) - (4 2 2 2) - (3 4 1) - (2 3 1 1) - (2 2 2) - (10) - (10) - (1 1) - (9) - (9) - (8) - (8) - (8) - (7) - (7) - (2 2 4 3) - (1 1 4 4) - (9 4 4) - (7 4 3) - (1 1 1 5 3) - (5 9) - (5 9) - (3 4 5)) - ((3) - (1 2) - (5) - (3 2 3) - (6 6) - (7 2 3) - (3 2 3 5) - (5 3 1 2) - (5 4 3) - (5 5 6 4) - (3 3 15 8) - (6 3 2 2 15) - (12 2 1 2 15) - (13 2 2 14) - (2 17 7 3) - (6 4 2 3 15) - (2 2 1 2 2 15) - (4 2 1 3 15) - (5 11 2 1) - (3) - (3) - (3 3) - (1 1 2 4) - (1 1 1 1 4) - (1 1 1 2 4) - (1 1 1 1 3) - (1 1 2 3) - (3 2) - (19) - (19))))) - ("Kajitani 35x25" - "k35x25" - (("19980530-GOS (1)" - ((16 14) - (13 12) - (10 10) - (9 1 3 2 1 9) - (9 1 1 1 1 1 1 1 8) - (9 1 1 1 1 1 3 7) - (8 1 1 1 3 1 1 1 2) - (8 2 1 1 1 1 1) - (8 1) - (7 2 4 2) - (7 2 2 4 1 1 5) - (6 2 3 1 1 3 3) - (5 3 4 3 2 1) - (5 2 2 2 2 2 1 1) - (5 2 2 2 2 1 4 5) - (1 2 6 4 6) - (2 4 1 6) - (2 3 2 5 7) - (3 2 1 9 7) - (3 3 9 8) - (7 7 8) - (4 9) - (2 1 11) - (4 4 12) - (14 14)) - ((16 3) - (15 3) - (15 3 2) - (15 5 2) - (15 5 1) - (12 2 1) - (11 3 1) - (9 4 2) - (6 9 2) - (3 9 3) - (2 4 2) - (2 4 5 1) - (2 1 5 1) - (1 4 4 2 1 1) - (1 1 3 2 3) - (1 5 5 3) - (1 5 3) - (4 3) - (1 1 1 2 3) - (5 1 3 4) - (1 2 1 4) - (1 5 1 1 1 3 1) - (1 1 3 1 2 1) - (2 4 1 2) - (2 1 2 3) - (3 1 3 3) - (4 1 2 1 4) - (5 1 1 1 6) - (6 3 1 8) - (7 10) - (6 1 11) - (6 1 11) - (6 2 11) - (7 3 11) - (7 17))) - ("19980616-HEI (2)" - ((1 1 4 8 1) - (3 1 6 10 3) - (1 6 10 3) - (1 6 16) - (1 1 1 1 6 6 1) - (1 3 1 8 6 1) - (1 1 1 6 1) - (1 1 1 6 1 1 1) - (1 6 1 1 1) - (9 7 5 1 1 1) - (9 4 1) - (2 1 2 3 1) - (2 3 2 2 1) - (2 1 2 11) - (2 2) - (3 2 2 1 2 2) - (4 2 1 1 1 1 1 2) - (5 2 2 1 2 2 4) - (5 2 1 1 1 1 2 5) - (5 2 2 6) - (5 15 7) - (2 15 6) - (1 2 6 1) - (2 6) - (5 8)) - ((1 1 6 1) - (1 4 1 6 1 1) - (2 1 6 1) - (2 1 9) - (1 1 8) - (4 1) - (1) - (1 9) - (10 10) - (2 2) - (1 2 4 2) - (5 2 1 1 2) - (6 2 1 1 2) - (6 2 1 2) - (6 5 4 2) - (6 2 1 2) - (5 2 4 2) - (1 2 1 1 2) - (2 1 2) - (9 2 2) - (10 10) - (11 9) - (12) - (13) - (14) - (4 1) - (4 1) - (3 1 1 4) - (3 1 1 1 5) - (1 1 6) - (11 7) - (1 1 8) - (3 1 1 1 8) - (3 1 1 4 1) - (4 1 4 1 1))) - ("19980716aGAS (3)" - (() - () - (11) - (5 5) - (3 1 1 3) - (3 2 5 2 3) - (2 2 5 2 2) - (2 4 5 4 2) - (1 6 5 6 1) - (2 7 7 7 2) - (1 27 1) - (1 27 1) - (1 27 1) - (1 27 1) - (1 27 1) - (2 4 13 4 2) - (1 3 1 5 1 3 1) - (2 1 1 5 1 1 2) - (2 1 1 1 2) - (3 1 3) - (3 3) - (5 5) - (11) - () - ()) - (() - () - (7) - (3 3) - (2 5 2) - (2 9 2) - (1 9 1) - (2 11 2) - (1 9 1 1) - (2 9 2) - (1 10 1) - (1 1 7 1) - (2 8 2) - (2 6 2) - (1 7 1) - (1 14 1) - (1 13 1) - (1 15 1) - (1 13 1) - (1 14 1) - (1 7 1) - (2 6 2) - (2 8 2) - (1 1 7 1) - (1 10 1) - (2 9 2) - (1 9 1 1) - (2 11 2) - (1 9 1) - (2 9 2) - (2 5 2) - (3 3) - (7) - () - ())) - ("19990119-JAM (4)" - (() - (7) - (7) - (8) - (9) - (9) - (9) - (6 2) - (5 1) - (6 2) - (9) - (9) - (3 5) - (2 1 5) - (3 14 7) - (8 8 1 7) - (7 8 5 3) - (8 5 8 1 3) - (5 7 8 4) - (4 1 7 14) - (4 13 8) - (17 6) - (15 6) - (19) - ()) - (() - () - () - () - (17) - (21) - (12 8) - (11 1 7) - (12 5 3) - (7 9 1 2) - (6 9 4) - (7 7 7) - (11 6) - (3 7) - (10) - (10) - (10) - (4 5) - (3 4) - (4 5) - (10) - (1 8) - (1 4 2) - (1 4 1) - (7 2) - (10) - (10) - (3 6) - (2 1 5) - (3 5) - (7) - (5) - (3) - () - ())) - ("19990208aFRA (5)" - ((1 24) - (31) - (1 29) - (3 28) - (3 2 27) - (2 2 8 8) - (2 2 5 11 7) - (3 6 2 1 2 6) - (9 2 1 2 5) - (8 2 1 3 5) - (4 2 1 3 4) - (3 26 3) - (2 28 2) - (2 29 2) - (1 30 1) - (30) - (35) - (3 3) - (5 5) - (2 2 2 2) - (5 5) - (3 3) - () - (8 8 8 4) - ()) - ((1 5 1) - (10 1 1) - (1 6 3 1) - (3 4 4 3 1) - (3 2 2 10 1) - (2 2 4 8 2 1) - (2 2 3 11 1) - (3 5 6 3 1) - (9 6 1) - (8 6) - (7 6) - (7 7 1) - (6 8 1) - (6 2 6 1) - (5 2 6 1) - (5 2 6 1) - (5 1 6 1) - (5 1 6 1) - (5 1 6 1) - (5 1 6) - (5 11) - (5 1 6 1) - (5 1 6 1) - (5 1 6 1) - (5 1 6 1) - (5 11 3 1) - (5 15 1) - (6 10 2 1) - (7 11 1) - (8 6 3) - (10 6) - (11 5 1) - (12 1 1) - (14 1 1) - (15 1 1))) - ("19990220aFRA (6)" - ((35) - (22 10) - (21 3 9) - (17 1 3 9) - (16 3 3 9) - (16 4 3 9) - (9 2 4 2 9) - (8 2 1 10) - (7 3 9) - (6 1 8) - (5 7) - (5 3 2) - (4 9 1 1) - (3 1 8 9 3) - (2 5 8 5 3 1) - (1 28 1 2) - (30 3) - (31 2) - (1 31 1) - (2 20) - (4 5 13) - (5 3 14) - (6 26) - (35) - (35)) - ((16 7) - (15 2 6) - (14 4 5) - (13 5 5) - (12 7 4) - (10 7 3) - (9 8 2) - (8 8 2) - (7 7 2) - (6 6 3) - (6 1 5 4) - (6 1 10) - (6 12) - (6 12) - (7 12) - (8 12) - (4 2 12) - (3 3 1 12) - (3 3 1 11) - (3 3 11) - (4 3 10) - (2 1 10) - (1 4 2 10) - (1 5 2 10) - (1 5 1 7 3) - (2 1 7 3) - (9 7 3) - (10 7 3) - (11 7 3) - (14 4 3) - (13 1 3 3) - (12 3 2 3) - (11 3 1 1 3) - (12 1 3 3) - (13 5 3))) - ("19990220bFRA (7)" - ((35) - (8 9 3 1 4) - (7 9 3 3) - (6 8 3 3) - (6 8 4 4) - (1 4 4 2 4 5) - (1 3 3 15) - (1 1 1 2 1 4 1 4) - (1 2 1 1 2 5 2 1 4) - (1 4 2 2 4 5 2 4) - (1 5 5 5 15) - (1 6 6 1 1 2 2 1) - (1 7 7 1 1 1 2 1 1 1) - (1 6 6 1 1 1 2 1 1 1) - (1 7 7 1 1 1 1 1) - (1 8 8 1 2 2 1 1 1) - (1 8 8 1 1 1 2 1 1 1) - (1 8 8 1 1 1 2 1 1 1) - (1 8 8 1 1 1 1 1 1 1) - (1 8 8 15) - (1 7 7 15) - (3 5 5 17) - (5 3 3 19) - (7 1 1 21) - (8 22)) - ((25) - (5 4) - (6 5 5 4) - (7 5 7 3) - (7 12 3) - (8 13 2) - (3 1 12 2) - (2 1 12 1) - (1 2 11) - (1 1 12) - (1 1) - (1 1 12) - (1 2 11) - (2 1 12 1) - (3 1 12 2) - (8 13 2) - (8 12 3) - (7 5 7 3) - (6 5 5 4) - (5 4) - (25) - (11 6) - (1 3 5 2 9) - (1 5 1 6) - (1 3 1 17) - (7 1 6) - (7 3 2 3 6) - (2 21) - (1 2 2 6) - (2 1 1 1 2 10) - (1 2 2 6) - (2 21) - (11 6) - (11 6 6) - (12 7))) - ("19990305-FRA (8)" - ((12 20) - (12 1 3 1 14) - (12 1 3 1 2 5 4) - (12 3 1 1 1 1 1 2 1) - (3 3 1 1 1 1 1 2 1 2) - (1 7 2 2 1 1 1 2 3) - (9 9 1 1 2 1 2) - (11 12 1 2 2) - (13 19) - (14 19) - (6 7 19) - (5 2 6 7 9) - (5 2 6 4 9) - (6 7 2 10) - (15 11) - (15 13) - (14 16) - (14 18) - (14 10) - (13 9) - (13 8) - (11 21) - (9 22) - (1 7 23) - (2 7 24)) - ((6 13 2) - (5 15 1) - (5 17) - (4 20) - (4 20) - (4 6 12) - (4 5 2 11) - (4 5 2 11) - (4 6 12) - (4 20) - (4 17) - (5 15 1) - (2 13 2) - (2 3 10 3) - (2 6 4) - (5 3 4) - (4 9 4) - (14 1 4) - (1 7 1 4) - (5 7 2 4) - (1 6 2 4) - (12 2 4) - (3 5 3 4) - (2 1 6 3 4) - (3 4 4 4) - (11 6 4) - (3 12 4) - (3 3 17) - (25) - (2 17) - (5 19) - (4 1 18) - (3 3 17) - (25) - (2 1 16))) - ("19990909-PIP (9)" - ((8) - (2 2) - (5 2 2 5) - (1 3 1 1 3 1) - (1 1 1 1 1 1) - (2 2 2 3) - (8 3 6 3 6 1) - (1 1 10 1 1) - (1 1 3 2 1 1 1) - (9 1 6 1 9) - (8 1 3 1 1 2 1 8) - (9 1 1 1 1 1 2 9) - (9 2 1 1 1 1 9) - (8 2 1 1 1 1 1 8) - (8 1 1 1 1 1 2 8) - (8 2 1 1 1 1 1 1 8) - (8 1 1 1 1 1 1 2 8) - (8 2 1 1 1 1 1 1 8) - (7 3 1 1 1 1 2 7) - (1 1 1 1 1 1 2 1) - (1 4 1 1 3 1) - (1 10 1) - (1 6 1) - (2 2) - (6)) - (() - () - (13) - (3 10) - (1 1 10) - (1 1 10) - (1 1 10) - (1 1 10) - (2 1 10) - (2 1 10) - (3 3 2 2) - (2 1 6 1) - (3 1 2 3 1 4 1) - (2 3 1 1 1 1 2 1) - (2 2 2 1 1 3 1) - (1 2 2 1 1 1 3 1) - (1 2 1 1 1 1 1 1 2 1) - (1 2 2 1 1 1 1 3 1) - (1 2 1 1 1 1 1 1 2 1) - (1 2 2 1 1 1 1 3 1) - (1 2 1 1 1 1 1 1 2 1) - (2 1 1 1 1 1 1 2 1) - (2 3 2 1 1 1 3 1) - (3 1 2 2 1 1 3 1) - (2 1 6 1) - (3 3 2 2) - (2 1 10) - (2 1 10) - (1 1 10) - (1 1 10) - (1 1 10) - (1 2 11) - (2 1 10) - (2 10) - ())) - ("19991011aLLO (10)" - ((5 14) - (7 12) - (9 10) - (9 2 2) - (7 2 2) - (5 2 2) - (5 2 2) - (5 1 2 2) - (5 3 2 2) - (5 3 10) - (17 1) - (1 3 1 6 1 1) - (2 1 6 6) - (3 8 1 2 1 1) - (3 10 11 1 1) - (2 3 4 1 1) - (1 15 4 3 1 1) - (1 15 1 1 2 1 1) - (17 1 1 1 3 1 1) - (17 1 2 2 1 1) - (4 4 9) - (4 2 2 7 2 1 3) - (2 4 4 1 1 1 1 1 1 1) - (1 4 4 6 1 1) - (2 2 4)) - ((3) - (3) - (2 3) - (4 4) - (2 11) - (4 1 2 2) - (11 3 4) - (12 1 4 4) - (12 1 4 2) - (12 1 4) - (11 1 4 2) - (4 1 2 4 4) - (2 1 2 4 4) - (3 2 4 2) - (4 2 4 1) - (3 2 4 3) - (1 2 4 1 1) - (1 1 4 3) - (1 1 1 4 1 1) - (2 1 3 3) - (18 3 1) - (10 3 1 1 1) - (3 1 2 2 1 1 1) - (3 1 2 1 1 1 1 1 1) - (3 1 2 1 1 1 1 1) - (3 1 2 1 1 1 1 1) - (3 1 2 1 1 1 1 1 1) - (3 1 2 2 1 1 1) - (10 3 1 1 1) - (22) - (2 9) - (1 1 2) - (10) - (1 2) - (10))) - ("19991013-KHO (11)" - (() - (1) - (1) - (5) - (1 4) - (7) - (5 1) - (2 3 3) - (4 1 1) - (5 1) - (17 2) - (20 3) - (21 3) - (12 8) - (10 7) - (8 7) - (5 6) - (3 1 4) - (2 2 6) - (1 2 2 3) - (1 1 2 2) - (2 1 2 2) - (2 1 2 2) - (1 2 1 1) - (2 2 2 2)) - (() - (2) - (3) - (3 5 1) - (1 2 7 4) - (4 15) - (1 3 12) - (16 1) - (3 10 2 2) - (7 7) - (6) - (5) - (5) - (4) - (4) - (3) - (3) - (3) - (6) - (7) - (8) - (9) - (10) - (7 3 1) - (4 2 4) - (2 2) - (1 3) - (2 3 1) - (1 1 4) - (1 2) - (1 1) - (3) - () - () - ())))) - ("Kajitani 35x30" - "k35x30" - (("19980420-KVL (1)" - (() - () - () - (4) - (7) - (9) - (8 2) - (5 6) - (4 6) - (5 4 2) - (6 4 2) - (2 10 4) - (20) - (1 1) - (21) - (21) - (2 7 7 1) - (2 3 3 6 3) - (11 2 2 4) - (19 4 1) - (7 8 5 2) - (2 3 7 3 1) - (6 7 3 2) - (6 8 6 1) - (2 4 5 2 1 3 2) - (1 10 2 4 1) - (2 11 3 5 1) - (10 4 4 5 2) - (21 8) - ()) - ((17) - (4 11 3) - (6 2 3 2 2) - (5 1 2 7 3) - (8 15) - (9 15) - (4 3 7 5) - (4 2 3 2 4) - (4 2 6 4) - (5 3 6 4) - (10 7 3 1) - (2 6 2 10) - (8 2 10) - (4 2 2 10) - (2 1 11 2) - (2 2 10 1) - (4 4 5 1) - (3 11 2) - (2 6 6) - (1 4 4) - (4 3) - () - (1) - (2) - (3 2) - (4 1) - (7 1) - (3 8) - (1 7) - (6) - (4) - (3) - (3 1) - (2 3 2) - (4))) - ("19980716bGAS (2)" - ((5) - (5 4 1) - (8 5 4) - (10 4 7) - (10 13) - (10 9) - (10 9) - (10 9) - (10 2 9) - (10 2 9) - (10 6 9) - (10 6 9) - (10 1 4 1 9) - (10 3 4 3 9) - (10 10 9) - (10 12 9) - (10 10 9) - (10 6 9) - (10 1 2 1 9) - (10 2 9) - (10 2 9) - (10 2 9) - (10 9) - (10 9) - (10 9) - (14 9) - (8 4 9) - (5 5 8) - (2 4 5) - (5)) - ((26) - (26) - (26) - (26) - (26) - (26) - (26) - (26) - (26) - (26) - (1 1) - (1 1) - (2 1 1 1) - (1 5 2) - (1 4 1) - (2 2 5 1) - (1 8 2) - (1 14 1) - (1 14 1) - (2 8 1) - (1 2 5 2) - (1 4 1) - (2 5 1) - (1 1 1 2) - (1 1) - (1 1) - (26) - (26) - (26) - (26) - (26) - (26) - (26) - (26) - (26))) - ("19981201-JAM (3)" - ((8 7 18) - (7 1 5 1 5 10) - (7 2 3 3 3 2 9) - (6 4 5 3 9) - (3 7 5 5 8) - (3 3 6 2 1 6 3) - (4 3 3 2 7 3) - (5 3 1 3 4 2 5 1 3) - (6 3 4 3 2 2 3) - (6 2 1 1 4 4 3 3) - (5 2 3 6 2 3 1 3 2) - (3 2 3 1 4 4 1 2 4 1) - (2 2 3 2 3 5 4 4) - (3 2 4 2 5 1 4 2 1) - (3 2 5 1 4 3 4 1 1) - (3 1 3 3 3 4 5 2) - (2 1 3 4 1 2 1 6 4 2) - (1 3 2 5 1 1 7 3 3) - (4 3 2 1 2 3 1 3 2) - (1 3 3 3 5 1 3 1) - (2 4 3 2 7 2) - (3 3 2 2 4 5 4 3 1) - (4 4 5 4 3 3 2) - (6 4 6 2 2 1 4 2) - (6 3 2 4 1 4 6 1) - (6 2 5 2 6 4) - (5 2 1 6 1 8 2) - (4 2 3 6 2 3 5) - (5 2 2 1 2 2 1 6) - (9 4 6 4 7)) - ((18 11) - (17 1 10) - (12 3 2 9) - (4 5 5 8) - (4 1 4 1 2 5 4 2) - (4 2 2 2 1 1 3 3 1 1) - (3 3 2 4 2 2 1) - (1 2 5 2 5 5 1) - (5 3 3 1 2 5 1 1) - (1 5 1 3 2 1 4 3) - (2 5 3 2 3 2 1 2) - (3 3 1 1 3 3 2 3 1) - (3 2 3 4 2 3 3 2) - (3 2 2 1 3 1 2 2 2 2) - (2 1 2 2 3 2 3 3 1) - (1 4 4 1 1 5 3) - (5 1 6 1 1 5 2 1) - (1 3 2 4 1 1 5 1 1) - (2 2 2 2 3 1 2 3 1 1) - (3 2 1 1 6 4 2 1) - (3 6 1 6 2) - (3 2 2 5 2 5 2 2) - (2 3 3 3 3 4 4) - (1 5 3 1 5 2 5 1) - (1 6 3 6 1 4 2) - (2 4 2 1 5 2 3 2) - (4 4 3 2 4 3 1) - (5 3 6 1 3 1 3) - (5 2 1 6 1 1 2 2 1) - (5 1 4 6 4 2) - (5 6 6 5 3) - (5 4 2 2 5 3) - (10 4 1 1 1 2 3) - (11 1 4 2 4) - (12 7 4 4))) - ("19990205-FRA (4)" - ((11 23) - (10 1 11 4 2) - (9 3 9 1 1) - (8 5 8 1) - (7 7 7 1) - (6 9 6 1) - (5 11 6 2) - (4 13 6 3) - (3 15 6 4) - (2 17 6 5) - (1 6 6) - (1 1 1 13) - (1 2 2 13) - (1 3 3 5 5) - (1 5 5 4 4) - (1 6 6 4 4) - (1 7 8 3 4) - (1 8 8 3 1) - (1 7 3 7 3) - (1 6 5 6 3) - (1 5 7 5 3) - (1 4 9 4 3 1) - (1 3 11 3 3 3) - (1 2 13 2 13) - (1 1 15 1 13) - (1 17 13) - (1 13) - (35) - (35) - (35)) - ((30) - (10 3) - (9 14 3) - (8 1 12 1 3) - (7 2 10 2 3) - (6 3 8 3 3) - (5 4 7 4 3) - (4 5 5 5 3) - (3 6 3 6 3) - (2 7 1 7 3) - (1 8 8 3) - (9 8 3) - (1 8 8 3) - (2 7 2 7 3) - (3 6 3 6 3) - (4 5 5 5 3) - (5 4 7 4 3) - (6 3 8 3 3) - (7 2 10 2 3) - (8 1 12 1 3) - (9 14 3) - (10 3) - (30) - (2 24) - (1 23) - (1 8 7) - (2 5 7) - (2 3 7) - (3 2 7) - (2 3 7) - (1 5 7) - (1 9 7) - (1 10 8) - (2 11 8) - (18 9))) - ("19991010aTPV (5)" - (() - () - (12) - (7 7) - (8 4 8) - (3 3 3 3) - (3 4 8 4 3) - (4 10 4) - (11 11) - (9 4 9) - (9 9) - (1 18 3) - (3 14 7) - (1 3 2 2 2 3 1 1 3) - (2 1 10 1 1 3 1) - (3 1 1 1 1 1 1 1 3) - (4 1 1 1 1 1 2 1 2) - (3 3 1 1 1 3 1 1 2) - (5 14 6 3) - (7 2 2 2 10 1 2) - (22 6) - (18 2 2) - (12 3 2) - (2 1 2) - (1 1 2) - (1 1 2) - (2 3 1) - (3 3) - (5) - ()) - (() - (3 4) - (5 6) - (17) - (2 4 1 1 3) - (2 1 5 5) - (2 1 4 5 3) - (2 1 6 5) - (3 1 6 5) - (4 6 5 3) - (13 5) - (2 4 5 5) - (1 1 2 1 2 1 1 3) - (1 1 2 1 12) - (1 1 2 1 4 5) - (1 1 2 1 2 1 1 3) - (2 4 5 5) - (21) - (4 6 1 1 3) - (3 1 6 5) - (2 1 6 5) - (2 1 4 5 3) - (2 1 5 5) - (2 4 1 1 3) - (17) - (5 2 2 6) - (3 3 2 1 3) - (1 6 1 2) - (3 2 1 1 1) - (2 9) - (1 1 3 2) - (3 1 1 1 1) - (12) - (8) - ())) - ("19991118-BDH (6)" - ((35) - (1 1) - (1 7 1) - (1 11 4) - (5 11 1 1) - (1 1 15 3 1) - (1 1 1 3) - (1 6 3 1) - (1 1 5 1) - (1 1 1 1) - (1 3 12) - (8 1) - (1 1) - (1 1) - (3 3) - (1 11 5 1) - (1 1 1 1) - (13 1 1) - (2 2 1) - (2 8) - (2 7 1) - (1 9 1) - (1 7 7 1) - (1 8 5 8 1) - (1 9 5 9 1) - (1 11 3 11 1) - (1 12 3 12 1) - (1 12 1 12 1) - (1 12 3 12 1) - (1 12 3 12 1)) - ((30) - (1 1 1 1 4) - (1 1 1 2 1 4) - (1 1 1 1 1 5) - (1 4 1 1 1 6) - (1 1 1 1 1 7) - (1 1 1 1 1 8) - (1 1 2 1 1 8) - (1 1 1 1 1 8) - (1 4 1 1 8) - (1 1 1 1 8) - (1 1 1 1 8) - (1 3 3 8) - (1 3 1 5) - (1 4 2) - (1 4 2 2) - (1 4 2 4 2) - (1 4 2 7) - (1 4 2 4 2) - (1 4 2 2) - (1 4 2) - (1 3 1 5) - (1 3 8) - (1 1 3 8) - (1 1 1 1 8) - (1 1 1 8) - (1 1 1 8) - (1 2 1 2 8) - (1 1 1 5 8) - (1 3 1 1 1 7) - (1 1 1 1 1 6) - (1 3 1 1 1 5) - (1 1 1 1 2 1 4) - (1 1 1 1 1 1) - (30))))) - ("Kajitani 35x35" - "k35x35" - (("19981015aGAS (1)" - ((17) - (1 2) - (1 1 1) - (17 1) - (1 1 1) - (1 1 1) - (1 1 1) - (1 1 1 1 1) - (1 5 1 1) - (1 1 1) - (1 1 1) - (1 1 1) - (17 1) - (1 1 1) - (1 1 1) - (1 1 1) - (1 1 1 1 1) - (1 5 1 1) - (1 1 1) - (1 1 1) - (1 1 1) - (17 1) - (1 1 1 1 1 1 1 2 1) - (1 1 1 1 1 1 1 3 1) - (1 1 1 1 1 1 1 2 1 1) - (16 1 1) - (1 1 1 1) - (1 1 1 1) - (1 1 1 1 1 1) - (1 6 1 1 1) - (1 1 2 1) - (1 2 1 1) - (16 1 1) - (1 2) - (18)) - (() - () - () - () - () - () - () - (8) - (2 3) - (19 1 1 1 1) - (2 1 2 2 1 1) - (1 1 1 1 1 1 1 1) - (1 1 1 2 2 2 1 1) - (1 1 1 1 1 1 1 1 1) - (1 1 1 2 2 1 1 1) - (1 1 2 1 2 1 1 1 1 1 1) - (1 1 1 1 1 2 2 1 1 1) - (1 1 1 1 1 1 1 1 2 1 1) - (1 1 1 1 1 2 2 1 1) - (1 1 2 1 2 1 1 1 1 1) - (1 1 1 2 2 1 1) - (1 1 1 1 1 1 1 1) - (1 1 1 2 9 1) - (1 1 1 1 2 1 1) - (1 1 1 3 1 1) - (1 32) - (1 1 1) - (2 1) - (32) - () - () - () - () - () - ())) - ("19990202-SQU (2)" - ((3 3 3 2 3) - (3 3 1 1 3 1 1 1) - (3 1 1 1 3 3 2 1) - (3 1 1 3 1 1 1) - (3 3 3 2 1) - (3 3) - (26) - (2 3 3 2) - (2 5 3) - (2 3 4) - (30) - (1 3 1) - (1 2 1) - (1 16 1 2) - (1 16 2 1 3) - (1 2 2 2 5) - (1 2 2 5) - (1 2 2 3 1) - (1 2 2 2 2 1) - (1 2 2 2 1 2) - (1 2 2 1 3) - (1 2 2 5) - (1 2 2 2 5) - (1 2 2 4 3 1) - (1 2 2 4 2 1) - (1 2 2 2 1 2) - (1 2 2 1 3) - (4 2 2 7) - (1 1 16 5 1) - (1 1 16 4 1) - (1 1 3 1) - (1 27 1) - (1 1) - (1 1) - (35)) - ((8) - (1 1) - (1 1) - (1 22 1) - (2 2 1 1) - (3 3 1 1) - (3 2 1 17 1 1) - (3 2 1 17 1 1) - (4 1 2 2 1 1) - (3 1 2 2 1 1) - (1 3 1 2 2 1 1) - (3 3 1 2 2 1 1) - (1 5 2 2 1 1) - (1 3 2 2 1 1) - (2 5 2 2 1 1) - (1 3 1 2 2 1 1) - (2 3 1 2 2 1 1) - (3 1 2 2 1 1) - (4 1 2 2 1 1) - (3 1 1 2 2 1 1) - (3 1 1 17 1 1) - (3 1 1 17 1 1) - (2 1 1 1 1) - (1 1 1 2 1 1) - (1 1 2 2 4 1 1) - (3 1 1 1 2 2 4 1 1) - (1 1 1 1 1 2 1 1) - (1 3 1 1 1 1) - (1 22 1) - (5 1 4 4 4 5 1) - (1 1 1 1 4 4 4 5 1) - (5 4 4 5 1) - (1 23 1) - (5 1 1) - (1 8))) - ("19990220-JOJ (3)" - ((35) - (13 6 14) - (12 4 13) - (11 2 12) - (10 11) - (5 5) - (5 6) - (6 7) - (7 8) - (8 1 1 1 1 1 1 9) - (6 1 3 1 1 3 1 7) - (4 1 1 1 1 1 1 5) - (2 1 2 1 1 2 1 3) - (3 1 3 1 1 3 1 4) - (4 1 3 1 1 3 1 5) - (5 1 1 1 1 6) - (6 1 3 1 1 3 1 7) - (5 2 1 1 2 6) - (4 2 3 4 3 2 5) - (3 1 4 4 1 4) - (4 1 2 2 1 5) - (6 1 1 7) - (8 1 2 2 1 9) - (8 2 3 3 2 9) - (9 1 6 1 10) - (10 1 1 11) - (13 14) - (11 1 1 2 1 1 12) - (12 1 1 1 1 13) - (11 12) - (10 11) - (8 9) - (7 4 4 8) - (6 14 7) - (5 16 6)) - ((35) - (35) - (12 22) - (12 5 15) - (11 3 14) - (5 4 1 13) - (5 2 11) - (5 1 4 10) - (5 1 2 1 7) - (5 1 3 3 6 1) - (4 1 1 1 2 1 4 2) - (3 1 2 1 3 1 1 1 1 3) - (2 2 3 1 3 2 3 3) - (1 1 3 1 1 1 1 3) - (2 1 1 1 2 1 3) - (3 1 3 3 1 1 2) - (4 1 1 1 2) - (4 1 1 1 2) - (3 1 3 3 1 1 2) - (2 1 1 1 2 1 3) - (1 1 3 1 1 1 1 3) - (2 2 3 1 3 2 3 3) - (3 1 2 1 3 1 1 1 1 3) - (4 1 1 1 2 1 4 2) - (5 1 3 3 6 1) - (5 1 2 1 7) - (5 1 4 10) - (5 2 11) - (5 4 1 13) - (5 5 3 14) - (12 5 15) - (12 22) - (35) - (35) - (35))) - ("19990416-SNI (4)" - ((8 15 5) - (7 2 13 6) - (6 2 12 7) - (5 2 11 4 8) - (5 1 10 4 9) - (4 1 10 3 2 8) - (4 1 2 4 1 7) - (4 11 5 3 6) - (4 11 6 5 5) - (3 12 5 7 4) - (3 12 5 8 3) - (3 1 5 4 3 10 2) - (2 1 3 1 4 2 9 3) - (2 1 1 3 2 4 1 9 4) - (1 3 5 6 9 5) - (1 5 11 8 6) - (1 10 4 6 7) - (1 1 1 2 1 4 4 9) - (1 3 2 3 4 3 10) - (2 15 1 1 11) - (3 13 2 2 10) - (3 1 10 4 3 9) - (3 1 6 7 3 8) - (3 1 5 7 1 2 9) - (3 1 4 3 3 3 10) - (3 4 2 8 11) - (4 6 9 10) - (4 17 9) - (5 8 7 10) - (5 8 7 11) - (6 8 6 12) - (6 8 4 13) - (5 2 4 14) - (4 3 5 4 15) - (4 6 16)) - ((35) - (14 16) - (12 2 1 15) - (9 8 9) - (5 3 3 7 5) - (3 2 3 1 3 2 2 2 1) - (2 2 5 3 12 2) - (1 2 1 8 1 13 2) - (2 2 11 13 1) - (1 3 11 13 2) - (4 5 3 6 6 2) - (6 4 1 8 2 5 2) - (6 4 2 2 4 3 5 2) - (6 5 2 6 6 2) - (6 9 5 3 2) - (6 10 12 1 1) - (6 1 10 9 2) - (5 1 3 8 13) - (4 2 4 5 3 9) - (4 1 7 1 3 9 1) - (3 2 6 3 3 8 2) - (3 1 5 6 8 3) - (2 2 3 11 4) - (2 2 2 10 4 5) - (1 1 2 10 1 3 1 6) - (1 1 1 10 3 1 3 7) - (1 10 5 12) - (3 9 18) - (5 7 19) - (7 5 20) - (9 3 21) - (10 1 22) - (11 23) - (35) - (35))) - ("19990520-TAM (5)" - ((1 1) - (1 1 2) - (1 1 1 1) - (1 1 1 1) - (1 1 1) - (1 1 18 2) - (1 1 20 2) - (2 2 2 14 2) - (2 2 3 2 2 3) - (6 6) - (5 2 2 5) - (3 4 4 3) - (3 4 4 3) - (3 2 2 3) - (1 3 3) - (2 24) - (1 1 4 1 1 1 1 1 1 1 1 3) - (1 24) - (1 24) - (2 24) - (2 24) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (24) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (26) - (26) - (26) - (26) - (26) - (2 2) - (2 2) - (2 2) - (2 2)) - (() - (2 2) - (7 7) - (1 1) - (1 2 1) - (8) - (5) - (23) - (14 1 5) - (15 1 9) - (2 2 20) - (2 2 1 14) - (5 6 1 5) - (4 2 1 4 1 5) - (3 4 16) - (3 4 1 14) - (3 2 6 1 5) - (3 1 4 1 5) - (3 16) - (3 1 14) - (3 6 1 5) - (3 2 1 4 1 5) - (3 4 16) - (3 4 1 14) - (4 2 6 1 5) - (5 1 4 1 5) - (2 2 16) - (2 2 1 18) - (15 1 9) - (14 1 5) - (23) - (2 5) - (7) - (1) - (2))) - ("19990830-KHO (6)" - ((35) - (26 5) - (7 12 3 4) - (6 1 1 1 4 4 4) - (5 2 1 1 2 2 3) - (4 4 2 1 2) - (3 6 1 1 7 1) - (2 6 3 3 7) - (1 6 1 3 1 6) - (2 5 1 1 6) - (4 4 4 3) - (4 4 4 4) - (2 4 5 4 7) - (1 4 7 4 4 1) - (2 4 3 1 3 4 2) - (10 1 3 1 1 10) - (9 1 3 9) - (9 3 4 2) - (9 1 3 1 3 3 3 1) - (10 5 1 3 2 2) - (12 2 3 3 4 1 1 1) - (4 8 1 1 7 3 1) - (3 9 3 8 1 2) - (2 2 6 8 2 1) - (2 1 1 4 9 2) - (2 3 3 11) - (3 8 12) - (8 1 1 6) - (7 1 1 5) - (7 7 5) - (7 1 1 7 1 1 5) - (9 2 11 2 7) - (35) - (35) - (35)) - ((9 22) - (8 21) - (7 2 8 9) - (6 4 7 3 8) - (5 4 6 2 1 8) - (4 2 6 1 2 8) - (3 1 10 9) - (2 2 3 15 4) - (2 22 4) - (2 12 8 1 3) - (2 9 5 1 4) - (2 8 4 1 4) - (3 4 2 1 1 3) - (4 1 2 1 4) - (3 1 2 3 1 1 1 4) - (4 2 1 3 1 1 7) - (3 2 2 1 3 1 6) - (3 1 5 3 1 6) - (3 2 2 1 3 1 6) - (4 2 1 3 1 1 6) - (5 2 3 1 1 6) - (5 1 3 7) - (4 4 3 4 1 4) - (3 8 5 4 1 4) - (2 1 9 3 7 1 3) - (2 2 10 8 4) - (1 3 21 4) - (1 2 5 14 1 3) - (1 1 2 3 5 5 4) - (1 4 3 3 5 4) - (2 4 2 2 2 11) - (4 3 2 1 2 12) - (5 2 2 2 2 10) - (6 1 4 4 11) - (7 7 12))) - ("19990904-PIP (7)" - ((29) - (27 1) - (1 1 2) - (2 2 1) - (1 1 28) - (1 2 1 1) - (1 4 9 1 9 1) - (2 1 1 1 1 1 1) - (1 1 1 1 3 1 1) - (2 2 1 1 1 1) - (1 1 4 1 2 1 1 1 1 1 1) - (1 2 1 1 1 1 1 1 1 1 1 1 1 1) - (1 4 1 2 1 1 1 1 2 1 1) - (2 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1 1 1 2 1 1 1 1 1 1) - (2 2 1 2 2 1) - (1 1 4 1 1 1) - (1 2 1 1 1 13 1 1 1) - (1 4 1 1 1) - (2 1 2 13 2 1) - (1 1 1 1 1 1) - (2 2 1 1 1 1) - (1 1 4 1 1 1) - (1 2 1 1 1 1) - (1 4 1 1 1) - (1 1 1 1 1) - (2 1 1 1 1) - (1 1 1 1 3 1 1) - (1 2 1 1 1 1 1 1) - (1 4 9 1 9 1) - (2 1 1) - (28) - () - () - ()) - ((28) - (2 1 1 1 1 1 1 1 1 1) - (3 1 1 1 1 1 1 1 1 1) - (2 1 1 1 1 1 1 1 1 1 1) - (2 1 1 1 1 1 1 1 1 1 1) - (2 1 1 1 1 1 1 1 1 1 1) - (2 1 1 1 1 1 1 1 1 1 1) - (2 1 1 1 1 1 1 1 1 1 1) - (2 28) - (2 1 1) - (2 1 10 1 11 1) - (2 1 1 1 1 1 1) - (2 1 1 3 1 1) - (2 1 1 5 1 1) - (2 1 1 1 1 1 1 1 1 1) - (2 1 1 1 1 1 1 1 1) - (2 1 1 1 1 1 1) - (2 1 1 3 1 1 1 1) - (2 1 2 1 1 1 1 2 1) - (2 1 1 3 1 1 1 1) - (2 1 1 1 1 1 1 1 1) - (2 1 1 3 1 1 1 1) - (2 1 2 1 1 1 1 2 1) - (2 1 1 3 1 1 1 1) - (2 1 1 1 1 1 1) - (2 1 1 5 1 1 1 1) - (2 1 1 1 1 1 1 1) - (1 1 1 1 2 2 1 1) - (5 1 3 1 1) - (1 1 1 1 1 1) - (1 10 1 11 1) - (1 1) - (28) - () - ())) - ("19991007cKHO (8)" - ((3 3) - (3 3) - (3 4 3) - (3 1 1 3) - (5 3 5) - (1 3 7) - (1 3 3 2) - (1 3 4 2 2) - (1 2 2 1 2 3 2) - (1 1 1 1 2 1 3) - (1 1 1 2 5) - (1 2 1 1 2 6) - (1 3 1 2 6) - (3 1 2 8) - (3 3 1 2 6 3) - (3 1 3 1 7 3) - (3 1 3 1 5 4 3) - (1 3 3 3 3 1 5) - (1 3 7 3 7) - (1 3 7 1 3 5 2) - (1 3 5 3 1 1 5 3) - (1 1 2 1 2 1 2 1 1 1 2 5) - (1 1 1 1 2 1 2 1 1 1 2 3 2) - (1 1 1 1 1 3 1 1 1 1 2 1 3) - (1 1 1 1 1 2 1 1 1 1 2 5) - (1 1 2 1 1 1 1 1 1 1 2 6) - (1 2 1 1 3 1 1 2 1 2 6) - (3 1 1 7 2 1 2 6) - (3 1 1 5 3 1 2 4) - (3 1 5 3 1 5) - (3 3 3 3) - (3 3) - () - () - ()) - ((12) - (1 1) - (3 6 2) - (1 1 1 1 1) - (2 2 2 1 2) - (1 1 1 1 1) - (2 2 4 2) - (1 2 1 1) - (12 1 13) - (2 1 1 1 1) - (3 4 2 1 13) - (1 1 2 2 1 4 2) - (2 2 1 1 2 3 2 5) - (1 1 2 1 1 2 4 4) - (2 2 2 1 5 1 5) - (1 2 1 6 2) - (1 1 1 23) - (1 1 1 1 1) - (1 1 1 23) - (1 1 12 1) - (2 2 4 7 2) - (1 1 2 6 1 2 1) - (2 2 2 7 2 1 2) - (1 2 2 6 1 1) - (4 7 13) - (12 2 1 1) - (12 1 13) - (1 1 12) - (2 1 3 2) - (1 2 2 5) - (2 3 2 6) - (1 2 2 5) - (4 2 6) - (12) - (12))))) - ("Kajitani 35x40" - "k35x40" - (("19980425-HUB (1)" - ((8 6 2 2 6) - (8 8 2 2 8) - (2 2 2 2 2 2 2) - (2 2 2 2 2 2 2) - (2 2 2 2 2 2 2) - (2 2 8 6 8) - (3 3 8 4 8) - (6 2 2 2 2 2) - (4 2 2 1 2 2 2) - (1) - (5 1 1 1 1 1 9) - (3 1 1 1 1 1 6) - (5 1 1 1 1 1 1 8) - (3 1 1 1 1 1 6) - (4 1 1 1 1 1 10) - (2 1 1 1 1 1 5) - (4 1 1 1 1 1 8) - (2 1 1 1 1 1 5) - (4 1 11 1 8) - (5 1 1 1 5 1) - (3 1 11 1 3) - (1 21 1 3) - (3 17 8) - (2 3 9 7 2) - (2 4 10 2) - (2 9 1 7 2) - (5 1 1 1 1 8 2) - (2 1 1 1 1 6 2) - (1 6 1 1 1 1 7 3) - (1 2 1 1 1 1 9 1) - (1 6 1 1 1 1 8 2) - (1 2 1 1 1 8 4) - (2 6 1 1 1 8 5) - (2 3 1 1 1 6 6) - (3 4 1 1 1 6 7) - (4 2 1 1 6 8) - (5 3 1 1 5 9) - (7 9 11) - (10 14) - (35)) - ((2 2 9 12) - (2 3 9 6 8) - (2 3 5 1 1 1 9 6) - (2 2 1 1 1 1 1 1 1 7 5) - (2 2 1 1 1 1 1 1 4 4) - (2 3 1 1 1 1 1 1 3 3) - (8 2 4 1 1 1 1 1 4 3) - (7 2 5 1 1 1 1 2 2) - (1 2 1 1 1 1 2) - (8 1 2 1 1 2) - (9 1 2 1 3 1 1 1) - (2 2 2 9 1 1 1) - (2 2 1 4 1 1 1) - (2 2 6 1 1 1) - (2 2 3 4 4 2 1 1 1 1 2 1) - (9 2 1 4 1 1 1 1 1 1 1 1) - (8 1 4 2 1 1 1 1 2 1) - (2 7 1 1 1 1 1 1 1 1) - (4 3 4 1 4 2 1 1 1 1 2 1) - (6 1 4 1 1 1 1 1 3 1) - (3 1 3 1 1 1 1 1 3 1) - (4 1 2 2 1 1 6 2) - (4 2 6 1 1 1 7 2) - (3 2 3 1 2 12 2) - (6 1 1 13 3) - (4 1 1 1 1 12 3) - (1 1 1 11 4) - (8 1 1 1 1 1 1 11 5) - (9 1 1 1 1 1 1 10 6) - (2 2 5 1 1 6 2 7) - (2 2 9 2 2 8) - (2 2 9 2 2 9) - (2 2 9 2 2 9) - (9 9 7 10) - (8 10 5 11))) - ("19981020-MON (2)" - ((3 11) - (4 5 4) - (3 5 4) - (3 5 3) - (3 5 2) - (4 5 2) - (3 5 2) - (4 2) - (4 3 3 3 2 1) - (4 1 1 1 1 1 2 1) - (2 1 2 1 3 2 2) - (2 1 1 1 1 1 2 2) - (4 1 1 3 1 2 3) - (4 2 2) - (4 1 2 1 1 1) - (2 1 1 2 4 1) - (2 1 3 4 1 1 1) - (1 4 3 8 1) - (1 1 1 3 2 4 1) - (1 6 3 1 2 2 1) - (2 5 1 3 1 2 4 1) - (2 1 12 8 1) - (1 1 2 6 12) - (3 4 2 10) - (8 2 10) - (4 1 2 10) - (1 1 4 2 11) - (3 1 1 2 2 9) - (5 5 2 2 8) - (2 1 4 2 2 3 7) - (12 2 2 6) - (9 1 2 2 6) - (13 2 4) - (10 3 5) - (6 2 3 5) - (2 9 5) - (2 4 3 5) - (2 2 4 5) - (2 2 1 2 3) - (2 2 10)) - ((2) - (1 1 4 1) - (2 2 5 3 3 3) - (2 2 4 6 5) - (5 2 3 7 1) - (5 2 7 3) - (3 2 10) - (2 9) - (34) - (13 2 4 1 4 3 1) - (6 3 1 6 1 3 4 3) - (37) - (5 3 2 2 1) - (5 5 1 1 2 2 1) - (5 1 1 2 2 2 1) - (4 2 2 2 2 2 1) - (3 2 2 2 2) - (2 1 1 7 2 2 3) - (1 5 9 2 2 3) - (1 1 1 7 2 3 3) - (1 2 2 2 4) - (1 5 1 2 2 4) - (2 1 1 2 2 2 4) - (3 3 2 2 4) - (4 2 2 4) - (33) - (32) - (2 11) - (5 12) - (1 15) - (16) - (4 2 2 10) - (3 2 7) - (2 6) - (13))) - ("19990202bLLO (3)" - ((8 20) - (2 2 2 2) - (1 1 1 1 1 2 1 1 3 1) - (1 4 3 1 1 1 1 1 1 1 2) - (1 1 1 3 3 2 1 1 1 1 2) - (1 1 1 3 1 1 1 1 1 1 1 2) - (1 1 1 1 1 1 1 2 2 2 3 1) - (1 1 1 1 2 2) - (1 1 1 1 20) - (1 1 1 1) - (2 1 1 2 6 6 6) - (1 1 1 1 1 1 1 1 1 1) - (2 2 1 2 1 1 2 1 1 2 1) - (2 2 1 1 1 1 1 1 1 1 1) - (2 2 1 1 1 1 1 1 1 1 1) - (5 5 1 1 1 1 2 1 1 1 1) - (1 2 2 1 1 1 1 1 1 1) - (1 2 2 1 6 6 6) - (5 5) - (2 2 6 6 6) - (2 2 1 1 1 1 1 1) - (2 2 1 1 1 1 2 1 1 1 1) - (2 2 1 2 1 1 1 1 1 1 1) - (2 2 1 1 1 1 1 1 1 2 1) - (2 2 1 1 1 1 2 1 1 2 1) - (2 2 1 1 1 1 1 1) - (2 2 6 6 6) - (1 1 1 1) - (2 1 1 2 6 6 6) - (1 1 1 1 1 1 1 1 1 1) - (1 1 1 1 1 2 1 1 2 1 1 2 1) - (1 1 1 1 1 1 1 1 2 1 1 2 1) - (1 1 1 1 1 1 1 1 2 1 1 1 1) - (1 1 1 1 1 1 1 1 2 1 1 1 1) - (1 4 1 1 1 1 1 1 1) - (1 1 6 6 6) - (2 2 4) - (8 8) - (3 4 5) - (3 4 5)) - ((4) - (10 1 1 9) - (2 2 1 1 2 2) - (1 15 1) - (1 32 2) - (1 1 1 3) - (1 1 1 3) - (1 32 1 1) - (1 15 1) - (2 2 1 1 2 2) - (10 1 1 9) - (3 4 1) - (7 1) - (2 2 8 8 8 2) - (1 1 1 1 1 1 1 1 2) - (1 5 1 1 1 1 1 2 1 1 1 2 1 2) - (1 1 1 1 4 1 1 3 1 1 2 1 2) - (1 5 1 1 1 1 1 1 3) - (1 1 8 8 10) - (1 5 1 2) - (1 1 1 1 1 8 8 11) - (1 1 1 1 1 1 1 1 2) - (1 5 1 1 1 2 1 1 2 1 1 1 4 1 3) - (1 1 1 1 2 1 1 1 1 2 1 1 4 1 2) - (1 1 1 1 1 1 1 1 2) - (1 5 1 8 8 8 1) - (1 1 1 1) - (1 1 8 8 8) - (1 5 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 1 1 4 1 1 2 1) - (1 5 1 1 3 1 1 2 1 1 4 1) - (1 1 1 1 1 1 1 1) - (2 2 8 8 8) - (7) - (3))) - ("19990529aDRA (4)" - (() - () - (3) - (5) - (7) - (7) - (6) - (7) - (6) - (5) - (7) - (2 9) - (1 3 10) - (2 16 4) - (2 15 4) - (2 2 2 5) - (4 4 2 5 12) - (2 1 1 8 1) - (2 1 5 2 1 1) - (2 1 5 2 1) - (2 1 2 6 1) - (2 1 7 1) - (2 1 7 1) - (14 8 11) - (2 1 8 1) - (2 1 10 1) - (2 1 11 1) - (2 1 6 5 1) - (2 1 5 4 1) - (2 1 3 4 1) - (9 4 7 4 7) - (2 4 4) - (2 4 4) - (2 4 3) - (2 4 4) - (2 3 3) - (2 3 3) - (2 5 4) - (2 4 3) - (2)) - ((27) - (27) - (1 1 1) - (3 1 1 1) - (1 3 1 1) - (5 1 1) - (3 15) - (3 1 1 1) - (2 1 1 1) - (2 1 1) - (2 2 3 1 3) - (5 2 1 3 1 5) - (6 2 5 1 7) - (7 4 3 1 4 4 2) - (7 6 3 5 4 2) - (13 1 5 1 3 2) - (11 3 8 1 6) - (8 3 7 1 4) - (6 3 7 1 2) - (4 3 9 1) - (7 10 1) - (5 9 1) - (4 3 5) - (2 1 4) - (1 1 4) - (1 1 4 2) - (1 1 4 2) - (1 1 4 3) - (15 6) - (1 1 1 3) - (1 1 1 2) - (1 1 1) - (1 1 1) - (1 1 1) - (1 1 1))))) - ("Kajitani 40x30" - "k40x30" - (("19980501bGOS (1)" - (() - () - () - () - () - () - () - () - () - (37) - (37) - (1 1 1 1 2 2 2 1 1 1 1 2 2) - (1 1 1 3 1 1 1 1 2 1 3 1 2 1 1 1) - (1 1 1 3 1 1 3 2 1 3 1 1 2 3) - (1 1 1 3 2 1 2 6 2) - (1 1 1 3 1 3 1 2 1 4 7 1) - (1 1 1 3 1 1 1 1 2 1 4 5 1 1) - (1 1 1 1 1 2 2 2 1 2 6 2) - (37) - (6 3) - (6 5 1 4 1 6 3) - (6 3) - (37) - () - () - () - () - () - () - ()) - (() - (14) - (2 5) - (5 8) - (2 5) - (14) - (2 5) - (2 2 2 1 1) - (2 2 2 1 1) - (10 1 1) - (2 1 1 1) - (2 2 4 1 1) - (2 1 1 1 1) - (10 1 1) - (3 2 2 1) - (2 2 2 1 1) - (3 2 2 1 1) - (10 1) - (2 1 1 1) - (5 4 1 1) - (5 4 1 1) - (2 1 1 1) - (10 1) - (2 1 1 1) - (2 2 2 1 1) - (2 2 2 1 1 1) - (10 1 1) - (2 5 1 1) - (5 1 1 1) - (2 5 1 1) - (10 1 1) - (2 1 5 1) - (2 6 1) - (10 1) - (3 2 2 1) - (2 2 2 5) - (3 2 6) - (14) - () - ())) - ("19980501cGOS (2)" - (() - (3 4) - (6 6) - (1 8 7) - (2 2 16 2) - (3 2 16 2 2) - (5 5 1 5 2 3) - (8 4 1 5 5) - (15 3 4 8) - (2 12 1 16) - (3 25 2) - (3 19 3) - (16 3) - (3 6) - (3 5) - (2 1 4) - (4 4) - (2 4) - (10) - (10) - (9) - (9) - (7) - (7) - (3 3) - (3 3) - (4 4) - (5 5) - (5 5) - ()) - (() - () - (2) - (2 3 1) - (2 2 2) - (7) - (5) - (6) - (7) - (4) - (4) - (4) - (4 4) - (11) - (14 2) - (21 3) - (28) - (4 3 1 11) - (4 1 3 2 11) - (10 6) - (2 1 3 11) - (3 19) - (27) - (21 3) - (19 2) - (14) - (7 5) - (4 4) - (4) - (4) - (4) - (7) - (7) - (5) - (7) - (2 2 2) - (2 3 1) - (2) - () - ())) - ("19980508-SDN (3)" - ((15 7 10) - (1 1 1 1 10) - (1 11 1 1 1 2 2) - (1 11 1 1 1 10) - (1 11 1 1 1 5 3) - (1 11 1 13 10) - (1 11 1 24) - (1 11 1 13 10) - (1 11 1 6 1 2 10) - (1 11 1 13 10) - (1 11 1 1 1 10) - (1 1 10) - (15 10) - (1 1 1 6 2 10) - (15 7 2) - (3 2 10) - (1 14 10 2) - (3 1 2 10) - (9 3 1 10) - (9 1 1 10) - (1 1) - (25 10) - (25 1) - (2 1 1 1 1 1 1 3 3) - (25 1 1) - (1 1 1 1 1 1 1 1 1 1 1) - (25 3) - (2 1 1 1 1 1 1 3 3) - (25) - (25)) - ((15 9) - (1 1 1 4 4) - (1 9 3 2 1 1 2) - (1 9 1 1 2 2 3 2) - (1 9 3 2 4 4) - (1 9 1 1 2 2 1 1 2) - (1 9 4 3 2 3 2) - (1 9 8 4 4) - (1 9 4 3 2 1 1 2) - (1 9 3 2 2 3 2) - (1 9 3 3 4 4) - (1 9 3 1 2 2 1 1 2) - (1 9 1 1 1 2 3 2) - (1 3 1 4 4) - (15 1 2 1 1 2) - (1 2 3 2) - (5 1 4 4) - (5 1 2 1 1 2) - (5 1 2 3 2) - (11 1 4 4) - (1 5 1 2 1 1 2) - (1 5 1 2 3 2) - (1 3 1 1 4 4) - (1 3 1 1 7 4) - (1 5 2 1 9) - (8 2 1 1) - (3 1 1 2) - (5 1 2 1) - (5 1 1 1 1) - (1 1 1 1) - (20 1) - (20 1) - (2 17 1) - (2 11 5 1) - (2 11 5 1) - (2 1 9 5 1) - (2 1 9 1 3 1) - (2 11 1 3 1 5) - (20 3 2) - (20 5))) - ("19981027aMNT (4)" - ((2) - (2) - (8) - (2) - (1 2) - (1 2) - (5 2) - (1 10) - (1 2) - (1 2) - (1 10) - (7 10) - (1 10) - (1 4 4) - (1 18) - (24) - (24) - (18) - (34) - (24) - (32) - (40) - (17 12) - (17 6) - (21 5) - (20 1) - (19 2) - (18 2) - (17 2) - (32)) - ((1 1) - (1 2) - (1 3) - (1 1 4) - (1 10) - (1 10) - (1 1 10) - (1 1 1 10) - (1 1 2 12) - (13 12) - (1 1 2 12) - (1 1 16) - (1 16) - (16) - (16) - (1 20) - (1 1 20) - (1 1 20) - (1 1 20) - (13 16) - (13 16) - (1 1 12 1) - (1 1 12 1) - (1 1 12 1) - (1 13 1) - (9 1) - (9 1) - (9 1) - (9 1) - (2 5 1) - (2 6 1) - (2 6 1) - (1 4 1) - (1 4 1) - (1 4 1) - (1 5 2) - (1 1 1 2) - (1 1 2) - (1 3) - (1 1))) - ("19981027bMNT (5)" - ((16) - (3 7 3) - (4 7 3) - (2 7 4 1) - (3 7 3 2) - (17 3) - (3 7 3 4) - (4 7 2 5) - (17 13) - (1 1 7 5 1) - (16 8 1 1 1 1) - (16 1 5 1 1 2 1) - (7 7 1 5 8 1) - (7 7 4 2 1 3 1 1) - (16 4 2 1 3 2 1) - (16 7 12 1) - (16 8 1) - (16 6 15) - (16 4 1 15) - (2 8 2 3 3 1 8 2) - (2 8 2 2 1 1 1 8 2) - (16 2 1 1 15) - (17 1 4 6 7) - (1 4 6 7) - (1 3 15) - (1 2 15) - (1 1 1 8 2) - (1 1 8 2) - (1 15) - (16)) - ((14) - (1 13) - (2 9 2) - (3 9 2) - (4 13) - (5 13) - (3 1 13) - (4 1 2 9) - (2 4 2 9) - (3 4 13) - (9 13) - (1 6 13) - (1 6 9 2) - (9 9 2) - (9 13) - (6 1 13) - (6 2 1) - (3 4 12) - (3 3 2 11) - (7 3 7 1) - (1 3 12 4 1) - (1 2 7 3 1 3 1) - (4 8 3 1 4 1) - (3 13 9 1) - (15 1 1) - (1 1 13) - (8 2 5 2) - (2 1 1 2 5 2) - (5 1 13) - (2 4 13) - (2 4 13) - (1 6 5 6) - (1 2 1 5 6) - (1 1 1 13) - (1 3 13) - (1 2 13) - (1 1 2 5 2) - (1 2 5 2) - (1 13) - (14))) - ("19981228-BAU (6)" - ((5) - (7) - (3 3) - (2 2 2) - (2 2 2) - (3 3 2) - (2 2 2) - (2 2 2) - (3 3 3) - (2 2 2 2) - (2 2 4 2) - (3 3 6 3) - (2 2 2 2 2) - (2 2 3 2 2) - (3 3 5 3 2) - (2 2 2 2 2 2) - (2 2 2 2 2 2) - (3 3 3 3 3 3) - (2 2 2 2 2 2) - (2 2 2 2 2 2) - (3 17 3 3) - (3 17 2 3) - (2 3 2 2) - (2 3 3 2) - (26 2 2) - (26 2 2) - (2 4) - (2 3) - (29) - (27)) - (() - () - (5) - (7) - (3 4) - (4 2 2) - (3 2 2) - (4 2 2) - (3 2 2) - (4 3 2 2) - (3 5 2 2) - (4 3 2 2 2) - (3 4 2 2 2) - (4 3 2 2 2) - (3 4 3 2 2) - (4 3 5 2 2) - (3 4 3 2 2 2) - (3 3 4 2 2 2) - (2 4 3 2 2 2) - (2 3 4 2 2 2) - (2 3 6 2 2 2) - (4 3 4 2 2 2) - (2 3 3 2 2 2) - (3 3 5 2 2) - (4 4 4 2 2) - (4 3 6 2) - (3 4 4 2) - (4 3 3 2) - (3 4 2) - (4 3 2) - (3 4 2) - (3 4 2) - (3 7) - (4 3) - (3 2) - (7) - (5) - () - () - ())) - ("19990118-FRA (7)" - (() - (3 3) - (1 2 2 1) - (1 2 2 1) - (1 12 1) - (1 14 1) - (1 16 1) - (1 20 1) - (6 6 6) - (4 1 1 4 1 1 4) - (4 1 1 4 1 1 4) - (5 6 5) - (22) - (10 9) - (10 9) - (11 10) - (11 10) - (7 2 2 6) - (8 3 7) - (9 1 8) - (9 8) - (16) - (12) - (8) - () - (1 1 4 4 1 1) - (2 2 1 1 1 1 1 1) - (1 2 1 3 1 1 1 1 1 1) - (1 1 1 1 1 2 2) - (1 1 4 4 1 1)) - (() - () - () - () - () - () - () - () - (8 5) - (1 11 1) - (1 13 1) - (1 14 1) - (1 16 1) - (1 4 11 5) - (5 2 11) - (4 11 5) - (4 2 5 6 1 1 1) - (5 7 5 1 1 1) - (14 5 1 1) - (9 2 1 4) - (9 2 3 5) - (9 2 1 4 1 1) - (5 7 5 1 1) - (4 2 6 5 5) - (4 5 5) - (5 2 11 5) - (1 4 11 1) - (1 16 1) - (1 14 1) - (1 13 1) - (1 11 1) - (8 5) - () - () - () - () - () - () - () - ())) - ("19990123aFRA (8)" - (() - () - (2) - (8) - (10) - (12 3) - (4 14 3) - (1 2 1 1 3) - (1 23) - (1 21) - (3 20) - (20) - (16) - (14) - (12) - (10) - (8) - (6) - (10) - () - () - (12 12) - (1 10 10 1) - (1 8 8 1) - (9 9) - (7 7) - (5 5) - (11 11) - () - ()) - (() - () - () - (2) - (1 1 1) - (2 1 1) - (3 5 1) - (1 2 7) - (1 1 7) - (2 1 7) - (2 1 7) - (4 7) - (6 5 1) - (1 6 3 1) - (2 7 2 1) - (3 8 1 1) - (4 9 1) - (4 11) - (4 11) - (5 11) - (5 11) - (4 11) - (4 11) - (4 9 1) - (3 8 1 1) - (2 7 2 1) - (1 6 3 1) - (6 5 1) - (4 7) - (4 7) - (3 7) - (3 7) - (3 7) - (3 5 1) - (2 2 1 1) - (1 1 1 1) - (2) - () - () - ())) - ("19990208bFRA (9)" - ((2 22) - (1 21) - (1 22) - (3 13 2 6) - (1 4 4 10 2 7) - (1 10 9 2 8) - (1 9 2 8) - (1 10 2 7) - (1 16 10 2 7) - (1 16 9 2 8) - (1 1 1 1 1 1 1 8 2 9) - (1 1 2 1 1 1 1 1 1 9 2 8) - (1 1 1 1 1 1 1 1 21) - (1 2 1 1 1 1 1 3 4 3) - (1 1 1 1 1 3 3 12 2) - (1 16 2 14 1) - (1 2 12 1) - (1 3 2) - (1 4 3) - (1 5 4) - (1 6 5) - (1 5 4) - (1 21) - (1 5 13) - (1 4 3 12) - (1 4 3 2) - (1 16 4 3 2) - (1 4 3 12) - (1 5 13) - (40)) - ((30) - (1 1 1) - (2 8 1 1) - (1 2 1 1 1 1) - (1 2 1 1 1 1) - (2 8 1 1) - (1 2 1 1 1) - (1 2 3 1 1 1) - (1 2 1 1 1) - (1 8 1 1) - (1 2 1 1 1) - (1 6 1 1 1) - (1 2 1 1 1) - (1 8 1 1) - (2 2 1 1 1) - (1 2 1 3 1 1) - (1 2 3 1 1) - (2 8 1 1) - (1 2 1) - (30) - (30) - (15 13) - (14 12) - (13 1 5 2) - (13 3 1 1 4 1) - (13 3 1 4 1) - (13 3 1 4 1) - (10 2 3 2 2) - (5 2 1 1 3 3 3) - (4 2 4 3 3 3) - (3 6 2 3 3 3) - (5 2 1 1 3 3 3) - (4 2 4 3 3 3) - (3 9 3 3 3) - (13 3 3 3) - (13 3 1 3 3) - (13 1 6 3) - (14 7 3) - (15 13) - (30))) - ("19990208cFRA (10)" - (() - () - (17 18) - (4 3 3 2 18) - (5 2 2 3 5 8 3) - (5 1 1 3 4 2 2 2) - (3 2 1 1 2 1 5 2 3) - (4 3 3 2 6 1 1 4) - (4 1 2 6 1 2 1 4) - (3 4 4 1 4 1 1 1 1 2) - (6 1 1 4 4 1 1 1 1 2) - (5 1 1 3 6 1 2 1 4) - (5 2 2 3 6 1 1 4) - (4 4 4 2 4 1 1 2) - (9 7 5 2 2 2 3) - (9 7 9 7) - () - (9 7 9 7) - (4 2 2 2 7 1 1 5) - (3 3 1 1 3 1 8 6) - (8 6 9 7) - (5 3 5 3) - (5 3 5 3) - (6 4 6 4) - (6 4 6 4) - (6 4 7 5) - (6 4 7 5) - (7 5 8 6) - () - ()) - (() - () - (14 11) - (14 11) - (14 11) - (4 2 6 2 8) - (1 3 4 2 1 9) - (2 2 2 3 1 2 5) - (2 1 1 3 1 2 1) - (3 1 1 4 2 1) - (1 3 6 3) - (1 1) - (1 3 6 3) - (3 1 1 4 2 1) - (2 1 1 3 1 2 1) - (2 2 2 3 1 2 5) - (1 3 4 2 1 9) - (4 2 6 2 8) - (14 11) - () - (14 11) - (14 11) - (14 11) - (14 11) - (3 3 2 2 11) - (2 2 2 1 4 5) - (3 2 2 4 3) - (4 1 1 2 1 2 1) - (4 1 2 2 1 2 1) - (3 1 1 1 1) - (3 1 1 1 1) - (4 1 2 2 1 2 1) - (4 1 1 2 1 2 1) - (3 2 2 4 3) - (2 2 2 1 4 5) - (3 3 2 2 11) - (14 11) - (14 11) - () - ())) - ("19990221aFRA (11)" - ((33) - (23 8) - (21 8) - (20 8) - (19 8) - (18 8) - (2 11 8) - (1 9 8) - (1 3 7 8) - (1 4 5 8) - (1 5 3 8) - (2 1 8) - (10 24) - (10 1 22) - (8 19) - (6 4 16) - (4 3 6 13) - (2 4 9 10) - (1 4 11 7) - (1 3 14 5) - (1 1 17 3) - (2 21) - (6 1 3 1 1 5) - (6 3 2 1 1 1 19) - (6 1 1 1 1 1 3 1 3 1 1 1) - (8 1 2 1 1 5 3 2 1 1 1 1) - (6 1 3 1 1 5 1 1 1 1 1 1) - (26 1 2 1 1 3) - (24 1 3 1 1 3) - (40)) - ((30) - (7 7 9) - (6 5 8) - (6 3 5 2 8) - (6 3 4 4 8) - (6 3 4 3 8) - (7 2 3 3 1 1 3) - (8 1 3 2 2 1 1 3) - (9 2 1 3 1 3) - (10 2 13) - (11 7 3) - (12 1 8 6) - (11 9 5) - (10 2 10 4) - (9 3 6 3) - (8 5 14) - (7 6 5 3) - (6 8 13) - (5 9 4 3) - (4 11 4 1 5) - (3 12 3 5) - (2 14 11) - (2 8 6 10) - (1 8 7 10) - (9 8 3 1 1) - (8 12 1 1 1) - (7 10 1 1 1) - (6 9 7) - (5 8 1 1) - (4 7 2 4) - (3 6 3 3) - (2 5 4 2) - (1 4 1 1) - (3 7) - (2 1 1) - (1 7) - (1 1 1) - (1 1 3) - (1 3) - (7))) - ("19990401-JOJ (12)" - ((40) - (40) - (12 24) - (9 21) - (7 4 19) - (6 10 18) - (5 5 5 17) - (4 3 4 16) - (3 3 6 3 15) - (2 3 3 3 3 14) - (2 2 2 2 2 5 7) - (2 2 3 5 2 2 4 7) - (1 2 2 2 2 1 2 5 5 1) - (1 1 2 2 2 2 2 4 5 1) - (2 2 2 3 1 2 2 4 5 1) - (2 1 1 3 1 2 2 5 3 2) - (2 1 1 3 2 2 2 5 3 2) - (2 2 2 5 2 2 7 1 3) - (1 2 2 2 2 2 6 2) - (1 2 3 3 3 3 5 4 1) - (2 2 3 7 3 3 3 2 1) - (2 2 3 2 3 2 8 1) - (2 3 4 4 9 1) - (3 3 9 12 2) - (4 4 4 10 4) - (5 5 11 7) - (6 19 10) - (8 16 11) - (9 13 13) - (10 15)) - ((14 12) - (12 10) - (9 4 7) - (8 10 6) - (7 4 5 5) - (6 3 3 4) - (5 3 7 3 3) - (4 3 4 4 3 3) - (4 2 3 3 2 2) - (3 2 3 4 3 3 1) - (3 2 1 2 2 2 3) - (3 2 2 2 2 2 4) - (2 2 1 2 2 2 2 3) - (2 2 1 1 4 2 2 3) - (2 2 1 1 4 2 2 3) - (2 2 1 1 1 1 2 2 3) - (3 2 2 2 1 1 2 3) - (3 2 1 2 2 2 1 3) - (3 3 2 4 2 2 4) - (4 2 2 2 2 4) - (4 3 3 3 2 4) - (5 3 5 3 5) - (6 3 2 3 5) - (7 4 4 6) - (8 9 5) - (9 4 1 5 1) - (11 3 4 1) - (13 4 4 2) - (21 4 2) - (20 3 3) - (20 4 4) - (10 7 3 4) - (12 4 4 4) - (15 1 5 5) - (17 5 5) - (18 1 2 5) - (17 4 6) - (15 1 2 6) - (12 4 7) - (10 18))) - ("19990525aKHO (13)" - ((2 3 1 1 2) - (9 2 3 3 4) - (4 21 1) - (5 2 1 5 2 2 2 2) - (3 2 2 4) - (4) - (2) - () - (7) - (12 5) - (12 3) - (2 2 3) - (2 2 3) - (2 2 3) - (2 2 3) - (2 2 3) - (2 2 3) - (24) - (2 4 9 3 2) - (2 4 10 2 1) - (2 2 4 15 1) - (3 3 2 1 1) - (1 2 23 1) - (2 8 3 16 1) - (3 2 2 4 16) - (11 1 2 2 9 3) - (2 5 2 1 1 1 1 1 2 3) - (1 1 3 1 4 1 1 7 1 1 2) - (1 1 1 1 1 2 2 1 1 3) - (1 1 4 2 4)) - ((8) - (2 4 1) - (3 2 2 1 1) - (5 2 2 1) - (5 1 3) - (4 1 4) - (1 1 1 3) - (3 1 2 1) - (4 1 1 1 1) - (4 4 1) - (2 5) - (2 2 1) - (2 2 1) - (2 19) - (1 16) - (2 2 1 3 4) - (4 2 4 1 2 2) - (5 2 4 1 1 1) - (3 2 4 1 1 1) - (2 2 4 1 2 2) - (2 2 1 3 4) - (3 16) - (4 12 6) - (1 4 4 1) - (2 4 4 1) - (4 4 4 1) - (4 4 4 1) - (2 4 4 1) - (2 4 4 1) - (3 1 4 5) - (2 1 2 4 2) - (2 11 1 3 1 1) - (4 11 1 3 1 1) - (4 11 1 4 2) - (2 2 1 2 5) - (1 10) - (2 1 4) - (5 3) - (2) - (1))) - ("19990527aDRA (14)" - ((11 27) - (10 2 25) - (9 2 2 23) - (8 8 21) - (7 5 5 19) - (6 11 19) - (6 1 4 3 1 10 7) - (6 3 5 2 8 2 6) - (6 5 2 3 6 5 5) - (6 2 4 4 4 4 3 4) - (6 5 2 4 2 11 3) - (6 2 5 2 1 2 4 4 3 2) - (6 5 2 4 2 13 1) - (6 2 5 4 2 1 4 6 1) - (6 4 2 3 3 2 8 1 1) - (8 5 2 4 3 5 3 1) - (10 3 1 5 1 2 2 5 1) - (12 1 6 5 5 1 1) - (14 7 6 1 5 1) - (23 6 7 1) - (1 1 2 1 1 1 2 2 3 3 1) - (1 3 2 1 2 1 2 1 4 4 5 1 1) - (1 3 2 1 2 3 3 1 5 1) - (1 3 1 2 2 1 6 4 2 5 2) - (1 1 2 1 2 1 4 5 1 3 4) - (29 1 6) - (30 8) - (40) - (40) - (40)) - ((30) - (20 5) - (20 3 5) - (20 3 5) - (30) - (20 5) - (5 5 1 7) - (4 8 5 1 6) - (3 2 8 4 2 5) - (2 3 2 1 1 1 14) - (1 5 8 4 5) - (6 8 3 1 7) - (1 5 1 1 1 2 2 1 7) - (1 2 3 8 2 5) - (1 4 2 8 11) - (2 6 1 5) - (2 5 8 2 1 7) - (3 3 8 3 1 7) - (3 2 4 3 4 8) - (4 8 15) - (4 6 1 5) - (20 1 1 5) - (20 1 5) - (10 10) - (10 1 7 9) - (9 3 2 4 8) - (9 4 7 7) - (8 6 4 2 6) - (8 2 4 7 5) - (7 9 7 4) - (7 5 3 3) - (6 2 6 9 3) - (6 9 1 3 2 4) - (7 3 3 9 4) - (8 6 4 3 5) - (9 4 9 5) - (10 3 2 3 1 6) - (11 1 9 6) - (12 7) - (30))) - ("19990527eDRA (15)" - ((16 11 11) - (17 9 12) - (18 7 13) - (14 4) - (12 6 3 8 4) - (10 19 2 4) - (8 19 4 4) - (7 6 4) - (7 20 6 4) - (7 20 6 4) - (7 2 4 6 4) - (7 2 12 1 1 6 4) - (7 2 3 3 1 1 6 4) - (7 2 2 3 4 6 4) - (7 2 1 5 3 4 6 4) - (7 2 1 1 1 1 3 1 1 6 4) - (7 2 1 2 2 3 1 1 6 4) - (7 2 1 5 4 4 6 4) - (7 2 1 1 1 4 4 6 4) - (7 2 2 3 5 1 1 6 4) - (7 2 1 1 2 1 1 6 4) - (7 2 9 1 4 6 4) - (7 2 10 1 1 1 6 4) - (7 2 2 5 1 1 1 1 6 4) - (7 2 4 6 4) - (7 20 5 4) - (7 20 3 6) - (7 20 1 8) - (7 10) - (40)) - ((30) - (30) - (30) - (30) - (30) - (30) - (30) - (7 1) - (6 20 1) - (6 20 1) - (5 1 2 3 1) - (5 1 2 9 2 3 1) - (4 2 2 3 1 3 3 1) - (4 2 2 2 5 3 3 1) - (3 3 2 1 1 2 1 3 3 1) - (3 3 2 1 2 1 1 3 3 1) - (2 3 2 1 1 2 1 3 3 1) - (1 1 3 2 1 5 4 3 1) - (2 3 2 1 1 3 3 1) - (3 3 2 1 3 2 3 1) - (3 2 2 9 3 3 1) - (3 3 2 10 3 1) - (3 3 2 13 3 1) - (3 3 2 3 1) - (3 2 20 1) - (3 3 3 2 2 1 4 1) - (2 3 3 2 2 1 4 1) - (1 1 3 20 1) - (2 3 1) - (3 2 21 1) - (3 2 20 2) - (3 1 21 2) - (3 1 20 3) - (3 21 3) - (3 20 4) - (3 4) - (30) - (30) - (30) - (30))) - ("19990613-FRA (16)" - ((40) - (40) - (8 2 23) - (18 18) - (22 14) - (27 12) - (27 12) - (3 1 11) - (3 1 1 10) - (3 1 2 9) - (3 1 8) - (3 1 3 8) - (3 1 1 1 8) - (3 1 3 4) - (3 1 7 4) - (3 7 4) - (3 1 7 4) - (3 4) - (5 13 6 7) - (4 3 11 3 4 3 6) - (4 3 11 3 4 3 6) - (5 13 6 7) - (40) - (1 4 2 2) - (40) - (40) - (40) - (40) - (40) - (40)) - ((30) - (23 6) - (23 6) - (7 5 6) - (7 1 2 6) - (7 2 1 6) - (7 2 1 6) - (7 2 1 6) - (2 4 1 2 6) - (2 4 5 6) - (2 4 12) - (2 4 12) - (7 12) - (7 12) - (2 4 5 6) - (2 4 5 6) - (2 4 5 6) - (7 5 6) - (3 3 5 6) - (3 3 5 6) - (3 3 1 2 6) - (3 3 2 1 6) - (4 2 2 1 6) - (4 2 2 8) - (4 2 1 9) - (4 2 5 6) - (15 1 5 6) - (5 5 6) - (7 2 6 5 6) - (8 1 1 4 1 2 6) - (9 6 2 1 6) - (10 3 2 1 6) - (13 3 2 1 6) - (13 3 1 9) - (13 3 12) - (13 5 6) - (23 6) - (23 6) - (23 6) - (23 6))) - ("19990714aNEP (17)" - ((33) - (2) - (1 1 3 3 1 1 1 1 2 2 2 3) - (1 1 1 1 1 1 1 1 1 1 1 1 1 3) - (1 1 3 1 1 1 1 1 1 1 1 2 3) - (1 1 1 3 3 3 1 1 1 2) - (1 1 2) - (26 2) - (2 2) - (2 3) - (2 3) - (2 6) - (1 6) - (1 6) - (2 6) - (2 7) - (2 7) - (2 7) - (2 8) - (2 8) - (2 8) - (2 8) - (3 6) - (2 4) - (2 3) - (2 2) - (2 7) - (2 11) - (5 13) - (4 14)) - ((1 3 4) - (1 1 2 2) - (1 3 2 2) - (1 2 2) - (1 4 2 2) - (1 1 1 1 2) - (1 4 1 2) - (1 1 2) - (1 4 1 2) - (1 1 1 1 1) - (1 1 1 1 2) - (1 1 2) - (1 4 1 2) - (1 1 1 2) - (1 4 1 2) - (1 1 2) - (1 4 1 1) - (1 1 1 1) - (1 4 1 1) - (1 1 2) - (1 4 1 1) - (1 1 1 1) - (1 2 1 1) - (1 1 1) - (1 6 1) - (1 1 2) - (1 1 3) - (1 1 3) - (1 1 5 3) - (1 4 10 4) - (1 3 19) - (3 21) - (2 20 4) - (20 4) - (3 11 4) - (2 11 4) - (1 3) - (2) - () - ())) - ("19990729-DAH (18)" - ((16 16) - (11 6 11) - (9 16 9) - (7 7 9 7) - (5 4 3 4 5) - (4 4 3 4 4) - (3 3 3 3 3 3) - (2 4 3 7 4 2) - (1 3 3 11 3 1) - (4 3 7 3 4) - (3 3 7 3 3) - (3 3 7 3 3) - (3 3 8 3 3) - (3 3 9 3 3) - (3 3 9 3 3) - (3 3 10 3 3) - (3 3 9 3 3) - (3 3 8 3 3) - (3 3 8 3 3) - (3 3 7 3 3) - (4 3 7 3 4) - (1 3 11 3 3 1) - (2 4 7 3 4 2) - (3 3 3 3 3 3) - (4 4 3 4 4) - (5 4 3 4 5) - (7 9 7 7) - (9 15 9) - (12 6 11) - (16 16)) - ((9 6 9) - (8 10 8) - (7 12 7) - (6 4 4 6) - (5 3 3 5) - (4 4 4 4) - (4 3 3 4) - (3 3 3 3) - (3 2 6 2 3) - (2 2 10 2 2) - (2 2 12 2 2) - (1 2 4 4 2 2) - (1 2 2 2 1 1) - (1 2 2 2 2 1) - (1 2 1 2 2 1) - (1 2 2 4 3 2 1) - (2 1 7 4 2) - (2 2 15 3) - (2 1 15 4) - (2 2 15 1 2) - (2 1 15 2 2) - (4 15 1 2) - (3 15 2 2) - (2 4 7 1 2) - (1 2 3 4 2 2 1) - (1 2 2 1 2 1) - (1 2 2 2 2 1) - (1 2 2 2 2 1) - (1 2 4 4 2 1) - (2 2 12 2 2) - (2 2 10 2 2) - (3 2 6 2 3) - (3 3 3 3) - (4 3 3 4) - (4 4 4 4) - (5 3 3 5) - (6 4 4 6) - (7 12 7) - (8 10 8) - (9 6 9))) - ("19990924-KHO (19)" - (() - (37) - (31) - (24) - (17) - (14) - (21 13) - (23 4) - (24 3) - (8 8 3) - (9 10 2) - (10 13 2) - (11 3 2) - (12 3 2) - (13 3 2) - (14 5 2 3) - (15 6 1 3) - (16 6 4) - (22 7) - (19 10) - (16 13) - (13 16) - (10 19) - (7 22) - (4 25) - (1 28) - (31) - (34) - (37) - ()) - (() - (20) - (1 19 1) - (1 19 1) - (1 19 1) - (1 18 2) - (1 18 2) - (1 18 2) - (2 17 3) - (2 3 13 3) - (2 3 12 3) - (2 3 10 4) - (2 3 9 4) - (2 3 8 4) - (2 3 6 5) - (3 3 5 5) - (3 3 4 5) - (3 3 2 6) - (3 3 2 6) - (3 3 2 6) - (3 3 2 7) - (3 3 2 7) - (4 2 1 2 7) - (4 2 1 2 8) - (4 1 1 2 8) - (5 2 2 8) - (6 3 2 9) - (6 3 2 9) - (6 3 2 9) - (6 3 1 10) - (6 3 1 10) - (6 3 10) - (6 6 11) - (6 8 11) - (6 6 11) - (7 12) - (9 14) - (28) - (28) - ())) - ("19990928-BBA (20)" - ((3 2) - (1 2) - (3) - (3) - (1 2 27) - (1 1 1 2 3 3 2 2 1) - (3 2 1 2 1 1 3 2) - (1 1 2 1 1 1 3 3) - (1 1 3 3 1 1 3 1 3) - (3 1 5 2 1 1 3 2 3) - (5 8 8 1 5) - (3 1 5 1 4 1 5) - (1 1 3 1 1 2 1 5) - (1 1 1 3 1 1 1 2 3) - (1 1 1 1 2 1 3) - (1 1 1 1 2 3) - (1 3 1 1 1 1 3) - (1 1 1 1 1 1 3) - (1 1 1 1 1 1 1 1 3) - (1 1 1 1 1 1 1 1 1 3) - (2 1 1 3 15) - (2 2 5 2 1 5) - (1 1 1 2 3 1 1 4) - (1 5 1 2 3 3 2) - (1 3 1 3 2 1 1 1 1) - (1 1 1 1 1 2 1 3 1) - (1 6 1 7 1 1) - (1 1 1 2 3 1 2 2) - (1 7 1 13) - (1 2 3 2 4 2 1)) - ((1 1) - (7 1) - (1 2 1 3) - (4 5) - (2 3 3) - (1 1 1) - () - (26) - (1 1 2) - (1 3 1 7) - (1 5 1 1 2 1 2) - (1 7 11) - (1 5 1 1 1) - (2 3 1 1 5 1) - (4 1 1 2 4) - (1 4 2 1 2 1 3) - (2 5 3 3 3 1) - (3 1 1 1 1 2 1 1) - (2 1 2 1 1 1 2 3) - (1 1 1 1 1 3 1) - (2 1 2 7 1) - (3 1 9 2 5) - (2 1 3 1 1 1 1) - (1 11 1 3 1 2) - (2 3 2 2 1 1 2) - (5 6 2 2 2) - (1 2 2 2 1 1 2) - (3 3 3 1 3 3) - (2 2 2 1 1 2) - (1 5 2 1 2) - (1 3 3 3 2) - (1 16 1 1) - (1 18 2) - (26) - () - () - () - () - () - ())) - ("19991011bLLO (21)" - ((9) - (4 2 4 3) - (6 2 5 2) - (5 12 4) - (1 13 7) - (3 3 5 3 4 2) - (4 4 2 4 1 5) - (1 4 8 10) - (2 7 4 1 4 1) - (7 4 1 6 3) - (4 4 8 5 1) - (2 4 1 3 4 4 1 2) - (11 9 5) - (3 2 6 1 5 1) - (3 4 1 4 5 2 1) - (1 5 5 3 1 2 1) - (7 2 8) - (5 1 1 1 3) - (4 1 1) - (4 1 1) - (3 1 1) - (3 1 1) - (3 1 1) - (3 1 1) - (3 1 1 10) - (3 1 1 2 2) - (4 1 1 5 4 5) - (5 6 1 1 2 1 1) - (5 1 4 1) - (8 1 1 2 2 1 1)) - ((7 3 1) - (1 2 7) - (7 2 3 1) - (4 2 4 2 1) - (5 6 2 4) - (2 6 19) - (5 22) - (3 3 1 1 16) - (1 6 3 1 4 3) - (2 3 4 2 3 1) - (1 8 6) - (8 3 1 1) - (2 3 9 1) - (5 2 1 5) - (15 1 1) - (1 2 2 1 3 2 11) - (8 5 2 1) - (5 7 3 1) - (1 2 1 2 3 12) - (7 6 1) - (4 3 4 1) - (10 4) - (2 3 4 3 1) - (3 1 1 1 2 2 1) - (8 2 1 1 1) - (2 2 2 2 1) - (1 2 1 1 1) - (2 1) - (2 1) - (3 2) - (1 3) - (1 3) - (3 2) - (2 1) - (1) - (1 1) - (2 1) - (1 1) - (2 1) - (1))))) - ("Kajitani 40x35" - "k40x35" - (("19981012-TAB (1)" - ((12 13 13) - (9 10) - (12 13 13) - (9 10) - (13 9 14) - (12 13 13) - (12 13 13) - (11 15 12) - (11 11 12) - (11 5 12) - (11 1 12) - (11 12) - (12 13) - (13 14) - (14 15) - (16 17) - (18 19) - (18 1 19) - (18 19) - (16 3 17) - (14 3 3 15) - (13 11 14) - (12 6 6 13) - (11 7 7 12) - (11 6 6 12) - (11 5 5 12) - (11 4 4 12) - (11 3 3 12) - (12 1 1 13) - (12 13) - (13 14) - (9 10) - (12 13 13) - (9 10) - (12 13 13)) - ((35) - (35) - (35) - (35) - (35) - (35) - (35) - (35) - (35) - (1 1 27 1 1) - (1 1 27 1 1) - (1 1 3 11 3 1 1) - (1 1 9 5 1) - (1 1 3 7 7 1 1) - (1 1 4 5 7 1 1) - (1 1 5 5 6 1 1) - (1 1 5 3 6 1 1) - (1 1 6 3 5 1 1) - (1 1 6 5 1 1) - (1 1 7 1 1 1 1 1) - (1 1 6 5 1 1) - (1 1 6 3 5 1 1) - (1 1 5 3 6 1 1) - (1 1 5 5 6 1 1) - (1 1 4 5 7 1 1) - (1 1 3 7 7 1 1) - (1 1 9 5 1) - (1 1 3 11 3 1 1) - (1 1 27 1 1) - (1 1 27 1 1) - (35) - (35) - (35) - (35) - (35) - (35) - (35) - (35) - (35) - (35))) - ("19981216-JTR (2)" - ((40) - (14 10 14) - (3 7 8 7 3) - (2 1 1 4 8 4 2 2) - (1 2 4 1 4 6 4 5 1) - (2 1 4 4 4 2 1 1) - (3 2 2 1 3 4 3 1 2 2 3) - (2 1 2 3 1 3 2 3 1 1 1 2 1) - (1 2 3 1 2 2 2 1 3 1 2 1) - (2 3 2 2 1 1 2 1 1 2 2 2 2) - (1 1 1 1 1 2 1 1 1 1 1 1 1 1 1) - (2 6 1 1 1 1 6 1 2) - (1 1 2 1 3 1 1 1 1 1 2 1) - (1 1 4 2 1 2 2 6 1 1) - (2 2 1 1 4 2 1 3 1 1 2) - (3 3 3 1 2 1 3 2 3) - (4 2 1 3 2 5 3 4) - (5 2 7 2 1 3 3 5) - (6 2 2 2 6) - (5 7 2 7 5) - (5 5 1 2 1 5 5) - (5 2 1 1 1 2 1 1 5) - (4 1 1 1 5 2 6 1 2 4) - (4 1 4 1 1 2 1 1 4 4) - (4 2 1 1 1 1 2 1 1 1 3 4) - (4 1 1 2 1 1 2 2 1 2 1 1 4) - (4 1 1 2 1 2 2 1 2 1 4) - (4 2 1 1 1 1 1 1 2 1 2 4) - (5 3 1 1 2 2 1 1 2 5) - (6 1 1 1 8 1 2 1 6) - (7 5 8 1 7) - (8 10 8) - (40) - (40) - (40)) - ((5 23) - (4 5 21) - (3 1 2 1 2 20) - (2 3 2 2 19) - (2 1 1 1 1 1 5 7) - (2 1 3 1 1 1 1 3 6) - (2 2 4 1 3 2 2 1 5) - (2 1 2 1 1 3 3 3 4) - (3 1 3 1 2 1 2 2 3) - (3 2 1 5 1 1 2 3 1 3) - (3 1 3 1 1 1 1 1 1 2 1 1 3) - (4 1 2 2 1 1 1 1 3 2 3) - (5 1 2 2 2 1 1 2 1 3) - (6 1 2 1 1 1 1 6 1 3) - (1 5 1 1 3 1 1 1 1 3) - (2 4 1 1 2 2 2 3 3 4) - (4 4 1 1 1 2 1 1 2 6) - (5 3 1 2 1 1 7) - (7 2 8) - (10 13 6) - (10 13 6) - (7 2 8) - (5 3 3 1 1 1 7) - (4 4 1 2 1 1 2 2 6) - (2 4 1 1 2 2 2 3 3 4) - (1 5 1 1 1 1 1 1 1 1 3) - (6 1 1 1 2 1 6 3) - (5 1 2 3 1 1 1 3 3) - (4 2 2 1 1 1 1 3 2 3) - (3 1 1 1 1 1 1 2 2 3) - (3 2 1 1 4 1 1 1 3 3) - (3 1 5 1 3 1 1 1 2 3) - (2 1 1 1 1 2 2 1 2 4) - (2 2 2 1 1 1 1 1 1 1 1 5) - (2 3 1 3 1 1 1 2 6) - (2 1 1 1 3 5 7) - (2 1 1 1 2 19) - (3 2 1 1 20) - (4 4 21) - (5 23))) - ("19990221-JOJ (3)" - ((40) - (5 33) - (3 33) - (2 6) - (2 5) - (2 4) - (2 5 2 3) - (2 6 4 2) - (2 2 2 6 2) - (2 2 2 2 2 3) - (2 6 2 2 4) - (2 5 6 5) - (2 2 6 5) - (2 2 2 2 4) - (2 2 2 2 3) - (2 2 2 2 2) - (2 2) - (2 3) - (2 4) - (2 5) - (40) - (40) - (2 1 1 3 2 1 2 2 3 1) - (1 2 5 1 2 5 2 2 1 2 1 3) - (3 4 4 3 2 2 1 1 1 1 1) - (1 2 6 6 2 2 2 1 2 1 3) - (2 1 3 3 3 3 2 3 1) - (40) - (40) - (10 1 2 2 1 9) - (9 5 2 2 2 2 12) - (10 3 2 2 2 10) - (12 2 2 2 2 2 12) - (9 3 2 2 2 2 9) - (40)) - ((22 8) - (24 10) - (3 3 1 9) - (2 2 3 8) - (2 15) - (1 2 8) - (1 2 1 1 8) - (3 2 1 1 8) - (3 2 3 8) - (3 10 2 1) - (3 2 6 1 1 1) - (3 3 5 1 1 1) - (3 4 2 2 2) - (3 10 3 11) - (3 10 2 6 5) - (3 2 2 9 1) - (3 2 2 3 2 2 5) - (3 6 2 1 1 8) - (3 4 2 1 1 3 1) - (3 2 2 3 1 3) - (3 9 1 3) - (3 8 2 7 1) - (3 9 2 8) - (3 3 2 2 6 5) - (3 3 2 9 1) - (3 9 3 3 5) - (3 8 2 3 8) - (3 2 3 2 1) - (3 3 3 1 1 1) - (3 9 1 1 1) - (3 2 2 3 1) - (3 3 11) - (3 4 10) - (3 5 9) - (4 2 8) - (5 2 16) - (6 4 4 8) - (7 6 5 1 1 8) - (22 1 1 8) - (22 3 8))) - ("19990420-DRA (4)" - ((40) - (40) - (40) - (6 2 30) - (6 29) - (5 1 28) - (4 1 2 27) - (3 3 26) - (2 5 25) - (1 5 24) - (1 5 5 23) - (2 7 5 6 4 3) - (11 5 2 1 2) - (11 6 4 1) - (11 4 2 1) - (11 1 1 1 1 1) - (11 1 1 1) - (10 1 2) - (9 1 2) - (7 2 1 1) - (6 4 3 1 1) - (5 2 10 4 1) - (4 5 11 5 1) - (4 5 10 1 3 2) - (5 4 11 2 5) - (6 3 11 4 5) - (7 3 11 5 5) - (7 2 11 5 6) - (8 2 11 5 6) - (9 2 11 5 6) - (12 11 4 6) - (12 11 4 5) - (11 13 3 6) - (40) - (40)) - ((35) - (9 24) - (8 23) - (7 24) - (6 12 11) - (5 11 10) - (3 10 9) - (4 1 9 2 7) - (4 9 3 6) - (3 1 7 6 5) - (4 5 5 14) - (5 5 10 2) - (6 5 1 2) - (7 6 2) - (8 6 7 3) - (9 6 13) - (10 4 14) - (11 4 14) - (11 14) - (11 14) - (11 14) - (12 14) - (12 15) - (12 15) - (12 15) - (12 3 4) - (12 3) - (11 4 2) - (11 11) - (11 12) - (11 10) - (12 7 2) - (13 2) - (13 3 2) - (12 1 5 4 3) - (11 1 20) - (11 3 14) - (12 4 2 1 11) - (13 2 12) - (35))))) - ("Kajitani 40x40" - "k40x40" - (("19980410-KVL (1)" - ((40) - (7 14 6 4) - (6 5 3 15 3) - (5 1 4 17 2) - (2 2 1 5 8 8 2) - (5 7 17 2) - (4 17 3) - (2 11 16 4) - (1 2 1 1 1 2 9 12) - (1 2 1 1 1 2 22) - (2 11 6 8 7) - (4 25) - (8 29) - (8 27) - (9 5 5 11 2) - (3 5 15 8) - (10 23) - (10 21) - (11 6 9 3) - (6 4 18) - (12 8 8) - (2 9 15) - (13 14) - (13 12) - (14 2 11) - (14 3 2 9) - (15 2 8) - (15 1 4 6) - (16 5 3 5) - (7 8 1 3) - (1 5 8 1 2) - (2 7 2) - (3 10) - (3 3 10) - (3 3 32) - () - () - () - () - ()) - ((35) - (8 20 4) - (4 2 2 10 9 3) - (7 2 4 15) - (6 1 1 19 2) - (3 1 1 19 2) - (2 3 4 7 11 2) - (1 1 1 1 1 17) - (1 1 2 1 1 16 3) - (1 4 4 15 3) - (1 4 1 1 17) - (1 4 1 1 1 15) - (2 3 4 1 13) - (3 1 1 2 11) - (6 1 1 3 9) - (7 2 4 7) - (2 4 2 5 5) - (8 7 3) - (17 2 1) - (14 3 1 1) - (19 1 1 1 1) - (19 1 5 1) - (4 15 4 1) - (10 10 2 1) - (21 2 2 1) - (14 7 2 1 1) - (1 16 4 1 1) - (8 14 1) - (24 1) - (25 1) - (25 1) - (3 9 4 5 1) - (2 3 16 1) - (1 19 1) - (1 20 1) - (1 21 1) - (2 11 10 1) - (3 8 15 1) - (31 1) - (31 1))) - ("19980512-SDN (2)" - ((18) - (26) - (20 2) - (2 9 2) - (1 1 2) - (2 2 2) - (2 2 10 2) - (1 1 18 2) - (2 18 3 2) - (13 2 1 2) - (2 1 2) - (2 1 2) - (2 1 2) - (2 1 2) - (4 1 2) - (11 1 2) - (18 1 1 2) - (2 8 1 1 2) - (1 1 1 1 2) - (2 2 1 1 2) - (2 2 8 2) - (1 1 16 2) - (2 19 2) - (13 2) - (2) - (2) - (2) - (2) - (2) - (13) - (24) - (22 2) - (2 8 2) - (1 1 2) - (2 2 2) - (2 2 11) - (1 1 22) - (2 21) - (13) - ()) - (() - (2) - (6) - (2 2 2) - (1 1 6 2) - (1 1 2 2 6) - (2 2 1 1 2 2) - (8 1 1 1 1) - (2 2 2 2 2 1 1) - (2 2 8 2 2) - (2 2 2 2 2 8) - (2 2 2 2 2 2 2) - (2 2 2 2 2 2) - (2 2 2 2 2 2) - (3 2 2 2 2 2) - (2 3 3 2 2 2) - (2 2 2 2 3 2) - (2 2 2 3 2 2) - (2 2 2 2 2 3) - (2 2 2 2 2 2) - (2 2 2 2 2 2) - (2 2 2 2 2 2) - (3 2 3 2 2 2) - (2 3 2 2 2 2) - (2 2 2 2 2 2) - (2 2 10 2 2) - (2 2 2 3 2 2) - (2 2 2 2 3 2) - (2 2 2 2 2 2) - (2 2 2 2 2 3) - (2 4 2 2 2) - (2 3 2 2 2) - (2 16 2 2) - (2 2 2) - (2 2 2) - (2 2 2) - (2 2 2) - (2 2 2) - (37) - (37))) - ("19980716dGAS (3)" - ((40) - (18 18) - (17 17) - (16 4 16) - (15 6 15) - (14 8 14) - (13 10 13) - (12 12 12) - (11 5 5 11) - (10 5 5 10) - (9 6 6 9) - (8 7 7 8) - (7 8 8 7) - (6 1 1 10 6) - (5 2 4 15 5) - (4 3 3 15 4) - (3 4 1 1 16 3) - (2 5 1 2 5 8 2) - (1 6 3 5 8 1) - (1 4 7 1) - (1 6 9 8 1) - (1 7 8 9 1) - (2 6 19 2) - (3 5 1 17 3) - (4 4 2 16 4) - (5 3 2 5 8 5) - (6 2 2 4 6 6) - (7 1 3 4 4 7) - (8 2 2 2 8) - (9 2 2 1 9) - (10 16 10) - (11 14 11) - (12 12 12) - (13 10 13) - (14 8 14) - (15 6 15) - (16 4 16) - (17 17) - (18 18) - (40)) - ((40) - (18 18) - (17 17) - (16 4 16) - (15 6 15) - (14 8 14) - (13 10 13) - (12 5 6 12) - (11 6 7 11) - (10 1 7 10) - (9 2 4 9) - (8 3 2 8) - (7 4 2 1 1 7) - (6 5 1 9 6) - (5 6 9 5) - (4 7 1 1 4 4) - (3 8 2 2 5 3) - (2 5 1 3 3 1 6 2) - (1 5 1 17 1) - (1 5 5 17 1) - (1 5 5 8 7 1) - (1 5 5 7 7 1) - (2 5 6 6 6 2) - (3 14 5 5 3) - (4 11 3 4 4) - (5 10 4 3 5) - (6 9 5 2 6) - (7 8 6 1 7) - (8 8 9 8) - (9 8 9 9) - (10 16 10) - (11 14 11) - (12 12 12) - (13 10 13) - (14 8 14) - (15 6 15) - (16 4 16) - (17 17) - (18 18) - (40))) - ("19980828-GOS (4)" - (() - (20) - (22) - (24) - (26) - (28) - (30) - (32) - (34) - (36) - (38) - (4 3 3 4 4) - (3 2 2 3 3) - (2 1 1 2 2 2) - (2 1 3 3 3 2 3 2) - (2 3 3 2 5 1 3 2) - (2 8 2 5 1 3 2) - (2 7 2 5 1 2 2) - (2 5 2 5 1 3) - (2 5 2 5 1 4) - (3 4 2 5 1 6) - (4 3 2 5 1 6) - (6 3 2 5 1 6) - (7 3 2 5 1 6) - (2 3 3 2 5 1 6) - (2 1 3 3 3 2 6) - (2 3 3 2 6) - (3 4 4 3 6) - (4 5 5 4 6) - (38) - (36) - (34) - (32) - (30) - (28) - (26) - (24) - (22) - (20) - ()) - (() - (20) - (22) - (5 4 5) - (5 3 5) - (5 2 3 5) - (6 4 4 6) - (7 3 2 7) - (9 4 9) - (11 5 11) - (38) - (10 25) - (10 25) - (10 10) - (10 10) - (10 10) - (10 25) - (10 25) - (14 14) - (12 12) - (11 11) - (10 10 10) - (10 12 10) - (10 12 10) - (10 12 10) - (10 10 10) - (11 11) - (12 12) - (14 14) - (38) - (9 9) - (8 8) - (7 5 7) - (6 5 15) - (5 3 14) - (5 14) - (5 14) - (22) - (20) - ())) - ("19980926-JON (5)" - ((15 19) - (16 3 17) - (18 3 16) - (7 6 3 4 6) - (5 6 3 3 3 5 4) - (4 2 7 1 3 1 4 3 3) - (3 2 4 5 2 4 3 2) - (3 2 4 5 2 6 4 3 1) - (2 2 4 5 3 7 3 2 1) - (1 2 4 5 3 8 4 3) - (1 2 4 3 6 5 3 4 2) - (2 3 3 6 3 2 5 1) - (2 3 2 8 7 1) - (2 6 6 6 2) - (2 5 4 5 2) - (1 5 2 5 1) - (1 34 1) - (1 4 4 19 4 1) - (1 4 4 6 7 3 4 1) - (6 3 6 6 10) - (1 3 4 6 6 3 4 1) - (1 3 4 5 4 4 3 2) - (1 4 4 4 4 3 4 2) - (2 3 4 3 7 4 2) - (2 8 3 6 5 2) - (2 2 8 8 1 3) - (1 2 24 5) - (2 1 22 4) - (2 1 18 4) - (1 4 3 3 4 1) - (1 4 3 3 4 1) - (2 5 3 3 5 2) - (2 5 3 5 2) - (3 5 3 5 3) - (4 5 3 5 4) - (5 25 5) - (7 22 6) - (8 17 8) - (9 10) - (11 4 11)) - ((11 11) - (9 13 9) - (8 5 1 7 7) - (6 5 8 5 6) - (5 3 14 4 5) - (4 2 24 4) - (4 2 12 3 5 4) - (3 2 10 2 2 4 3) - (3 1 5 2 11 4 2) - (3 6 3 12 4 1) - (3 4 3 12 3 1) - (3 3 4 3 7 3) - (3 2 4 1 3 4 3) - (4 5 16 3) - (4 6 16 3) - (3 7 9 6 3) - (3 2 3 7 3 3) - (3 1 6 5 3 3) - (1 3 8 3 3 6 1) - (2 11 3 6 1) - (5 7 3 6 1) - (1 4 4 3 3 3 3 1) - (1 3 7 5 3 3) - (2 6 7 6 3) - (6 5 9 6 3) - (5 5 16 3) - (5 4 13 3) - (4 1 3 5 6 3) - (3 2 3 2 8 2) - (3 4 3 12 3 1) - (3 6 2 8 3 4 2) - (3 1 9 6 3 4 2) - (3 2 10 1 4 5 3) - (3 3 16 5 3) - (4 3 24 4) - (4 4 14 7 5) - (5 4 6 7 6) - (6 6 1 9 7) - (7 14 9) - (9 11))) - ("19981120-VAL (6)" - ((8 7) - (10 2 2 2 2 2 2 2 8) - (8 1 1 1 1 1 1 1 1 7) - (8 7) - (8 7) - (40) - (10 3 3 3 3 3 9) - (9 1 1 1 1 1 7) - (8 1 1 1 1 1 1 1 1 1 6) - (7 3 3 3 3 3 3 5) - (7 1 1 1 1 1 1 1 1 1 5) - (7 3 3 3 4) - (6 1 1 1 4) - (6 3) - (6 2) - (5 2) - (7 2 2 2 2 2 2 2 2 2 2 2) - (5 1 1 1 1 1 1 1 1 1 1 1 1) - (5 1) - (5 1) - (5 1 2) - (5 1 1 2 3) - (5 2 2 8) - (6 4 4 8) - (6 3 2 2 3 8) - (6 3 1 1 3 8) - (7 4 4 8) - (7 1 8) - (7 4 4 8) - (8 3 1 1 3 9) - (8 3 2 2 3 9) - (9 4 4 10) - (9 2 2 10) - (9 1 1 11) - (10 11) - (11 12) - (12 13) - (13 14) - (15 15) - (17 17)) - ((40) - (40) - (40) - (40) - (40) - (15 1 17) - (12 1 14) - (9 1 11) - (1 3 1 9) - (1 2 1 1 6) - (1 1 3 1 5) - (1 2 1 1 1 4) - (1 4 3 1 3) - (1 2 1 1 1 1 1 2) - (1 1 3 1 2 2 2) - (1 2 1 1 4 4 1) - (1 3 1 3 2 2 3 1) - (1 2 1 1 3 1 1 3) - (1 1 3 1 4 4) - (1 2 1 1 1 1) - (1 4 3 1 4 4) - (1 2 1 1 1 3 1 1 3) - (1 1 3 1 3 2 2 3) - (1 2 1 1 4 4 1) - (1 3 1 2 2 1) - (1 2 1 1 1 1 2) - (1 1 3 1 3) - (1 2 1 1 1 4) - (1 4 3 1 5) - (1 2 1 1 1 7) - (1 1 3 1 9) - (1 2 1 1 11) - (1 2 1 20) - (8 1 19) - (9 1 18) - (11 1 18) - (13 1 18) - (14 1 19) - (17 20) - (40))) - ("19981207-JTR (7)" - ((1) - (1) - (1 1 1 1) - (1 1 1 1 1 1) - (1 1 1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 2 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 4 1 1 1 1 1 1 1) - (1 1 1 1 1 3 4 3 1 1 1 1 1) - (1 1 1 3 3 4 3 3 1 1 1) - (1 3 3 3 4 3 3 3 1) - (3 3 3 3 4 3 3 3 3) - (3 3 3 3 4 3 3 3 3) - (3 3 3 3 4 3 3 3 3) - (3 3 3 3 4 3 3 3 3) - (3 3 3 3 4 3 3 3 3) - (3 3 3 3 4 3 3 3 3) - (3 3 3 3 4 3 3 3 3) - (3 3 3 4 4 4 3 3 3) - (3 3 3 16 3 3 3) - (3 3 4 14 4 3 3) - (3 4 4 12 4 4 3) - (4 4 4 4 4 4 4) - (4 4 18 4 4) - (4 4 16 4 4) - (4 4 14 4 4) - (4 4 4 4 4) - (4 20 4) - (4 18 4) - (4 16 4) - (4 4 4) - (22) - (20) - (18) - (4) - (4) - (4) - (14) - (22) - (30)) - ((3 12) - (2 14) - (3 14) - (4) - (3 12 4) - (2 14 4 1) - (3 14 4 1) - (4 4 1) - (3 12 4 4 1) - (2 14 4 4 2) - (3 14 4 4 2) - (4 4 4 2) - (3 12 4 4 3 2) - (2 14 4 3 3 3) - (3 14 3 3 3 3) - (4 3 3 3 3) - (3 3 3 3 3) - (3 3 3 3 3) - (3 33) - (1 34) - (2 34) - (4 33) - (3 3 3 3 3) - (3 3 3 3 3) - (4 3 3 3 3) - (3 14 3 3 3 3) - (2 14 4 3 3 3) - (3 12 4 4 3 2) - (4 4 4 2) - (3 14 4 4 2) - (2 14 4 4 2) - (3 12 4 4 1) - (4 4 1) - (3 14 4 1) - (2 14 4 1) - (3 12 4) - (4) - (3 14) - (2 14) - (3 12))) - ("19981221-SDN (8)" - (() - (6 2 2 2 2 6) - (6 2 2 2 2 6) - (2 2 2 2 2 2) - (2 2 2 2 2 2) - (5 2 7 2 6) - (5 2 7 2 6) - (2 2 2 2 2) - (2 3 2 2 2 2) - (6 3 2 2 2 6) - (6 3 2 2 2 6) - () - () - () - (6 6 2 6 6) - (6 6 2 6 6) - (2 2 2 2 2 2) - (2 2 2 2 2 2) - (6 6 6 6 5) - (6 6 6 6 5) - (2 2 2 2 2 2) - (2 2 2 2 2 2) - (2 6 6 6 6) - (2 6 6 6 6) - () - () - () - (6 6 1) - (6 6 11) - (2 2 2 6 11) - (2 2 2 6 1 2 2) - (6 6 2 2) - (6 6 2 2) - (2 2 6 2 2) - (2 2 6 2 2) - (6 2 2 2) - (6 2) - () - () - ()) - (() - (2 2 6 6 2) - (2 2 2 6 6 2) - (2 2 2 2 2 2 2 2) - (2 2 2 2 2 2 2 2) - (10 10 2 6) - (10 10 2 6) - () - () - (3 2 6 6) - (3 2 6 6) - (3 2 2 2 2 2) - (2 2 2 2 2) - (6 2 10) - (10 6 2 10) - (10) - () - (10 2 2) - (6 10 2 2) - (6 2 2 2 2) - (2 2 2 2 2) - (2 6 2 2) - (2 6 2 2) - (10) - (10) - (6 2) - (6 2 2) - (10 2 2 2 2) - (10 2 2 2 2) - (2 6 8) - (2 6 8) - (6 2 2) - (6 2 2) - (2 2 2 2 2 8) - (2 2 2 2 2 2 8) - (2 6 2 2 2 2) - (2 6 2 2 2 2) - (10 2) - (10) - ())) - ("19981223aBAU (9)" - ((1 4) - (2 6) - (3 7 2) - (4 4 4 4 4) - (3 7 5 2 4 7 2) - (6 2 7 5 8) - (2 5 9 1 2 6) - (3 2 9 3) - (1 11 2) - (1 13 1) - (4 13 1) - (5 15 3) - (4 1 15 5) - (3 3 15 6) - (2 2 1 15 1 2 3) - (3 1 15 10) - (2 1 13 1 1 5) - (1 2 1 2 2 4) - (1 6 1 1 1 2 2 4) - (20 5) - (25 4) - (5 21 3) - (7 20 3) - (3 1 6 8 4 4) - (4 4 1 13 4) - (1 1 7 2 2 1 3 3) - (3 4 1 5 5 2) - (1 1 6 2 2 1 2 1) - (4 3 2 4 5 3) - (4 6 4 4 4) - (3 3 2 2 2 2 1 5) - (3 6 5 7) - (3 2 2 2 2 1 3) - (2 4 5 3) - (1 3 1 5) - (6 4) - (4 5) - (4 5) - (3 2) - (1)) - ((3 5 3) - (3 4 4 5) - (3 2 1 14) - (4 4 5 1 2 3) - (5 2 1 4 5 2) - (1 1 4 5 2) - (4 2 1 2 1 3 4) - (4 6 5 6 3) - (4 2 1 4 8 4) - (2 3 5 10 8) - (5 8 12 5) - (2 18 5 1 1) - (1 18 2 5) - (12 7 2) - (13 6) - (13 4) - (19) - (13 5) - (13 8) - (12 9) - (19 5) - (1 19 4) - (5 8 11 2) - (4 2 5 6 8) - (3 6 1 5 2 2) - (7 5 3 1 4) - (3 1 3 1 6 4) - (5 5 4 1 4) - (6 4 7 4) - (3 2 2 2 4 3 3) - (4 3 1 8 2) - (3 4 4 2 2) - (3 3 1 4 1 2) - (3 4 3 1) - (3 3 1 2 4) - (3 4 3 3) - (3 4 3 3) - (2 7 3) - (2 7 3) - (1 4 3))) - ("19981223bBAU (10)" - ((5 11) - (8 6 6) - (2 6 7 8) - (3 8 2 12 2) - (12 3 4 5 3 3) - (5 5 8 3 2 5) - (6 4 9 1 8) - (9 16 8) - (6 2 12 9) - (3 4 9 9) - (9 5 2 7) - (8 6 6) - (6 12 3) - (5 6 10 2) - (2 5 7 11) - (2 5 8 9) - (2 6 9 6) - (3 8 16) - (2 9 1 5) - (2 9 2 2) - (2 9 4 3) - (2 9 14) - (3 1 3 1 18) - (3 7 11 6) - (1 1 5 9 8) - (1 1 3 7 10) - (4 1 12) - (4 1 5 5 1) - (4 1 8 3 3) - (4 1 10 5) - (5 2 8 3 5) - (3 1 1 1 1 5 4 5) - (2 3 2 4 6 5) - (1 3 3 12 6) - (7 8 7 2 3) - (16 7 3 2) - (6 8 3 8) - (4 7 2 8) - (2 7 2 7) - (9 8)) - ((4 15) - (7 8 8) - (8 3 11 2) - (2 7 2 5 3) - (2 7 1 1 6) - (3 1 5 8) - (5 2 2 4 8) - (6 1 2 7 4 1) - (5 5 6 2 1 3 1) - (5 5 11 1 1 2) - (5 22 5) - (5 17 1 6) - (1 2 12 2 6) - (2 2 13 7) - (1 2 3 5 8) - (5 9) - (5 2 4) - (5 8 5 3) - (7 5 5 8) - (7 5 5 7) - (8 6 5 7) - (9 7 5 5 1) - (2 6 8 5 4 1) - (3 4 14 2 3) - (5 3 1 4 6 2 5) - (6 2 2 2 6 10) - (8 4 1 5 10) - (6 5 1 5 7 1) - (1 2 7 3 1 4 2) - (1 2 7 2 2 3 3) - (4 8 2 3 5) - (6 10 6 4) - (10 6 6 5) - (5 5 4 7 6) - (4 6 3 7 6) - (2 7 2 12 2) - (13 4 6 2) - (11 3 9) - (9 2 8) - (7 8))) - ("19990208-ELS (11)" - ((2 2 2 1 2 2) - (4 4 2 1 2 4) - (1 1 1 2 1 2 6) - (1 2 1 2 1 2 2 8) - (1 2 1 2 1 2 1 2 10) - (1 1 1 2 1 2 1 1) - (11 2 1 2 1 2 2 1) - (1 1 1 2 2 1 2 2 1) - (1 2 1 2 1 2 1 2 1 1) - (1 2 1 2 1 2 1 2 1 2 1) - (1 1 1 1 1 2 1 2 1) - (11 2 2 10) - (2 1 3) - (2 1 1 2) - (12 1 1 13) - (20 1 12) - (1) - (1) - (1) - (4 3 3 3) - (3 3 3 4) - (1) - (1) - (1) - (12 1 20) - (13 1 1 13) - (2 1 1 2) - (2 1 2 3 1 2 1 1) - (2 2 2 2 2 1 1 3) - (2 2 2 2 1 2 1 5) - (1 2 2 1 2 1 2 1 1 5) - (1 2 3 2 1 2 1 1 1) - (3 2 2 2 2 2 1 1 1 1 1) - (7 2 2 1 2 5 1 1 1) - (2 10 2 1 2 1 1 1 1) - (6 1 2 1 2 1 1 1 1 1 1 1) - (4 2 2 1 1 1 1 1) - (4 2 1 2 1 1 1 1 1 1) - (4 2 1 2 1 1 1 1 1) - (6 2 1 2 1 1 1 1 1 1 1)) - ((2 1 2 1 1) - (10 2 1 2 5) - (1 1 1 2 1 2 1 2) - (2 2 1 2 1 2 2 3 2) - (2 2 1 2 1 2 1 2 3 3 1) - (1 1 1 2 1 2 10) - (10 2 1 2 1 9) - (1 1 1 2 2 3 7) - (2 2 1 2 1 2 1 2 2 6) - (2 2 1 2 1 2 1 2 1 2 3 1) - (1 1 1 2 1 2 2 4) - (10 3 2 5 2) - (2 1 1 2 1 1) - (2 1 1 2) - (12 1 1 13) - (10 1 20) - (1) - (1) - (1) - (3 3 3 4) - (4 3 3 3) - (1) - (1) - (1) - (20 1 12) - (13 1 1 13) - (2 1 1 2) - (2 1 3 7) - (8 2 2 2) - (2 1 2 1 2 2 1 1 1) - (3 2 1 2 1 2 1) - (4 2 1 2 1 2 11) - (5 3 2 2 1) - (5 3 2 1 2 1 1 1 1 1 1) - (4 2 1 2 1 2 1) - (3 2 1 2 1 2 11) - (2 1 2 2 3) - (8 2 1 2 4 2 2 2) - (2 1 2 3) - (2 1 2 11))) - ("19990219-JOJ (12)" - (() - () - () - () - (3) - (5 3) - (5 6) - (6 8) - (7 8) - (7 8) - (9 10) - (11 12) - (12 14) - (29) - (21 11) - (18 12) - (18 14) - (34) - (20 8) - (16 1) - (15 2) - (21) - (3 6 2 1 3) - (5 2 3 1 2) - (3 6 2 2 1 2) - (2 1 4 4 2 3 1 3) - (2 1 2 5 1 1 1 1 1) - (3 1 3 3 1 3 1) - (1 1 1 1 1 3 13) - (1 3 1 4 1 3 1) - (16 3 1 1 1 1 1) - (1 3 1 4 3 1 3) - (1 1 1 1 1 4 2 1 2) - (3 1 3 2 1 2) - (2 1 2 3) - (2 1 2) - (3) - () - () - ()) - (() - (3) - (5 3) - (6 2 1 2) - (6 2 1 2) - (7 3 1 3) - (8 1 1 1 1 1) - (9 1 3 1) - (12 13) - (12 1 3 1) - (13 1 1 1 1 1) - (14 3 1 3) - (15 3 1 2) - (17 2 2 1 2) - (21 3) - (21 1) - (22 1) - (22 1) - (20) - (2 2 3 6) - (2 2 1 7) - (2 2 1 2 4) - (3 2 1 2 2) - (2 2 1 2 2) - (7 3) - (10 2) - (11 1 3) - (15 2 1 2) - (13 6 1 2) - (14 3 1 3) - (14 1 1 1 1 1) - (14 1 3 1) - (13 13) - (3 8 1 3 1) - (1 8 1 1 1 1 1) - (2 2 3 1 3) - (2 1 2) - (2 1 2) - (3) - ())) - ("19990222-JOJ (13)" - (() - () - () - (22) - (2 1 2) - (2 2) - (2 1 2) - (2 1 2) - (2 2 2) - (2 1 4 1 2) - (1 1 2 6 2 2) - (2 2 2 2 8 2) - (7 2 12 2) - (7 2 11 2) - (9 2 6 2 2) - (7 2 2 3 1 2) - (11 2 1 2) - (11 2 2) - (10 2 2) - (6 10) - (6 4 22) - (6 6 2 22) - (4 8 2 22) - (2 11 2) - (2 11 2) - (2 10 2) - (2 10 2) - (2 10 2) - (2 10 3 2) - (2 10 4 2) - (2 10 2 2) - (2 10 2 2) - (2 10 2 2) - (2 8 3 2) - (2 8 3 2) - (2 2 7 2) - (2 2 3 2) - (2 2 2 2) - (2 2 2 2) - (2 3 3 2)) - ((3) - (20) - (20) - (3) - (2) - (5 2 10 1) - (7 18) - (10 19) - (24) - (23) - (26) - (25) - (3 4 19) - (5 18) - (4 10 2 1) - (2 4 2) - (2 3) - (3) - (1 5 3 3) - (2 8 3 2) - (3 2 3 3 2) - (1 3 2 3 2) - (1 1 1 2 3 2) - (2 1 1 3 2) - (1 1 3 4) - (1 5 4) - (1 2 3 4) - (1 7 4) - (1 8 4) - (1 10 4) - (1 5 4) - (1 3 4) - (1 3 4) - (1 5 4) - (1 7 1 3) - (1 1 2 3) - (1 3 2 3) - (3 2 3 20) - (2 8 20) - (1 5 3))) - ("19990402-JOJ (14)" - ((12 3 20) - (1 11 2 2 4 12) - (10 2 2 3 3 11) - (11 2 2 1 1 10) - (11 2 6 1 9) - (8 2 7 1 9) - (1 8 2 2 3 1 9) - (1 7 2 2 2 1 9) - (6 2 2 3 10) - (9 2 2 11) - (5 2 2 10) - (1 5 2 2 10) - (1 4 2 2 9) - (4 2 2 8) - (6 2 2 8) - (1 3 2 2 7) - (3 2 2 6) - (2 2 2 5) - (1 2 2 3 2 5) - (4 2 2 2 6) - (2 2 2 6) - (1 4 2 7) - (2 1 2 2 6) - (5 2 3 4) - (5 3 3) - (6 1 3) - (6 3 3) - (7 5 2) - (8 5 2) - (9 1 5 2) - (10 3 3 3) - (11 2 2 3) - (11 3 2 4) - (12 3 3 5) - (13 4 4 6) - (14 6 8) - (15 1 1 6) - (17 7 4) - (18 5 6 3) - (19 6 3 2)) - ((1 1 1 3 17) - (1 2 2 1 2 2 3 18) - (2 1 1 1 19) - (20 1 17) - (19 2 17) - (17 3 15) - (14 3 13) - (12 6 12) - (10 5 11) - (8 4 10) - (7 4 9) - (4 3 7) - (3 4 6) - (2 4 5) - (1 2 4) - (2 3) - (2 1 3) - (1 3 2) - (8 1) - (5) - (1 2) - (3 2) - (3 2 1) - (3 3 5 2) - (2 1 2 2 7 2) - (1 1 2 2 2 5 2) - (1 1 3 1 2 2 3) - (1 1 4 5) - (2 1 1 3 2 1 1) - (3 4 1 3 2 1) - (4 4 3 2 1 2) - (13 2 5 2 2) - (15 5 1 3 1 1 2) - (16 2 1 2 5 2 1 1) - (17 4 1 7 3 2) - (23 8 4 2) - (24 3 6 1) - (27 9) - (40) - (40))) - ("19990414-JOJ (15)" - ((1 1 9 14 4 3) - (1 1 5 17 5 1 1) - (1 4 21 3 1 1) - (1 3 25 1 1 1) - (1 3 26 1 3) - (2 20 5 1) - (1 1 17 2 3 1 3) - (1 1 1 15 2 1 2 3 1 1) - (3 14 1 2 3 3 3) - (1 1 14 1 2 4 3 1 1) - (1 1 15 1 2 2 2 3 1 1) - (8 3 2 4 3) - (3 7 8 3 3) - (1 1 5 2 3 2 1 1) - (3 2 2 1 3 2 2 3) - (1 1 1 2 2 3 2 2 1 1) - (3 3 2 2 2 2 3 3) - (3 2 2 2 2 4) - (3 3 2 2 6 5 3) - (1 1 3 2 1 2 2 4 1 1) - (3 3 2 2 3 3 3) - (1 1 2 2 2 2 2 1 1) - (3 1 3 2 2 1 3) - (1 3 3 2) - (1 4 6 2 3) - (1 1 5 4 2 2 1 1) - (3 6 4 2 2 1 3) - (1 1 1 7 1 2 2 1 1 1) - (1 1 1 8 2 2 1 1) - (1 3 6 2 3) - (4 2 7 2 6) - (4 2 8 3 6) - (3 2 7 2 7) - (3 2 3 7 3 7) - (3 2 2 2 6 3 6) - (2 2 2 2 7 2 2 5) - (2 2 2 2 7 2 5) - (2 2 2 2 2 4 2 4) - (2 2 2 5 2 6 2 3) - (2 2 2 3 4 7 2 3)) - ((2 4 5 5 4 10) - (3 1 1 1 1 1 1 1 1 1 1 10) - (2 4 5 5 4 5) - (3 4) - (8 4 9 2 7) - (6 7 6 3 7) - (5 9 5 11) - (3 9 9 6) - (2 26 7) - (1 19 5 1) - (1 11 5 2) - (1 10 2 5 2) - (1 9 4 5 2) - (10 2 2 5 2) - (10 4 2) - (10 4 1) - (11 4 2) - (12 4 3) - (9 2 4 2) - (8 4 1) - (8 1 3) - (7 2 3 1) - (7 3 3 2 2 2) - (6 1 1 3 2 2 2) - (6 1 4 3 2 2 1) - (6 3 2 3 2 2) - (6 3 2 1 2 2 1 2) - (5 1 3 1 2 1 1 4) - (5 1 4 2 6 5) - (6 3 2 4 4 7) - (1 8 2 2 1 2 4 3) - (1 4 3 5 1 2 1 7 2) - (2 4 3 3 2 6 2 1) - (3 2 6 5 6 2 3) - (3 15 3 7 3) - (23 11 2) - (9) - (5 5 5 5 5 10) - (1 1 1 1 1 1 1 1 1 1 1 1 10) - (5 5 5 5 5 10))) - ("19990418-DRA (16)" - (() - (38) - (18 19) - (17 1 18) - (15 3 17) - (13 6 16) - (12 9 1 13) - (10 11 1 11) - (9 1 2 8 2 10) - (6 2 1 2 1 3 2 9) - (6 5 5 3 2 3 8) - (6 4 5 5 1 4 7) - (7 2 6 1 4 5 7) - (6 3 7 1 4 4 7) - (5 3 6 2 5 2 8) - (5 4 5 1 1 4 2 9) - (6 4 4 3 3 2 9) - (6 4 6 1 3 2 10) - (7 2 1 5 3 3 10) - (8 1 2 3 1 2 2 11) - (9 3 2 1 13) - (10 2 1 4 14) - (11 1 2 1 2 15) - (12 1 1 16) - (15 1 18) - (11 1 19) - (10 1 4 16) - (10 2 3 15) - (16 13) - (12 3 3 12) - (11 4 12) - (10 2 7 12) - (10 3 21) - (10 5 3 16) - (16 2 15) - (16 1 1 14) - (16 4 14) - (16 6 14) - (16 21) - ()) - (() - (38) - (38) - (38) - (38) - (38) - (13 23) - (8 1 2 21) - (8 2 5 20) - (8 9 19) - (7 5 5 18) - (6 4 1 2 4 3 5) - (6 1 4 4 2 2 6) - (5 3 7 4 1 1 6) - (4 3 9 1 1 2 7) - (4 2 11 2 1 3 8) - (3 3 11 2 4 8) - (3 4 4 3) - (2 5 1 1 1 2 4 7 2) - (1 7 2 1 1 2 2 2 6 3) - (2 5 2 5 2 3 5 4) - (3 4 3 1 2 2 3 3 3) - (4 3 6 3 2 2 2 3) - (5 3 8 2 4 3 2) - (6 3 6 1 6 4 1) - (5 1 3 4 2 7 7) - (6 1 1 1 2 9 7) - (6 6 4 19) - (7 8 20) - (8 5 22) - (9 3 24) - (10 25) - (38) - (38) - (38) - (38) - (38) - (38) - (38) - ())) - ("19990422-VOL (17)" - (() - () - () - () - () - (1 1 1 1 1 1) - (3 1 1 3 3 3 3) - (1 3 1 5 1 3 2 2 2 2 2 2) - (10 6 1 18) - (3 3 4 6 1 2 5 2 2 1) - (15 3 6 11) - (1 4 4 5 1 1 7 2 3) - (19 8 2 5) - (2 2 4 2 5 2 2 1 7 1) - (7 8 2 7 9) - (19 3 3 5 3) - (3 3 2 1 1 2 1 7 7 1) - (1 3 13 1 6 2 5) - (7 3 3 1 1 5 3 4 1) - (19 18) - () - (19 18) - (1 1 1 9 3 2 5 2 3 2) - (1 1 3 3 5 1 6 11) - (1 1 1 13 10 7) - (1 15 3 3 8 1) - (7 1 2 2 5 8 3) - (1 1 2 4 1 9 6) - (1 5 3 7 10) - (1 3 1 1 1 1 1 2 5 4 2 4) - (1 5 3 15 2) - (8 4 3 4 9) - (1 5 3 1 10 2 4) - (1 1 2 12 6 11) - (1 1 10 4 2 15) - (1 7 7 4 7 2 2) - (15 3 18) - (5 2 4 5 1 5 2 5 1) - (19 18) - ()) - (() - (13 18) - (3 5 2 1 1 1 3) - (6 6 4 1 1 2 2 3) - (3 6 3 1 1 4 3) - (15 18) - (1 5 3 2 1 1 2 9 1) - (4 8 8 3 5) - (1 4 1 1 1 2 2 1 1 8) - (13 6 5 1) - (14 5 1 6) - (1 1 4 2 3 5 6) - (5 6 1 2 2 1 2 3) - (2 6 3 5 6) - (5 6 5 1 4 1) - (9 3 6 2 4) - (1 2 7 1 1 5 1 5 2) - (9 5 5 2 9) - (2 2 4 1 1 2 8 6) - (13 18) - () - (13 18) - (3 1 5 2 6 9 1) - (2 5 6 1 11 4) - (9 4 4 5 7) - (2 10 14 3) - (5 4 1 5 2 9) - (3 9 2 9 5) - (7 3 4 2 8 1) - (2 4 2 1 8 7) - (5 4 1 18) - (2 1 6 1 3 4 2 4 1) - (3 6 1 1 4 11) - (5 4 2 14 3) - (3 10 8 2 6) - (2 3 3 4 5 12) - (14 1 7 4 3) - (2 3 2 1 1 4 11 1) - (12 18) - ())) - ("19990503-DRA (18)" - ((7 23) - (5 10 21) - (4 14 20) - (3 6 4 19) - (2 6 4 1 4 18) - (1 6 7 4 17) - (1 2 6 5 16) - (1 1 2 2 4 6 15) - (1 1 9 4 14) - (1 5 10 5 13) - (1 4 6 5 4 12) - (1 3 5 1 4 1 5 11) - (1 2 1 2 1 4 10) - (1 3 7 3 5 5 9) - (1 13 6 2 3 8) - (1 13 4 2 1 4 7) - (1 13 5 6 3 6) - (1 12 6 5 4 5) - (1 7 1 3 4 1 3 4) - (2 6 2 2 3 7 4 3) - (2 6 9 2 2 3 3 2) - (2 16 3 3 3 4 1) - (2 16 5 3 2 1) - (2 17 1 2 3 1 2 1) - (3 15 12 1 2 1) - (3 14 15 1 1) - (3 14 9 3 2 1 1) - (3 14 8 2 1 1 1) - (4 14 4 2 4 2 1) - (4 16 2 4 3 1 2 1) - (4 10 1 1 7 1 3 1) - (5 8 7 1 3 2) - (5 8 7 7 3 3) - (6 14 7 4 3) - (7 3 7 5 6 3) - (8 3 4 8 4) - (9 3 6 9 5) - (10 4 11 6) - (11 20 7) - (12 8)) - ((40) - (5 21) - (4 13 16) - (3 3 15 12) - (2 3 3 15 9) - (1 4 2 17 7) - (1 4 1 1 19 6) - (5 1 1 21 5) - (4 2 2 22 4) - (3 1 4 6 15 3) - (2 8 5 17 2) - (2 7 5 15 3 1) - (2 3 4 5 15 3) - (2 7 6 15 2) - (2 5 1 3 11 2 2) - (2 10 10 3 1 1) - (3 10 11 3 1 1) - (1 3 3 5 11 3 1 1) - (1 6 2 5 5 2 3 1 1) - (2 5 1 5 1 1 1 3 1 1) - (3 4 4 6 2 1 2 2 1) - (4 5 2 6 5 1 1 2 1) - (5 4 1 3 2 6 3 2) - (6 5 4 1 9 4 2) - (7 4 9 5 4 2) - (8 5 12 6 3) - (9 4 5 1 11 3) - (10 3 4 10 4) - (11 4 1 2 6 5 4) - (12 3 8 3 4) - (13 4 7 4 5) - (14 3 1 7 5) - (15 4 6 1 5 1) - (16 3 1 1 1 5 2) - (17 4 4 1 5 3) - (18 3 2 5 4) - (19 5 4 5) - (20 10 8) - (21 9) - (40))) - ("19990509-JOJ (19)" - ((16) - (7 5) - (4 3) - (4 2) - (3 2) - (3 1) - (2 1) - (2 2) - (2 3 2) - (2 4 3) - (2 9) - (1 1) - (2 7) - (1 7 6) - (1 5 4) - (2 3 2) - (2 2) - (2 5 3 1) - (1 8 5 2) - (1 16 6) - (1 5 4 4 2) - (1 4 2 2 4 1) - (1 4 1 1 6) - (1 6 3 1 3 8) - (2 8 2 1 2 9) - (2 10 3 9 1) - (2 3 25 2) - (2 7 17 3 2) - (2 9 18 1 1) - (1 3 29 1) - (1 3 1 5 12 7 1) - (1 3 3 3 14 5 2) - (1 4 6 1 10 1 5 2) - (1 4 8 8 2) - (2 7 6 4 7 3) - (3 3 7 4 6 3) - (4 1 6 6 4) - (8 14 4) - (4 6 4) - (5 5)) - ((11 8) - (6 5 3) - (4 2 3 2) - (4 6 2) - (4 8 2) - (3 4 3 1) - (3 3 1 3 1) - (2 3 3 2 1) - (2 3 2 2 2) - (2 1 4 3 3) - (2 2 8 3) - (2 1 3 6 1 2) - (1 1 4 8 1) - (2 2 9 5 1) - (2 1 10 6 1) - (2 1 11 1 5) - (2 2 14 5) - (1 2 4 9 5) - (1 1 1 4 8 2) - (1 1 1 3 1 7 1 2) - (1 2 1 3 2 7 2 2) - (1 1 2 3 2 7 2 2) - (1 2 2 4 7 2 2) - (1 2 1 4 8 1 2) - (1 1 1 14 2) - (1 1 2 3 8 3) - (2 4 3 1 7 4 1) - (2 1 2 3 2 6 4 1) - (2 1 1 3 2 4 1 4 1) - (1 1 2 3 5 4 2) - (2 2 2 4 3 3 3 2) - (1 1 1 2 4 6 2) - (2 2 2 1 6 6 2) - (2 2 2 1 7 5 2) - (4 4 7 5 2) - (2 6 4 2) - (1 6 3 3) - (1 4 3) - (2 2 2 4) - (2 8))) - ("19990518-MNT (20)" - ((11 10 15) - (10 14 14) - (9 2 2 12) - (8 2 3 11) - (7 2 3 10) - (6 2 2 9) - (6 2 2 8) - (6 2 2 7) - (6 2 2 6) - (6 4 2 5) - (7 3 3 4) - (8 8 2 4) - (9 7 3 3) - (9 2 2 3) - (12 8 5 2 3) - (12 9 6 2 3) - (11 4 5 9 3) - (10 1 3 6 9 3) - (8 1 1 1 1 2 1 3) - (8 6 2 4 5 4 2) - (8 7 2 2 4 1 1 1) - (7 6 1 1 4 1 4 1) - (7 7 1 1 4 2 1 1) - (3 2 1 1 9 1 1) - (2 11 1 1 8 1 1 1) - (1 12 3 2 1 7 4 1) - (1 13 3 4 6 5 1) - (1 14 1 12 1) - (1 31 2) - (1 22 11 1) - (1 9 11 6 1 4) - (3 12 4 1 5) - (9 13 8 5) - (9 3 9 8 6) - (9 4 6 9 7) - (10 5 4 9 7) - (11 5 9 8) - (12 5 9 10) - (13 14 11) - (14 11 12)) - ((40) - (25 9) - (24 4 9) - (23 5 8) - (23 7 8) - (23 7 8) - (5 13 7 8) - (4 5 10 7 8) - (3 7 6 1 7 8) - (2 2 3 4 4 7 5) - (1 2 4 3 5 7 2 4) - (2 2 2 1 4 7 4 3) - (1 2 1 4 7 5 2) - (2 6 11 2 4 1) - (2 6 15 4) - (2 2 3 1 1 7 4) - (2 2 2 1 1 1 7 4) - (2 2 1 1 2 8 3) - (2 2 1 1 2 8 2) - (2 3 1 6 9 2) - (2 4 1 1 8 3) - (2 3 1 2 7 4) - (2 2 1 2 6 5) - (1 3 2 1 5 6) - (2 2 1 6 2 2 7) - (1 2 2 2 3 8) - (2 2 2 12 8) - (2 2 4 12 7) - (3 2 4 19 1) - (4 2 2 18 2) - (5 2 2 1 13 3) - (6 2 3 1 12 3) - (7 3 3 1 4 3 1 4) - (8 4 2 1 4 2 3 6) - (9 8 1 1 1 3 1 7) - (10 8 1 4 1 9) - (12 1 2 2 1 10) - (19 1 4 1 10) - (20 1 1 10) - (21 5 11))) - ("19990525-DRA (21)" - ((1) - (3 1 1 3 3 1 1 3 2 3 1) - (1 1 3 1 1 1 2 1 1 1 1 1 1 1 1) - (1 1 1 1 1 3 1 2 3 1 1 3) - (3 1 1 3 1 1 1 1 1 1 3 1 1 1) - () - () - (1) - (3) - (5) - (7) - (11) - (11) - (11) - (11) - (11) - (4 11 4) - (5 11 5) - (6 11 6) - (7 11 7) - (27) - (27) - (25) - (23) - (23) - (23) - (25) - (25) - (19) - (11) - (13) - (15) - (1) - (1) - (1) - (1) - (1) - () - () - ()) - (() - (4) - (1 1) - (4) - () - (4) - (1) - (4 6) - (7 2) - (12) - (12) - (4 12) - (1 1 11) - (1 1 10 1) - (9 2) - (4 21) - (1 1 21) - (4 22) - (23) - (4 24) - (1 30) - (1 24) - (4 23) - (22) - (4 21) - (1 1 21) - (4 9 2) - (10 1) - (4 11) - (1 1 12) - (3 12) - (12) - (4 7 2) - (1 1 6) - (4) - () - () - (3 1) - () - ())) - ("19990527bDRA (22)" - ((40) - (40) - (40) - (21 16) - (8 14 3 11) - (6 10 5 2 2 8) - (2 2 12 5 1 1 9) - (2 2 5 6 5 9) - (2 3 2 2 2 1 7 11) - (2 1 2 2 3 2 4 4 6) - (2 3 3 4 4 3 7) - (4 2 2 3 4 2 8) - (4 5 2 3 3 3 4 3) - (4 4 2 2 5 2 5 3) - (6 4 2 5 4 1 3) - (3 2 4 2 3 3 4 1 3) - (2 4 2 2 2 2 6 1 3) - (4 4 2 2 1 1 7 1 3) - (6 2 2 2 2 2 4 4) - (6 2 2 4 2 3 5) - (8 2 5 1 2 6) - (9 1 3 5 2 1 4 3) - (10 1 2 2 2 5 2) - (3 5 2 2 1 3 5 3) - (4 2 2 3 2 3 6) - (6 1 1 3 2 2 8) - (7 3 3 1 9) - (6 7 3 2 2 4) - (5 9 3 2 2 1 5) - (4 11 1 1 5 6) - (16 1 5 7) - (17 2 7 4) - (17 1 8 5) - (17 1 15) - (16 1 15) - (16 2 15) - (15 1 14) - (13 15) - (12 13) - (40)) - ((40) - (40) - (6 5 23) - (9 4 6 16) - (10 3 6 4 10) - (6 1 2 3 6 3 11) - (5 3 2 5 1 12) - (5 5 2 2 5 13) - (4 6 3 2 3 14) - (8 4 3 1 15) - (11 3 1 14) - (12 5 3 13) - (7 3 5 2 11 1) - (9 2 3 2 10 1) - (11 1 3 9 1) - (8 2 4 5 7 1) - (8 3 4 3 3 1) - (9 3 4 1 1) - (5 2 5 3 6 1 1) - (6 5 5 3 4 1) - (10 9 2 1) - (3 6 2 3 1) - (3 5 4 2 1) - (3 13 3 2 1) - (4 6 4 5 3 1 1) - (5 4 3 5 7 1 1) - (6 3 1 2 9 1) - (7 2 1 11) - (4 2 3 1 4 10) - (7 6 3 2 3 9) - (6 5 6 2 2 9) - (5 5 7 2 3 9) - (10 4 3 3 2 8) - (9 5 3 2 4 1 7) - (14 3 4 2 7) - (18 4 3 3 8) - (12 3 16) - (22 17) - (40) - (40))) - ("19990529bDRA (23)" - (() - (9) - (13) - (11 5) - (14 5) - (16 5) - (22) - (3 3 1 12) - (2 2 6) - (2 6) - (5 8 6) - (2 2 1 1 1 1) - (4 1 6) - (2 1 1 2 7) - (3 1 2 1 1 7) - (5 2 3 1 7) - (1 4 5 2 4) - (2 2 1 6) - (2 2 2) - (1 3) - (1 2 2) - (1 1 1 2) - (1 7 4) - (2 3 1 2) - (1 4) - (2 4) - (2 2 2) - (2 2 2) - (3 3 4) - (8 2 2) - (2 2 4) - (8 2 7) - (6 2 2 9) - (8 2 2 11) - (10 2 2 12) - (12 2 2 14) - (14 4 15) - (15 16) - (35) - (35)) - (() - () - (4) - (5) - (6) - (7) - (7 8) - (4 3 9) - (11 2 9) - (12 2 9) - (4 1 1 2 2 9) - (4 1 1 1 1 1 1 9) - (5 1 2 2 2 2 1 7) - (7 2 1 2 4 6) - (7 3 1 2 5 5) - (6 4 2 3 1 2 4) - (6 2 1 1 2 3) - (7 1 1 1 1 2 2) - (6 1 3 1 1 2) - (7 1 1 2 2 1 2) - (7 1 1 1 1 2 2) - (7 1 3 2 2 3) - (2 4 1 1 2 2 4) - (3 3 2 2 2 5) - (3 2 3 2 6) - (8 4 1 8 7) - (16 9 8) - (8 4 3 4 1 9) - (14 4 12) - (6 9 11) - (4 7 10) - (8 10) - (9) - (9) - (8) - (7) - (5) - () - () - ())) - ("19990530aDRA (24)" - ((40) - (40) - (26 13) - (5 20 13) - (5 11 3 13) - (5 20 13) - (5 5 1 4 1 1 11) - (4 1 4 3 2 3 13) - (5 4 4 3 2 3 13) - (4 4 4 3 2 3 2 10) - (4 4 6 1 4 10) - (4 4 30) - (40) - (14 24) - (13 1 24) - (6 4 1 24) - (6 1 3 1 12) - (6 1 5 5 10) - (5 2 1 1 2 7 7) - (4 1 2 3 4 5) - (3 1 2 1 1 1 5 4) - (3 1 2 1 1 3 4) - (3 1 1 1 3 4 1 2 1 4) - (3 2 3 3 1 1 4) - (3 1 3 3 2 1 1 4) - (3 2 1 5 3 1 1 1 4) - (3 2 2 3 2 2 1 1 4) - (3 1 2 5 5 1 2 4) - (4 1 2 11 1 2 5) - (5 1 6 5 2 6) - (6 1 13 2 7) - (7 5 5 8) - (8 15 9) - (12 13) - (40) - (40) - (40) - (40) - (40) - (40)) - ((40) - (40) - (40) - (20 12) - (7 1 7 1 1 2 1 11) - (3 8 2 1 10) - (4 2 7 2 1 9) - (4 2 7 1 1 2 1 8) - (4 10 1 2 1 7) - (4 2 2 5 2 2 1 1 7) - (4 2 7 1 1 1 1 7) - (6 10 2 1 1 1 1 7) - (6 9 4 1 1 2 6) - (6 7 3 1 2 1 6) - (13 7 3 1 1 1 6) - (6 3 4 2 1 1 1 6) - (10 5 2 3 1 1 1 1 6) - (10 5 1 1 3 1 1 1 6) - (10 5 1 3 1 1 1 6) - (7 5 2 1 2 1 1 1 6) - (6 3 5 2 4 1 1 1 1 6) - (16 3 1 1 1 6) - (4 1 5 1 3 1 1 1 6) - (16 4 2 1 1 1 6) - (6 9 3 1 1 1 1 6) - (6 9 2 1 2 1 6) - (2 6 2 1 1 2 6) - (6 3 5 2 1 1 1 7) - (6 3 6 1 2 1 1 1 7) - (9 6 2 2 1 1 7) - (18 2 1 1 2 7) - (18 5 1 1 2 8) - (18 4 1 1 2 9) - (19 2 1 1 2 10) - (19 1 1 1 2 11) - (20 12) - (40) - (40) - (40) - (40))) - ("19990530bDRA (25)" - ((40) - (40) - (40) - (40) - (40) - (15 15) - (14 14) - (13 13) - (12 12) - (11 11) - (10 10) - (9 9) - (8 8) - (7 7) - (6 1 1 6) - (6 5 5 6) - (6 6 6 6) - (6 6 6 6) - (6 4 4 6) - (6 2 2 6) - (6 6) - (7 1 1 7) - (8 2 2 8) - (3 3 9) - (1 4 10) - (1 6 1 1 1 1 6 3) - (1 6 1 1 1 1 6 3) - (1 5 1 1 1 6 1) - (4 5 1 1 1 6 1) - (5 4 5 1) - (6 5 6 5) - (7 4 5 6) - (8 3 4 7) - (9 2 3 8) - (10 4 5 9) - (11 12 10) - (12 10 11) - (13 8 12) - (14 3 13) - (15 14)) - ((40) - (24 12) - (24 12) - (23 12) - (23 11) - (23 10) - (14 6 9) - (13 7 8) - (12 7 7) - (11 7 6) - (10 7 5) - (9 8 4) - (8 3 4 3) - (7 4 5 2) - (6 6 1 1) - (5 5 2) - (5 4 2 3) - (5 2 1 2 3) - (5 2 2 3) - (5 2 4) - (5 2 2 4) - (5 1 2 4) - (5 2 2 3) - (5 4 4) - (5 5 4) - (6 6 3) - (7 4 6 1) - (8 3 5 2) - (9 9 3) - (10 8 4) - (11 8 5) - (12 8 6) - (13 8 7) - (14 8 8) - (25 9) - (25 10) - (25 10) - (27 10) - (27 10) - (40))) - ("19990530cDRA (26)" - ((40) - (40) - (9 28) - (7 3 27) - (6 5 12 10) - (5 8 1 1 9) - (5 5 3 8) - (5 3 2 6 7) - (5 3 2 6 7) - (5 4 1 7 7) - (5 4 1 4 2 1 7) - (6 3 1 3 1 3 1 7) - (6 3 2 6 1 7) - (6 2 3 2 1 7) - (6 2 3 3 2 7) - (6 4 1 2 7) - (13 1 1 3 7) - (13 8 12) - (12 3 11) - (11 1 3 1 10) - (10 3 3 9) - (10 4 4 9) - (4 5 19 9) - (3 5 19 9) - (2 5 19 9) - (2 4 16 8) - (2 3 15 5 7) - (3 1 2 15 5 7) - (4 3 1 4 10 5 7) - (5 3 4 11 8) - (6 3 4 13 10) - (7 2 4 13 10) - (8 1 4 13 10) - (8 13 10) - (7 5 11) - (7 4 3 11) - (7 4 11) - (8 1 5 12) - (40) - (40)) - ((40) - (40) - (24 13) - (23 12) - (22 11) - (5 14 1 10) - (4 6 10 3 9) - (3 10 11 3 2 3) - (3 11 12 3 2) - (2 4 4 14 3 2) - (2 4 1 7 2) - (2 3 12 13 2) - (3 2 1 6 14 2) - (4 2 4 13 2) - (5 8 12 3) - (5 8 6 2 2) - (6 4 1 2 12 2 2) - (5 3 1 1 12 2 2) - (5 4 1 3 12 2 2) - (5 1 4 1 3 13 3) - (5 2 3 14 3) - (5 1 1 14 3) - (5 1 1 14 3) - (6 2 2 13 3) - (5 1 12 2) - (5 12 2) - (4 5 5 2) - (4 5 3 4 2) - (4 7 6 3 4 3) - (4 5 5 3 6) - (5 4 3 10) - (6 8 3 10) - (7 9 11) - (40) - (40) - (40) - (40) - (40) - (40) - (40))) - ("19990601aDRA (27)" - ((18 1 19) - (5 10 9 7) - (5 10 9 7) - (7 10 9 9) - (8 8 9 10) - (3 1 5 16 4 1 4) - (2 5 11 4 3) - (2 6 9 8 3) - (3 8 7 10 4) - (4 10 5 12 5) - (13 17) - (12 10 16) - (11 12 15) - (10 1 4 1 6 4) - (3 3 1 1 4 1 1 5 4 3) - (2 4 1 1 4 1 4 6 2) - (1 7 1 4 1 3 8 1) - (1 8 14 2 9 1) - (9 4 4 4 2 10) - (10 4 4 2 11) - (11 10 2 12) - (12 2 2 13) - (12 2 2 1 13 1) - (1 10 10 14 1) - (1 9 12 13 1) - (1 8 14 11 2) - (2 6 14 10 2) - (3 5 12 8 2) - (4 4 2 4 3) - (5 4 4) - (8 1 1 1 11) - (7 1 2 2 2 10) - (6 2 16 3 9) - (5 4 14 5 8) - (3 6 7 6) - (10 14) - (9 13) - (7 10 10) - (6 6 8 7 9) - (5 8 9 8)) - ((18 17) - (16 5 14) - (6 7 10 13) - (5 5 12 6 5) - (6 4 13 5 5) - (1 2 5 14 3 5) - (1 3 6 14 2 5 1) - (3 11 13 1 5 2) - (4 10 13 6 2) - (4 11 9 3 2) - (4 8 6 3 1 2) - (5 6 6 4 2 3 2) - (6 4 1 3 2 4 2 2) - (7 2 2 4 5 2 1 1) - (8 1 2 1 4 6 2 2) - (9 2 1 2 6 2 2) - (10 8 1 5 2 2) - (1 7 8 2 5 2 2) - (6 8 2 5 2 2) - (1 5 8 1 5 2 2) - (6 2 1 2 6 2 2) - (1 6 2 4 6 2 2) - (8 1 2 1 4 5 2 1 1) - (7 3 1 3 2 4 2 2) - (6 5 6 2 1 2 3 2) - (6 6 2 3 3 1 2) - (6 13 5 3 2) - (6 12 7 1 7 2) - (5 11 8 2 6 2) - (4 11 11 2 5 2) - (3 11 12 3 5 1) - (1 11 13 4 5) - (1 3 5 15 4 5) - (5 4 15 4 5) - (6 3 15 10) - (5 4 15 10) - (6 6 13 11) - (15 9 12) - (16 4 15) - (18 18))) - ("19990601bDRA (28)" - ((35) - (13 21) - (14 19) - (15 17) - (16 6 7) - (17 4 3) - (17 1 4 5) - (14 2 1 4 7) - (13 1 3 4 7) - (12 1 11 7) - (11 4 10 8) - (3 4 6 7 10) - (2 1 2 15 10) - (2 5 13 10) - (1 8 12 12) - (13 8 12) - (7 7 7 13) - (6 1 7 6 13) - (6 7 4 13) - (7 9 12) - (6 10 2 11) - (4 9 7 8) - (3 7 9 7) - (2 4 12 7) - (1 1 3 15 6) - (5 6 11 6) - (4 10 1 9 6) - (3 11 8 7) - (3 14 5 9) - (2 16 2 9) - (2 17 11) - (2 5 10 13) - (1 4 10 13) - (7 2 6 2 12) - (6 4 4 5 11) - (6 5 8 10) - (29 10) - (40) - (40) - (40)) - ((25 13) - (14 9 6 7) - (12 8 4 7) - (11 9 3 10) - (11 9 2 11) - (11 8 1 12) - (12 4 1 1 7 4) - (12 3 1 5 5) - (13 2 1 2 5 7) - (13 3 5 5 7) - (11 4 5 5 6) - (10 9 6 6) - (9 2 8 7 4) - (1 6 4 7 10 4) - (1 4 6 7 10 4) - (2 3 5 7 10 4) - (3 3 5 5 10 4) - (4 1 5 4 3 6 4) - (5 1 5 2 2 6 4) - (5 2 6 1 1 4 4) - (5 2 7 2 2 5) - (5 10 5 1 5) - (5 10 7 6) - (5 11 7 6) - (4 11 8 7) - (4 7 10 7) - (4 1 4 10 6) - (5 5 3 8 2 5) - (11 6 7 3 4) - (10 7 6 5 3) - (9 10 4 10) - (7 10 3 12) - (5 12 12) - (5 17 13) - (3 33) - (1 34) - (34) - (35) - (35) - (35))) - ("19990604aDRA (29)" - ((40) - (40) - (40) - (7 32) - (5 2 21 8) - (5 3 17 2 6) - (5 3 15 3 6) - (5 3 15 3 6) - (5 3 15 3 6) - (6 1 17 3 6) - (8 8 3 7 1 7) - (8 8 3 8 9) - (8 9 1 9 9) - (8 6 6 9) - (8 6 1 1 6 9) - (9 3 2 2 4 9) - (10 1 2 2 2 10) - (11 1 11) - (11 12) - (11 12) - (6 7) - (2 1 5 5 1 3) - (4 6 6 5) - (2 7 7 3) - (11 2 2 12) - (12 2 2 13) - (12 1 1 1 1 14) - (9 1 1 11) - (4 3 6 5 3 6) - (5 1 8 7 1 7) - (4 24 6) - (40) - (40) - (5 2 4 3 14) - (5 2 2 2 2 2 2 2 13) - (5 5 3 2 14) - (5 5 2 2 2 2 2 13) - (5 2 2 2 2 2 2 2 13) - (5 2 2 2 2 2 14) - (40)) - ((40) - (40) - (21 1 16) - (21 1 16) - (22 5 1 9) - (4 12 7 2 1) - (4 10 9 2 4 1) - (3 5 10 8 3 4 1) - (10 5 7 4 2 1) - (4 4 5 4 6 12) - (5 7 3 6 12) - (5 8 2 5 1) - (16 6 1 4) - (15 1 1 5 1 4) - (15 1 2 6 1 1) - (13 2 2 11) - (13 2 10) - (10 1 4 1) - (12 3 1 4) - (13 3 1 4) - (12 4 1) - (10 1 10) - (13 2 2 10) - (13 2 2 4 1) - (15 1 1 1 5 1 2 1) - (15 6 1 2 1) - (16 1 6 1 2) - (6 8 2 12) - (6 7 2 6 12) - (5 4 5 3 7 11) - (11 4 8 10) - (4 5 9 9 9) - (5 9 8 9) - (5 11 6 1 9) - (22 17) - (21 1 16) - (21 1 16) - (40) - (40) - (40))) - ("19990604bDRA (30)" - (() - (19 18) - (18 1 17) - (18 2 16) - (14 1 2 16) - (13 3 3 2 10) - (12 5 1 2 3 10) - (11 5 1 1 3 11) - (13 2 4 11) - (16 4 4 7) - (16 2 2 3 6) - (3 10 5 4 1 5) - (2 3 1 5 2 1 3 4) - (2 2 1 1 1 1 2 10) - (1 4 3 3 2 2 10) - (1 6 2 2 1 2 11) - (10 3 2 13) - (5 3 4 2 3 9) - (4 3 4 2 3 8) - (3 3 3 3 1 3 2 6) - (2 5 3 2 1 2 5 4) - (1 7 6 3) - (1 5 1 2 1 1 3 4 2) - (1 3 5 1 1 2 7 3 2) - (1 3 4 4 10 3 2) - (1 3 3 12 3 2) - (4 3 2) - (5 3 2) - (7 8) - (7 1 1 8) - (7 21 8) - (8 19 9) - (8 15 9) - (9 1 9 1 10) - (9 4 4 10) - (10 15 11) - (10 15 11) - (11 13 12) - (11 13 12) - ()) - (() - (25 12) - (13 5 13) - (11 5 17) - (10 5 18) - (10 5 19) - (11 4 4 11) - (11 3 4 11) - (12 2 3 1 8) - (13 2 2 2 2 6) - (12 3 1 2 2 4) - (11 1 3 4 2 2 2) - (6 4 2 3 3 3 3) - (5 4 3 2 1 3 5) - (4 2 4 3 1 1 3 5) - (3 3 3 1 3 3 4 4) - (3 3 2 1 1 3 2 4 4) - (3 4 2 2 4 2 4 4) - (4 3 3 2 3 4 4 4) - (1 1 4 1 4 4) - (6 2 2 3 3 4 4) - (1 3 1 2 2 3 4 4) - (2 2 1 2 2 1 2 4 4) - (6 3 1 2 2 2 4 4) - (5 4 2 3 3 3 5) - (4 4 1 1 3 4 3 5) - (4 3 1 3 4 3 3) - (4 1 4 2 1 4 2 2 2) - (4 5 2 3 2 2 4) - (10 4 3 2 2 6) - (9 6 2 1 8) - (8 8 3 11) - (9 7 2 11) - (10 7 18) - (11 7 17) - (20 16) - (21 11) - (38) - (38) - ())) - ("19990606-DRA (31)" - (() - (6) - (14) - (19) - (21) - (24) - (27) - (27) - (2 5 5) - (2 21) - (2 12 4) - (5 19) - (6 18) - (1 17) - (2 16) - (5 16) - (9 19) - (14 2 11) - (3 3 3 1 1 8) - (4 2 1 1 1 8) - (2 1 2 1 1 8) - (2 2 3 1 8) - (2 3 2 1 8) - (2 4 3 3 8) - (2 2 2 3 1 8) - (2 2 2 4 2 3 5) - (6 6 2 1 1 4) - (2 4 5 1 2 1 1 4) - (4 2 4 1 1 2 1 3) - (7 2 2 1 2 1 3) - (1 2 1 1 2 1 3 3) - (5 2 6 4) - (5 16) - (2 2 16) - (2 2 6 9) - (2 2 5 10) - (3 5 11) - (5 6 12) - (14 13) - (12 14)) - (() - (2) - (4) - (3 1) - (3 2) - (1 2 2 1) - (3 2 11) - (1 9 6 7) - (7 11 2 2 2) - (8 3 3 2 2 1) - (3 2 4 2 1 1 3 2) - (4 2 4 1 2 1 2 2 3) - (5 1 4 1 1 1 2 2 2) - (5 2 1 2 1 1 2) - (5 1 1 2 2) - (7 1 2 2 2) - (8 2 2) - (9 2 2) - (9 2 3 2) - (10 1 5 3) - (6 4 2 4 3) - (7 5 1 4 4) - (7 6 1 5 8) - (7 8 5 7) - (7 8 4 7 1) - (7 9 7 2) - (7 10 11 3) - (6 8 2 4 4 4) - (6 10 1 7 5) - (5 1 7 5 1 1 1 9) - (5 1 7 2 1 1 8) - (6 15 2 1 8) - (5 14 1 1 8) - (19 3 8) - (19 9) - (32) - (31) - (29) - (13) - ())) - ("19990606-KVL (32)" - ((4 33) - (2 17 1 11) - (2 18 12) - (1 30) - (1 23 3) - (1 25 1 2) - (2 8 10 3) - (2 5 5 8) - (4 5 4 8 6) - (11 3 5 5) - (10 2 3 4) - (9 2 2 3) - (8 2 2 2) - (7 2 2 1) - (7 1 2 1) - (7 1 1 4 1) - (7 1 1 7 1) - (8 2 2 8) - (9 1 2 8) - (13 1 8) - (29) - (29) - (21 6) - (21 6) - (21 7) - (15 4 4 2) - (16 1 1 3) - (5 10 5) - (4 3 9 7) - (3 7 6 7) - (3 10 3 6) - (3 13 6) - (4 12 3) - (7 6 3) - (10 3 6 3) - (13 7 5) - (12 12) - (3 9) - (5) - ()) - ((38) - (3 32) - (1 30) - (1 21 5) - (19 3 4) - (18 4 4) - (18 4 4) - (1 5 10 5 3) - (1 4 10 4 3) - (3 5 9 4 3) - (10 5 9 5 2) - (9 2 12 4 2) - (8 2 10 4 1) - (8 2 9 5) - (7 2 4 10 4) - (7 1 2 2 5 4 4) - (7 2 2 7 3 2 1) - (6 1 2 6 4 1 2) - (6 1 2 6 3 1 2) - (6 2 1 2 7 3 3) - (6 1 2 11 4) - (6 1 1 7 4) - (6 1 1 7 1 5) - (6 1 1 8 3 4 2) - (6 2 10 5 1 2) - (6 1 10 6 5) - (1 5 1 8 6 5) - (2 4 1 7 6 4) - (1 5 1 12 4) - (7 1 7 4) - (7 1 2) - (7 1) - (8) - (4 3) - (4 4) - (5 4) - (6 4) - (5 6) - (4 8) - (4 12))) - ("19990607aDRA (33)" - ((40) - (40) - (9 30) - (40) - (3 16 18) - (21 2 1 1 10) - (21 3 7) - (7 8 6 1 1 6) - (3 3 12 1 1 2 3 4) - (3 13 5 3 5) - (18 1 6 3 1 6) - (11 7 2 2 4) - (19 2 1 4 1 5) - (18 1 2 2 2 3) - (17 1 3 3 4 2 4) - (18 3 4 2 4) - (21 4 5 2 1) - (21 1 1 2 2 1) - (5 4 10 1 6 2 2 1) - (2 2 2 3 7 1 1 2 2 1) - (1 2 1 4 7 2 4 2 2 1) - (1 2 1 4 8 1 2 1 1) - (1 2 5 10 2 3 1 1) - (1 4 5 13 2 2 2 1) - (1 3 5 15 2 1 3) - (1 3 5 16 1 1 1 2) - (1 3 5 16 1 1 3) - (1 2 4 17 1 1 1 2) - (2 2 3 18 1 1 3) - (2 2 3 6 8 1 1 1 2) - (2 2 3 5 7 1 1 3) - (2 1 2 6 2 6 1 1 1 2) - (3 1 1 7 3 5 1 1 1 3) - (3 2 8 7 1 1 7) - (3 2 10 3 8) - (3 2 11 7 9) - (3 1 13 12) - (4 33) - (4 34) - (4 34)) - ((40) - (20 12) - (19 8) - (4 3 17 3) - (9 21) - (18 14) - (19 1 3 2) - (7 13 3) - (7 11 9 4) - (2 16 10 6) - (18 11 7) - (11 16 8) - (27 9) - (24 12) - (19 13) - (20 16) - (40) - (7 6 25) - (7 1 2 1 14 6) - (7 1 1 1 14 5) - (4 2 1 1 15 2 4) - (4 1 2 1 2 10 3 1 3) - (5 5 2 2 9 2 1 3) - (6 1 3 1 2 2 9 1 1 3) - (6 4 1 4 12 1 3) - (5 1 2 4 2 12 1 3) - (6 1 1 3 1 2 11 1 3) - (5 1 1 11 1 3) - (6 1 1 1 1 1 1 1 10 1 4) - (5 1 3 1 1 1 1 1 1 8 2 4) - (7 3 1 1 1 1 1 2 6 1 1 4) - (8 1 1 1 1 1 1 2 1 1 5) - (6 1 2 1 7 1 6) - (7 1 13 1 7) - (9 1 18 7) - (8 2 1 8) - (13 2 4 2 1 1 1 1 7) - (16 5 2 1 1 1 8) - (16 16) - (40))) - ("19990607cDRA (34)" - ((40) - (9 16 12) - (8 14 11) - (8 1 12 1 11) - (7 3 10 1 11) - (7 4 8 1 11) - (6 2 2 7 1 11) - (6 1 2 6 2 11) - (5 2 3 4 3 11) - (5 2 2 4 10) - (4 3 3 4 10) - (4 4 4 3 10) - (4 4 3 2 10) - (4 2 3 4 1 10) - (5 8 1 11) - (4 3 3 1 12) - (3 3 4 2 2 12) - (3 3 2 2 2 1 11) - (3 3 2 7 11) - (2 5 2 8 11) - (2 6 12 10) - (2 7 8 9) - (1 12 8 8) - (1 22 7) - (1 23 6) - (1 1 22 5) - (1 3 22 4) - (1 4 19 3) - (1 5 7 8 3) - (1 6 3 7 4) - (1 8 2 6 4) - (2 11 2 5) - (2 16 1 4 6) - (2 16 2 7) - (2 15 14) - (2 15 14) - (2 14 14) - (2 19 13) - (2 22 13) - (2 24 12)) - ((40) - (22 9) - (19) - (16 1) - (10 1 2) - (8 2) - (6 3 2) - (4 6 3) - (2 7 4 3) - (1 3 4 7 3) - (1 3 1 17 3) - (2 5 3 7 14) - (3 8 9 12) - (4 5 11 11) - (5 2 3 9 10) - (8 3 1 8 10) - (9 2 3 7 9) - (9 2 2 2 7 9) - (9 2 1 1 7 9) - (9 2 1 1 7 9) - (8 2 2 2 7 8) - (7 2 4 7 8) - (6 3 4 7 8) - (5 15 8) - (4 2 1 11 1 8) - (3 4 2 11 1 1 3) - (2 6 13 1 1 3 1) - (1 11 12 1 6) - (2 2 10 1 7) - (9 6 10 1 6) - (21 9 1 6) - (22 8 1 6) - (23 7 1 6) - (24 2 2 7) - (25 1 1 8) - (26 9) - (27 11) - (40) - (40) - (40))) - ("19990616-DRA (35)" - ((40) - (1 12 5 17) - (2 13 5 17) - (2 1 1 1 1 1 1 1 1 3 1 3) - (2 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 2 2) - (2 1 1 1 1 1 1 1 2 1 2 2 2) - (40) - (40) - (40) - (40) - (40) - (40) - (40) - (12 12) - (10 14 10) - (8 18 8) - (7 4 1 1 1 1 1 1 1 3 7) - (6 4 1 1 1 1 1 1 1 1 3 6) - (5 3 1 1 1 1 1 1 1 1 1 2 5) - (4 24 4) - (3 1 24 1 3) - (2 2 24 2 2) - (1 3 24 3 1) - (1 3 24 3 1) - (1 3 24 3 1) - (2 2 24 2 2) - (3 1 24 1 3) - (4 24 4) - (5 24 5) - (6 24 6) - (7 23 7) - (8 19 8) - (10 14 10) - (12 12) - (40) - (40) - (40) - (40) - (40) - (40)) - ((40) - (1 20 15) - (1 15 3 14) - (1 18 5 13) - (3 13 7 12) - (3 1 12 11) - (3 11 10) - (16 9) - (3 9 13 8) - (5 9 15 8) - (3 8 15 7) - (14 3 13 7) - (3 7 2 14 6) - (3 1 7 2 1 14 6) - (3 1 7 3 15 6) - (13 2 1 14 6) - (1 7 3 15 6) - (3 9 2 1 14 6) - (3 7 3 15 6) - (13 2 1 14 6) - (3 7 3 15 6) - (3 1 7 2 1 14 6) - (1 7 3 15 6) - (13 2 1 14 6) - (3 7 3 15 6) - (3 1 7 2 1 14 6) - (3 7 3 15 6) - (13 1 1 13 6) - (3 9 2 14 7) - (5 8 2 13 7) - (4 10 15 8) - (5 9 14 8) - (3 11 9) - (17 10) - (3 12 11) - (3 15 7 12) - (3 16 5 13) - (4 15 3 14) - (22 15) - (40))) - ("19990618aDRA (36)" - ((40) - (10 13 11) - (9 3 11 3 10) - (8 4 1 1 4 9) - (8 4 4 9) - (8 4 4 9) - (9 10) - (2 3 4 1 1 12) - (1 1 3 12) - (1 3 3 12) - (1 3 1 12) - (2 4 2 1 2 5 3 2) - (2 4 5 4 1 1) - (3 6 3 5 1) - (4 8 6 1) - (14 8 2) - (15 9 2) - (15 10 3) - (13 9 4) - (10 10) - (9 9) - (8 8) - (8 8) - (7 7) - (6 6) - (4 4) - (3 2 2 3) - (2 4 4 2) - (2 4 4 2) - (2 4 1 1 4 2) - (2 4 2 2 4 2) - (3 2 2 2 2 3) - (4 2 3 3 2 4) - (7 5 5 7) - (7 5 5 7) - (7 5 5 7) - (7 5 2 5 7) - (8 3 6 3 8) - (9 16 9) - (40)) - ((40) - (8 29) - (7 14 9) - (8 12 4 8) - (9 10 6 7) - (8 11 6 7) - (7 11 4 8) - (8 12 2 3) - (3 15 2 4 2) - (2 3 13 2 6 1) - (1 4 12 6 1) - (1 4 6 6 1) - (1 4 5 4 2) - (2 3 2) - (4 2 2) - (3 2) - (3 1 1 2) - (3 2 3) - (3 1 2 3) - (3 5 4) - (3 1 2 4) - (3 2 3) - (3 1 1 3) - (3 2) - (4 2 2) - (2 3 2) - (1 4 5 2) - (1 4 6 4 2) - (1 4 12 6 1) - (2 3 12 6 1) - (3 14 2 6 1) - (21 2 4 2) - (12 8 2 3) - (11 7 4 8) - (12 7 6 7) - (13 6 6 7) - (12 8 4 8) - (11 10 9) - (12 25) - (40))) - ("19990618bDRA (37)" - (() - () - () - (2 2) - (3 3) - (5 5) - (7 7) - (3 5 2 9) - (1 2 8 4 8 3 1) - (1 4 6 6 4 3 2) - (2 4 5 2 1 3 6 2) - (2 11 2 1 2 8 2) - (2 5 5 4 4 6 2) - (1 5 5 6 4 5 2) - (1 4 7 4 6 4 1) - (12 6 5) - (7 4 4 7) - (6 3 1 2 2 6) - (3 3 2 3 3 3) - (2 3 3 3 3 2) - (3 4 3 2) - (3 4 3 3) - (5 4 3 3) - (5 5 3 4) - (4 6 4 3) - (4 6 4 4) - (4 7 4 4) - (12 6 3) - (11 10) - (10 11) - (5 5 11) - (4 4 12) - (4 3 12) - (4 3 6 6) - (2 2 5 5) - (1 1 3 4) - (2 2) - (1 1) - () - ()) - (() - () - (3) - (9 3) - (3 3 3 4) - (7 7 7) - (4 12 7) - (4 10 7) - (3 9 8) - (3 4 3 8) - (4 2 3 4 4) - (3 1 3 4 6) - (8 4 8) - (8 4 10) - (8 3 12) - (7 3 8 3) - (1 3 1 3 8) - (1 1 2 8) - (7 1 7) - (8 5) - (3 3) - (7 3) - (1 1 4 5) - (1 3 1 1 17) - (7 2 19) - (3 4 2 17) - (2 5 2 12) - (2 1 3 6 8) - (2 3 2 8 6) - (3 4 2 12) - (3 4 3 11) - (3 6 2 10) - (15 7) - (17 6) - (6 6 6) - (3 5 3 3) - (9) - () - () - ())) - ("19990618cDRA (38)" - ((40) - (40) - (2 3 33) - (2 3 11 18) - (2 10 17) - (2 3 9 1 16) - (2 3 8 4 16) - (14 22) - (3 7 22) - (2 3 5 21) - (2 4 20) - (2 3 3 2 19) - (2 3 1 4 18) - (8 6 17) - (2 3 2 7 16) - (2 1 3 8 15) - (2 1 1 4 9 14) - (2 3 16 13) - (2 3 17 12) - (25 11) - (2 3 19 10) - (2 1 20 9) - (2 1 1 21 8) - (2 3 22 7) - (2 3 1 19 6) - (9 21 5) - (2 2 22 4) - (2 6 3 17 3) - (2 4 4 19 2) - (2 6 4 4 13 2) - (2 2 4 5 15 2) - (8 9) - (2 2 9) - (2 3 1 9) - (2 1 9) - (2 2 8 5 19) - (2 3 13 19) - (20 19) - (40) - (40)) - ((40) - (40) - (2 2 1 1 1 1 3) - (4 3 1 4 5 4 1 1 1 1 5) - (4 3 1 5 5 3 1 1 1 1 5) - (4 3 1 4 5 4 3 1 1 4) - (2 2 1 1 1 3 2 1 3) - (40) - (12 10 6 5) - (12 9 5) - (11 8 6 5) - (10 14 5) - (9 14 5) - (8 14 3 5) - (7 15 4) - (6 16 3 5) - (5 20 5) - (4 19 5) - (3 2 18 5) - (3 4 15 1 5) - (3 5 14 2) - (3 7 13 1 5) - (4 7 14 5) - (5 7 13 5) - (15 12 5) - (16 11 5) - (17 10 5) - (18 9 5) - (19 8 5) - (20 7 5) - (21 6 5) - (22 14) - (23 13) - (24 12) - (25 11) - (26 10) - (27 9) - (28 9) - (40) - (40))) - ("19990625-DRA (39)" - ((40) - (16 17) - (15 16) - (5 8 15) - (6 6 14) - (6 4 13) - (6 4 9 3) - (6 4 8 3) - (1 5 3 2 2 7 3) - (2 4 2 3 3 7 4) - (2 5 2 2 2 6 4) - (2 4 2 2 2 5 5) - (2 3 2 5 6) - (3 3 2 4 6) - (3 3 2 4 6) - (3 3 2 5 6) - (3 3 2 5 4 1) - (3 3 2 5 4 1) - (4 3 2 2 5 1) - (4 3 5 1) - (5 6 2) - (6 6 2) - (7 8 2) - (11 8 2) - (5 3) - (4 4) - (3 5) - (2 6 12) - (1 8 2 10) - (1 7 1 4 8) - (1 7 3 7 7) - (1 6 5 8 5) - (1 6 7 10 5) - (1 6 7 11 4) - (1 5 8 7 3) - (1 5 10 8 2) - (4 15 6 1) - (4 17 6) - (3 23 8) - (2 27 7)) - ((36 2) - (8 19 3) - (9 14 4) - (11 8 8) - (12 5 9 1) - (3 13 3 9 1) - (4 10 2 8 2) - (5 9 1 8 2) - (8 3 1 7 3) - (9 2 1 4 4) - (15 1 1 3 5) - (16 2 6) - (5 2 2 8) - (4 2 8) - (3 2 9) - (2 2 1 10) - (1 4 11) - (1 2 1 10) - (1 9) - (1 5) - (1 4) - (1 2 1 4) - (1 4 6 4) - (2 2 1 6 4) - (3 2 5 3) - (4 2 5 2) - (5 3 1 5 2) - (18 2 6 2) - (18 2 1 6 2) - (17 3 1 5 1) - (16 4 2 5 1) - (13 5 2 5) - (11 6 3 6) - (10 7 4 5) - (8 11 4 5) - (7 10 7 4) - (6 10 9 3) - (17 11 3) - (16 16 2) - (37 2))) - ("19990628-DRA (40)" - ((40) - (1 26 1) - (2 20 2) - (3 12 3) - (4 4) - (6 14 6) - (9 14 9) - (11 16 11) - (11 16 11) - (1 18 1) - (1 7 20 7 1) - (2 5 2 16 2 5 2) - (3 3 3 14 3 3 3) - (4 1 4 8 4 1 4) - (8 7 6 7 8) - (8 4 4 4 8) - (8 4 2 4 8) - (9 4 4 4 9) - (10 16 10) - (11 16 11) - (11 16 11) - (11 14 11) - (12 14 12) - (12 14 12) - (12 14 12) - (12 14 12) - (12 14 12) - (12 14 12) - (12 14 12) - (11 16 11) - (11 1 8 1 11) - (11 2 8 2 11) - (11 3 8 3 11) - (11 16 11) - (11 16 11) - (12 14 12) - (13 1 1 13) - (14 10 14) - (15 15) - (40)) - ((40) - (1 7 29) - (1 6 1 28) - (1 5 2 27) - (1 4 3 26) - (1 4 3 26) - (1 3 3 26) - (2 3 2 27) - (2 3 1 23) - (2 2 5 22) - (3 2 7 21) - (3 2 6 7 5) - (3 5 8 6 4) - (3 8 1 14 5 3) - (4 8 1 13 5 2) - (4 8 1 12 3 1 1) - (4 9 18 1 1) - (4 10 18 1 1) - (4 11 19 1 1) - (4 31 1 1) - (4 31 1 1) - (4 11 19 1 1) - (4 10 18 1 1) - (4 9 18 1 1) - (4 8 1 12 3 1 1) - (4 8 1 13 5 2) - (3 8 1 14 5 3) - (3 5 8 6 4) - (3 2 6 7 5) - (3 2 7 21) - (2 2 5 22) - (2 3 1 23) - (2 3 2 27) - (1 3 3 26) - (1 4 3 26) - (1 4 3 26) - (1 5 2 27) - (1 6 1 28) - (1 7 29) - (40))) - ("19990703-NEP (41)" - ((13 13) - (9 2 2 3 2) - (3 7 1 1 1 1 1 1) - (7 3 2 1 1 1 1 3) - (14 1 1 1 1 1 3) - (11 2 1 1 1 1 3) - (3 10 1 1 1 1 1 3) - (6 8 2 2 3 4) - (7 7 13) - (2 14 1) - (4 28) - (1 5 27) - (3 5 26) - (1 4 5 25) - (2 4 31) - (3 4 17 11) - (1 2 5 15 1) - (1 3 4 14 1 7 1) - (1 3 18 3 1 1 1 2) - (1 4 6 14 1 1 3) - (2 9 2 13 5 3) - (2 8 4 11 7 1 1) - (2 8 2 7 1 6 2) - (12 1 4 6 1 2 6 1) - (13 1 1 5 1 4 2 2) - (4 1 1 5 1 4 1 2 1) - (9 4 4 5 2 2 1 4) - (2 3 1 4 4 5 3 2 4) - (1 1 1 1 4 4 5 5 1 2 1) - (1 1 1 2 4 4 5 4 2 1 2) - (1 1 1 1 4 4 5 3 4 4) - (2 3 1 5 7 3 2 4 1) - (9 4 4 7 3 4 2) - () - (32 7) - (1 3 2 1 3 2 1 3 5 2 3) - (1 2 2 1 1 1 1 1 1 1 1 2 2 1 2 2) - (1 1 1 1 1 1 1 1 1 2 1 2 2 1 2 2) - (1 3 1 3 1 1 1 2 1 2 2 1 4 2) - (5 2 3 2 2 2 2 1 2 3)) - ((9 1 1 6) - (2 5 7 1 1) - (7 2 2 2 4 1) - (10 1 3 1 3 1) - (3 8 2 2 2 3) - (6 6 7 1 1 1) - (6 5 2 2 1 1 1) - (2 12 1 3 1 2 1) - (4 10 2 1 2 6) - (6 9 1) - (2 6 15 1 4) - (4 10 10 2 2) - (2 5 8 2 9 1 4) - (1 3 6 6 4 8 2) - (1 4 6 5 2 1 6) - (1 4 13 1 2 5 1 2 1) - (2 4 13 1 6 1 1 3) - (2 5 13 2 5 1 2 1) - (2 5 13 1 6 1 6) - (3 18 1 1) - (3 29 2 3) - (3 29 1 4) - (33 2) - (33 6) - (33 2 1) - (1 1 1 1 1 7 5 2 1 3) - (1 1 1 1 7 5 7 1 1 3) - (9 5 5 1 6 2) - (1 1 5 3 1 2 6 5) - (9 6 1 1 4 2 2 6) - (2 2 6 2 2 4 1 1 1 2) - (1 5 1 6 1 4 2 1 3 2 2) - (2 2 6 2 4 2 3) - (9 6 1 7 1 1 1 6) - (2 2 6 2 5 2 1 2 2 3) - (1 5 1 6 1 3 4 3 1 1 1) - (2 2 6 2 2 4 3 1 1 1) - (9 6 4 2 2 3 2 1) - (1 6 6 4 1 2 3 1 6) - (1 6 7 3 2 6))) - ("19990714bNEP (42)" - ((3 2 3) - (2 1 2 1 2 1) - (1 1 1 2 1 1) - (1 2 2 2 2 1 2) - (2 2 2 2 2 1 2 2) - (2 1 2 2 2 2) - (2 2 2 2 2) - (2 2 2 2 2 1) - (1 2 2 2 2 2) - (2 2 2 2 2 2 2) - (2 2 2 2 2 2 2 1) - (1 2 2 2 2 2 2 2) - (2 2 2 2 2 2 2 2 2) - (2 2 2 2 2 2 2 2 2 1) - (1 2 2 2 2 2 2 2 2 2) - (2 2 2 2 2 2 2 2 2 2) - (2 2 2 2 2 2 2 2 2 2) - (2 2 2 2 2 2 2 2 2 2) - (2 2 2 2 2 2 2 2 2 2) - (30) - (1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1) - (34) - (1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1) - (38) - (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (1 1) - (38) - (1 32 1) - (1 32 1) - (1 32 1) - (1 32 1) - (1 10 1 1 1 10 1) - (1 10 1 1 1 10 1) - (1 10 2 2 2 10 1) - (1 10 2 2 2 10 1) - (2 10 10 2) - (2 32 2) - ()) - (() - (4 2) - (1 11) - (5 1) - (1 1 11) - (2 1 8 2 11) - (5 7 2 1 11) - (2 2 1 1 11) - (1 2 10 2 2 11) - (5 1 9 1 1 11) - (1 1 2 11) - (1 11 2 1 11) - (14 1 1 11) - (1 2 2 11) - (17 1 1 5 1) - (1 14 1 2 5 1) - (1 2 1 9 1) - (1 18 1 1 5 2 1) - (19 2 2 5 1) - (2 1 1 5 2 1) - (1 1 2 9 1) - (20 2 1 5 1) - (1 19 1 1 9 1) - (1 2 2 5 2 1) - (1 16 1 1 5 1) - (17 1 2 5 1) - (1 2 1 11) - (15 1 1 11) - (1 12 2 2 11) - (2 1 1 11) - (1 9 1 2 11) - (12 2 1 11) - (1 1 1 11) - (8 2 2 11) - (1 9 1 11) - (2 1 2 11) - (5 4 1) - (2 1 11) - (1 2 4 2) - (5))) - ("19990722-DRA (43)" - ((40) - (40) - (2 3 1 3 1 2 16) - (2 2 1 3 3 3 19) - (2 1 1 1 3 3 3 2 5) - (2 2 1 3 3 7 1 8 4) - (2 3 2 3 3 1 10 3) - (24 12 2) - (22 13 2) - (21 16 1) - (7 4 7 17 1) - (7 2 7 17 1) - (7 1 1 6 16 1) - (7 4 6 8 8 2) - (6 1 2 1 5 7 7 2) - (6 6 5 6 2 5 3) - (6 2 2 5 6 3 4) - (6 6 4 6 13) - (7 2 2 3 5 13) - (9 6 3 5 12) - (8 9 1 4 12) - (7 13 4 12) - (7 7 6 3 12) - (7 4 2 8 2 11) - (4 3 2 10 2 11) - (3 6 2 12 2 10) - (3 1 2 1 12 2 10) - (3 3 1 1 1 12 1 10) - (3 5 2 2 3 7 1 9) - (3 5 1 1 2 10 9) - (3 4 5 1 1 10 9) - (4 7 1 10 9) - (15 2 9 11) - (16 7 11) - (2 8 4 7 10) - (1 3 6 5 6 10) - (5 6 12 9) - (5 10 9) - (1 3 34) - (2 35)) - ((36 2) - (35 2 1) - (2 27 4) - (3 21 3 4) - (4 19 2 3 2 4) - (5 18 1 4 3 2 1) - (2 7 6 1 4 4 2) - (10 4 2 1 4 8) - (2 5 2 3 1 6 2 9) - (6 5 3 2 8 10) - (6 5 3 2 5 1 10) - (6 4 2 3 5 4 10) - (2 3 4 4 2 6 4) - (14 7 2 4 1 3) - (2 14 6 2 2 3 1 3) - (2 15 3 4 1 1 1 3) - (2 11 11 2 1 3) - (2 16 11 1 2 2) - (2 17 8 1 1 2) - (12 2 7 4 1 1 2) - (3 1 3 5 1 7 4 1 1 2) - (2 1 1 2 9 1 12 1 2) - (2 1 1 1 11 12 1 2) - (2 1 1 1 13 14 2) - (4 1 15 13 2) - (6 16 12 2) - (5 9 6 10 2) - (4 9 4 4 9 2) - (4 8 8 3 3 3 2) - (4 9 9 1 2 1 2) - (4 10 11 4 2) - (4 11 23) - (4 11 23) - (4 11 23) - (4 11 23) - (5 10 23) - (6 8 24) - (7 3 25) - (9 27) - (40))) - ("19990801-NEP (44)" - ((1 1) - (1 1 1 1) - (1 1 1 1) - (1 1) - (1 1) - (1 1) - (1 1 2 1 1) - (1 2 1 1 2 1) - (1 3 1 1 3 1) - (1 1 3 2 3 1 1) - (1 1 2 2 1 1) - (1 2 1 1 2 1) - (1 2 6 2 1) - (1 2 2 2 1) - (1 1 1 1) - (3 2 2 3) - (1 1 1 1) - (1 12 1) - (5 4 5) - (40) - (40) - (40) - (40) - (1 1) - (40) - (1 1 1 1 1 1) - (1 1 1 1 1 1) - (7 5 5 7) - (1 1 1 1 1 1 1 1 1 1 1 1) - (1 1 1 5 5 1 1 1) - (7 1 1 7) - (1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 1) - (7 1 1 7) - (1 1 1 1 1 1 1 1) - (1 1 1 1 1 1 1 1) - (7 5 5 7) - (1 1 1 2 2 2 2 1 1 1) - (1 1 1 2 8 2 1 1 1) - (7 2 2 2 2 7)) - ((21) - (5 1 1 1 1 1 1) - (2 1 5 1 4 4 1) - (1 20 1 1 1 1 1 1) - (2 1 5 4 4 4) - (5 1 1 1 1 1 1) - (4 16) - (4 1) - (4 1) - (4 1 2) - (4 1 3) - (4 1 3 2) - (4 1 1 1 1) - (6 4 1 10) - (2 2 1 4 1 1 1 1) - (2 2 3 4 1 3 2) - (1 3 1 4 1 3) - (4 1 4 1 2) - (2 1 1 6 1 1) - (1 1 2 6 1 1) - (1 1 2 6 1 1) - (2 1 1 6 1 1) - (4 1 4 1 2) - (1 3 1 4 1 3) - (2 2 3 4 1 3 2) - (2 2 1 4 1 1 1 1) - (6 4 1 10) - (4 1 1 1 1) - (4 1 3 2) - (4 1 3) - (4 1 2) - (4 1) - (4 1) - (4 16) - (5 1 1 1 1 1 1) - (2 1 5 4 4 4) - (1 20 1 1 1 1 1 1) - (2 1 5 1 4 4 1) - (5 1 1 1 1 1 1) - (21))) - ("19990807-DRN (45)" - ((2) - (1) - (2) - (3) - (2) - (1) - (2) - (3) - (2) - (1) - (2) - (3) - (2) - () - (2) - (1 2 4) - (5 2 1 1) - (2 2 2 1 1 1) - (2 2 2 1 1 1 2) - (1 2 2 2 1 1 1) - (2 2 1 1 1 2) - (2 1 1 2) - (12 4) - (1 2) - (1 2) - (2 3 1 4) - (1 3 1 1 1 6) - (2 3 3 1 15) - (3 1 17) - (3 1 20 2) - (13 19 4) - (15 16 6) - (17 11 7) - (19 6 10) - (22 4 12) - (23 13) - (27 12) - (28 11) - (29 10) - (30 9)) - ((13 1 2 1 1 1 10) - (1 3 3 3 5 1 3 10) - (1 1 1 2 1 10) - (2 3 1 14) - (2 3 1 14) - (2 1 14) - (2 1 10) - (2 1 3 10) - (2 1 1 1 10) - (3 3 10) - (2 10) - (18) - (10) - (9) - (9) - (1 8) - (2 8) - (3 7) - (4 7) - (6 6) - (6 6) - (4 6 6) - (2 1 1 8 5) - (2 1 1 1 10 4) - (1 1 1 14 4) - (2 1 1 13 4) - (1 1 1 2 10 4) - (1 1 2 8 1 3) - (4 6 3 2) - (6 4 1) - (5 6) - (5 7) - (5 7) - (4 8) - (2 9) - (1 9) - (10) - (10) - (11) - (11))) - ("19990808bVAC (46)" - ((5 5 5) - (3 2 3 3 2 3) - (2 2 2 1 1 2 2 2) - (2 2 2 9 2 2 2) - (1 2 1 3 3 1 2 1) - (2 3 2 2 2 1 1 2 2 2 3 2) - (1 2 1 1 2 2 1 1 2 1) - (1 2 2 4 1 4 2 1 1) - (1 2 2 1 4 4 1 1 1 2 1) - (1 2 1 1 5 5 1 2 2 1 1) - (1 2 2 1 4 4 2 1 2 1) - (1 1 1 1 4 5 1 1 1 1) - (1 2 2 2 4 4 2 1 2 1 1) - (2 1 1 1 5 1 5 2 2 1 2) - (1 2 1 1 13 1 1 1 2 1) - (1 1 3 3 5 3 3 1 1) - (2 1 2 5 1 3 1 6 1 2) - (1 1 1 3 1 1 1 1) - (2 2 7 1 1 8 1 2) - (2 3 7 3 2) - (3 3 4 4 3 1 3) - (5 4 4 3 1) - (2 6 6 1 2) - (2 3 4 5 4 3 3) - (2 2 4 3 4 1 1 2) - (1 2 6 5 6 3 1) - (2 2 4 5 5 4 2 2) - (1 1 4 3 3 4 1 1) - (1 2 6 5 5 6 2 1) - (1 1 4 5 5 5 4 1 1) - (2 3 3 3 3 4 2) - (7 5 5 5 7) - (2 5 5 5 5 2) - (2 3 3 3 3 2) - (3 5 5 5 5 3) - (7 5 5 5 7) - (6 3 3 3 6) - (7 5 5 5 7) - (33) - (2 2)) - ((9) - (3 4) - (2 1 2 3 5) - (2 1 2 3 2 3 2 4) - (1 1 2 3 2 2 2 1 6) - (2 2 3 1 2 3 8) - (1 1 2 3 3 3 2 4 5) - (1 2 2 2 2 1 2 4 4) - (1 2 3 1 1 1 2 6 5) - (2 2 3 2 2 1 1 4 5 2) - (2 3 3 1 1 1 1 4 3 1) - (2 4 1 1 1 6 5 2) - (3 3 1 1 1 4 5 5) - (3 7 1 1 4 3 4) - (9 1 6 5 5) - (17 4 5 5 2) - (1 8 2 4 3 3 1) - (2 2 2 2 6 5 5 3) - (2 1 1 1 4 2 5 5 6) - (1 1 1 5 1 3 3 4) - (2 1 1 1 4 2 5 5 6) - (2 2 2 2 6 5 5 3) - (1 8 2 4 3 3 1) - (17 4 5 5 2) - (9 1 6 5 5) - (3 7 1 1 4 3 4) - (3 3 1 1 1 4 5 5) - (2 3 1 1 1 1 6 5 2) - (2 3 1 1 1 1 1 1 1 4 3 1) - (2 2 2 2 1 1 1 1 4 5 2) - (1 2 2 1 13 6 5) - (1 2 1 1 1 1 1 1 4 4) - (1 1 1 2 1 3 8 4 5) - (2 2 2 2 3 1 2 3 9) - (1 1 1 1 2 2 2 2 1 6) - (2 1 2 1 2 2 3 2 4) - (2 1 1 3 5) - (3 4) - (9) - ())) - ("19990831-DAH (47)" - ((40) - (40) - (40) - (14 16) - (12 12) - (10 12 10) - (8 16 9) - (7 20 8) - (6 22 7) - (5 24 6) - (5 25 5) - (4 34) - (4 13 2 2 2 4) - (3 12 2 2 2 5) - (3 12 2 2 2 2 3) - (3 32 3) - (3 10 2 2 2 4 2) - (2 9 2 2 2 6 2) - (2 9 2 2 2 7 2) - (2 34 2) - (2 7 2 2 2 9 2) - (2 6 2 2 2 9 2) - (2 4 2 2 2 10 3) - (3 32 3) - (3 2 2 2 2 12 3) - (5 2 2 2 12 3) - (4 2 2 2 13 4) - (34 4) - (5 25 5) - (6 24 5) - (7 22 6) - (8 20 7) - (9 16 8) - (10 12 10) - (12 12) - (14 14) - (40) - (40) - (40) - (40)) - ((40) - (40) - (17 17) - (13 4 15) - (11 12 13) - (9 13 1 11) - (8 14 1 10) - (7 15 2 9) - (6 14 1 3 8) - (6 14 3 3 7) - (5 13 2 4 6) - (5 14 2 5 6) - (4 12 1 3 6 5) - (4 12 3 1 8 5) - (3 11 2 3 6 4) - (3 11 2 2 7 4) - (3 9 1 3 2 7 4) - (3 8 3 1 3 8 4) - (3 7 2 3 1 9 4) - (3 7 2 2 3 7 4) - (3 7 3 2 2 7 4) - (3 9 1 3 2 7 4) - (3 8 3 1 3 8 4) - (3 7 2 3 1 9 4) - (4 7 2 2 11 4) - (4 6 3 2 11 4) - (4 8 1 3 12 5) - (4 6 3 1 12 5) - (5 5 2 14 6) - (5 4 2 13 6) - (6 3 3 14 7) - (7 3 1 14 7) - (8 2 15 8) - (9 1 14 9) - (10 1 13 10) - (12 12 12) - (14 4 14) - (16 18) - (40) - (40))) - ("19990902-TUC (48)" - ((19 3 2 12) - (19 3 1 12) - (18 1 2 1 12) - (18 1 2 2 12) - (17 2 1 2 12) - (17 2 17) - (16 3 16) - (16 3 16) - (15 3 15) - (8 3 8) - (8 5 3 5 8) - (8 5 2 5 8) - (3 3 4 2 4 8) - (1 1 3 3 1 3 8) - (1 1 3 1 1 1 8) - (1 3 2 8) - (6 3 6) - (4 5 4) - (2 6 2) - (6) - (5) - (1 5 2) - (3 1 5 4) - (5 3 2) - (7 2 4 3) - (8 1 4 1) - (8 2 3 4 3) - (8 4 4 4) - (8 5 1 5 8) - (8 5 3 5 8) - (8 3 8) - (15 3 15) - (16 3 16) - (16 3 16) - (17 2 17) - (12 1 2 17) - (12 5 1 18) - (12 2 1 19) - (15 3 19) - (12 3 19)) - ((12 3 19) - (15 3 18) - (13 3 1 18) - (15 2 1 17) - (12 1 2 17) - (17 2 1 16) - (16 3 16) - (16 3 15) - (9 3 9) - (9 5 3 4 9) - (9 4 3 4 9) - (9 4 1 3 9) - (9 3 3 4 1) - (9 2 2 4 1 1) - (9 4 1 1) - (8 2 3 1) - (6 3 6) - (4 5 4) - (2 6 2) - (6) - (6) - (2 6 3) - (4 5 4) - (6 5 6) - (3 5 8) - (1 7 9) - (2 6 2 2 9) - (4 3 3 9) - (9 4 1 4 9) - (9 4 3 4 9) - (9 5 2 5 9) - (9 3 9) - (16 2 16) - (16 3 16) - (17 2 17) - (17 2 17) - (18 1 1 12) - (18 1 1 1 1 12) - (19 2 1 1 12) - (19 2 3 12))) - ("19990905-ARE (49)" - ((1) - (1) - (1 17) - (1 19) - (1 20) - (1 1 3) - (1 7 3) - (1 5 1 1 3) - (1 1 1 1 3) - (2 2 1 2 3) - (2 3 1 3) - (2 5 17 3) - (1 5 19 3) - (6 21 3) - (4 23 3) - (2 27) - (28) - (1 1) - (2 23 1) - (1 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 2 2 2 2 2 1) - (1 1 1 1) - (2 31 2) - () - (4 3 3 1 3 3 3 4) - (2 1 1 1 1 1 1 1 1 1 2) - (3 1 2 3 3 1 1 1 3) - (2 1 1 1 1 1 1 1 1 2) - (4 1 3 1 1 1 3 1 4)) - ((2 1) - (1 3) - (5) - (3 3 1 1) - (3 3 2 2 1 1) - (2 4 1 1 1) - (1 5 16) - (2 5 3 1) - (1 5 2 1) - (1 4 3 1 12 1 1) - (1 1 4 1 12 1 5) - (2 1 5 1 1 1) - (3 1 6 1 1) - (6 6 1 1 5) - (3 1 9 1 12 1 1 1 1) - (3 1 6 1 12 1 1 1) - (3 1 6 1 1) - (3 1 1 6 1 1 4) - (3 4 6 1 1 1 1) - (3 6 1 12 1 4) - (3 6 1 12 1) - (3 6 1 1 5) - (3 6 1 1 1 1) - (3 6 1 1 3) - (3 6 1 12 1) - (3 6 1 12 1 5) - (3 6 1 1 1 1) - (3 6 1 1 5) - (3 6 1 1) - (3 5 1 12 1 1) - (3 4 1 12 1 5) - (3 3 1 1 1) - (3 2 1) - (12 1) - (9 15 1 1) - (6 1 1 1) - (1 1) - (5) - (1 3) - (2 1))) - ("19990916aCAR (50)" - ((22 8 6) - (3 17 6 5) - (2 17 6 4) - (3 8 15 3) - (11 14 3) - (12 15 3) - (29 4) - (7 14 7 5) - (6 12 7 6) - (7 4 9 17) - (13 26) - (14 24) - (3 12 23) - (2 12 13 7) - (3 15 11 6) - (11 8 11 7) - (10 8 18) - (11 10 1 15) - (24 1 7 4) - (22 1 7 3) - (24 6 2) - (23 2 4 2) - (31 1 1 1) - (30 2 2 1 1) - (5 1 4 14 8) - (4 1 3 12 9) - (4 2 2 2 8 10) - (5 3 3 3 8 11) - (6 3 4 3 5 12) - (3 1 5 14) - (2 2 3 2 6 15) - (2 2 3 2 5 12 3) - (2 2 3 2 4 3 3 2 2) - (3 4 2 4 2 5) - (5 6 11 8) - (4 1 2 1 23) - (1 1 1 3 1 1 23) - (4 1 4 1 1 23) - (5 1 6 1 23) - (4 1 4 1 22)) - ((37 2) - (36 3) - (2 10 16 3 3) - (1 8 14 3 2 3) - (2 10 11 2 3 1 3) - (24 1) - (8 15 5) - (7 15 2) - (8 15 4 5 3) - (24 3 5 4) - (16 9 5 4) - (4 10 12 3 3) - (3 3 6 12 3 2 2) - (4 5 14 2 3 1 3) - (11 12 1) - (11 12 5) - (12 12 2) - (13 15 4 4) - (13 15 4 5) - (14 11 3 6) - (15 10 6 6) - (1 6 7 15 6) - (4 7 1 11 1 6) - (1 6 10 1 8 2 6) - (17 1 9 2 6) - (19 7 2 7) - (18 2 6 3 7) - (28 3 7) - (3 21 4 7) - (2 18 6 6) - (1 15 9 5) - (5 6 11 5) - (4 4 10 6) - (5 4 8 7) - (1 10 9 7) - (2 11 8 8) - (3 13 7 8) - (20 10 7) - (22 9 6) - (24 7 6))) - ("19990927-BBA (51)" - ((2 1) - (2 2) - (2 3) - (2 3) - (2 4) - (2 4) - (2 2 4) - (2 2 4) - (3 2 2 4) - (6 2 2 5) - (3 3 2 2 5) - (2 3 2 2 2 3) - (3 2 2 2 2 3) - (2 4 2 2 2 4) - (2 2 5 2 2 6) - (2 3 4 17) - (4 2 4 9 7) - (5 2 6 2 2 4) - (10 8 2 2 4) - (9 2 2 4 2 4) - (8 2 2 5 4) - (7 2 2 5 3) - (7 2 2 2 14) - (10 2 2 14) - (4 4 2 1 3) - (3 5 2 2) - (4 3 4 2 2) - (7 5 3) - (8 8 6) - (12 6 7) - (10 20) - (11 4 15) - (14 4 8) - (14 4 6) - (19 6) - (24) - (21) - (18) - (14) - (10)) - ((4) - (7) - (12) - (3 14) - (3 15) - (2 15) - (3 7 8) - (2 6 8) - (2 8 10) - (2 4 13) - (3 3 4 9) - (2 3 4 8) - (3 3 2 10) - (3 3 13) - (7 4 7) - (5 3 7) - (24 3 8) - (24 12) - (2 12) - (19 4 7) - (16 1 2 6) - (4 2 2 3 7) - (4 2 1 10) - (21 10) - (21 10) - (5 2 2 3 6) - (17 2 5) - (15 3 6) - (5 2 9) - (5 2 8) - (5 2 7) - (6 3 7) - (6 3 6) - (2 3 4 5) - (2 5 2 5) - (2 4 6) - (3 4) - (2 3) - (2 1) - (2 1))) - ("19991008-LLO (52)" - ((6 6 2) - (16 1 1) - (18 1 4) - (5 12 6) - (5 14 4) - (1 4 15 2) - (3 4 15 1 1) - (5 4 4 1 1 2) - (3 4 2 2 1 3) - (2 2 5 1 9 1 1 4) - (1 6 3 3 4 1) - (1 4 3 2 3 1) - (3 2 1 3 2 2 2 1) - (5 2 1 2 1 1 2 1 1 2) - (4 1 1 2 1 1 2 1 3) - (5 4 2 1 2 1 2 1 4) - (6 2 3 1 3 4 1) - (1 3 1 5 1 1 5 3 1) - (5 5 2 5 2 1) - (3 2 14 1 2) - (4 2 4 4 4 1 3) - (8 4 4 1 4) - (4 2 12 4 1) - (1 3 2 10 3 1) - (8 10 2 1) - (3 1 2 8 1 2) - (4 1 2 6 1 3) - (7 1 4) - (1 6 1 6 1) - (3 1 3 8 1) - (3 1 1 1 3 3 4) - (7 3 2 2 1) - (9 3 2 1 2 1 2) - (4 2 2 7 4 4 1 4) - (1 3 2 3 7 1 1 2 1 1 1 1) - (8 3 1 1 1 1 1) - (7 3 2 2 3 1 1 1 3) - (8 7 5 1 1 1 1 2 1) - (3 8 1 1 1 1 1 1 1) - (3 6 6 9)) - ((1 1 5 5 5 4 2) - (4 5 5 4 5 5) - (4 30) - (4 7 5 3 10) - (1 1 1 5 1 3 3 2 4) - (1 5 1 3 4 3) - (7 1 6 3 7) - (10 2 1 4 3 1 2 1) - (13 2 1 2 1 3 2) - (13 2 1 2 2 2) - (5 3 2 1 1 2) - (4 4 1 1 1) - (3 6 7 1) - (3 4 1 7 3 2) - (8 2 7 5 3) - (7 1 4 8 3 3 3) - (6 2 2 9 2 2 2) - (7 1 1 2 6 2 2 2) - (7 1 1 2 2 8 2 2) - (7 1 1 3 8 2 2) - (7 1 1 1 3 9 3 3) - (7 1 1 1 2 6 3 5) - (7 1 2 2 6 2 3) - (6 1 3 9 2 3) - (5 2 8 2 2 1) - (4 2 7 2 1 1) - (2 3 7 7) - (2 6 1) - (8) - (2) - (2) - (8) - (2 20 1 1) - (1 2 1 3 3 3 12) - (1 4 3 3 3 1 1) - (1 4 3 3 3 1 1 1) - (4 4 3 3 2 2 3) - (2 20 2 2 1) - (2 1 1) - (7))) - ("19991011-VAL (53)" - ((2) - (2) - (10) - (16) - (18) - (18) - (1 1) - (3 6 3) - (2 1 2 2 1 2) - (1 2 4 2 1) - (1 1 6 1 1) - (1 6 1) - (1 6 1) - (1 4 1) - (1 1) - (3 6 3) - (2 1 2 2 1 2) - (1 2 4 2 1) - (1 1 1 1 1 1) - (1 1 1 1) - (1 1 1 1) - (1 4 1) - (1 1) - (3 6 3) - (2 1 2 2 1 2) - (1 2 4 2 1) - (1 1 1 1 1 1) - (1 1 1 1) - (1 1 1 1) - (1 4 1) - (1 1) - (1 1) - (18) - () - () - (4 5 4 4) - (1 1 1 1 1 1) - (4 1 1 1 4) - (1 1 1 1 1) - (4 1 4 1)) - (() - () - () - () - () - () - () - (1 1 1) - (1 1 1) - (1 1 1) - (1 1 1 3 1) - (29 1 1 1) - (3 1 1 1 1) - (3 1 1 3) - (3 1) - (4 2 2 2 1 1) - (4 2 2 2 1 1) - (4 2 3 2 3 2 3 1 5) - (4 1 5 1 1 1 1 1 1 1 1) - (6 1 5 1 1 1 1 1 1 1 1) - (6 1 5 1 1 1 1 1 1 1) - (4 1 5 1 1 1 1 1 1 1 5) - (4 2 3 2 3 2 3 1 1 1) - (4 2 2 2 1 1 1) - (4 2 2 2 1 5) - (3 1) - (3 1 5) - (3 1 1 1) - (29 1 1) - (1 1 1 3) - (1 1 1) - (1 1 1) - (1 1 1) - () - () - () - () - () - () - ())) - ("19991103-BDH (54)" - ((12 23) - (11 22) - (10 21) - (10 20) - (9 20) - (10 18) - (10 11) - (11 10) - (12 10) - (14 5 4) - (14 4 4) - (9 3 5 4 5) - (9 1 9 4) - (10 2 1 2) - (11 3 7 1) - (11 4 9 1) - (10 5 9 1) - (9 5 10) - (8 7 10) - (8 8 9) - (8 1 5 2 9) - (8 2 4 1 1 9) - (8 3 4 1 2 10) - (8 4 3 2 2 10) - (8 5 3 2 2 10) - (8 2 2 3 2 3 10) - (9 2 1 5 4 10) - (9 2 2 3 5 10) - (10 2 2 6 10) - (10 3 11 11) - (11 11 11) - (10 15 1 11) - (8 13 1 11) - (8 5 1 11) - (9 3 3 2 1 11) - (10 5 2 1 11) - (19 2 2 11) - (20 2 2 12) - (21 4 13) - (22 14)) - ((40) - (40) - (40) - (40) - (40) - (40) - (40) - (40) - (18 6 6) - (4 6 4 5 4 1 5) - (2 5 2 7 1 3 4) - (1 4 7 4 4) - (3 1 2 2 4 4) - (2 1 2 1 3 5) - (1 5 2 6) - (1 2 3 6) - (1 7 4 6) - (1 1 10 4 5) - (2 1 11 4 1 4) - (3 1 12 4 2 3) - (5 1 12 4 2 2) - (5 1 2 3 4 2 1) - (6 1 2 2 4 2) - (6 1 2 2 4 1) - (6 2 6 5 1) - (6 2 2 6 2) - (6 2 5 2 1) - (6 2 7 6 2) - (6 1 2 8 3) - (7 3 11) - (11 5 18) - (11 26) - (11 26) - (11 26) - (10 26) - (9 1 25) - (13 25) - (13 24) - (14 23) - (40))) - ("19991109-TMA (55)" - ((35) - (1 1 1 1 17) - (1 4 2 1 4 20) - (1 1 1 1 2 1 16 2) - (1 2 1 1 2 4 2 19) - (1 1 2 1 1 20) - (40) - (1 20) - (40) - (14 1 1 1 1 1 1) - (14 1 1 1 2 1 2 1 2 1 4) - (14 3 1 2 1 2 1 1 2) - (14 3 1 2 1 2 1 1 2 4) - (7 6 3 1 1 1 2 1 1) - (7 32) - (6 5 1) - (1 1 1 1 1 26) - (2 6 1 4 1 2) - (1 8 1 6 1 1 1 2) - (3 9 2 1 1 1 2) - (4 10 4 6 3 2) - (1 2 2 1 6 2 4 1 2) - (1 1 1 26) - (4 2) - (1 26) - (2 6 2 2 1 3) - (3 1 11) - (7 9 1 1 3 1 1 2) - (7 8 1 1 2 7 3) - (7 7 2 2 3 5 4) - (13 1 3 3 5) - (11 11 1 5) - (9 4 1 1 6 5) - (7 2 3 1 1 1 10 3) - (5 4 2 1 6 2 2) - (4 5 5 3 5 2 1) - (2 3 4 1 5 3) - (1 20 3) - () - (6 22 5)) - ((21 1 2 11 1) - (1 1 8 1 3 1 10 1) - (1 3 1 9 2 9 1) - (1 1 1 1 8 2 9 1) - (1 1 1 9 2 8 1) - (7 8 7 1) - (1 1 7 7) - (1 1 3 5 3) - (1 1 2 7 6) - (1 1 1 8 5 1 1) - (7 9 2 5 4 1) - (1 1 8 2 4 4 1) - (1 1 1 1 9 2 4 5 1) - (1 1 1 1 8 1 3 1 3 3 1 1) - (1 3 1 1 1 5 1 2 3 1 2 1) - (7 1 5 13 3 3 1) - (1 1 2 4 12 8 1) - (1 3 1 1 5 11 2 7 1) - (1 1 1 1 1 1 10 1 1 1 1 1) - (1 1 1 7 1 5 1 1 1 1 1 1) - (9 1 1 5 1 1 1 1) - (9 3 1 1 1 1 2 1 7 1) - (9 3 1 1 4 6 1 1 1 1) - (9 1 7 1 1 1 1 1 1) - (15 1 1 1 2 3 1 1 1) - (9 1 1 1 1 1 3 10 1) - (9 3 1 1 1 1 1 2 2 5 1) - (9 3 1 7 1 3 1 5 1) - (9 1 3 3 1 4 7 1) - (15 3 3 1 1 3 6 1) - (9 1 7 1 1 3 3 1) - (9 1 3 1 1 1 3 3 2) - (9 1 2 1 1 1 1 1 4 2) - (9 1 1 1 1 1 1 1 2) - (15 7 4 1) - (8 1 1 1 1 3 3 1 1) - (2 5 1 1 1 1 1 1 1 2 4 4 1) - (6 1 1 1 1 1 1 6 3 1) - (6 3 1 9 8 2 1) - (20 9 1))) - ("19991118-CIT (56)" - ((24 15) - (1 17 15) - (1 12 3 3 10) - (3 8 3 1 1 1 1 3 4) - (3 9 1 2 1 1 1 1 2 1 5) - (3 10 3 1 1 1 1 3 6) - (3 9 1 2 1 1 1 1 2 1 5) - (13 3 1 1 1 1 3 4) - (1 12 3 3 10) - (1 5 3) - (3 7 3) - (3 14 3 3 10) - (1 6 1 1 1 1 3 4) - (1 6 3 1 1 1 1 1 2 1 5) - (13 3 1 1 1 1 1 3 6) - (1 6 3 1 1 1 1 1 2 1 5) - (1 6 1 1 1 1 3 4) - (1 16 3 3 10) - (1 9 3) - (1 5 3) - (1 12 3 3 10) - (13 3 1 1 1 1 4) - (14 1 2 1 1 1 1 1 3 4) - (15 3 1 1 1 1 1 3 4) - (14 1 2 1 1 1 1 1 3 4) - (1 6 3 1 1 1 1 4) - (1 12 3 3 10) - (3 19 15) - (3 35) - (3 35) - (3 35) - (40) - (1 1 4 1 1 2) - (1 1 4 1 1 6) - (1 2 1 10 3 2 1 3) - (1 1 10 3 2 1 3) - (1 1 6 3 1 6) - (1 2 1 6 3 1 2) - (40) - (40)) - ((40) - (1 5 2 1 4 5 2) - (1 5 2 1 4 5 2) - (1 1 1 2 4 1 1 3) - (1 1 1 2 4 1 1 3) - (1 5 2 1 2 4 5 2) - (1 5 2 1 2 4 5 2) - (40) - (32 2) - (32 2) - (32 2 2) - (32 2 2) - (9 7 12 2 2) - (3 3 1 1 1 1 3 6 2 2) - (4 1 2 1 3 1 2 1 15) - (5 3 1 3 1 3 16) - (4 1 2 1 3 1 2 1 15) - (3 3 1 1 1 1 3 14) - (9 7 12 6) - (2 5 6) - (2 5 2) - (9 7 12 2) - (3 1 1 1 1 6 6) - (3 3 1 1 3 1 1 3 6 6) - (12) - (3 3 1 1 3 1 1 3 6 2) - (3 1 1 1 1 6 2) - (9 7 12 2 2) - (2 5 2 2) - (2 5 2) - (9 7 12 2) - (3 3 1 1 3 1 1 14) - (4 1 2 2 1 2 1 3 6 2) - (5 3 3 3 1 3 6 2) - (4 1 2 2 1 2 1 3 6 1 1 2) - (3 3 1 1 3 1 1 6 1 1 2) - (9 7 12 1 1 2) - (32 4 2) - (40) - (40))) - ("19991119aKHO (57)" - ((19 5 8) - (11 3 3 7) - (10 2 1 5 1 5 6) - (9 3 2 2 1 1 2 6) - (9 1 2 2 2 2 2 6) - (9 2 4 2 2 2 3 7) - (5 4 3 2 2 2 3 1 4) - (4 4 4 2 2 2 2 2 3) - (3 2 2 4 2 1 1 1 2 3 3) - (3 2 3 3 1 1 1 3 4 2) - (3 4 4 3 1 1 2 4 2 1) - (4 4 3 2 1 2 4 4 1) - (2 1 4 13 3 2 2 1) - (1 5 6 3 5 1) - (2 5 1 1 1 2 4 2) - (2 3 1 1 3 3 1 1 5 1) - (2 5 1 2 2 2 3 1) - (1 5 1 1 2 2 1 2 2) - (2 4 2 3 1 1 2 3) - (2 5 1 1 1 1 1 2 3) - (1 4 1 2 2 1 2 1 2 3) - (1 3 1 1 2 1 3 2) - (1 3 1 3 1 2 1 1 4 2) - (4 2 2 1 1 1 5 2) - (1 2 2 2 3 2 6 2) - (2 1 2 2 3 2 2 2 4 2) - (5 1 3 3 2 1 1 1 2 2) - (6 1 1 2 3 2 2 2 2 2) - (8 2 2 2 2 2 2 4 2) - (7 3 3 1 1 1 5 2) - (7 2 4 1 2 1 2 6 2) - (8 1 3 3 2 2 2 8 2) - (9 3 3 2 2 1 9 3) - (9 2 1 2 3 1 9 3) - (10 1 3 2 2 3 4) - (13 2 1 2 3 1 5) - (14 5 3 12) - (22 3 11) - (22 3 9) - (21 1 1 1 8)) - ((14 4 16) - (13 2 15) - (12 3 14) - (8 1 5 5 14) - (7 1 1 2 2 14) - (6 3 2 1 2 1 1 13) - (6 5 2 2 2 2 12) - (6 1 2 2 2 1 2 1 9) - (6 1 2 1 1 2 2 2 2 8) - (3 3 2 1 1 1 2 3 5 6) - (2 2 3 1 1 1 2 2 2 2 5) - (1 4 2 1 1 2 1 3 4 5) - (1 1 3 1 2 2 2 4 5 6) - (1 2 3 2 1 1 1 2 1 4 1 4) - (1 4 3 4 2 1 3 2 2 3) - (2 3 2 3 5 5 3) - (3 3 2 2 1 1 2 2 5 4) - (2 4 1 2 2 1 1 3 2 5) - (1 2 5 2 6 2 4) - (6 2 3 5 4) - (1 6 1 1 2 2 4 5) - (1 2 2 1 1 2 4 1 2) - (1 6 1 1 1 2 3 4) - (6 1 1 1 2 1 1) - (1 2 2 1 3 4) - (2 7 2 2 2 2 2 5) - (4 3 2 1 1 1 1 1 1 1 2 1 1 3) - (2 2 2 1 3 1 2 1) - (1 3 3 3 1 1 1 3 1 1) - (1 3 4 2 2 1 6 3) - (1 2 4 1 1 1 8 2) - (4 4 3 1 8 3) - (1 3 1 3 5 2 7 4) - (2 1 2 4 5 6 4) - (6 15 4 4) - (6 2 15 2 5) - (7 7 6 6) - (9 3 1 3 8) - (10 1 24) - (16 23))) - ("19991126-JOJ (58)" - ((12 2 2 13) - (12 6 7 11) - (11 17 9) - (11 19 8) - (9 19 9) - (8 22 8) - (9 11 1 7 7) - (9 3 1 2 7 6) - (9 3 2 2 5 7) - (8 3 2 1 4 8) - (9 2 2 2 3 8) - (9 3 1 2 1 2 2 9) - (10 3 1 2 1 2 2 10) - (10 2 1 2 1 2 3 9) - (11 2 2 1 2 2 10) - (12 2 1 1 2 11) - (12 1 5 5 12) - (13 1 1 1 12) - (14 12) - (13 2 11) - (12 4 4 10) - (12 12 10) - (11 1 9 1 9) - (10 1 8 3 8) - (10 2 7 5 7) - (9 3 7 6 6) - (8 2 7 5 5) - (7 2 7 5 4) - (5 2 7 6 3) - (3 3 6 7 1) - (8 4 4 8 5) - (14 15) - (4 2 9 2 10) - (1 1 1 4 2 1 1 2 1 2) - (1 1 1 2 1 1 3 1 2 1 1 1 1 1) - (1 2 2 2 3 1 2 1 1 1 1 1) - (1 1 2 2 3 2 2 1 2 1 2) - (12 3 3 11 3) - (15 4 11 3) - (15 5 16)) - ((32 3) - (32 1 1 3) - (32 1 3) - (29 4 4) - (29 3 1 3) - (28 3 1 3) - (28 3 6) - (27 2 3) - (5 3 16 2 6) - (4 1 1 13 4 6) - (4 7 9 4 3) - (2 10 7 6 6) - (7 4 3 3 3 2 2) - (7 1 3 1 3 2 4 3) - (8 1 1 1 4 4 1 5) - (6 2 3 1 1 5 6) - (6 1 1 1 1 10 5) - (6 5 1 11 3 1) - (7 3 1 11 2 2) - (6 2 10 1 3) - (6 1 1 8 4) - (5 2 6 5) - (5 3 1 6 1) - (6 1 1 1 1 4) - (6 1 5 1 3 2 1) - (7 1 3 1 2 3 9) - (7 1 1 6 10) - (1 8 4 9 3) - (1 13 3 8 1 1 3) - (2 9 1 5 7 1 3) - (2 1 6 1 8 8 4) - (3 1 3 12 6 2 3) - (6 1 15 6 4) - (7 17 5 4) - (26 2 2 3) - (27 4 4) - (28 3 1) - (29 3 2 3) - (29 4 4) - (40))) - ("19991202-DAN (59)" - ((13) - (27) - (18 21) - (18 21) - (4 8 4 2 12 5) - (4 3 2 4 2 10 5) - (4 1 1 4 2 6 6) - (4 5 3 6) - (4 6 4 7) - (4 6 4 7) - (5 7 4 6) - (5 2 4 3 2 2 5) - (11 3 3 1 1 4) - (6 2 3 2 3) - (6 1 4 2 3 3) - (6 5 2 1 4) - (5 6 3 1 5) - (4 11 4 1 1 1 6) - (4 11 5 3 7) - (1 4 7) - (4 11) - (4 12 4 7) - (5 12 4 6) - (5 12 4 6) - (5 11 3 6) - (5 11 3 5) - (5 11 3 5) - (5 11 2 4) - (5 10 2 3) - (6 10 2 3) - (5 10 1 3) - (5 10 3) - (5 10 3) - (3 5 3) - (3 4 3) - (3 4 3) - (4 5 3) - (4 4 3) - (5 5 3) - (5 5 3)) - ((15) - (28) - (17 20) - (17 20) - (2 9 20) - (3 4 11 4) - (4 1 4 2) - (5 1 2 4) - (4 3 2 8) - (3 2 2 13) - (5 2 2 13) - (4 2 2 13 2) - (3 3 3 13 4) - (3 4 4 20) - (11 5 20) - (18 20) - (18 17) - (18 14) - (1 12) - (18) - (19 10) - (3 6 4 9) - (4 3 3 6) - (5 2 3) - (5) - (6 2) - (6 1 1) - (7 1 1) - (7 5) - (7 1 1) - (7 1 1) - (6 2) - (6 2 1) - (5 2 3 4) - (4 5 4 7) - (12 5 19) - (20 19) - (20 19) - (20 6) - (13))) - ("19991203-DAN (60)" - ((3 3 1 1 4) - (1 1 1 2 1 1 1) - (1 1 1 1 1 1 1 1 3) - (1 1 1 1 2 1 1) - (3 3 1 1 4) - (5) - (4 2 1 1 3 7) - (1 1 1 1 1 1 1 2 6) - (3 1 1 1 1 3 11) - (1 4 1 1 1 1 11) - (3 1 1 4 1 1 11) - (6) - (19 7) - (6) - (7) - (7) - (6) - (7) - (6) - (10 6) - (14 5) - (16 5) - (18 5) - (26) - (25) - (25) - (24) - (24) - (23) - (24) - (23) - (22) - (5 4 4) - (5 4 4) - (5 4 4) - (6 4 4) - (7 4 4) - (8 4 4) - (7 4 4) - ()) - ((5 2 1 1 1) - (1 1 1 1 1 1 2) - (1 1 1 1 1 1 2) - (3 1 2 1 3) - (1 3) - (1 1 4 1 4) - (5 1 1 1 4) - (1 1 1 1 1 4) - (4 1 5) - (5 1 6) - (1 5 1 7) - (1 1 1 8) - (1 1 1 11) - (5 5 1 11) - (1 11) - (5 5 1 17) - (1 1 1 1 1 19) - (1 1 1 1 1 20) - (5 1 2 1 20) - (13 2) - (1 13) - (1 13) - (1 13) - (2 13) - (4 13) - (5 18) - (2 3 20) - (6 19) - (6 19) - (8 11 2) - (11 10) - (12 8) - (13 8) - (22) - (18) - (15) - (12) - (7) - () - ())))))) diff --git a/pkgs/games/paint-by-numbers/raw-problems/raw-misc.rkt b/pkgs/games/paint-by-numbers/raw-problems/raw-misc.rkt deleted file mode 100644 index 63e6e2947d..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/raw-misc.rkt +++ /dev/null @@ -1,41 +0,0 @@ -#lang racket/base -(provide raw-misc) - -#| - -raw-misc.rkt - -This file contains the built-in problems in a raw format. It is -intended to be processed by the solver which will produce -"problems.rkt". This file should contain a single sexpression of this -type: - - (listof (list string cols rows)) - -The cols and rows types are specified in sig.rkt - -|# -(define raw-misc -`( - ("Happy Happy Joy Joy" - ((5) (9) (2 7) (4 8) (4 7) (6 7) (7 7) (7 6) (7 5) (5 1 4) (4 2 3) (2 4 1) (9) (5)) - ((4) (8) (10) (12) (1 8 1) (2 5 2) (4 3 3) (5 4) (7 5) (8 3) (9 1) (10 1) (10) (8) (4))) - -; ("Ieleuj" -; ((1) (1) (2) (1) (1) (2) (1) (1) (1 2) (5) (3) (1) (1) (1 3) (4 2) (3) (1) (1 1) (1 3) (4 1 3) (2 2 2) (6) (1) (1) (1 1) (1 1 2) (3 1 3) (4 1 3) (6) (3) (1) (1 1) (3 1 3) (2 1 1 1 2) (2 1 1 1 2) (5 3 1) (2 1 2) (9) (3 1 1) (1) (1 1 1) (2 1 2) (3 1 1 1 3) (2 1 1 1 2) (1 4 1 4 1) (2 1 2) (9) (3 1 3) (1) (1) (1) (1) (1)) -; ((1) (1 2) (2 2) (1 1 2 1) (1 1 1 2) (1 1 1 1 2 2 2 2) (3 1 2 1 2 2 1 1 1 1) (7 2 1 1 1 2 1 2) (7 2 3 4 4) (2 7 2 4 4) (1 2 11 1 1) (2 2 1 21) (1 3 2 1 1 1) (2 2 5 4) (2 2 2 4) (2 2 1 2 1 2) (2 2 1 1) (1 1 2) (2 2) (2 1) (2 2) (2) (1))) - -; ("John " -; ((15 16) (9 2 1 2 14) (6 1 2 2 1 2 12) (9 2 1 1 1 13) (4 1 1 2 2 1 1 1 11) (5 2 1 1 1 1 1 1 10) (4 2 1 1 2 1 1 2 10) (3 1 1 2 2 1 1 1 1 1 4 3) (2 3 2 2 4 1 1 1 1 1 4) (1 1 1 2 2 3 2 1 1 1 1 2 2) (1 2 1 6 2 2 1 6 3) (2 1 3 8 1 3 1 2 2) (1 1 2 1 2 2 2 1 2 5 3) (2 1 1 10 1 10) (1 1 1 2 1 1 1 2 2 2 2 1) (2 2 2 2 1 2 1 1 6 2) (1 1 1 1 1 3 1 2 1 1 1 3) (1 1 3 1 1 1 2 1 1 2 2 1 1) (3 1 3 2 1 1 1 2 2 2 1) (1 2 2 2 2 2 1 1 1 1 1 2) (1 1 2 2 3 2 1 1 2 2 1 1) (2 2 2 3 4 4 2 4) (1 2 1 4 2 1 2 1 2 1 1) (3 3 1 2 4 10) (1 1 1 1 7 1 2 1 1 1) (2 3 1 1 1 9 5) (1 2 2 1 2 1 2 5 1) (1 1 2 1 1 1 1 2 1 1 1 2) (2 1 1 2 1 1 1 3 2 1 1) (1 1 2 1 2 2 1 1 2 1) (1 1 1 1 1 1 2 2 1 1 1) (2 1 1 2 1 1 2 1 1 1) (1 1 2 1 1 1 1 1 2 1 1 1)) -; ((11 1 1 1 3 4 4) (9 1 4 2 1 1 1 1 1) (8 5 2 1 3 5 1) (7 1 1 3 2 3 2 1) (4 1 3 3 1 1 3 2 4 1) (5 1 1 1 1 1 3 1 2 1 1 1 2) (2 1 3 1 1 1 1 1 1 1 2 1 1 1) (6 5 3 6 3 1 2) (2 1 3 2 2 2 1 1 1 1 2) (1 1 2 1 2 2 2 2 8 1) (5 1 6 1 1 4 1 3) (2 1 1 2 2 2 1 1 2 7 1) (1 1 1 2 5 6 3 1 2) (5 1 2 4 1 1 2 2 4 1) (1 1 5 1 1 2 2 4 1 1) (4 1 1 8 5 1 2 3) (2 1 3 3 2 1 5 2) (1 3 1 3 5 1 2 2 1 2) (3 1 2 1 1 1 1 2 2 2 4 1) (2 2 1 1 1 1 1 1 2 4 1 1) (4 4 1 1 1 1 2 3 3 2 1) (5 1 5 2 2 1 2 2 1) (9 2 1 3 2 3 3 1) (7 7 1 3 2 1) (9 1 10 3 2) (8 5 1 1 1 2 1 1 1) (9 1 5 2 1 4) (8 6 3 4 1) (7 2 1 1 2 1 1 1 1) (9 1 4 5 1) (14) (13))) - -; ("buff" -; ((2 3 3) (2 2 2 2 2) (2 2 2) (5 2 2 2 2) (2 4 7 5) (2 4 2 2 2) (2 4 2 2 2) (2 4 3 2 2) (5 5 2 2)) -; ((9) (9) (1 1) (1 1) (6) (4) (5) (6) (1) (2) (6) (6) (1) (8) (9) (1 1) (2 1) (1) (1) (8) (9) (1 1) (2 1) (1))) - - ("Solver Breaker" - ((1) (2 2) (1) (2) (2 2) (1)) - ((1) (2 2) (1 1) (1) (2 2) (1))) - - ) -) diff --git a/pkgs/games/paint-by-numbers/raw-problems/raw-problems.rkt b/pkgs/games/paint-by-numbers/raw-problems/raw-problems.rkt deleted file mode 100644 index 8228af7c3a..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/raw-problems.rkt +++ /dev/null @@ -1,82 +0,0 @@ -#lang racket/base - -#| - -raw-problems.rkt - -This file contains the built-in problems in a raw format. -This file should contain a single sexpression of this -type: - - (listof (list string cols rows)) - -The cols and rows types are specified in sig.rkt - -|# - -(provide raw-problems) -(define raw-problems -`( - - ("Izay (1)" - ((2) (1 1) (4) (2 1) (3 1) (8) (8) (7) (5) (3)) - ((1) (2) (1 6) (9) (6) (5) (5) (4) (3) (4))) - ("Oam (2)" - ((1) (2 3 1) (9) (8) (8) - (3 2 1) (6 6) (9 4) (11 2) (13) - (2 10) (7 11) (8 5 5) (8 4 3) (8 4 2) - (2 5 5) (1 4 2 3 2) (2 1 4 2) (9 3) (7)) - ((5) (9) (7 2) (3 6 2) (3 6 2) - (4 6 2) (4 6 2) (5 4 2) (6 1 2) (11 2) - (14 2) (6 10) (6 10) (3 2 4 4) (8 2 2) - (8 3 2) (4 2 3) (5 3 2) (2 4 2) (3))) - ("Izuoh (3)" - ((2) (3) (3) (2) (2) - (2) (4 2) (6 2) (6 3) (1 2 1 6) - (2 2 9) (1 1 7) (1 1 5) (3 1 2) (2 6) - (11) (13) (13) (4 10 2) (4 10 4) - (4 10 4) (4 10 4) (4 9 4) (4 9 4) (3 8 3) - (3 11 3) (3 3 2 3) (5 5 4 2) (3 1 10 4) (3 1 8 5)) - ((3) (5) (7) (7) (6 3) - (6) (7 3) (7 5) (12 5) (3 1 1 3 5 1 3) - (4 1 11 3) (4 12 2) (3 1 13 2) (19 3) (12 3) - (16 2) (16 1) (3 12 2) (4 6 4) (4 1 8) - (3 8 2) (4 8 1) (10 6) (11 3) (3))) - ("Ijgnog (4)" - ((4) (5) (2 3) (2 6) (5 5) - (6 5) (7 5) (8 8) (2 5 10) (2 6 12) - (2 16 3) (1 2 14 3) (1 2 1 12 2) (1 1 2 11 2) (1 1 13 3) - (1 1 1 3 5 4) (1 1 1 1 1 10) (1 1 1 1 8) (2 1 2 3) (1 2 2) - (1 2 2) (1 1) (1 1) (3 1) (4)) - ((11) (7 3) (5 8) (10) (7 6) - (11) (7 4) (9) (9) (5) - (8) (9) (12 1) (16) (10 1) - (8 5 1) (8 9) (9 4 1) (2 10 3 1) (10 4) - (16) (2 10) (4 5) (2) (1))) - ("Uhib (5)" - ((4) (5) (3 1) (5 1 2) (4 1 1) - (4 5) (4 3) (6 1) (15) (17) - (19) (3 19 4) (15 6 2) (7 8 6 5) (2 3 2 1) - (2 2 2 2) (1 8 2) (4 3 2) (8 2 1 3) (2 4 1 4) - (2 4 4) (1 12) (1 9) (1 7) (1)) - ((1 1) (1 1 2 5) (5 2) (4 3 2) (7 2 1) - (11 2 2) (2 11 2) (4 7 2) (2 6 3) (7 2) - (4 6 3) (9 3) (4 6 2) (1 1 6 3) (1 6 1 3) - (6 1 1 3) (6 3 3) (4 2 3) (6 4 3) (7 1 3) - (8 4) (8 4) (4 4) (11) (1 6) - (2) (5) (1 1 1) (1 1) (1 1))) - ("Isaniew (6)" - ((4 1) (7 2) (3 6) (2 3) (2 4) - (5) (7) (7) (3 3) (2 2 2) - (1 2 4) (3 2 2) (2 3 2) (3 2) (4 2) - (3 2) (2 2) (2 1 1) (3 2) (3 2) - (3 1) (3 2) (5 3 1 4) (7 2 1 7) (8 3 1 10) - (7 2 1 10) (2 3 2 2 4 4) (2 2 2 2 3) (4 4 5) (13)) - ((3) (5) (3 2) (4 1) (5 1) - (5 2) (4 1) (3 1 1) (1 2 1) (3 2) - (7 5 3) (2 5 2 11 3) (4 4 2 10 1 2) (8 2 4 3 5 1) (2 4 1 4 2 2 1 1) - (4 4 3 2 4 2 1) (4 5 3 3 4 2) (4 7 5 2) (1 1 3 5 1) (1 1 5 1) - (2 4 2) (2 5) (5) (3) (3))) - - ) -) diff --git a/pkgs/games/paint-by-numbers/raw-problems/size-calculation.rkt b/pkgs/games/paint-by-numbers/raw-problems/size-calculation.rkt deleted file mode 100644 index 348bff9e21..0000000000 --- a/pkgs/games/paint-by-numbers/raw-problems/size-calculation.rkt +++ /dev/null @@ -1,183 +0,0 @@ -#lang racket - -(require "raw-hattori.rkt") - -(define (num-possibilities size col) - (let* ([col-len (length col)] - [boxes (+ col-len 1)] - [balls (- size (+ (apply + col) col-len))]) - (if (< balls 0) - 0 - (f boxes balls)))) - -(define (f boxes balls) - (/ (! (+ boxes balls -1)) - (* (! (- boxes 1)) (! balls)))) - -(define (! n) - (cond - [(zero? n) 1] - [else (* n (! (- n 1)))])) - -(define (badness rows cols) - (let ([col-count (length rows)] - [row-count (length cols)]) - (+ (apply + (map (lambda (x) (num-possibilities row-count x)) rows)) - (apply + (map (lambda (x) (num-possibilities col-count x)) cols))))) - -(pretty-print - (sort - (let loop ([hattoris raw-hattori]) - (cond - [(null? hattoris) empty] - [else (let* ([hattori (car hattoris)] - [name (car hattori)] - [rows (cadr hattori)] - [cols (caddr hattori)]) - (let ([badness (badness rows cols)]) - (cons (list name badness) - (loop (cdr hattoris)))))])) - (lambda (x y) (< (cadr x) (cadr y))))) - -#| -;; result of previous expression -(("Hattori 81" 158) - ("Hattori 1" 205) - ("Hattori 3" 647) - ("Hattori 82" 709) - ("Hattori 4" 842) - ("Hattori 124" 911) - ("Hattori 126" 931) - ("Hattori 116" 1242) - ("Hattori 2" 1243) - ("Hattori 9" 1260) - ("Hattori 13" 1437) - ("Hattori 6" 1490) - ("Hattori 22" 1516) - ("Hattori 7" 1671) - ("Hattori 19" 1761) - ("Hattori 11" 1774) - ("Hattori 5" 1804) - ("Hattori 98" 1844) - ("Hattori 137" 1857) - ("Hattori 99" 2089) - ("Hattori 8" 2182) - ("Hattori 44" 2452) - ("Hattori 100" 2575) - ("Hattori 38" 2635) - ("Hattori 10" 2835) - ("Hattori 92" 3010) - ("Hattori 32" 3036) - ("Hattori 131" 3080) - ("Hattori 16" 3207) - ("Hattori 56" 3732) - ("Hattori 121" 3748) - ("Hattori 48" 3867) - ("Hattori 118" 3898) - ("Hattori 61" 3989) - ("Hattori 17" 4121) - ("Hattori 28" 4177) - ("Hattori 35" 4414) - ("Hattori 58" 4449) - ("Hattori 18" 4562) - ("Hattori 46" 4620) - ("Hattori 133" 4634) - ("Hattori 84" 4666) - ("Hattori 96" 4668) - ("Hattori 12" 4709) - ("Hattori 102" 5006) - ("Hattori 86" 5031) - ("Hattori 30" 5133) - ("Hattori 87" 5133) - ("Hattori 14" 5495) - ("Hattori 130" 5502) - ("Hattori 42" 5650) - ("Hattori 45" 5763) - ("Hattori 54" 5947) - ("Hattori 43" 5991) - ("Hattori 41" 6140) - ("Hattori 23" 6169) - ("Hattori 136" 6295) - ("Hattori 26" 6510) - ("Hattori 62" 6614) - ("Hattori 53" 6675) - ("Hattori 31" 6866) - ("Hattori 63" 6876) - ("Hattori 57" 7182) - ("Hattori 29" 7318) - ("Hattori 50" 7325) - ("Hattori 135" 7595) - ("Hattori 104" 7941) - ("Hattori 20" 8126) - ("Hattori 103" 8126) - ("Hattori 34" 8324) - ("Hattori 60" 8330) - ("Hattori 55" 8375) - ("Hattori 67" 8549) - ("Hattori 27" 8637) - ("Hattori 127" 8648) - ("Hattori 15" 8674) - ("Hattori 33" 8729) - ("Hattori 95" 8732) - ("Hattori 39" 8855) - ("Hattori 24" 9051) - ("Hattori 132" 9371) - ("Hattori 51" 9450) - ("Hattori 37" 9582) - ("Hattori 125" 9648) - ("Hattori 83" 9698) - ("Hattori 70" 9937) - ("Hattori 25" 9942) - ("Hattori 120" 10033) - ("Hattori 68" 10110) - ("Hattori 85" 10517) - ("Hattori 65" 10556) - ("Hattori 74" 10901) - ("Hattori 90" 10913) - ("Hattori 21" 11220) - ("Hattori 59" 11255) - ("Hattori 64" 11317) - ("Hattori 89" 11323) - ("Hattori 112" 11355) - ("Hattori 77" 11627) - ("Hattori 73" 11705) - ("Hattori 139" 11806) - ("Hattori 75" 11989) - ("Hattori 49" 12203) - ("Hattori 101" 12500) - ("Hattori 71" 12522) - ("Hattori 47" 12626) - ("Hattori 52" 12646) - ("Hattori 66" 12762) - ("Hattori 72" 12942) - ("Hattori 88" 13166) - ("Hattori 79" 13223) - ("Hattori 107" 13368) - ("Hattori 40" 13558) - ("Hattori 94" 13567) - ("Hattori 106" 15177) - ("Hattori 80" 15306) - ("Hattori 113" 15776) - ("Hattori 93" 16352) - ("Hattori 91" 17856) - ("Hattori 69" 18918) - ("Hattori 105" 19069) - ("Hattori 78" 19968) - ("Hattori 97" 20828) - ("Hattori 117" 21432) - ("Hattori 134" 22118) - ("Hattori 76" 24896) - ("Hattori 36" 25351) - ("Hattori 129" 27863) - ("Hattori 138" 36306) - ("Hattori 114" 46788) - ("Hattori 128" 60393) - ("Hattori 119" 64012) - ("Hattori 111" 106611) - ("Hattori 123" 110847) - ("Hattori 108" 288996) - ("Hattori 115" 330042) - ("Hattori 109" 469815) - ("Hattori 110" 516937) - ("Hattori 122" 5784954)) -|# diff --git a/pkgs/games/paint-by-numbers/solution-sets/directory b/pkgs/games/paint-by-numbers/solution-sets/directory deleted file mode 100644 index 2d8ca7b0f4..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/directory +++ /dev/null @@ -1,31 +0,0 @@ -("games" - "misc" - "h1-30" - "h31-60" - "h61-90" - "h91-120" - "h121-138" - "k15x15" - "k15x20" - "k15x25" - "k20x15" - "k20x20" - "k20x25" - "k20x30" - "k25x15" - "k25x20" - "k25x25" - "k25x30" - "k25x35" - "k30x20" - "k30x25" - "k30x30" - "k30x35" - "k30x40" - "k35x25" - "k35x30" - "k35x35" - "k35x40" - "k40x30" - "k40x35" - "k40x40") diff --git a/pkgs/games/paint-by-numbers/solution-sets/games b/pkgs/games/paint-by-numbers/solution-sets/games deleted file mode 100644 index f998318374..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/games +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Games Magazine") (define problems (list (make-problem "Izay (1)" (quote ((2) (1 1) (4) (2 1) (3 1) (8) (8) (7) (5) (3))) (quote ((1) (2) (1 6) (9) (6) (5) (5) (4) (3) (4))) (quote #f)) (make-problem "Oam (2)" (quote ((1) (2 3 1) (9) (8) (8) (3 2 1) (6 6) (9 4) (11 2) (13) (2 10) (7 11) (8 5 5) (8 4 3) (8 4 2) (2 5 5) (1 4 2 3 2) (2 1 4 2) (9 3) (7))) (quote ((5) (9) (7 2) (3 6 2) (3 6 2) (4 6 2) (4 6 2) (5 4 2) (6 1 2) (11 2) (14 2) (6 10) (6 10) (3 2 4 4) (8 2 2) (8 3 2) (4 2 3) (5 3 2) (2 4 2) (3))) (quote #f)) (make-problem "Izuoh (3)" (quote ((2) (3) (3) (2) (2) (2) (4 2) (6 2) (6 3) (1 2 1 6) (2 2 9) (1 1 7) (1 1 5) (3 1 2) (2 6) (11) (13) (13) (4 10 2) (4 10 4) (4 10 4) (4 10 4) (4 9 4) (4 9 4) (3 8 3) (3 11 3) (3 3 2 3) (5 5 4 2) (3 1 10 4) (3 1 8 5))) (quote ((3) (5) (7) (7) (6 3) (6) (7 3) (7 5) (12 5) (3 1 1 3 5 1 3) (4 1 11 3) (4 12 2) (3 1 13 2) (19 3) (12 3) (16 2) (16 1) (3 12 2) (4 6 4) (4 1 8) (3 8 2) (4 8 1) (10 6) (11 3) (3))) (quote #f)) (make-problem "Ijgnog (4)" (quote ((4) (5) (2 3) (2 6) (5 5) (6 5) (7 5) (8 8) (2 5 10) (2 6 12) (2 16 3) (1 2 14 3) (1 2 1 12 2) (1 1 2 11 2) (1 1 13 3) (1 1 1 3 5 4) (1 1 1 1 1 10) (1 1 1 1 8) (2 1 2 3) (1 2 2) (1 2 2) (1 1) (1 1) (3 1) (4))) (quote ((11) (7 3) (5 8) (10) (7 6) (11) (7 4) (9) (9) (5) (8) (9) (12 1) (16) (10 1) (8 5 1) (8 9) (9 4 1) (2 10 3 1) (10 4) (16) (2 10) (4 5) (2) (1))) (quote #f)) (make-problem "Uhib (5)" (quote ((4) (5) (3 1) (5 1 2) (4 1 1) (4 5) (4 3) (6 1) (15) (17) (19) (3 19 4) (15 6 2) (7 8 6 5) (2 3 2 1) (2 2 2 2) (1 8 2) (4 3 2) (8 2 1 3) (2 4 1 4) (2 4 4) (1 12) (1 9) (1 7) (1))) (quote ((1 1) (1 1 2 5) (5 2) (4 3 2) (7 2 1) (11 2 2) (2 11 2) (4 7 2) (2 6 3) (7 2) (4 6 3) (9 3) (4 6 2) (1 1 6 3) (1 6 1 3) (6 1 1 3) (6 3 3) (4 2 3) (6 4 3) (7 1 3) (8 4) (8 4) (4 4) (11) (1 6) (2) (5) (1 1 1) (1 1) (1 1))) (quote #f)) (make-problem "Isaniew (6)" (quote ((4 1) (7 2) (3 6) (2 3) (2 4) (5) (7) (7) (3 3) (2 2 2) (1 2 4) (3 2 2) (2 3 2) (3 2) (4 2) (3 2) (2 2) (2 1 1) (3 2) (3 2) (3 1) (3 2) (5 3 1 4) (7 2 1 7) (8 3 1 10) (7 2 1 10) (2 3 2 2 4 4) (2 2 2 2 3) (4 4 5) (13))) (quote ((3) (5) (3 2) (4 1) (5 1) (5 2) (4 1) (3 1 1) (1 2 1) (3 2) (7 5 3) (2 5 2 11 3) (4 4 2 10 1 2) (8 2 4 3 5 1) (2 4 1 4 2 2 1 1) (4 4 3 2 4 2 1) (4 5 3 3 4 2) (4 7 5 2) (1 1 3 5 1) (1 1 5 1) (2 4 2) (2 5) (5) (3) (3))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/h1-30 b/pkgs/games/paint-by-numbers/solution-sets/h1-30 deleted file mode 100644 index 64e1f84a5e..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/h1-30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Hattori 1 - 30") (define problems (list (make-problem "Hattori 1" (quote ((5) (1) (3 1) (8) (2 1) (1 6) (1 1 1) (3) (1) (10))) (quote ((1) (4 1) (2 3) (1 2 1) (1 1 1 1) (1 2 1 1) (4 1 1) (1 2 1 1) (1 1 1 1) (5 1))) (quote #f)) (make-problem "Hattori 2" (quote ((5 1 5) (5 2 6) (15) (4 5) (3 5 2) (3 6 1 2) (3 4 1 2) (3 3) (3 4) (1 1 1 1) (8) () (2) (1 9 1) (2 2 2))) (quote ((10 2) (9 1) (9) (4 2 1) (3 2 1 3) (1 3 1 3) (2 3 1 1) (3 3 1 1) (1 3 1 1) (2 1 1 1) (4 2 1) (4 2 1 1) (4 2) (9 1) (10 2))) (quote #f)) (make-problem "Hattori 3" (quote ((11) (1 11) (2 3 4 2) (4 2 2) (3 4) (2 3 3 3) (2 1 1 3) (2 1 1 3) (2 3 4) (2 1 4) (3 3 4) (2 2 2 4) (4 6) (11) (9))) (quote ((9) (12) (1 2 4) (4 1 3) (3 1 4) (3 4 2 2) (2 3 2) (2 4 2 2) (3 1 4) (3 1 3) (4 4) (5 7) (2 10) (12) (9))) (quote #f)) (make-problem "Hattori 4" (quote ((6) (3 2) (2 1) (2 2) (2 1) (1 1) (2 1) (5 1) (2 4 5) (1 4 2 4) (1 5 1 4) (7 1 5) (7 7) (5 7) (5))) (quote ((5) (2 3) (1 4) (8) (10) (2 7) (2 5) (2) (1 5) (2 2 3) (1 1 4) (1 12) (4 7) (2 7) (1 5))) (quote #f)) (make-problem "Hattori 5" (quote ((2 1) (11) (3 3) (2 4) (3 3) (2 2 2 3) (2 2 2 2) (2 1 1 2) (2 2 2 2) (3 2) (1 1 2) (1 4) (1 3 1 1) (1 1 1 2) (6))) (quote ((7) (8) (4 5) (3 1) (2 4 3) (1 2 1 1 1) (1 3) (1 1) (1 2 1 1) (1 4 1) (1 2) (4 1) (5 1) (10) (10))) (quote #f)) (make-problem "Hattori 6" (quote ((4) (6 1) (2 1 1 2) (5 1 3) (5 1 2 1) (6 1 2 1) (6 3 1) (6 2 2) (4 1 1 2) (2 1 1) (2 2) (7) (1 1) (2 2) (6))) (quote ((1 1) (1 6) (1 7) (9) (8) (2 4) (1 1 6 1) (1 2 2) (8 4) (3 1 1) (2 1 2) (2 4) (2 1 1) (2 2 2) (6 2))) (quote #f)) (make-problem "Hattori 7" (quote ((3) (5) (3 1) (3 3 1) (6 2 1) (7 3) (2 2 1) (1 1 1 1 1) (2 1 1 1 1) (1 1 2 1) (1 1 1) (13) (4 8) (9) (4 3))) (quote ((3 3) (3 2 4) (2 5) (3 2 4) (3 1 1 1) (3 2 4) (3 6) (5 4) (3) (2) (4 2) (6 2) (4 8) (2 1 1) (4))) (quote #f)) (make-problem "Hattori 8" (quote ((7) (6 2) (1 3 3) (2 2 2) (2 1) (3 2 1) (3 3 2 1) (1 4 2 1) (1 2 2) (2 2 6) (1 2 1) (1 1 3) (1 4 1) (2 5) (9))) (quote ((4) (3 1 5) (1 2 2 2) (1 2 1 1) (2 1 1 1) (2 3 1 1) (3 1 2 1) (1 1 2 3 1) (1 2 2 1 1) (1 1 2 1 1) (2 1 3) (2 2 1 1) (1 2 3 1) (2 2 1 1) (7 3))) (quote #f)) (make-problem "Hattori 9" (quote ((3) (2 2) (1 2) (1 11) (1 2 4) (2 2 2 1) (3 3 1 1) (2 2) (1 1) (1 1) (7) (3 3) (2 2) (3 3) (3 3))) (quote ((5) (2 2) (1 1) (2 2 5) (5 8) (3 2 2 2) (1 1 1) (1 2 2 2) (1 8) (1 5) (4) (3) (2) (4) (1))) (quote #f)) (make-problem "Hattori 10" (quote ((7 1) (2 2 1) (1 1 3) (1 1 1 3) (5 2) (13) (15) (3 5) (2 7 1) (3 10) (3 7) (6 2) (2 4) (2 3 2) (1 3 1) (1 3 1) (1 3 1) (2 2) (2 2) (6))) (quote ((5) (5) (3 2) (2 5) (1 2 2 2) (10 2 2) (2 6 1 2 1) (1 7 1 4 1) (2 13 1) (14 1 1) (1 2 5 2) (2 3 2 2) (2 2 2 5) (7 3) (5 4))) (quote #f)) (make-problem "Hattori 11" (quote ((4) (6) (6) (3 6) (3 2 6) (3 6 4) (4 7) (11) (2 13) (1 13) (14) (9 4) (9 2) (8) (7) (6) (5 1) (3 4 3) (5 3 4) (16))) (quote ((5) (4) (3 1) (3 2) (5 3) (8 2) (10 2) (12 2) (13 1) (1 12 1) (14 1) (1 1 12) (12) (3 8) (4 3 1) (6 4 1) (6 3 2) (6 3 3) (6 2 3) (4 4))) (quote #f)) (make-problem "Hattori 12" (quote ((5 7) (5 3 3) (4 2 7 2) (4 1 1) (3 1 1) (2 1 3 1) (1 1 1 1) (1 1 9 1) (13) (2 11) (2 13) (3 11 2) (16 1) (15 1) (15 1) (13 1) (12 2) (10 3) (12) (18))) (quote ((8 1) (6 2) (5 3 1) (4 4 1) (2 6 1) (6 1) (7 8 1) (2 12) (1 13) (3 13) (1 1 13) (1 1 1 13) (1 1 15) (1 1 1 13) (1 1 13) (3 10 2) (1 9 2) (2 3 3 3) (7 2 4) (7 1))) (quote #f)) (make-problem "Hattori 13" (quote ((2 2) (2 3) (3) (2 12) (2 15) (17) (18) (3 12) (4 1 13) (4 13) (8 7) (10 7) (11 7) (18) (18) (17) (14) (3) (3) (2))) (quote ((2 2 2) (2 7) (2 9) (2 11) (2 6) (3 1 7) (3 7) (14) (14) (7 6) (10 8) (10 7) (10 6) (14) (14) (14) (14) (14) (14) (3 2 2 2))) (quote #f)) (make-problem "Hattori 14" (quote ((8) (9) (1 5) (1 1 3) (1 2) (2 2) (1 2 2) (3 3) (1 10) (12) (1 4 2 1) (1 5 6) (1 5 2 1) (1 6) (1 7) (1 3 3) (1 1 3 4) (1 6 3) (2 1 3 4) (19))) (quote ((3) (2) (1) (3 1 1) (2 11) (3 1 1) (5 2 7) (2 2 2 8) (2 1 14) (3 8 1) (3 11 2) (7 12) (6 2 1 6) (4 3 1 4) (2 5 1) (1 1) (1 1) (1 1) (3 1) (1 1))) (quote #f)) (make-problem "Hattori 15" (quote ((1) (1 17) (3 1 1) (1 1 1 3 3 3 1) (1 1 1 3 1 1 1 1 1) (3 1 3 3 3 1) (1 3 1) (1 16) (1) (1) (1 9) (1 2 1 2) (1 2 1 1 1) (1 2 1 3 2) (2 16) (3 16) (1 4 7 3 1) (1 1 4 8) (1 2 1 8) (1 2 1))) (quote ((20) (1 1 2) (6 2) (1 2 1) (7 3) (1 1 5) (1 3 1 4 1) (1 3 1 2 5) (1 3 1 2 4) (1 1 1 4) (1 3 1 1 5) (1 1 1 1 7 1) (1 3 1 1 6) (1 1 1 6) (1 3 1 1 4 2) (1 1 1 1 1 6) (1 3 1 2 5) (1 1 8) (7 3 3) (5))) (quote #f)) (make-problem "Hattori 16" (quote ((6) (10) (3 5 3) (8 7) (6 7 3) (2 8 7) (5 10 3) (1 5 4 1) (5 5) (3 3) (3 4 2) (3 5 3) (3 5 2) (13) (5) (6) (7) (7) (7) (5))) (quote ((5) (3 4) (10) (2 3 2) (7 2) (5 1 1) (7 1) (2 1 2 1) (7 4) (7 7) (3 3 9) (7 9) (5 1 9) (1 4 7) (7 1 5) (2 4 1 4) (4 2 2 3) (7 2) (3 4) (7))) (quote #f)) (make-problem "Hattori 17" (quote ((9 9) (6 10) (5 11) (4 3 5) (2 1 3) (2 4 2) (1 3 6) (5 1 1 1) (2 2 1 3 1) (7 4 1) (7 4 2) (1 3 9) (1 2 4 6) (1 6 9) (1 4 7) (2 1 4 2) (5 3 4) (5 7) (5 10) (5 11))) (quote ((1 8) (2 4 4) (4 1 2 4) (8 2 4) (6 1 3 7) (4 8 4) (3 7 1) (1 2) (1 2) (2 2 2 1) (3 2 1 1 1 2) (7 8 2) (3 7 4 2) (3 1 1 2 3 3) (3 4 6 3) (4 1 4 3) (4 1 4 4) (5 1 4 4) (7 4 5) (7 6 5))) (quote #f)) (make-problem "Hattori 18" (quote ((3 4) (1 3 2 1) (1 6 3 2) (1 1 2 1 1 6) (3 2 1 1) (1 1 1 1 2 1 1 1) (1 1 2 1 2 2 2) (1 1 2 1 1 2 1) (1 2 4 1 3) (1 16) (2 5 10) (8 4 2) (8 2 4) (5 2 1 4) (1 5 6) (2 7 3 2) (2 8 2) (2 3 5 1 1) (2 5 7 3) (2 5 5 4))) (quote ((5 7 6) (1 1 3 5) (2 3 3) (3 2 3 2) (2 1 6 2) (2 2 5 5) (2 2 11) (2 1 5 6) (3 3 4) (1 1 5 6) (1 1 3 6) (6 2 5) (1 2 3 4) (3 2 4 3) (1 1 8 2) (1 2 3 5) (1 2 2 5 1) (1 1 3 3 2) (3 10 2) (1 2 8 3))) (quote #f)) (make-problem "Hattori 19" (quote ((2 2 2 3) (2 2 3 5) (2 2 3 5) (1 1 2 5) (2) (8 2 2) (10 3 2 1) (11 3 2 1) (11 2 1 1) (11) (11 5) (10 7) (6 7) (4 6) (5 6) (6 5) (7 6) (7 7) (7 7) (6 6))) (quote ((4 7) (3 14) (15) (4 15) (3 15) (8 6) (3 7 5) (4 7 4) (3 7) (1 6) (4 4) (5) (4 2 2) (4 4 2 3) (2 4 5 4) (10) (3 10) (4 10) (9) (3 7))) (quote #f)) (make-problem "Hattori 20" (quote ((3 3 5) (9 1) (2 16) (1 2 6 4) (1 1 1 1 6 4) (1 1 6 2) (1 1 5 1) (1 1 4 3) (2 1 2 2 4) (1 3 5) (9 5) (7 4) (6 3) (4 1 2) (3 7 1) (5 1 6 1) (1 1 1 1 6 1) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1) (3 3 3))) (quote ((3) (11) (2 1 1) (1 1 5) (2 1 10) (2 1 6 1) (4 5 5) (13 1) (3 5 5) (4 2 1) (5 7) (6 1) (7 3) (7 4) (6 3) (1 1 2 4) (1 3 4 3) (1 3 6 5) (1 4 7 1) (20))) (quote #f)) (make-problem "Hattori 21" (quote ((4 10) (2 1 3) (1 1 10) (1 1 4) (1 1 4) (1 1 2 2) (1 1 2 2 2) (1 1 1 1 1 1) (1 1 6 1 1) (2 1 2 1 4 2) (6 1 2 1 4) (11 3) (1 4) (1 4) (1 4) (1 5) (1 6) (18) (18) (18))) (quote ((9) (2 2) (1 1 3) (1 1 3) (11 3) (10) (4 3) (2 2 1 3) (6 2 3) (2 2 1 3) (9 2 3) (7 4 3) (3 1 1 3) (1 1 4 3) (1 1 1 1 4) (1 1 1 5) (1 1 4 8) (1 1 1 11) (1 1 1 10) (1 1 1 10))) (quote #f)) (make-problem "Hattori 22" (quote ((7) (3 1 7) (1 3 7) (2 2 8) (7 8) (4 1 8) (1 1 4 8) (2 3 8) (3 10) (14) (15) (15) (18) (16 1) (8 6) (7 5) (7 2 2) (2 2 1) (1) (1))) (quote ((2 10) (11) (9) (3 9) (3 8) (1 4 9) (2 2 1 9) (14) (3 1 6) (10) (9) (2 8 2) (1 14) (16) (16) (9 5) (9 1 2) (7 2) (6) (6))) (quote #f)) (make-problem "Hattori 23" (quote ((8 4) (10 1) (12 1 1) (3 1 1 2) (2 2 2 1 1 2) (2 1 1 1 1 2) (2 1 1 2) (2 1 1 1 1 1 2) (3 1 1 1 1 1 1) (2 6 1 1 2) (2 1 1 4) (2 9 4) (14 4) (15) (8 4 2) (8 2 2 1) (8 1 1 3) (2 5 1 2 1) (11 1) (10 5))) (quote ((9) (10) (5 1 5) (8 8) (4 1 9) (3 1 12) (3 2 1 1 9) (3 2 9) (3 1 1 3 2) (3 2 2 3 2) (3 1 1 1 3 2 2) (3 6 3) (9 4 2) (1 4 1) (5) (3) (13 1) (1 3 1 2 1) (1 5 4 3 1) (1 11 1 1))) (quote #f)) (make-problem "Hattori 24" (quote ((5 3) (4 4 4) (1 2 10) (1 1 6 1 3) (1 1 2 1 6 2) (1 1 1 1 4) (3 1 1 1 1 1) (2 1 1 1 1 1) (2 3 4 4) (5 1 2 3 1) (1 3 1 1) (3 1 1 1) (5 3 1 2) (7 1 8) (10 1 1 1) (5 11) (3 7) (3 6 2) (3 7 1) (2 5))) (quote ((7) (1 3 6) (1 1 1 2 7) (2 1 7) (2 1 4) (1 1 4) (12) (1 1 1 4) (2 9 2) (4 1 2) (4 7 1) (5 2 1 1 3) (1 5 2 1 3) (1 1 1 7) (3 2 1 5) (1 1 5 5) (2 2 2 6) (4 4 1 2) (6 1 2 3) (2 16))) (quote #f)) (make-problem "Hattori 25" (quote ((6 7) (3 2 8) (3 2 2 4) (2 3 1 2 3) (2 1 1 1 4 3) (2 4 1 2 2) (2 2 1 1 3) (3 2 2 1) (4 2 1 2) (7 2 1) (2 1 1 1) (2 1 1 1) (2 3 1) (2 2 1) (2 5) (2 1 1) (2 2 1) (4 1 1) (18) (18))) (quote ((7) (9) (3 3 2) (2 2 3) (1 3 11) (1 1 1 11) (1 4 1 3) (2 2 2 2) (2 2 2) (6 2) (2) (2) (3 2 2) (8 6 4) (2 2 3 5 2) (2 1 3 1 2) (3 3 1 2) (5 1 12) (7 2) (5 2))) (quote #f)) (make-problem "Hattori 26" (quote ((1 1 1 2) (2 2 2 2) (9 4) (1 1 1 3) (2 1 1 3 2) (3 1 1 1 4 2) (1 1 1 2 1 2) (1 4 5 1 2) (1 4 5 1 2) (1 8 1 3) (1 8 1 3) (1 8 1 3) (1 7 1 3) (2 7 2 3) (1 1 7 1 3) (2 7 2 3) (2 1 1 1 1 3) (7 2 9) (16) (1 1 6))) (quote ((2 1) (3) (5 2) (2 4 1) (7 2 2) (3 5 4) (2 2 9 2) (1 10 2) (2 2 7 2) (1 9 2) (1 2 10 1) (2 9 2) (15 3) (5 4) (2 3 3) (2 9 3) (2 3) (2 11) (20) (20))) (quote #f)) (make-problem "Hattori 27" (quote ((6) (8) (1 6) (10) (2 1 1 1 1) (2 1 1 1 1) (1 1 1 3) (3 3 1) (3 2) (1 2 2) (2 2 3 2) (2 3 3 2) (2 3 2 6) (5 3 7) (4 4 3 1) (7 2 3 3) (6 4 3 1 1) (9 3 2) (8 6) (11 5))) (quote ((11) (10) (7) (8) (4 3 5) (1 5 3 6) (1 1 1 2 2 3) (2 6 2 4) (4 1 3 2 1) (9 2 2 1) (4 1 2 2 1) (8 3) (4 1 3) (5 3 3) (7) (13) (7 2) (2 2 2) (1 1 3) (7))) (quote #f)) (make-problem "Hattori 28" (quote ((1 1) (5) (3 3) (8) (9) (1 1 3 3) (1 1 3 1) (4 4 1) (2 2 2 3 1) (5 2 2 1) (5 3 1) (6 3 1) (5 5 2) (4 3 3 2) (8 2 3 2) (7 3 6) (6 3 6) (5 3 6) (5 3 5) (7 4))) (quote ((2 1) (3 4 1) (3 1 5 1) (10 1) (14) (3 4) (4 4 1) (9 5 1) (8 5 1) (8 2 1) (2 2 6 6) (4 5 6) (4 4 5) (4 3) (3 7) (2 6) (5) (5) (7) (12))) (quote #f)) (make-problem "Hattori 29" (quote ((2) (2) (2) (4) (3 2) (5 2 2) (1 1 2 2) (5 2 2) (5 2 4) (5 2 3) (6 2 2) (1 1 4 1) (1 1 2 3 1) (2 2 1 4) (2 2 3 1 2) (1 4 5 3) (1 17) (4 4 4 2) (5 5 5) (3 3))) (quote ((8) (6 2 1) (1 4 3) (1 4 5) (1 4 2 2) (15) (6) (2) (2 4) (4 2 1) (3 2 3 1) (3 2 5 1) (2 2 2 2 5) (1 2 3 2) (2 2 3) (2 2 5) (2 5 2) (2 2 5) (3 2 3) (7))) (quote #f)) (make-problem "Hattori 30" (quote ((3 6) (6 7) (7 6) (19) (7 6) (3 3) (1 3) (2 4 4 1) (9 6 2) (1 2 2 1 3 2) (1 2 1 2 1 1 3 1) (1 2 2 1 3 1) (1 6 7 1) (1 4 5 1) (1 3 1) (1 3 5 1) (2 1 8) (3 7) (5 6 6) (5 4 5))) (quote ((3 9 2) (5 2 4) (12 3) (6 6 3) (5 2 2 2) (5 2 1 2) (4 2 2 1) (1 6 2 2) (1 4 3 2) (1 2 2) (1 5 2) (1 2 2 1) (2 1 2 1 2 1) (5 2 2 3) (5 7 4) (6 6 5) (7 4 5) (7 5) (4 4 4) (12))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/h31-60 b/pkgs/games/paint-by-numbers/solution-sets/h31-60 deleted file mode 100644 index 5e73eb8b70..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/h31-60 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Hattori 31 - 60") (define problems (list (make-problem "Hattori 31" (quote ((8 7) (10 8) (10 9) (7 1 9) (5 2 3) (4 4 3) (4 1 3) (4 1 2 3) (4 2 1 2 1) (4 1 1) (4 1 1) (3 1 1 2) (3 1 2 1) (4 2) (4 1 3) (3 2 2) (3 1 2 2) (1 8 2) (19) (20))) (quote ((16 1) (17 2) (20) (11 2 2) (5 2) (4 2) (4 1 1 2) (3 2 3) (3 3) (3 3 2 4) (4 5 3) (4 2 5) (3 1 1 4) (4 1 3) (4 3) (4 1 1 2) (4 2 2) (8 2 2) (8 1 1 3) (13 1 3))) (quote #f)) (make-problem "Hattori 32" (quote ((11 5) (11 7) (11 7) (9 2 2) (7 3 3) (7 3 3) (7 3 3) (1 1 3 3) (1 1 4 4) (2 2 4 4) (1 1 4 4) (2 2 4 4) (1 1 4 4) (1 3 1 4 4) (1 1 1 4 4) (2 1 2 3 3) (2 1 2 3 3) (5 9) (3 9) (3 1 1))) (quote ((3) (4 5) (7 3 2) (10 2) (7 1 3) (7 7) (7 1 3) (10 2) (7 3 2) (4 5) (3) (16) (18) (19) (3 7 2) (3 2) (3 7 2) (19) (18) (16))) (quote #f)) (make-problem "Hattori 33" (quote ((1 1 1 1) (3 3 3) (3 1 5 5) (6 6) (6 1) (4 3 2) (4 4 4) (4 11) (17) (18) (18) (16 1) (16 1) (4 5 4) (2 6 2) (3 2 2 1) (2 2 1 1) (1 1 1 1) (1 1 1 1) (2 2 2 2))) (quote ((2) (3) (11) (14) (1 11) (16) (9 1) (6 5) (9) (1 12 1) (2 16) (3 10) (2 9 1) (1 7 6) (1 9) (2 10 1) (3 14) (4 7) (3 3) (2 4))) (quote #f)) (make-problem "Hattori 34" (quote ((10) (14) (13 1) (11 3) (14) (1 1) (15) (3 3 3 1 1) (1 1 1 1 1 1) (1 1 1 2 3) (1 11 1 2) (1 2 1) (2 5 1 1) (2 3 2 1) (5 2 1) (1 4 5 1) (1 4 7 1) (1 16 1) (8 11) (6 10))) (quote ((5) (6 1 2) (4 4 3) (1 5 7) (2 1 1 6) (3 2 1 5) (4 3 1 1 4) (4 2 1 2 2) (5 1 2 2 1) (5 1 1 2 2) (5 2 1 1 4) (5 3 1 5) (5 2 1 5) (5 1 2 6) (5 4 7) (3 3 3 5) (3 6 4) (4 1 3) (1 1 2 2) (3 10))) (quote #f)) (make-problem "Hattori 35" (quote ((3 3) (1 2 2 1) (1 4 2) (3 1 1 4) (4 3 2 2) (2 2 6 4 1) (8 11) (2 3 2 2 2 2) (5 2 3 3) (4 3 3 3) (1 2 3 2 1 1) (4 2 2 3) (2 1 2 2 4) (5 1 1 3) (1 4 5) (3 3 4 2) (19) (3 3 5 3) (4 4 5) (13))) (quote ((10) (5 3 2) (3 4 5) (2 9 3) (6 7) (8 3 2) (1 1 3 5) (2 2 5 2 1) (2 1 4 4) (8 1 2) (1 3 4) (8 4) (2 5 2 1) (1 1 5 5) (7 5 5) (6 3 2) (1 4 8) (4 7 3) (1 4 7) (3 4 3))) (quote #f)) (make-problem "Hattori 36" (quote ((3 3) (1 6 1) (1 7) (1 1 2) (1 2 2 1 2) (1 1 1 1 1) (2 2 1) (2 2 1) (1 2 2 2 1) (1 2 2 1 1) (1 1 1) (4 3 1 1) (2 1 1 1 1 1) (13 1 1) (1 1 1) (2 4 1 1) (11 1 1) (1 4 5 1) (1 1 1 1 1 1 1) (5 5 6))) (quote ((9) (2 3 2) (7 1 1 1 1) (1 2 3 4) (2 2 2 1 1 1) (1 1 1 1 1) (1 1 4) (1 1 2) (1 2 2 1 2 1) (2 1 2 3 4) (1 1 1 1 1) (7 3 2 1) (1 2 1 1 3) (1 2 1 1) (1 8 3) (1 1 1) (1 5) (2 1) (2 1) (16))) (quote #f)) (make-problem "Hattori 37" (quote ((6) (2 3) (10) (1 1 1 1) (1 1 1 1) (8) (3 1 3) (15) (2 10 2) (1 8 1) (1 2 2 1 1) (2 1 2 9) (3 1 2 1 4 3) (1 2 2 3 3) (4 5 2) (2 8 1 3) (1 5 2 2) (2 3 1 2) (9 1 2) (4 2 7))) (quote ((4 5) (2 2 2 3) (2 1 1 2) (3 5 2) (10 2 1) (3 1 3 1 1 2) (1 4 3 1 1 4) (1 1 5 3 5) (1 4 3 1 2 2) (3 1 3 4) (3 1 10) (11 2) (1 3 4 4) (1 2 7 1) (1 3 1) (2 2 2) (4 5) (7 1) (5 1) (2))) (quote #f)) (make-problem "Hattori 38" (quote ((6 6) (9 8) (3 5 3) (2 2 1) (1) (1) (2 1) (1 4) (9 3) (11 2) (14 2) (8 3 2) (8 1 4 2) (8 5 3) (20) (12 7) (1 1 1 1 2 5) (1 1 1 1 3 4) (13 3) (16))) (quote ((2 6 1) (3 11) (2 8 2) (3 12) (2 8 2) (2 12) (2 8 2) (2 12) (3 3 2 2) (3 3 1 6) (2 1 4 6) (2 7 3) (3 5 2) (2 6 1) (2 5 1) (2 7) (2 2 6) (3 3 6) (2 11) (2 10))) (quote #f)) (make-problem "Hattori 39" (quote ((2) (1) (10 9) (10 7 1) (10 5 3) (8 8) (7 4 2) (7 2 2 4) (7 2 7) (2 1) (1) (1 4) (1 1 1) (1 2 1 1 1) (2 2 1 4 1) (2 1 1 4 2) (3 4 1 1) (1 1) (1 2 2 1) (18))) (quote ((15 1) (8 3) (7 2 1) (7 2 1) (7 3 2) (7 2) (7 1) (4 1) (3 4 1) (1 3 2 1 1 1) (2 2 1 3 1) (3 1 4 1) (4 1 3 1) (7 4 1) (7 1) (5 1 1) (2 4 2) (4 2 1 2) (1 5 1 1) (8 6))) (quote #f)) (make-problem "Hattori 40" (quote ((8) (3 8) (3 1 4 2) (4 1 1 2) (1 1 1 1 3 4) (1 1 1 1 3) (1 1 1 1 1) (1 1 4) (2 1 1) (1 5 2 1) (3 1 3 3) (3 1 3 1) (3 2 3 3) (3 3 1) (1 1 1 1 3) (1 5 1 1) (11 2) (1 1 3) (13 5) (13 6))) (quote ((2) (5 3 4) (1 9 2) (2 4 1 2) (1 2 3 2) (3 1 2 2) (1 4 2 2) (4 1 1 2 2) (1 2 3 2) (6 4 1 2) (1 8 2) (6 3 4) (3 2) (4) (5 4 1) (3 4 1 2) (2 1 1 5 2) (2 4 1 1 3) (3 1 1 1 4) (3 1 5))) (quote #f)) (make-problem "Hattori 41" (quote ((6 1 3) (5 1) (3) (2) (2 2 2) (1 4 4) (2 2 3 2) (5 6) (3 5) (2 3) (1 4 1) (1 2 3 3) (1 2 3 1) (2 2 1) (2 3) (2 5) (1 5) (1 6) (1 1 1 1 1 1 1 6) (1 1 1 1 1 1 1 6))) (quote ((6 10) (5 3) (3 2) (2 2) (2 4 2) (1 2 2) (5 2 2) (3 3) (2 2) (4) (1 4 2) (2 3) (4 2) (6) (2 3 3) (5 5) (3 5) (1 2 6) (1 1 6) (2 9))) (quote #f)) (make-problem "Hattori 42" (quote ((9) (3 6) (3 1 6) (4 1 1 4) (4 5) (6 1 7) (4 2 2 4) (3 6 3) (2 1 2 2 3) (1 1 1 1 2) (1 6 1) (1 4 2) (1 1 2) (3 2 2 3) (10 2 1) (9 1 1) (10 3 2) (15 1) (11 2 1) (7 3))) (quote ((2) (5 2) (7 4) (12 5) (6 7) (2 6 6) (1 2 2 2 6) (2 1 2 10) (4 5 7) (3 3 2 6) (9 1 2 4) (6 2 3 3) (6 2 3) (10 2) (6 3) (4 2) (5) (2 2) (1 1 1) (7))) (quote #f)) (make-problem "Hattori 43" (quote ((5) (3 3 3) (1 2 4 1) (2 10) (1 1 3 1) (2 1 3 2 2 1) (2 1 5 1 1 1) (2 7 1) (3 7 3 2) (3 7 3 2) (4 6 2 2) (4 7 2) (5 11) (5 1 4 3) (3 4 3 3 2) (4 2 3 2) (2 3 1) (2 2 1) (2 1) (5))) (quote ((3 3) (3 4) (9) (8) (6 3) (5 9) (3 3 5) (1 5 1) (2 7 1 1) (1 10 1 1) (1 11 6) (13 2 1) (2 1 7 1) (3 1 3) (2 2 2 4) (2 3 4) (3 2 3 1 2) (1 1 1 3) (3 7) (8 2))) (quote #f)) (make-problem "Hattori 44" (quote ((5) (5 6) (2 2 6 1) (6 6 2) (8 5 3) (2 1 1 5 5) (11 6) (4 5 7) (13) (9) (4 6) (5 3 4) (4 5 1 2) (2 4 3 3) (1 5 1 3) (6 2 3) (6 3 3) (5 3 2) (4 3 1) (3 3))) (quote ((4 4 4) (4 3 5) (2 2 3 6) (7 3 5) (4 1 3 5) (1 8 5) (4 4 5) (4 8) (7) (6 2 4) (3 4 7) (3 6 5) (4 5) (5 2 2) (5 3 2) (4 4 2) (4 4 3) (3 5 3) (2 5 3) (5 3))) (quote #f)) (make-problem "Hattori 45" (quote ((8 3) (3 11) (9 1 3) (1 6) (2 7 2) (2 1 4) (4 5 3) (3 5) (1 2 3 2) (1 6) (11 1) (3 5) (3 6 3) (4 6 4) (4 15) (3 7 4) (8 3) (1 2 5) (5 5) (4))) (quote ((1) (1 1 1) (1 2 1) (2 3 2 3) (3 3 1 1 1) (2 1 1 4 2) (2 1 1 6 1) (4 4 3 1) (4 4 6) (11 7) (8 8) (8 9) (2 6 9) (2 1 3 9) (2 1 1 2 1 4) (2 1 1 3) (3 2) (1 1 1 5 1) (1 1 1 1 1 5) (1 1 1 1 1 1 5))) (quote #f)) (make-problem "Hattori 46" (quote ((5) (4 8) (15) (3 10) (2 9) (1 1 1 1 3 5) (1 1 6 2 4) (1 2 2 4 3) (4 4 3 1) (3 2 1 2 3 1) (1 1 4 3 2) (1 2 2 1 2 2) (2 5 2 1) (3 6 1) (10 4 2) (6 5 1) (2 2 2) (2 2 2) (5 6) (2 13))) (quote ((10) (2 2 3) (2 1 3 2 1) (2 2 1 2 2) (2 3 2 2 1) (2 1 3 1 5) (2 8 5) (2 3 3 2 2) (1 2 3 1 3 1) (3 2 1 2 2 1) (6 2 1 3 3) (14 1 2) (12 3 2) (5 3 2) (5 2 3 2) (5 3 2 2) (6 1 1 1 1) (5 2 1) (5 3 1) (5 3 1))) (quote #f)) (make-problem "Hattori 47" (quote ((12) (2 3) (1 8 3) (1 3 3 2) (1 2 2 2) (1 2 2 2) (1 3 2) (11 3) (7 7) (3 3) (3 2) (1 1) (3 1) (2 1 2 1 1) (6 2 1 1) (2 1 5 5 1) (2 1 1 1 1 1 1 1) (2 1 1 2 1 1 1) (2 3 3) (2 2))) (quote ((7) (7) (6 1) (2 1 4) (1 7 1) (1 7 3) (1 2 5 1 2) (1 1 2 5 1 2 1) (1 1 2 4 1 2) (1 1 2 4) (1 1 2 2) (1 2 1 2) (1 1 1 1) (1 1 2 4) (2 1 1) (1 1 3) (2 1 1) (1 3 4) (9 2) (17))) (quote #f)) (make-problem "Hattori 48" (quote ((5 3) (10 1 1) (5 4) (3) (7 3) (14) (16) (5 4) (4 3) (3 3 3 2) (1 1 3 2 2 1) (1 1 4 1 3 1) (1 1 4 1 3 1) (1 4 4 2) (1 3) (2 4) (3 6) (18) (16) (12))) (quote ((1 10) (1 3 4) (1 4 3) (1 4 3) (1 3 2 3) (3 3 1 1 3) (3 3 1 3 3) (3 3 5 3) (3 3 5 3) (3 3 3 3) (3 3) (3 4 3) (3 2 1 3) (2 1 3 4) (2 5 4) (4 3 3) (6 4) (5 3 4) (1 2 3 4) (3 8))) (quote #f)) (make-problem "Hattori 49" (quote ((2 2) (2 2) (3 3 3 3) (5 8 5) (3 3 3 3) (2 1 1 4 1 1 2) (2 1 8 1 2) (1 2 2 1) (1 1 1 1 1 1 1 1) (2 2 1 1) (1 1 1 1 2 1 1) (2 1 1 1 1) (1 1 1 1) (1 4 1) (9) (7 7) (1 7 1) (13 1) (4 4) (5 5))) (quote ((3) (7 1) (7 1 1 2) (1 5) (8 1 3) (1 1 3 1 3) (6 5 1) (1 4 4) (1 2 9) (1 2 1 5) (1 2 2 2 2) (1 2 1 5) (1 2 3 4) (9 4) (1 1 4 1) (10 1 3) (1 1 2) (7 5) (7 1 1 2) (3 1))) (quote #f)) (make-problem "Hattori 50" (quote ((1 1) (1 1) (2 15 1) (3 2 2) (3 1 4 2) (2 5 1) (2 1 3 3 1) (1 7 2) (1 1 5 1) (2 1 6) (3 9) (5 5 3) (6 4 3) (4 2 5) (1 2 1 6) (2 1 3 6) (1 2 4 6) (1 3 3 6) (2 1 3 3 1) (4 2 2))) (quote ((8 3) (5 2 2) (2 1 1 1 3 1) (1 1 4 3) (1 6 3) (1 1 1 3 1) (1 1 1 4) (1 2 4) (1 5 2) (1 6 4) (1 1 6 5) (1 2 8 4) (5 6) (6 4 5) (1 5 1 6) (1 9) (1 8) (1 7) (2 5 1) (7 2))) (quote #f)) (make-problem "Hattori 51" (quote ((1 1 3 3) (4 2 4) (6 6) (3 1 7) (1 2 1 8) (3 2 1 8) (2 1 8) (4 1 9) (2 1 13) (2 1 2 6) (1 3 1 2) (1 3 2 1) (4 2 1) (2 3) (3 2) (7) (1 1) (2 1 2) (4 1) (5))) (quote ((1 1 3) (1 5) (8) (2 7) (3 2 3) (2 2 1 1 1) (1 1 2 2 2) (9 1 1 1) (2 1 2 4) (1 1 1 2) (3 1 1) (3 5) (5 2 1 1) (7 2 1) (10 2) (10 3) (12) (9) (9) (10))) (quote #f)) (make-problem "Hattori 52" (quote ((5 6) (2 4 2) (2 6 2) (2 2 2 2) (2 2 2 1 1) (1 2 2 2 1 1) (1 2 2 1 2 1) (1 2 3 5 4) (1 3 2 1 1 1) (1 8 4 1) (1 3 1 3 1) (1 2 1 1 1 1) (1 1 2 2 2 1) (1 13 1) (7 2 1 1) (3 2 1) (2 2 3 2) (2 1 1 2 3) (4 1 1) (2 1 1))) (quote ((12) (2 3) (2 7) (2 3 2 2 2) (2 5 2 2) (1 7 1 2) (1 3 1 3 3) (1 5 1) (2 7) (5 1 2) (10 2) (3 1 2 3 1) (1 1 2 1 1 1 2) (1 1 2 1 1 1 1) (1 2 2 1 2 2) (2 4 1 1 1 1) (2 1 1 1) (2 3 3) (5 2) (13))) (quote #f)) (make-problem "Hattori 53" (quote ((1 1 1) (3 1 1 1) (1 3 3 3) (4 4 1) (11) (4 4 3) (1 1 2 1 2 1 1 1 1) (4 3 3 3) (2 4 4 4 1) (1 1 2 1 2 1 2 2) (4 3 3 3) (18) (2 2) (1 1 1 1 1 1 1 1) (15) (3 3) (3 4 3 3) (2 2 2 3) (2 1 3 1 3 1 2) (1 2 1 1 1 2 1))) (quote ((1 5 4) (3 2 3 4) (1 2 8) (1 2 2 2 2) (3 2 1 2 2 1) (4 2 1 1 1 2) (4 2 2 2 1 1) (4 2 3 1 1 2) (1 4 2 2 2) (3 2 1 1 2) (1 5 2 1 2) (5 2 2 1 2) (3 2 3 2 1 1) (3 2 2 1 1 2) (3 2 1 2 2 1) (1 2 1 2 2) (1 3 7) (3 1 4 3) (1 6 3) (3))) (quote #f)) (make-problem "Hattori 54" (quote ((3 3) (7 1 1 1 1) (2 2 3 3) (2 2 1 1) (2 3 2 2 1) (1 2 2 1 1 1) (1 2 2 2 1 1) (1 1 1 2 1 4) (1 1 3 1 7) (1 1 1 2 2 6) (1 1 2 1 1 8) (1 2 1 3 5) (2 2 2 2 6) (1 3 1 7) (2 1 7) (3 10) (14) (12 1) (12 2) (12 4))) (quote ((9 1) (2 3 1) (2 6 2 2) (2 2 2 1 2) (1 2 3 2 2 2) (1 1 2 1 1 4) (1 2 2 2 4) (1 2 4 4) (1 2 4) (2 3 5) (2 11) (2 2 5) (3 2 5) (3 3 1 6) (1 3 3 6) (3 14) (11 1) (3 10 1) (1 14 2) (3 6 3))) (quote #f)) (make-problem "Hattori 55" (quote ((2 4 2) (4 7 4) (1 14 1) (1 11 1) (2 11 2) (1 2 4 1 1) (1 3 4 2 2) (2 11 1) (1 9 1) (1 13 1) (1 1 7 3) (5 6 1) (1 2 5 2) (3 2 3 2 1) (1 1 3 1) (2 1 5 1) (2 1 5 1 1) (1 1 1 1) (1 1 1 1 1 1 1 1) (7 7))) (quote ((4 5 2) (2 4 1 4) (2 1 1) (2 9) (1 3 1) (6 1 2) (8 1 1 1) (4 5 2 2 2) (5 6 2 1) (12 5) (17) (16) (14 4) (4 6 1) (3 4 2 2) (6 1 1 1) (2 1 2) (1 3 1) (2 3 1 8) (5 5))) (quote #f)) (make-problem "Hattori 56" (quote ((2 3) (2 4) (2 5) (8) (11) (2 7) (4 1 2 4) (11 1) (2 9 1) (1 8 1) (1 6 2) (1 6 1) (1 8 1) (8 1 2 3) (7 2 1 2) (5 1 3) (1 2) (2 2 1) (4 1) (2))) (quote ((6) (2 2) (2 4 1) (10 2) (10 1) (10 1) (9 2) (10 1) (2 6) (1 3 3) (1 4 6) (8 1) (6) (1 4 4) (9 4) (7 2) (7 2) (6 2) (4 1) (1))) (quote #f)) (make-problem "Hattori 57" (quote ((2 6) (3 1 1 4) (3 2 3 3) (6 7) (6 2) (5 2 2 3) (3 1 2 1 3) (3 1 1 2 2) (11 2 1) (4 3 5) (1 2 9 3) (2 6 5 1) (5 3 3 1) (1 5 3 1) (1 2 2 5) (9 3 1) (2 2 3 1) (2 14 1) (2 2 2) (2 2 3))) (quote ((2 3 2) (4 1 2 4) (6 1 2 2 2) (7 2 1 2 1) (5 2 1 2 1 2) (2 3 1 1 1 1 3) (1 3 1 1 1 1 1 1) (2 1 6 1) (2 10) (1 6 3) (1 4 1) (1 1 1 1) (2 1 4 1) (1 2 2 4 1) (1 2 7 2) (1 1 2 9 1) (2 1 1 2 7 1) (4 2 1 2 2 3) (6 1 1 2 1) (5 2 3 4))) (quote #f)) (make-problem "Hattori 58" (quote ((1 2 2) (1 2 1) (5 3) (4 2) (3 1) (3 1) (7 2 1) (1 8 6) (3 9) (3 6 2 3) (9 8) (5 6 1) (2 8 1) (10) (12) (1 8) (1 9) (1 2 4) (1 2) (2 4))) (quote ((3 2) (2 1) (1 2 3) (5 2) (5 2) (4 2 1) (7 6) (1 7 1) (3 9) (2 6 2 3) (9 8) (4 6 1) (2 7 1) (10 1) (11) (2 8) (2 9) (1 2 5) (1 2) (2 3))) (quote #f)) (make-problem "Hattori 59" (quote ((6) (2 2) (2 2 6) (1 2 2 1 2 2) (1 1 1 1 1 1) (1 2 8) (2 2 2 1 1) (8 1 2) (3 3 2 1) (3 2 1 2) (2 2 1 1) (1 14) (2 3 4) (1 2 4) (1 2 2 4) (4 3 4) (3 4 4) (3 4 4) (9 3) (3 4 2))) (quote ((5 2) (2 2 2) (2 1 3) (1 2 4) (1 3 9) (1 2 1 2 5) (1 1 1 1 5) (2 3 1 2 1) (2 7 1 1) (4 4 4) (2 5) (12) (6 9) (2 1 1) (1 1 9) (1 1 9) (1 1 8) (1 1 9) (2 1 3) (5))) (quote #f)) (make-problem "Hattori 60" (quote ((3) (2 2 6) (1 1 3 8) (2 2 2 9) (2 2 1 1 10) (1 1 2 2 1 4) (2 2 2 5 3) (3 1 3 1 1 1 1 1) (2 2 4 1 3 1) (1 1 5 1 1) (5 1 1 1) (1 1 3 2) (2 1 4 1) (2 1 3) (2 1 1) (2 3 5) (2 1 1 3) (5 1 8) (1 10) (2 9))) (quote ((3 3) (4 3 3) (2 1 1 1 2 2) (1 1 1 3 1 2) (2 4 3 2 3) (3 1 1 1 3 1) (1 1 1 2 2) (2 5 1) (3 11) (2 1) (1 4) (9 2) (3 1 1 3) (3 3 5 3) (4 1 1 2 1 3) (4 3 2 1 3) (5 1 1 3) (7 5) (6 1 4) (12 4))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/h61-90 b/pkgs/games/paint-by-numbers/solution-sets/h61-90 deleted file mode 100644 index 258adfc8d2..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/h61-90 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Hattori 61 - 90") (define problems (list (make-problem "Hattori 61" (quote ((6) (2 3) (5 1 3) (6 4) (10) (11) (1 8) (1 7) (1 5 1) (1 5 3) (2 5 4) (3 4 5) (4 4 6) (5 4 5) (5 3 5) (3 2 2 5) (1 2 5) (2 5) (2 7) (11 2))) (quote ((1) (2) (2) (2 5) (4 5) (6 6 1) (1 11 1) (1 1 2 3 1) (1 2 2 1) (7 3 2 1) (7 5 3) (14 2) (13 1) (7 3 2) (5 2 2) (4 10) (2 10) (12) (11) (8))) (quote #f)) (make-problem "Hattori 62" (quote ((3 5 2) (1 3 1 1 3) (2 3 1 1 3) (1 2 1 3) (1 1 2 4) (2 3 1 4) (2 1 5) (5 1 5) (3 1 2 2 5) (9 2 5) (8 1 5) (5 2 2 5) (4 1 2 5) (2 1 1 1 1 5) (1 8 1 7) (5 1 2 6) (1 1 1 6) (1 1 6) (1 4 2 4) (4 1))) (quote ((6) (6 1) (2 5 2) (12 1) (4 1 3 2 2) (1 1 4 4 1) (2 1 1 3 1 2) (1 2 5 3 1) (2 1 2 1 2) (1 2 1) (3 1) (1 1 3 3) (1 2 2 2 2 1) (1 5 3 3) (5 4) (13) (15) (18) (19) (17))) (quote #f)) (make-problem "Hattori 63" (quote ((5) (7) (1 1) (2 2) (1 1) (1 1 1) (7) (9) (2 4 2) (16) (3 4 3) (5) (3 2) (2 2) (2 2) (3 2) (1 3 1) (20) (1 1) (1 1))) (quote ((1 4) (1 1) (2 1) (1 1) (1 1) (2 1) (3 1 1) (1 2 1 4 1) (8 1 5 1) (2 1 7 1) (2 7 2) (2 1 12) (18) (1 2 1 1) (3 1) (2 1) (1 1) (2 1) (1 1) (1 4))) (quote #f)) (make-problem "Hattori 64" (quote ((4) (19) (1 5) (3) (9) (2 1 4 2) (2 1 3 1 2) (1 1 3 9 1) (1 5 7 2 1) (1 1 2 3 2) (3 3 3) (2 1 4) (7) (1 1 1) (11 1) (1 1 1) (1 1 1) (12 5 1) (2 3 3 3 1) (3 4 2 2))) (quote ((1 5 2 3) (2 2 2 1 3) (2 2 8 1 1) (2 1 1 1 1 1) (2 1 2 3 1 2) (1 7 1 1 3) (1 1 6 1 3) (1 2 2 1 1 1) (1 12 1 1) (11 1 2) (1 8 1 2) (1 2 3) (1 2 1) (2 2 3) (2 2 2) (2 1 4) (2 3 2) (2 1 2 4) (1 2 1 1) (3 3))) (quote #f)) (make-problem "Hattori 65" (quote ((4 3) (3 1 4) (3 6) (12) (8) (8) (1 1 7 3) (2 1 5 1) (6 1 5) (1 2 2 1 2 1) (1 1 2 1 2 3) (2 1 2) (5) (3) (6) (1 1 2 1 2 3) (1 1 1 2 1 2 1) (1 1 3 1 5) (5 3 1) (1 1 5 3))) (quote ((5 4) (2 2) (2 3) (5 2) (1 1 4) (1 2 1) (4 2 2) (1 5 2 2) (8 2 2 1) (1 5 3 2) (17) (5 3 2) (6 2 1 1) (7 2 2) (6 2 2) (4 2 2) (3 1 1) (2 5 3 1) (1 1 1 1 1 1) (1 1 1 1 3))) (quote #f)) (make-problem "Hattori 66" (quote ((4 6) (2 3) (3 1 4 2) (2 4 1) (2 1 3 3) (2 1 3) (2 1 3 3 7) (1 5 9) (2 1 3 3 7) (1 2 1 3) (2 1 2 2) (1 3 2) (3 1 3 1 1) (3 2 3) (4 6 3) (3) (9) (2 6) (3 1 2) (11))) (quote ((1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (1 1 1 1) (1 5 1) (3 2) (2 4 2) (1 4 1) (2 3 2) (1 2 1 1) (1 3 3 3 1 2) (1 5 5 1 3) (1 3 3 2 1 4) (2 1 2 1 1) (1 3 1 1 1) (2 3 1 4) (3 3 2 5 1) (14 1) (6 5 1) (5 4) (3 4))) (quote #f)) (make-problem "Hattori 67" (quote ((3 4 2) (3 6 2) (2 8 1) (1 2) (8) (2 5 1 3) (2 5 1 2 2) (4 1 1 2) (3 4 1 2 1) (1 1 7 1 3) (3 5 1 1 1) (11 2 2) (1 1 4 1 1) (3 7 3) (4 3 1) (4 1 1) (1 4 3 2) (1 1 6 1 1 2) (1 2 12) (2 2 1 2 2))) (quote ((6 3) (1 2 1 1) (2 6 3) (4 2 1 2) (3 8 1) (2 12) (14) (15) (1 4 3 1 3) (2 3 1 1 1 2) (3 2 5 3) (5 2) (9 1 1) (3 1 3 5) (2 1 3 1 1 1) (1 3 1 1 4) (1 1 2) (2 2 1 1 2) (2 2 1 1 1 2) (10))) (quote #f)) (make-problem "Hattori 68" (quote ((8) (3 2 2) (2 1 1 2) (2 2 1 1) (1 1 2 2) (1 6 3) (2 2 1 3 2) (5 3 4) (1 4 7) (1 9) (1 9) (1 6 3) (1 6 2) (1 2 2) (2 2 1) (2 2 1) (3 2 1) (6 1) (4 6) (6 5))) (quote ((4) (2 2) (2 2) (1 3) (2 3) (1 1 1 2) (2 1 1) (4 1 7 1) (1 6 2 2) (1 1 2 2) (1 2 1 4 1 2) (2 1 1 7 4) (2 1 8 1 1) (5 5 3) (2 6 3) (8 3) (5 3) (5 2) (5 2) (9))) (quote #f)) (make-problem "Hattori 69" (quote ((7) (2 2) (1 1) (10) (6 1 1 6) (4 1 2 2 1 3) (2 2 3 2) (1 6 2 2 2 1) (3 1 1 2) (1 1) (1 3 2) (4 1 1 1 1 4) (1 1 2 2 1) (2 3 7 1) (2 1 1 1) (3 1 3 2) (3 3 1 3) (1 3 1 3) (2 4 4 1) (17 2))) (quote ((12 3) (3 1 1 4 2) (2 2 1 3 1) (2 1 2 1 4) (1 1 1 3 3) (5 1 1 2) (3 2 2 2) (2 1 2 2 1 1) (1 1 1 1 1 3 1) (1 3 1 1 1 1) (1 1 1 1 1) (1 3 1 1) (1 1 1 2 1 1 1) (2 1 2 2 1 1) (6 3 3 2) (1 1 1 1 2) (1 1 1 3) (2 1 1 3) (3 1 1 3 1) (6 6 2))) (quote #f)) (make-problem "Hattori 70" (quote ((10) (3 3) (3 2) (2 5 1) (1 8 1) (2 2 5 1) (1 1 1 1 3 2) (1 1 2 1) (3 2 1 1 3 2) (1 2 5 1 3) (8 3 3) (13) (4 6) (8) (11) (1 1 1 1) (1 1 1 1) (1 3 2) (8) (1 1))) (quote ((3) (4 1) (3 4) (2 3 1) (1 5) (2 4 9) (1 2 7 1) (2 2 1 10) (1 2 2 1 2 3) (1 2 1 10) (1 2 6 1) (1 3 2 9) (1 4 2 1 3) (1 3 5 1) (1 2 1 3) (1 1 3) (2 1) (1 2) (2 3) (5))) (quote #f)) (make-problem "Hattori 71" (quote ((1 1 4) (2 3 7) (3 1 9) (2 3 5) (1 5 2) (7 1) (1 1 1 2) (1 3 1 2) (1 3 1 3) (1 1 2 1) (8 4) (2 2 1 2) (2 2 3) (2 3 2 3) (2 1 1 1 2 2) (1 2 2 2 2 3 1) (1 2 1 1 2 1 1 1) (1 2 1 1 2 1 1 1) (1 1 1 1 1 1) (1 5 1 1 1))) (quote ((5 6) (3 2) (1 2 3) (2 3) (7) (2 1 6) (1 3 2 1 1 1 1) (9 1 2 1) (1 3 2 1 1 1 1) (2 1 6) (1 6) (2 2 3) (3 2 3) (4 2) (5 7) (5 2) (4 4 5) (2 4 2) (1 3 5) (2 4 7))) (quote #f)) (make-problem "Hattori 72" (quote ((2 5 5) (3 1 1 1) (4 3 3 2) (5 1 3 1 3) (5 7 4) (5 3 4) (4 1 1 3) (1 1 1 1) (1 10) (5 2) (7) (8) (7 2) (8 2 2 1) (6 3 2 1) (4 1 2 3) (3 1 1) (1 1) (1 1 1 1) (4 4))) (quote ((4 3 3) (5 1 4) (5 1 4 2) (5 1 3 1) (4 2 3 1) (3 1 8) (1 4 1 2) (1 1 4) (1 3 1 4) (1 1 1 5) (7 6) (3 2 1 2) (7 1 1 1) (1 1 1 1 1 2) (1 3 1 2 5) (1 4 2 1) (1 3 2 1) (4 2 2) (4 1) (4 3))) (quote #f)) (make-problem "Hattori 73" (quote ((2) (3 4) (5 4) (9) (6) (4 3) (3 2 3) (5 3) (10 5) (12) (1 1 1 1 1) (1 1 1 1 2 1) (1 1 1 2 3 2) (5 2 3 2) (12 3) (1 2 1 1 3) (1 4 1 4) (12 5) (10 6) (7))) (quote ((1) (1 9) (2 2 2 2) (1 2 4 2) (8 2 2) (18) (4 3 5) (4 3 3 3) (3 12) (2 2 1 2) (1 2 3 2) (1 2 4 2) (2 9) (1 1 1) (1 1 2) (2 3 3) (1 1 1 4) (1 2 1 6) (2 1 1 8) (1 1 1 10))) (quote #f)) (make-problem "Hattori 74" (quote ((6 5) (5 5) (1 1 1 1) (5 4) (5 5) (12) (10) (11) (13) (4 3) (3 2 2 2) (2 1 1 1 1 1) (2 1 1) (2 4 4) (2 2 3 1) (2 4 1) (15) (1 3) (1 1) (20))) (quote ((1 2 1) (2 4 1) (6 3 2 2) (2 7 2 1 1) (2 7 3 1) (9 1 3 1) (6 1 2 1) (4 2 1 4) (4 2 1 1) (5 2 1 1) (8 1 1 1 1) (2 6 1 2 1) (2 6 2 2 1) (6 3 3 1) (2 9 1) (1 2 2 1 1) (2 1 1) (1 1 1) (3 1) (1))) (quote #f)) (make-problem "Hattori 75" (quote ((7 1 1) (9 3 2) (1 4 5 3) (2 1 3 10) (2 1 2) (1 9) (1 2 3 4) (1 3 1 2) (6 1 2) (5 4 1) (2 7 2 1) (7 1 3) (3 2 2 2) (1 2 1 1 1) (11 2) (1 4 1 1 2) (6 1 2) (1 1 1 3) (1 2 7) (1 12))) (quote ((7 3) (2 2 1 2 4) (2 1 1 3) (2 2 1 1 7 1) (2 9 2) (3 3 2 6) (4 3 1 1 1) (5 2 1 1 2 1) (6 3 1 1) (2 3 1 2) (1 1 1 8) (2 1 1 2) (3 1 1 2) (4 1 2 2) (3 2 4 3) (2 5 2 2) (1 2 2 2) (2 2 2 2) (3 2 2 2) (4 7))) (quote #f)) (make-problem "Hattori 76" (quote ((1 1 3) (3 3 1 1) (1 7 1 4) (3 3 1) (1 8) (2 1 1 2 2) (1 2 2 1 2) (1 1 1) (1 7 1 1) (1 2 2 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 2 2 1 1) (1 7 1 1) (2 1 1) (11 1) (1 1 1 2) (2 4 6 1) (1 1 1 1 1 1 1) (3 3 5))) (quote ((10) (6 2) (1 1 4 1) (3 1 2 2 3) (1 2 1 1 1 3) (1 1 2 1 1 1) (1 1 1 1 3) (1 1 2 1 1 1) (1 2 1 1 1 1) (3 1 2 2 1 3) (2 1 4 1 1) (5 1 3) (11 2) (1 1) (1 3) (1 1 1) (3 1 4) (1 1 2 1) (7 4) (1 11))) (quote #f)) (make-problem "Hattori 77" (quote ((14) (4 5) (1 1 3) (3 2) (4 1) (5 3) (4 1 4) (1 2 4) (2 1 2) (5 1 4) (1 5 1) (1 6 3) (4 2 1) (10 2 1 1) (1 10 2) (2 2 2 1 1) (3 1 2 2 1) (4 2 2 2) (11 4) (12 2))) (quote ((1) (1 1 2) (2 1 2) (2 1 1 2) (4 1 2 2) (1 2 7) (1 1 4 3) (2 3 11) (2 5 6 3) (3 3 4 2) (2 3 1 3 3) (1 6 2 6) (1 1 1 3 1) (1 2 2 1 1) (1 4 1 4) (2 2 2 3 1) (2 2 1 2 1) (3 1 2 2) (4 3 4) (5 1 2))) (quote #f)) (make-problem "Hattori 78" (quote ((8) (2 2) (1 1) (1 1 2) (1 1 1 4) (1 1 3 3) (3 11 2) (3 1 2 2) (3 1 2 2) (1 12 3) (1 1 2 2 1 4) (1 1 1 1 1 1) (1 1 1 1) (3 2 2 2 3) (1 1 2 2 1 1 1) (4 8 3) (1 4 4 1) (2 1 1 1) (1 4) (4 1 1 1))) (quote ((3 5) (8 1 3) (3 3 1) (2 1) (13 1 1) (2 1 1 2 1) (1 1 2 3) (1 1 3 1 1 1) (1 1 1 3) (1 1 1 3) (1 1 3 1) (1 3 2 1 1 1) (2 1 1 3) (13 2) (5 1) (2 2 1 2) (2 1 4 1) (3 5 1 1) (7 6) (5))) (quote #f)) (make-problem "Hattori 79" (quote ((1 1 1 1 1 1) (1 1 1 1 2 2 2) (1 2 2 1 3 1 1) (3 1 2 2 4) (2 1 2 4) (2 3 2) (4 1 2) (3 2 2) (4 9) (1 4 6) (2 2 1) (2 3 2) (3 2 1 3) (2 3 4) (1 3) (2 1 1) (4 5) (6 5) (6 7 3) (4 3))) (quote ((4 3 2) (2 1 2 2) (4 1 2 3) (3 2 2 1 4) (2 2 2 4) (9 6) (3 5 2) (2 1 2) (2 1 1) (3 3 1 1) (4 3 2) (2 2 1 1 2) (3 4 3 2) (8 2) (2 2 4 1) (2 1 3 2) (2 2 3) (3 6) (2 1 2 1 1) (2 3))) (quote #f)) (make-problem "Hattori 80" (quote ((7) (1 1 1) (15) (2 2 2 2) (2 3 2) (3 1 4) (3 1 4) (3 3 4) (2 1 2 2) (1 1) (1 1) (1 1) (1 1) (4 1 3) (1 2 1 1 3) (2 2 1 1 1 1) (2 3 1 1 3) (2 1 1 1 1) (2 5 1) (2 3))) (quote ((5) (6 3) (2 3 1 2) (1 1 2) (1 2 2) (1 2 2) (1 1 2 1) (4 1) (1 3 10) (3 4) (1 3 2) (4 11) (1 1 1 1) (1 6) (1 1 1) (1 6) (2 3 1 1) (6 4) (5) (3))) (quote #f)) (make-problem "Hattori 81" (quote ((1 1 1) (2 1 2) (7) (7) (5) (1 1 1) (2 1 2) (4 1 3) (10) (6))) (quote ((4) (3) (3 3) (5 3) (3 2) (10) (3 2) (5 3) (3 3) (4))) (quote #f)) (make-problem "Hattori 82" (quote ((1) (2) (3) (2) (4) (4 1) (5 2) (6 2) (7 3) (8 4) (15) (1) (15) (13) (11))) (quote ((1 1) (2 2) (3 3) (4 3) (5 3) (6 3) (7 3) (8 3) (15) (2 1 1 3) (1 6 3) (5 3) (3 3) (2 2) (1 1))) (quote #f)) (make-problem "Hattori 83" (quote ((1 1 1 1 12) (1 1 13) (1 1 14) (1 15) (1 16) (1 1) (1 5 7) (2 2 8) (1 1 1 1 1 8) (1 1 1 1 1 2 5) (1 1 1 3) (1 1 1 1 1 2) (1 3 1 1 2 2) (1 2 2 3 1 2) (1 1 1 1 1 2 2) (2 1 1 1 1 1) (1 1 2 2 5 1) (1 1 1 2 1 1) (1 7 3 4) (10))) (quote ((3 2 3) (3 3) (1 4 4) (2 2 1 3 1) (2 1 1 2 2 1) (4 1 1) (1 3 1 2 2 1) (4 2 1 4 1) (5 4 3) (5 3) (5 1 4) (5 9) (5 3 2) (5 11 1) (5 3 1 1 1) (5 4 2 1 1) (5 4 1 1 2) (5 5 4) (5 9 2) (5 14))) (quote #f)) (make-problem "Hattori 84" (quote ((2) (3) (2 2) (4 2) (2 3 2) (8 1 2) (10 4) (2 16) (4 3 3 2) (3 3 3 1) (3 3 2) (4 3) (10) (3 4) (1 3 3 1) (2 2 3 2) (3 3 5) (5 4) (16) (12))) (quote ((2 3) (4 3) (5 3) (2 2 2) (8 4) (2 6 6) (2 13 2) (2 10 2) (2 8 2) (4 2 2) (4 1 2) (4 1 2) (4 2 2) (1 4 2) (9 2) (13) (4 4) (3 3) (4 3) (4 3))) (quote #f)) (make-problem "Hattori 85" (quote ((1 1 1 1 1 1) (1 1 1 5 1 1) (1 1 9 1) (1 4 1 4) (6 6) (8 8) (10 9) (2 4 1 3 2) (1 1 1 1 1) (5 1) (8 1 6) (9 1 8) (5 1 1 8) (4 3 1 1 4) (3 1 1 1 3 3) (3 1 1 2 1 2) (4 3 1 1 2 1) (3 1 1 2 1) (1 2 1 2 2) (6 2 1 2))) (quote ((3 3 6) (3 8) (3 3 9 1) (3 5 4) (2 4 4 1) (5 3 1) (1 6 3 2 1 1) (7 2 1 1 2) (2 3 9) (2 1) (4 13) (2 1 1) (2 2 2 3) (6 6 3) (1 7 3 1 1 1) (5 3 3) (2 4 4) (3 5) (2 4 6 2) (4 9))) (quote #f)) (make-problem "Hattori 86" (quote ((3 6 1) (3 6 3) (4 6 1) (4 9 2) (3 6 3) (3 6 3) (3 6) (2) (6) (2 2 2 3) (3 2 2 4) (3 1 1 1 4) (2 1 3 2 1 3) (3 1 1 2) (5 4) (8 2 7) (6 2 5) (6 1 1 5) (6 5) (13))) (quote ((4 4 3) (5 4 5) (7 2 5) (5 7) (3 7) (1 10) (2 1 2) (7 2 1 1 1 1) (7 1 3 1) (7 1 1 2 1) (7 1 2 1) (7 1 2 1) (7 2 1 1 1 1) (1 2 1 2) (1 10) (2 7) (2 1 2 5) (1 2 4 5) (2 1 1 4 3) (1 1 4))) (quote #f)) (make-problem "Hattori 87" (quote ((5 5) (1 1 1 1) (3 1 3 1) (3 1 3 1) (1 1 3 1 2) (13) (15) (17) (3 2 12) (20) (5) (20) (11 4) (9 4 3) (8 5 2) (7 8) (3 11) (3 3 8) (3 3 6) (4 4 7))) (quote ((2 1 1) (3 2 1) (4 3 2) (8 1 4 3) (1 2 5 8) (1 8 7 1) (1 3 1 6 1) (10 5 2) (6 5 3) (10 8) (1 2 5 7) (1 8 2 1 1) (1 5 1 5 1) (10 1 7) (6 1 7) (7 7) (7 6) (7 5) (11) (9))) (quote #f)) (make-problem "Hattori 88" (quote ((4 4 5) (1 2 2 1 6) (1 1 1 8) (1 1 1 5) (3 2 2 2 1) (1 1 1 2 5) (2 3 2 1 3) (1 1 1 1 1 1) (2 4 1 3) (5 2 1 1) (1 3 1 1) (1 3 1 1 4) (6 2 2 1 2) (1 1 1 4 1 3) (1 2 5 2) (4 1 2) (1 3 4) (2 1 1) (1 1 5) (1 11))) (quote ((5 4) (1 3 4 1) (1 1 4 1 4) (2 2 4 3) (4 1 2) (3 6) (2 2 1) (3 2 3 1) (4 2 3 4) (2 3 4 1) (1 2 1 2 1) (1 2 5 1) (5 2) (2 2) (14 2) (4 1 2 2) (4 4 2 5) (3 2 1 3 1 1) (3 4 1 1 1 1) (3 1 1 1))) (quote #f)) (make-problem "Hattori 89" (quote ((9) (4 4) (4 3) (5 4) (4 4 2) (4 2 2 5 3) (4 1 1 5 2) (4 2 2 5 2) (4 9) (4 5 2) (2 1 2 5 1) (2 1 2 2 2 1) (2 2 1) (6 1) (1 1) (2 1 1 1 1) (2 2 5 1) (3 2 2 1 1) (1 2 2 2 1) (10 6))) (quote ((9) (10) (9 3) (13 1 1) (4 2 2 1) (2 1 1 1 2 1) (1 3 2 3 2) (1 2 1 3) (1 1 1 1 2 1) (2 3 2 2 1) (4 2 1) (12 2) (10 2) (9 3) (8 1 2) (6 4) (1 1 1) (2 1 2 1) (6 1) (15))) (quote #f)) (make-problem "Hattori 90" (quote ((2 6) (11) (3 9) (3 1 1 1 2) (2 1 1 1 1) (3 1 2) (1 1 1 1 1) (1 2 2 1 2) (1 2 1 1) (2 6 3) (2 6 5) (13 2) (5 4 3) (4 4 5) (1 7) (6 3) (7 2) (14) (4 10 4) (4 4))) (quote ((5 2) (1 2 2) (5 2 2) (3 2 1 3) (3 6 1) (3 5 3) (2 5 4) (7 5 4) (3 6 5) (5 3 1 4) (3 2 3 4) (5 3 4) (3 5 2) (3 6 1 2) (3 3 3 2 3) (4 2 6) (6 3) (5 2) (2 2) (2))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/h91-99 b/pkgs/games/paint-by-numbers/solution-sets/h91-99 deleted file mode 100644 index 80b31eeb55..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/h91-99 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Hattori 91 - 99") (define problems (list (make-problem "Hattori 91" (quote ((5 5) (1 1 1 1) (1 1) (7) (4 1 2 2 3) (6 1 1 1 5) (4 3 1 3 3) (3 7 2) (2 1 1 1) (1 1 3 1 1) (1 1 1) (2 1 3 1 2) (18) (2 3 2) (2 1 4 1 1) (1 6 1) (2 5 2 2) (2 2 4 2 2) (4 3 3) (1 2 1))) (quote ((7) (5 2 3) (4 3 2) (3 2 2) (2 1 2 1 2) (2 2 1 1) (1 1 1 2) (1 5 1 2) (1 1 1 1 2) (5 3 7) (5 10) (4 3 9) (1 2 1 1 2 3) (1 5 1 2) (1 1 1 2) (2 2 1 2) (2 1 2 1 2) (3 1 2) (4 3 2) (7 4))) (quote #f)) (make-problem "Hattori 92" (quote ((5) (5 2) (7 4) (8 5) (9 6) (9 6) (9 8) (1 7 8) (1 4 8) (4 2 7) (1 2 3 6) (2 2 1 5 5) (2 1 1 2 2 5) (1 2 1 5 5) (1 2 2 3 6) (3 2 6) (1 2 7) (4 1 6) (1 1 4) (1 1 3))) (quote ((4) (2 2 1) (9 5) (5 1 1) (6 1 1 2 1) (7 1 4 1) (7) (8 5) (10 2) (10 3 2) (1 3 5 4) (1 2 2) (1 3 5 4) (10 3 5) (10 6) (17) (16) (15) (13) (9))) (quote #f)) (make-problem "Hattori 93" (quote ((8 3) (3 1 3 1) (2 3 1) (1 2 2 4) (1 3 1 5) (2 1 1 2 1) (1 2 1 3) (1 2 2) (2 3 1) (3 1 3 2) (8 3) (5 9) (2 4 1) (2 9) (2 6 2) (2 1 4 1 1) (2 9 1) (2 1 1 1) (13 1) (15 3))) (quote ((9) (3 1 3 1) (2 3 2) (1 2 2) (1 2 10) (2 1 1 11) (1 3 2 2) (2 2 2 2 2) (3 3 3 1 2) (3 1 3 9) (7 6 2) (6 2) (1 4 2) (4 4) (1 1 1 2) (1 1 1 2 1) (7 1 2) (5 2 3 6) (1 2 1 1 1) (1 2 1 1))) (quote #f)) (make-problem "Hattori 94" (quote ((3 5) (2 1 2 1) (2 3 2 1) (2 2 3 1) (2 2 4 1) (2 2 3 1 3) (1 2 4 2 1 2) (1 3 2 5 1) (1 2 3 2 1) (2 4 2 1) (1 1) (2 3 2 1) (1 1 1 2 1) (1 3 2 1) (1 2 1) (1 2 1) (1 1 2 2 1) (3 3 6 2) (5 3 3) (6 10))) (quote ((7) (3 2) (6 3) (4 2) (3 2 3 2) (2 3 1 1 3) (1 4 3 1 1) (6 1 2 1) (2 2 1 1 2) (2 4 1 2) (2 4 2 3) (1 5 1 3 1 1) (1 3 2 6 1) (1 2 2 2 1) (8 1 1 1) (2 1) (5 1) (1 1 2) (2 3) (14))) (quote #f)) (make-problem "Hattori 95" (quote ((3 9) (1 2 1 1 1 2) (1 1 1 2) (5 1 3 1) (4 1 1) (13) (13) (2 3) (8 3) (11 2) (2 5) (11 1) (1 1 1 1 5) (2 1 1 1 2) (2 2 3) (5 2 2) (2 1 4 1 2) (3 4 2 2 2) (6 1 2 5) (3 2 5 2 2))) (quote ((4 3) (1 1 4) (2 2 5) (5 1 1) (4 2 3 3) (4 7 3) (1 5 1 3) (4 2 2 3 2) (1 3 2 1 1 1) (2 1 2 2 4 2 1) (1 1 2 2 1 1 2 1) (2 1 2 2 1 1 1) (1 3 2 3 2) (4 2 2 1 2) (3 3 4 3) (4 6 2) (5 3 2) (3 1 2 1) (3 5) (4))) (quote #f)) (make-problem "Hattori 96" (quote ((4 4) (2 3) (5 8) (3 10) (3 3 1 4) (3 2 2 2 1 1) (3 2 1 1 1) (3 2 1 1 2) (4 2 1 3) (4 1 3) (9 5) (4 6) (14) (1 1 1 2 4) (3 2 3) (6 3 3) (13 3) (4 1 4 4) (3 2 4 1 1) (4 2 5 4))) (quote ((2) (9 1) (1 8 4) (1 9 5) (3 4 5) (1 4 4 4) (2 6 3 3 1) (1 3 9 2) (1 2 1 1 1 4) (1 2 3 1 2 1 1) (3 1 1 1 1 2) (2 3 1 2 4) (2 1 1 5) (3 11) (4 10) (2 6) (5 4 3) (8 1) (7 1) (7))) (quote #f)) (make-problem "Hattori 97" (quote ((7 3 2) (2 6 3) (12 2 4) (3 6 1) (2 4 3 3) (2 1 1 1 1) (3 1 3) (1 1 1 1) (1 2 3 2) (2 1 4 2) (1 1 1 1) (2 2 3 2) (1 2 1 2) (2 2 2 2) (1 2 2 1 1) (1 2 4 2) (1 2 3 4) (1 5 2 3) (2 1 1 1) (16 1))) (quote ((8 5) (6 3 1 2) (3 3 4 1) (1 1 2 1 1) (1 1 2 1 1) (1 1 2 2 1) (1 1 1 1 2 2 1) (1 1 2 2 2 1 1) (1 1 1 5 1 1 1) (10 1 1 1 1) (3 2 1 1 1) (5 2 2 1) (2 2 4 1) (5 4) (3 1 1) (1 1) (1 4) (8 3) (3 1 1 4 7) (3 3 1 1 1))) (quote #f)) (make-problem "Hattori 98" (quote ((3) (7) (2 3 3) (8 1 4) (2 3 5) (10) (9) (3 4) (4 10) (3 10) (3 9) (2 4 4) (2 15) (2 15) (3 13) (4 5 5) (7 7) (18) (17) (13))) (quote ((1 1 8) (3 11) (1 3 5) (1 2 5) (1 2 3 4) (1 1 4 4) (3 5 4) (5 7 3) (6 3 4 3) (2 2 3 4 3) (2 1 2 3 4 3) (2 2 3 4 3) (6 3 4 3) (9 3 4) (8 4 4) (7 9) (5 8) (8) (6) (4))) (quote #f)) (make-problem "Hattori 99" (quote ((8) (14) (14) (14) (8 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 4) (4 6) (6 7) (7 7) (7 6) (6 4) (4))) (quote ((3) (5) (5) (6) (6) (5) (17) (4) (4) (4) (4) (4) (5) (5 3) (4 5) (4 5) (4 6) (4 6) (4 5) (17))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k15x15 b/pkgs/games/paint-by-numbers/solution-sets/k15x15 deleted file mode 100644 index e771c3ccc1..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k15x15 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 15x15") (define problems (list (make-problem "19980519-KHA (1)" (quote ((2 2) (4 4) (6 6) (15) (1 2 1 2 1 1) (2 2 1 1 1) (2 3 2 1 1) (1 3 3 1) (13) (11) (9) (7) (5) (3) (1))) (quote ((5) (2 2 1) (3 2) (4 2 3) (12) (4 7) (2 7) (2 7) (2 7) (4 7) (12) (4 3) (6 2) (2 1) (5))) (quote #f)) (make-problem "19980805-BER (2)" (quote ((1 13) (1 1 1) (1 1 9 1) (1 1 1) (1 3 9) (1 1 1 1) (1 1 11) (1 1) (1 11 1) (1 1 3) (1 1 7 1) (1 1 1 1 1) (1 1 5 1 3) (1 1) (14))) (quote ((15) (1) (3 3 5 1) (1 1 1 1) (1 5 1 3 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 5) (1 1 1 1 1 1) (1 1 1 1 2 1 1) (1 1 1 1 1 1) (13))) (quote #f)) (make-problem "19980828-PAU (3)" (quote ((4 4) (6 6) (1 1 1 1) (3 3) (4 5 4) (1 1 1 1) (1 1 1) (1) (3) (3) (3 5 3) (2 2) (3 3) (9) (7))) (quote ((1) (2 1 1) (2 1 3) (2 3 4) (2 1 1 3) (2 3 1 2) (2 1 3 2) (1 5 2) (2 1 3 2) (2 3 1 2) (2 1 1 3) (2 3 4) (2 1 3) (2 1 1) (1))) (quote #f)) (make-problem "19990211bJAM (4)" (quote ((3 2) (2 2 2) (2 4) (2 3) (2 5 2) (2 1 1 1 2) (3 5 3) (1 1 1 1 1) (1 5 1) (1 1) (1 4 1) (1 1 1 1) (1 1 1 1) (1 1 1 1) (1 1 1 1))) (quote ((1) (2) (11) (2) (2 5) (2 5 1) (2 1 1 1 1) (1 5 5) (2 1 1 1) (2 5) (2) (5) (15) (2) (1))) (quote #f)) (make-problem "19990221bFRA (5)" (quote ((1) (1 1) (2 2) (3 3) (4 4) (5 5) (6 6) (7 7) (1) (1) (15) (13) (11) (9) (9))) (quote ((1 1) (2 2) (3 3) (4 5) (5 5) (6 5) (7 5) (1 7) (7 5) (6 5) (5 5) (4 5) (3 3) (2 2) (1 1))) (quote #f)) (make-problem "19990421aMIJ (6)" (quote ((3) (3) (2) (4 4) (1 1 2) (1 1) (13) (1 1) (12) (1 1) (14) (1 1) (1 3 1) (4 3) ())) (quote (() (7) (1 1 1 1 1) (1 1 1 1 1) (1 1 1 1 1) (1 1 1 1 1) (1 1 1 1 2) (2 1 1 1 1 1) (4 1 1 1 1) (2 1 1 1 1 1) (1 1 1 1 1 1) (1 1 1 1 1) (1 3 1 1) (1 1 3) (1 1))) (quote #f)) (make-problem "19990527cDRA (7)" (quote ((3 4) (1 2) (1 6 1) (1 11) (5 4) (4 2 4) (3 3 3) (1 1 3 1 2) (1 2 2 1) (1 1 2 2) (3 7 3) (4 5 4) (5 5) (15) (15))) (quote ((15) (1 3 5) (1 4 1 5) (3 2 4) (2 2 3) (2 2 2) (2 3 2 2) (2 3 2 2) (2 2 2 2) (2 2 2) (3 2 3) (1 3 3 4) (1 4 1 5) (2 4 6) (3 10))) (quote #f)) (make-problem "19990723aDAH (8)" (quote (() () (6 6) (1 3 1) (1 1) (3 3) (2 2 2 2) (9) (9) (1 5 1) (1 3 1) (1 1 1) (1 1) (9) ())) (quote ((4) (1 1) (1 2) (1 8) (1 2 1) (1 4 1) (1 5 1) (1 5 1) (1 5 1) (1 4 1) (1 2 1) (1 8) (1 2) (1 1) (4))) (quote #f)) (make-problem "19990723bDAH (9)" (quote ((4 6) (2 4 2) (1 2 2) (1 1 2 1) (1 1 4 1) (1 1 1 2 1) (1 6 1) (1 1 2 2) (1 1 2 2) (1 1 1 2) (2 2 1 2) (1 1 1 1) (4 4) (1 1 1 1) (1 1 1 1))) (quote ((10) (2 5) (1 1) (1 1) (2 5) (10) (2 1) (2 1 7) (1 5 1) (1 2 2 1) (1 4 5) (1 2 2) (2 2) (2 2) (6))) (quote #f)) (make-problem "19990728-DAH (10)" (quote ((5 5) (3 5 3) (2 4 3 2) (1 4 2 1) (1 1 5 1 1) (3 5 2) (4 4 1) (5 6) (1 1 1 1) (1 1 1 1) (1 7 2 1) (1 8 1 1) (2 8 2) (3 5 3) (5 5))) (quote ((5 5) (3 5 3) (2 4 2 2) (1 1 3 3 1) (1 2 2 3 1) (4 1 4) (5 1 4) (1 4 5) (1 4 4) (2 5 3) (1 1 3 1 1 1) (1 2 1 1 1) (2 3 1 2 2) (3 5 3) (5 5))) (quote #f)) (make-problem "19990917aMAT (11)" (quote ((2 3 2) (1 5 1) (2 1 2) (3 3) (1 1 1 1) (1 1 5 2 1) (1 3 4 1) (3 4) (2 2) (2 2) (2 2) (2 2) (11) (1 2 2 1) (3 3))) (quote (() (2 1) (1 1 1 1) (2 6 1 1) (1 2 9) (6 3) (2 1 1 1) (3 1 1) (2 1 1 1) (6 3) (1 2 9) (2 6 1 1) (3 1 1) (1 1 1) (2))) (quote #f)) (make-problem "19990917bMAT (12)" (quote ((3 2) (4 2) (7 2) (1 11) (1 7) (1 1 4) (7 3) (2 1 2 3) (1 1 1 1 3) (7 3) (7 3) (3) (3) (5) (15))) (quote ((1 1) (1 1 1) (11 1) (3 2 2 1) (3 1 3 1) (3 2 2 1) (2 1 3 1) (2 2 1 1) (8 1) (2 1) (2 2) (3 2) (12) (15) (15))) (quote #f)) (make-problem "19990917cMAT (13)" (quote ((1) (1 1) (11) (1 5 1) (1 7 1) (1 1) (1 1 5 1) (1 1) (1 1 5 1) (1 1) (1 1 5 1) (1 1) (1 1 5 1) (1 1) (11))) (quote (() () (13) (1 1) (1 1 1 1 1 1 1) (3 1) (4 1 1 1 1 1) (1 3 1 1 1 1 1) (4 1 1 1 1 1) (3 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1) (13) () ())) (quote #f)) (make-problem "19990917dMAT (14)" (quote ((9 3) (1 1 3) (1 1 3) (2 2 3) (3 3 5) (5 2 1 2) (5 1 1 1) (1 1 1 2 1) (1 1 1 1 1) (1 1 2 2) (1 1 1 5) (1 1 1 3) (1 3 1 3) (7 3) (9 3))) (quote ((1 1) (5 5) (1 4 2 2) (1 4 3) (1 2 1 5) (1 4 3) (1 4 2 2) (5 5) (1 5 1) (2 2) (5 1 5) (8 5) (5 5) (2 2) (5))) (quote #f)) (make-problem "19990917eMAT (15)" (quote ((3) (1 2) (2) (1) (2) (1) (5) (5 5) (7 5) (9 5) (1 1 5) (7 5) (1 1 3) (9 3) (7 3))) (quote ((2 2) (2 1 2) (3 1 2) (3 1 2) (3 1 2) (3 1 2) (1 3 1 2) (1 2 1 2) (1 2 2) (2) (2 6) (3 9) (11) (9) (6))) (quote #f)) (make-problem "19990918aMAT (16)" (quote ((5) (3) (9) (2 2) (2 3 2) (2 1 1 1 2) (2 2 2 2) (2 3 2) (2 2 1 2 2) (2 2 2 2) (2 3 2) (2 2 2 2) (2 2 2 2) (3 3) (13))) (quote (() (11) (12) (2 2) (1 1 1 1) (1 1 2 2 2 1) (3 1 2 3 1) (3 2 2 1 1) (3 1 2 3 1) (1 1 2 2 2 1) (1 1 1 1) (2 2) (12) (11) ())) (quote #f)) (make-problem "19990918bMAT (17)" (quote ((1 1) (5) (1 1 1 1 1) (2 5 1 1) (1 2 3 2 1) (2 3 3 1) (2 1 1 2) (4 4) (1 1) (4 4) (3 3 2) (2 2 2 2) (2 2 1) (3 1 1) (1))) (quote ((2 1) (2 2) (2 2 1 1) (2 1 2 1) (2 1 1 2) (3 5 2) (2 3 3) (4 1) (2 3 3) (3 5 2) (2 1 1 3) (3 1 2) (2 2) (4 3) ())) (quote #f)) (make-problem "19990918cMAT (18)" (quote ((2 3) (2 3) (4) (2) (4) (15) (1 3 1 1) (1 5 1 1 1) (1 2 1 2 1 1) (1 3 3 1 1 1) (1 1 3 1 1 1) (1 1 1 1 1 1) (1 3 1 1) (15) (1 1))) (quote ((9) (1 2) (1 3 1) (1 1 3 1 1) (2 3 2 2) (2 5 1 2) (6 2 2) (4 3 1 1) (2 2 3 1) (1 1 1) (2 9) (1 1 1) (1 1 1 1 1 1) (1 2) (9))) (quote #f)) (make-problem "19990918dMAT (19)" (quote ((1) (3) (1) (1) (5) (9) (13) (15) (1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1) (3 1 3) (3 1 3) (3 1 3) (15))) (quote ((1 1) (9) (2 4) (10) (3 1) (4 1 1) (1 4 1) (15) (1 4 1) (4 1 1) (3 1) (10) (2 4) (9) (1 1))) (quote #f)) (make-problem "19990918eMAT (20)" (quote (() (3) (8) (4 1 2) (1 1 1 1) (2 2 6) (12) (1 8) (1 11) (1 13) (3 5 3) (1 1 2 2) (2 1 2 2) (5 4) (6))) (quote ((6) (3 3) (1 1 2 2) (1 4 1) (2 5 2) (13) (1 5 2) (2 6 1) (11 1) (2 10) (1 5 2) (2 2 2 1) (3 3 2) (5) (3))) (quote #f)) (make-problem "19990918fMAT (21)" (quote ((1 1) (2 1 1 2) (2 1 1 2) (3 3 3) (4 3 4) (15) (15) (15) (4 3 4) (3 3 3) (2 1 2) (2 1 2) (1 1 1) (1 1 1) (1))) (quote ((3) (7) (11) (14) (5) (3) (9) (12) (9) (3) (5) (14) (11) (7) (3))) (quote #f)) (make-problem "19990918gMAT (22)" (quote ((1 1) (1 2) (1 4) (1 5) (1 6) (8 2) (9) (10) (1 9) (1 10) (2 1 1 1) (1 1 1 1 1) (1 1 1 2 1) (2 1 1 1) (1))) (quote ((2) (1 1) (1 1) (7) (6) (5 3) (5) (15) (5) (6 1) (11) (7 2) (4 5) (4) (3))) (quote #f)) (make-problem "19990918hMAT (23)" (quote ((4) (6) (12 1) (12 1) (2 1 2 6) (6) (4) () (3) (2 2) (2 1 2) (1 13) (2 1 2 1 1) (2 2 2 2) (3))) (quote ((2 3) (3 2 2) (3 2 1 2) (2 1 3 1) (3 2 1 2) (2 5) (3 3) (3 1) (2 1) (5 1) (7 1 1) (7 3) (2 3 1) (2 3 3) (5 1 1))) (quote #f)) (make-problem "19990918iMAT (24)" (quote ((2 1) (1 2 1) (1 1 1) (1 1) (3) (7) (9) (2 8) (1 9) (1 9) (11) (11) (11) (9) (7))) (quote (() (6) (2 4) (2 7) (10) (11) (13) (1 11) (1 10) (1 10) (1 8) (1 6) (1) (2 1) (1))) (quote #f)) (make-problem "19990918jMAT (25)" (quote ((3 3) (2 2 2 1) (1 3) (1) (1 4) (1 6) (1 9) (2 9) (2 10) (10 3) (13) (8 5) (10) (2 10) (1))) (quote ((3 3) (2 3 3) (2 4) (1 4) (2 5) (2 6) (12) (2 8) (2 9) (1 7 2) (2 8 1) (5 2 1) (8 1) (7 1) (6))) (quote #f)) (make-problem "19990918kMAT (26)" (quote ((1 1 2) (3 1 2) (1 3 1 2 2) (7 1 1) (3 1 1) (3 1 1) (1 2 2) (6 2 3) (2 6 1) (1 3) (1 4) (6) (2 3) (2 3) (3))) (quote ((3) (2 2 1) (1 1 4) (6 8) (11) (6 5) (1 2 4) (2 1 3) (2 2) (3 2) (2 2) (1 1) (2 2) (2 2) (5))) (quote #f)) (make-problem "19990918lMAT (27)" (quote ((5) (2 2) (2 5 2) (2 2 2 2) (4 1 4) (5 2 5) (1 1 3 1 1) (5 3 5) (1 2 2 1) (6 1 4) (4 2 5) (3 4 4) (11) (3 4) (5))) (quote ((5) (3 1 3) (4 1 4) (2 2 1 5) (1 8 2) (1 2 2 4) (1 1 1 3 1) (1 1 3 4 1) (1 1 4 4) (1 2 1 1 3) (1 3 2 4) (2 10) (4 1 4) (3 1 3) (5))) (quote #f)) (make-problem "19990918mMAT (28)" (quote ((15) (5 1) (4 3 5) (1 4 3 2) (3 2 1) (1 2 1 1 1) (1 4 3 2) (7 7) (1 6 6) (1 6 6) (2 7) (12) (1 2 5) (3 6 4) (15))) (quote ((1 2 4 3) (1 1 1 2) (1 1 1 3 3) (1 2 7 1) (2 2 6 2) (10 1 2) (10 1 2) (3 2 1 2) (2 5 2 2) (1 3 6 2) (1 2 7 1) (1 1 8) (1 1 1 8) (1 2 9) (2 12))) (quote #f)) (make-problem "19990918nMAT (29)" (quote ((7) (1) (6) (7) (3 1) (3 1) (3 1) (8) (9) (8) (4 3) (2 3 2 2) (3 3 1 1 1) (1 1 1 1 1) (2 2))) (quote ((1 1) (1 1) (1 2) (1 1 1) (1 1 1) (1 2) (13) (11) (10) (2 4 2) (2 3 1 1) (8 1 1) (1 4 2) (5) (1 4))) (quote #f)) (make-problem "19990918oMAT (30)" (quote ((2) (3) (1 1) (1 2 4) (1 1 2 1) (1 1 2 1) (1 1 2 2 1) (1 2 2 3) (2 8) (14) (4 5 2) (2 2 3 2 1) (1 1 1 1 1 1) (1 1 1 1 1) (2 2))) (quote ((1 2) (5 1 4) (2 2 3) (3 2 2) (7 1 1) (4 1 1) (2 2) (9) (11) (1 4) (1 3 2) (6 1 1) (3 1 1) (4 2) (1 2))) (quote #f)) (make-problem "19990920aMAT (31)" (quote ((4) (1 1) (1 1) (1 1) (3 1 1) (15) (1 9 1) (6 2 1) (5 3 5) (4 5 4) (4 5 4) (4 5 4) (5 3 5) (1 4 6) (15))) (quote ((10) (2 6 1) (11) (11) (4 3) (3 3 2) (2 5 1) (2 5 1) (2 5 1) (3 3 2) (9 3) (1 1 7) (1 1 7) (6 7) (10))) (quote #f)) (make-problem "19990920bMAT (32)" (quote ((2 1 1) (1 1 1 1) (3 1 1) (1 1 1 1) (1 1) (2 1 1 2) (3 3) (4 1 4) (13) (9) (1 1) (11) (11) (11) (9))) (quote ((1) (3) (1 3 4) (2 5 4) (1 4 2 4) (1 1 2 4) (1 1 2 4) (2 3 4) (2 1 2 4) (2 4) (4 2 4) (2 5 4) (3 4) (3) (1))) (quote #f)) (make-problem "19990920cMAT (33)" (quote ((1) (5) (1 3) (5) (2 2) (5) (1 3) (5) (2 2) (5) (6 1) (8 1) (9 1) (10) (6 3))) (quote (() (2) (3) (3) (4) (5) (15) (1 3 7) (3 3 6) (14) (14) (1) (1 1) (1) ())) (quote #f)) (make-problem "19990920dMAT (34)" (quote ((2) (3) (4 1) (3 1 2) (1 3 1 1) (1 1 1 1) (1 1 1 1) (1 1 2 1 1) (2 1 1 1 2) (1 4 1) (3 3) (6) (2) (2) (6))) (quote (() (2) (3) (4 1) (1 1 2) (3 1 1 1) (4 3 1 1) (1 1 2 1 4) (1 1 1 4) (2 1 1 2 1) (1 4 1 1) (3 3) (6) () ())) (quote #f)) (make-problem "19990920eMAT (35)" (quote ((2) (1 1) (2 1) (15) (1 10) (1 2 2 1) (1 1 1 2 1 1) (1 4 2 1 1) (1 1 2 1 1) (1 1 1 1 1) (1 1 1 1) (1 1 2) (1 1) (1 1) (1 1))) (quote ((12) (1) (1 8) (1 2) (1 1 1) (5) (2) (8) (8 1) (1 2 1 1) (1 2 3 1) (1 2 1) (8) (2) (2))) (quote #f)) (make-problem "19990923-MAT (36)" (quote ((5 5) (4 5 4) (3 1 1 3) (2 9 2) (1 1 5 1 1) (9) (2 2) (2 2) (2 2) (2 2) (1 2 2 1) (2 2 2 2) (3 2 2 3) (4 4) (5 5))) (quote ((5 5) (4 4) (3 1 3) (2 3 3 2) (1 2 3 2 1 1) (1 4 3) (1 3 1) (1 3 1) (1 3 3) (1 5 2 1) (1 2 2 3 1) (2 3 1 2) (3 3) (4 4) (5 5))) (quote #f)) (make-problem "19990924aMAT (37)" (quote ((1) (1 1 1 1) (3 1 1 3) (1 1 1 5 1 1) (8 2 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 1 1 1 1 1) (1 1 2 1 2 1) (1 1 1 1 1 1) (1 1 1 1 1 1) (1 1 9 1) (1 3 2 2 3))) (quote ((12) (1) (13) (2 1 1) (13) (1 1 1) (8 2) (1 2 2) (1 1 4) (1 2 2) (8 2) (1 1) (13) (2 1) (13))) (quote #f)) (make-problem "19990924bMAT (38)" (quote ((15) (6 7) (6 7) (9 2 1) (7 2 1 1) (5 1 3 1 1) (5 1 4 1) (2 1 1 4 1) (2 2 4 1) (2 3 3 2) (1 2 2 1 2) (3 2 2 2 1) (3 1 2 2 1) (3 1 1 7) (3 1 1 7))) (quote ((9 5) (10 4) (7 1 4) (7) (8 1 2) (5 4) (1 12) (1 1) (15) (3 11) (4 5 2) (5 3 5) (3 1 4) (3 2 2) (15))) (quote #f)) (make-problem "19990924cMAT (39)" (quote ((2) (2 2) (1 1 4) (1 2 1 2) (1 2 1 2) () (4 4) (7 1 2 1) (1 2 2 2 1) (1 4 1 2 1) (6 4) (6 1 1) (8 1 1) (8 1 1) (8 2 2))) (quote ((2 3) (2 1 5) (1 2 6) (1 2 9) (1 2 9) (1 2 6) (2 1 5) (2 3) (2) (1 1) (1 1 5) (5 5) (5 5) (1 1 5) (3 1))) (quote #f)) (make-problem "19990924dMAT (40)" (quote ((3 3) (5 5) (7 7) (7 7) (7 7) (5 5) (3 3) (11) (6 1 2 2) (13) (7 5) (10 2) (1 1 1) (1 1 1) (1 1 1))) (quote ((3) (5 2) (12) (12) (12 1) (5 7) (3 5) (1 6) (3 5) (5 1 1 3) (12 1) (12) (7 2) (5 4) (3 4))) (quote #f)) (make-problem "19990924eMAT (41)" (quote ((1 10) (8) (2 2 4) (1 1 4 3) (7 3) (1 6 3) (1 8 2) (2 9 2) (3 8 2) (4 7 1) (6 6 1) (7 3 1) (9 1 2) (10 2) (12 1))) (quote ((1 10) (8) (2 7) (1 1 6) (2 3 5) (1 5 5) (1 6 4) (2 8 3) (11 3) (12 2) (2 10 1) (3 6 1) (6 2 2) (9 2) (12 1))) (quote #f)) (make-problem "19990925-MAT (42)" (quote ((9 4) (9 1 2) (10 2 1) (10 1 1) (6 1) (5 1 4) (4 1 4) (4 1 4) (4 4) (4 5) (2 6) (2 10) (1 1 10) (1 2 10) (2 11))) (quote ((11 2) (11 1 1) (10 1 1) (10 3) (6 1) (5 2 4) (4 1 4) (4 4) (4 4) (2 5) (1 6) (1 2 10) (1 1 11) (2 10) (4 10))) (quote #f)) (make-problem "19990927aMAT (43)" (quote ((12) (12) (2 7) (2 5) (2 1) (2 7) (2 1 1 4) (2 1 1 2) (2 1 1 1 2) (2 1 1 2) (2 9 2) (2 9 2) (2 7) (2 5) (12))) (quote ((15) (15) (2 1) (2 1 3 1) (3 2 1 3 1) (4 1 1 5) (4 1 5) (7 1 5) (4 1 5) (4 3 5) (3 1 1 3 1) (2 1 3 1) (2) (5) (4))) (quote #f)) (make-problem "19990927bMAT (44)" (quote (() (2) (1 2) (2 2) (6 3) (3 3 1) (4 4 2) (15) (1 7 1) (3 5 3) (2 2 3 2 2) (1 1 1 3 1 1 1) (2 2 2 2) (3 3) ())) (quote ((2 2 3) (5 2 2) (4 1 1 1) (4 2 2) (1 3 3) (1 1 3) (1 5) (2 6) (2 7) (7) (5 3) (1 1 2 2) (3 1 1 1) (2 2 2) (2 3))) (quote #f)) (make-problem "19990927cMAT (45)" (quote (() (10) (2 1) (1 1) (1 1) (1 1) (2 2) (2 3 2) (13) (1 3 1) (13) (1 1 1 1 1 1 1 1) (2 1 1 1 1 1 2) (1 1 1 1 1 1 1 1) (15))) (quote ((4) (5 1 1) (5 2 2) (1 1 1 1 1) (1 1 2 2) (2 1 1 1 1) (1 5 2) (1 4 1 1) (1 5 2) (1 1 1 1 1) (1 1 2 2) (1 1 1 1 1) (1 5 2 2) (1 1 5 1 1) (2 4))) (quote #f)) (make-problem "19990927dMAT (46)" (quote ((3) (2 2) (1 1) (1 1) (1 2) (3 3) (2 2 2) (1 2 6) (1 10) (2 2 2) (4 2) (2 2) (2) (2) (1))) (quote ((4 1) (2 3) (1 1) (1 1) (1 2) (4) (3 2) (2 3 6) (1 10) (2 2 2) (4 2) (2) (2) (2) (1))) (quote #f)) (make-problem "19990930-TPV (47)" (quote (() (13) (1 11) (13) (13) (13) (13) (13) (13) (2 4) (2 3 4) (2 3 4) (2 3 4) (1 3 4) ())) (quote (() (12) (1 11) (8) (8 4) (8 4) (8 4) (8) (8) (8) (13) (13) (13) (13) ())) (quote #f)) (make-problem "19991001aMAT (48)" (quote ((2) (4) (4 2) (2 5) (7) (2 4) (4) (6) (1 5) (5) (5 1) (6 2) (2 4 1) (3 4 2) (2 2 3))) (quote ((2) (2 1) (1 2) (4 1 1) (2 2 1 2) (6 1 2) (13) (9 1) (11) (8) (6) (4) (1) (2 2) (3))) (quote #f)) (make-problem "19991001bMAT (49)" (quote ((2) (1 2) (1 1 2) (1 4) (1 3) (13) (3 11) (2 8 1) (3 7 2) (13) (3 2) (3 2) (3 2) (3 2) (2 1))) (quote ((3) (5) (6 3) (1 3) (2 5) (5 3) (5 3) (5 2) (2 5) (1 7) (11 1) (7 6) (3 1 1 1) (2 2) (3))) (quote #f)) (make-problem "19991001cMAT (50)" (quote ((3) (3) (3) (3) (9) (5 3) (3) (1 1 1) (1 1 1 1) (1 1 1 1 1) (1 1 1 1) (1 1 1 1 1) (1 1) (1 1) (2 2))) (quote (() (1) (1) (2 1 1) (1 1 1 1) (2 1 1 4) (3 3 1 1) (3 4 1 1) (3 3 1 1) (2 1 1 4) (1 1 1 1) (2 1 1) (1) (1) ())) (quote #f)) (make-problem "19991001dMAT (51)" (quote ((1 3) (2 4) (1 2) (2 3) (1 4) (2 4) (4 4) (1 5) (2 1 2) (3 1 1 1) (1 1 1 1 1 1) (1 1 2) (3 2 1) (2 2 1) (1 3))) (quote ((4) (2 4 3) (3 1 2 2) (4) (2 1) () (1) () (5) (1 2) (4 1 1 2) (7 2 1) (9 3) (2 8) (2))) (quote #f)) (make-problem "19991010bTPV (52)" (quote ((1) (1) (2 1) (1 4) (2 3 2 1) (6 6) (14) (12) (12) (11) (3 2) (3 2) (5) (3) (2 2))) (quote ((2 3) (6) (6) (8) (9) (6 2) (5 1 1) (1 4 3) (1 1 4 3) (1 1 7 2) (9 1) (7) (1 2) (3) (1))) (quote #f)) (make-problem "19991012-PIX (53)" (quote ((2) (2 2) (6 7) (3 1 1 4) (4 1 3) (11 3) (1 6 2) (2 2 3) (2 2 2) (2 2 2) (1 1 1) (2 2 2) (15) (15) (15))) (quote ((2 4 3) (5 1 3) (5 3) (5 3) (1 5 4) (2 10) (2 3) (2 3) (2 1 3) (1 1 4) (1 2 7) (4 3 3) (8 3) (8 4) (4 7))) (quote #f)) (make-problem "19991112-SHE (54)" (quote ((9) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (9) (11) (7 1) (11) (1) (9) (2 2 2 2) (13))) (quote (() (1) (3 2) (11 3) (1 4 1 1) (1 4 3) (1 4 3) (1 4 1 1) (1 4 3) (1 2 1 3) (1 2 3 1) (9 1 3) (3 2) (1) ())) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k15x20 b/pkgs/games/paint-by-numbers/solution-sets/k15x20 deleted file mode 100644 index 248658debb..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k15x20 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 15x20") (define problems (list (make-problem "19990127aLLO (1)" (quote ((6 2) (1 1 6) (1 1 2 2) (2 2 1 1) (1 2 1) (6 1 4 1) (1 1 1 1 1) (1 1 1 1) (3 1 1 1 1 1) (1 1 1 1) (5 1 1 1 1) (1 1 1 1 1 1) (3 1 1 1 1) (1 1 1 1) (1 1 1 1 1 1) (6 1 1 1) (1 1 1 1 1) (1 2 2 1) (5 4 1) (1 1 2 1))) (quote ((4 2 1 1 3 2) (1 1 1 1 1 1 1) (1 1 1 3 1 1) (1 1 1 1 1 3) (1 1 1 1 3 1 1) (4 1 3) () (16) (2 2) (1 10 2) (2 2 2) (2 2 2) (1 13) (2) (18))) (quote #f)) (make-problem "19990127bLLO (2)" (quote ((3) (5) (7) (1 7) (2 4) (7) (5) (5) (5) (8) (6 2) (2 3 1 1) (2 2 2) (8) (5) (5) (5) (7) (7) (5))) (quote ((1) (3) (2 2) (2 3 1) (1 2 3 1 2) (3 15) (4 6 8) (4 5 1 7) (11 8) (19) (4 2) (2) () () ())) (quote #f)) (make-problem "19990421bMIJ (3)" (quote (() (1 1 1) (2 2) (1 1 1) (2 1) (1 1) (1 1) (1) (1) (1 1 1 1) (3 1 3) (3 4) (1 3) (1 2) (1 1 1) (2 1 1) (2 1) (1 1) (15) (15))) (quote ((2) (1 2) (3 1 2) (10) (3 1 2) (5 1 2) (1 1 1 2) (1 1 13) (1 1 3 2) (5 3 2) (2 2) (2 2) (2) (2) (2))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k15x25 b/pkgs/games/paint-by-numbers/solution-sets/k15x25 deleted file mode 100644 index 4b0b341616..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k15x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 15x25") (define problems (list (make-problem "19990804aVAC (1)" (quote ((3) (4) (4 4) (7 3) (7 3) (2 2 2) (1 2) (4 2) (7) (8) (2 1 3) (1 2) (2 2) (2 2) (1 1 1 2) (1 1 1 2) (1 1 1 1 2) (6 2 1) (1 1 1 4) (1 3 1 4) (1 1 3 1) (1 6 2) (1 4 2) (1 2 2) (1 2))) (quote ((2 5) (3 1 1) (4 6 1 1) (3 4 3 1 1) (3 2 1 1 2 1) (4 2 6 3) (7 3) (4 3 1) (3 3 3 1) (2 3 1 1) (3 3 2) (5 14 2) (7 10 1) (4 3) (3))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k20x15 b/pkgs/games/paint-by-numbers/solution-sets/k20x15 deleted file mode 100644 index 588e3fbef3..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k20x15 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 20x15") (define problems (list (make-problem "19990524-KHO (1)" (quote ((1) (2 2 1) (1 1 2) (3 1) (5 2) (3 3 1) (8 1) (19) (1 14) (1 13) (13) (2 1 1 3 3) (4 1 1 2 2) (4 1 1 1 1) (2 1 1 2 2))) (quote ((2) (3 1 4) (1 4 4) (1 4 2) (3 2) (6 1) (12) (1 7 1) (1 8) (4) (4) (4) (5) (6 1) (8) (4) (6 1) (3 8) (3 5) (4))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k20x20 b/pkgs/games/paint-by-numbers/solution-sets/k20x20 deleted file mode 100644 index 17e1de6320..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k20x20 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 20x20") (define problems (list (make-problem "19980407-KVL (1)" (quote ((10 8) (9 6) (5 5 5) (6 7 4) (6 9 3) (4 2 2 1 1 3) (5 3 2 1 1 3) (5 2 2 1 2 2) (4 2 2 1 2 2) (5 3 7 2) (5 1 2 1 3) (2 1 1 7 3) (3 1 6 4) (3 1 8 3) (2 6 5 2) (3 4 3 2) () (2 3 3 3 3 1) (2 3 3 3 3 1) ())) (quote ((16 2) (16 2) (11 2 1) (12 1 2) (5 2 2 2 2) (2 2 5 2) (2 5 2) (2 6 2 2) (2 4 2 2 2) (1 3 4 2) (8 3) (8 4 2) (1 3 1 5 2) (1 14 2) (2 2 1 5) (3 6 1 2 2) (4 3 1 2) (7 4 2) (16) (16 2))) (quote #f)) (make-problem "19980501aGOS (2)" (quote ((7 7) (5 5) (3 3) (2 2) (2 2) (1 2 2 1) (1 4 4 1) (2 1 2 1) (2 2) () (2 2) (4 4) (1 1 4 1 1) (1 2 1 1 2 1) (1 3 3 1) (2 4 2) (2 2) (3 3) (5 5) (7 7))) (quote ((7 7) (5 5) (3 3) (2 1 2) (2 3 2) (1 2 1 1 1) (1 4 4 1) (2 1 1 1) (2 4) (1 1) (1 1) (2 4) (4 1 1) (1 2 1 4 1) (1 2 1 1 1) (2 3 2) (2 1 2) (3 3) (5 5) (7 7))) (quote #f)) (make-problem "19980608-JEN (3)" (quote ((3 2 2 1) (1 2 2 2) (1 1) (1 1) (1 2 1) (1 2 1 3) (1 1 3 1 1) (1 1 2 1 1) (1 2 2 3) (1 1 1) (1 1 3) (2 1 3) (5 1 3) (1 5 1 3) (3 4 4) (4 1 4) (5 6) (7) (5) (4))) (quote ((15) (1 2 1) (2 2 1 2) (1 1 1 1 1) (1 1 1 2 1) (1 1 1 2) (1 1 1 1) (1 3 1 1) (1 1 2 2 1) (1 1 1 1 2) (1 3 1 3) (6 12) (1 1 4) (3 5) (5) (8) (8) (5) () ())) (quote #f)) (make-problem "19980907-KEV (4)" (quote (() (7 2 3) (8 2 4) (2 2 4 1 1) (2 2 4 4) (2 2 1 1 3) (2 2 4 1 2) (5 2 1 1 1 2) (4 5 3 2) () () (1 1 2 3 2) (1 1 2 4 3) (1 1 4 1 1 2) (1 1 4 4 2) (1 1 1 1 1 3 2) (1 1 1 4 1 2 2) (5 1 1 1 6) (3 2 3 5) ())) (quote ((2 7) (2 2 2) (4 2 4) (2 4 2) (2 2 7) (2 1) (8 6) (8 4 1) (2 1 4 1) (2 1 6) (6 1) (4 1 8) (4 1 2 2) (6 2 3) (1 3 3) (8 2) (2 2 2 2) (2 3 4 2) (3 3 2 4) (2 2 2))) (quote #f)) (make-problem "19990126aLLO (5)" (quote ((1 1 1) (2 1 2) (1 2 1) (1 1 1) (2 2 2) (1 1 1) (1 1 1) (2 2 2) (1 1 1) () (11) (2 2 3) (2 4 1) (4 5 1) (17 1) (15 3) (13) (11) (2 7 2) (17))) (quote ((1) (4 2) (6 1) (2 2 5 1) (4 2 1 5 1) (4 1 6) (1 6) (3 1 6) (3 2 1 6) (4 1 6) (1 6) (2 4 1 6) (4 2 1 5 1) (2 5 1) (6 1) (4 1) (3 1) (2 2 2) (1 1 1) (5))) (quote #f)) (make-problem "19990211aJAM (6)" (quote (() (4 4) (2 3 3 2) (1 2 2) (2 1 1 2) (2 2) (2) (4) (4) (4) (6) (6) (2) () (9) (11) (3 3) (2 5 3) (2 3 3) ())) (quote (() (2) (2 1) (1 2) (1 2 2) (2 2 2) (1 3) (2 2 2) (2 5 2 1) (7 2 2) (7 2 2) (2 5 2 2) (2 2 2 1) (1 2) (2 3) (1 2 3) (1 2 3) (2 2) (1 1) ())) (quote #f)) (make-problem "19990214bFRA (7)" (quote ((20) (1 3 3 2) (3 4 1 1) (3 4 1) (3 4 1) (3 5 2) (3 6 3) (3 7 4) (3 8 5) (1 7 6) (20) (20) (1 4 3 5 3) (1 3 3 3 3) (1 2 4 1 4) (1 1 1 5 5) (1 2 6 6) (1 3 6 6) (1 4 6 6) (20))) (quote ((20) (1 7 2 1) (1 7 3 5) (1 4 4) (1 7 5 3) (1 7 6 2) (12 1) (20) (2 15) (1 14) (1 5 6) (1 5 5) (2 5 4) (3 5 1) (2 5 4) (1 5 5) (1 5 6) (1 14) (2 15) (20))) (quote #f)) (make-problem "19990306-RMA (8)" (quote ((1) (8) (6 1 2) (5 2 2) (5 2 2) (5 3 3) (5 4 3) (2 1 1 5 1 3) (2 1 2 5) (1 1 1) (1) (1) (1) (1) (1) (1) (1) (1) (1 1) (3))) (quote ((1) (3) (3) (5) (5) (5) (4 1 2) (3 1 1) (2 2 1) (2 3 6) (1 10) (8) (1 3) (2 1) (2 1) (3 1) (6) (4) (3) (2))) (quote #f)) (make-problem "19990412-RAB (9)" (quote (() (9) (1 1 1 1 3) (9 2) (1 3 1) (2 1 1 1 3) (2 1 1 1 2) (1 1 3) (9 3) (1 1 1 4 9) (12 1 1 1 1) (1 12) (3 1 1) (2 1 1 1 1 2) (2 1 1 2 1 2) (2 1 1) (14) (2 1 1 1 1 1 1) (12) ())) (quote ((3 3) (1 1 2 1 1) (3 2 3) (1 1 1 1) (10) (1 1 1 1 4) (3 2 10) (1 1 3 1 2) (11 2 1 1) (1 1 3 3) (4 2 7 1) (1 7 3) (6 1 2 1 1) (3 1 3) (1 1 1 1) (10) (1 1 1 1) (3 2 3) (1 1 2 1 1) (3 3))) (quote #f)) (make-problem "19990806-ELS (10)" (quote (() (1 1) (2 2) (3 3) (4 4) (4 4) (4 4) (4 4) (4 4) (3 3) (5) (3) (5) (11) (2 1 1 2) (2 1 1 2) (1 2 2 1) (1 2 2 1) (4 4) ())) (quote (() (4) (4 4) (4 2 1) (4 2 1) (4 1 2) (4 1 2) (4 5) (6) (4) (6) (4 5) (4 1 2) (4 1 2) (4 2 1) (4 2 1) (4 4) (4) () ())) (quote #f)) (make-problem "19990929-LSA (11)" (quote ((4 3) (3 5 2) (2 9 1) (1 11) (1 13) (1 2 1) (8 5) (9 5) (3 3 1 1) (4 4 2 2) (9 5) (9 5) (5 2 4) (6 5) (13) (4 4) (1 4 4 1) (2 8 1) (3 5 3) (5 7))) (quote ((5) (3) (2) (1 5) (11 4) (2 10 3) (3 2 8 2) (3 2 8 1) (4 2 9 1) (4 6 2 3) (12 1 2) (12 1 2) (4 2 3) (3 14) (3 2 9 1) (2 2 7 2) (4 7 2) (1 6 4) (2 1) (3 1))) (quote #f)) (make-problem "19991002aTPV (12)" (quote (() () (6) (2 2 3) (1 1 1 3 1) (1 2 1) (2 3 1) (3 4 1) (3 3 1) (4 3 4 1) (5 9) (6 7) (7 4) (6 3) (7 4) (7 3) (6 3) (6) () ())) (quote (() () (6) (10) (1 10) (1 8) (2 7) (1 7) (1 1 6) (3 2 4) (2 2 3) (1 1 1 2 1) (10 2) (9 3) (1 11) (1 7) (2 5) (6) () ())) (quote #f)) (make-problem "19991119bKHO (13)" (quote ((4 4) (3 2 1 1 1 1 1 3) (2 2 1 1 1 1 2) (2 1 1 1 1 1 1 2 2) (1 1 1 1 1 1 1 1 1 2) (1 1 1 1 1 2 1 2) (1 1 1 1 1 1 1 2 2) (2 13 3) (3 4) (3 4) (3 4) (3 4) (3 4) (4 5) (4 5) (5 6) (6 7) (8 9) (9 10) (20))) (quote ((20) (4 13) (2 1 1 12) (1 2 1 1 7) (2 1 2 5) (1 1 1 4) (1 1 2 3) (1 1 1 1 3) (1 2 2) (1 1 1 1 1) (1 1 2 2) (1 1 1 1 3) (1 2 3) (1 1 1 1 4) (1 2 1 5) (1 1 2 7) (1 5 12) (2 13) (20) (20))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k20x25 b/pkgs/games/paint-by-numbers/solution-sets/k20x25 deleted file mode 100644 index 457d4f6be8..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k20x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 20x25") (define problems (list (make-problem "19980620-KKA (1)" (quote (() (1) (3) () () () () (1) (2) (1) (2) (2) (2 1 1) (2 3 2) (1 2 4 1 1) (1 2 1 1 2 1) (1 1 2 2 1 1 2) (1 4 1 4 4) (20) () (11 1 3 1) (1 1 1 1 1 1 1 1) (1 3 1 2 1 3 1) (1 1 1 1 1 1 1) (1 3 1 1 1 1 3 1))) (quote ((1 1) (5 5) (1 1) (5 5) (1 2 2 1 1 1) (2 2 1 1 1) (6 1) (1 1 1 1 5) (2 2 1 1 1) (1 4 2 3 5) (4 2 1 1 1) (1 2 1 2) (3) (3 2 5) (2 4) (1 3 1) (5 1 1 1) (3 1 3) (2) (2 3 1))) (quote #f)) (make-problem "19991113cBAR (2)" (quote ((3 1 2 1) (2 3 2 3 2) (17 1) (19) (19) (12 7) (8 2 1 5) (4 1 5) (3 4) (6 7) (2 3 3 4) (3 2 2 4) (4 5) (4 6) (5 3 6) (4 5 6) (5 1 6) (4 5 5) (4 3 3 3) (2 3) (5 6) (8 7) (17) (13 1) (1 2 3 3))) (quote ((1 5 4 3 1) (21) (23) (7 1 7 5) (5 1 3 4) (7 2 1 4) (8 2 1 4) (7 2 1 2 3) (4 2 1 4) (7 4 3) (6 2 1 3) (4 2 1 2 3) (5 2 1 4) (7 2 1 5) (5 1 4 5) (8 7 3) (24) (22) (18) (1 4 2 6))) (quote #f)) (make-problem "19991113gBAR (3)" (quote (() () (4 4) (8 6) (14 3) (3 7 2) (3 5 2) (6 2) (6 2) (6 3) (6 4) (8 4) (14) (14) (10 3) (14) (16) (18) (3 14) (3 14) (4 13) (4 11) (3 9) (12) (10))) (quote ((2 4) (3 6) (3 9) (4 5 4) (4 8 4) (4 10 2) (2 16 2) (3 18) (21) (21) (21) (21) (3 3 10) (3 13) (3 12) (2 12) (2 4 6) (3 4 4) (9) (7))) (quote #f)) (make-problem "19991115cBAR (4)" (quote ((8 9) (8 8) (4 2 5 1) (4 2 3 1) (4 2 2 1) (1 2 1 1 2) (1 3 1 3) (1 1 3) (1 1 3 2 1) (2 5 1 1) (4 2 4 1) (2 2 4 2 2) (1 1 5 3) (4 2 5) (2 4 4) (1 2 5 2) (4 3 1) (2 1 1 1) (1 2 2 1) (1 2 1 2 1) (2 1 1 4) (5 1 4) (4 2 4) (4 4 5) (5 7 5))) (quote ((13 10) (5 3 2 5) (5 1 1 4) (6 1 1 4) (2 2 1 1 2 1) (2 1 1 1 1) (3 2 1 1) (4 1 5 1 1) (2 3 3 2 2) (2 2 3 2 2) (9 3) (1 3 1 3 7) (3 7 2 1) (7 5) (5) (4 2 1 2 2) (3 1 2 6) (2 2 3 5) (2 3 5 5) (18 6))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k20x30 b/pkgs/games/paint-by-numbers/solution-sets/k20x30 deleted file mode 100644 index 91fc553430..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k20x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 20x30") (define problems (list (make-problem "19991007aKHO (1)" (quote ((1 1 1 1 1) (1 5 1) (8 2) (8) (8) (2 2) (1 1) (2 2) (1 6 1) (2 8 2) (1 1) (1 2 2 1) (1 1 1 1 1 1) (1 4 4 1) (3 4 4 3) (1 1 1 1 1 1 1 1) (1 1 2 2 2 1 1) (2 1 4 1 2) (3 4 3) (1 4 1) (1 2 1) (2 2) (14) (2 2) (1 2 4 2 1) (1 6 1) (1 1) (14) (5 5) (7 7))) (quote ((3) (1 2 1) (1 1 2) (21) (1 3 3 3) (2 3 4 1 1 3) (4 1 1 2 1 1 1 3) (1 3 2 1 2 1 1 1 1 1) (4 2 4 3 1 2 1) (5 2 5 1 2 1) (4 2 5 1 2 1) (5 2 4 3 1 2 1) (4 2 1 2 1 1 1 1 1) (1 3 1 1 2 1 1 1 3) (1 3 4 1 1 3) (2 3 3 3) (21) (1 1 2) (1 2 1) (3))) (quote #f)) (make-problem "19991007bKHO (2)" (quote ((20) (1 1) (1 16 1) (1 16 1) (1 2 2 1) (1 2 2 1) (1 5 2 1) (1 2 6 1) (1 2 1 1 2 1) (1 2 3 2 1) (1 2 1 1 2 1) (1 3 1 1 1 1 1 2 1) (1 2 1 1 1 1 1 3 1) (1 16 1) (1 16 1) (1 1) (1 6 1) (1 2 1) (1 2 4 1) (1 2 2 4 1) (1 6 4 2 1) (1 6 4 1) (1 2 2 1) (1 2 1) (1 1 1 1) (1 1 1 1 1) (1 2 2 1 1 1) (1 1 1 1 1) (1 1 1 1) (20))) (quote ((30) (1 1) (1 13 2 1) (1 13 2 1) (1 2 1 1 2 6 1) (1 2 1 3 6 1) (1 2 1 1 1 2 2 1 1) (1 2 1 3 1 2 1 1) (1 2 4 2 1 1) (1 2 1 3 1 1 1) (1 2 2 2 1 2 1 1) (1 2 3 1 4 1) (1 2 1 1 2 1 4 1) (1 2 1 3 2 1 1 1) (1 2 1 1 2 2 1 1 2) (1 2 1 3 4 1 1 1) (1 13 4 1 1 2) (1 13 2 1 1 1) (1 1) (30))) (quote #f)) (make-problem "19991113bBAR (3)" (quote ((6) (8) (10) (3 8) (1 2 1) (12) (1 1 1 3) (1 6 1) (1 2) (1 4 1) (3 2 4) (5 6) (7 8) (19) (4 10 3) (4 11 3) (17 1) (2 14 1) (1 2 1 1 1 1) (3 15) (14) (14) (13) (11) (4 5) (1 1 2 1) (4 4) (5 5) (6 6) (6 6))) (quote ((5) (5 1) (5 1) (3 6 1) (1 1 5 6) (4 7 3 4 2) (2 3 8 5 3) (4 1 1 7 11) (4 3 1 6 6 4) (4 1 1 2 5 6 4) (4 1 1 2 17) (4 3 1 5 5) (4 1 1 14) (3 2 7 11) (5 10 6 4) (3 8 6 4) (4 2 11) (6 6 3) (5 1 2) (7))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k25x15 b/pkgs/games/paint-by-numbers/solution-sets/k25x15 deleted file mode 100644 index 9023e00ebe..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k25x15 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x15") (define problems (list (make-problem "19990709-DAH (1)" (quote ((25) (1 1) (1 3 1) (1 3 1 3 1) (1 3 1 1 1 1) (1 1 1 1 1 1) (1 1 1 1 1 1) (1 1 1 3 1 1) (1 1 3 4 3 1) (1 3 4 4 4 1) (1 4 4 2 4 1) (1 4 2 2 1) (1 2 1) (1 1) (25))) (quote ((15) (1 1) (1 2 1) (1 4 1) (1 4 1) (1 8 1) (1 1 1) (1 1 2 1) (1 1 4 1) (1 1 4 1) (1 8 1) (1 1) (1 1) (1 2 1) (1 4 1) (1 4 1) (1 8 1) (1 1 1) (1 1 2 1) (1 1 4 1) (1 1 4 1) (1 8 1) (1 1) (1 1) (15))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k25x20 b/pkgs/games/paint-by-numbers/solution-sets/k25x20 deleted file mode 100644 index ef8da50210..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k25x20 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x20") (define problems (list (make-problem "19980410-GOS (1)" (quote (() (9) (3 1 4 3) (4 2 1 3 4) (2 1 11 4) (4 2 3 2 1 1) (1 1 2 1 3 1 2 1 1) (2 1 2 3 2 5) (5 5 5 1 1) (3 1 4 3 2 1 1 1) (5 4 3 4 5) (1 4 1 4 2) (1 1 2 1 1 1 2 2 1) (2 1 2 3 3 2 4) (3 3 1 1 1 3 3) (3 1 1 1 3) (2 3 2) (2 2) (7) ())) (quote ((7) (6 2) (2 3 1) (3 1 5) (1 7) (3 4) (2 11) (1 7 3) (1 2 3 1 3) (4 1 3 1 2) (1 1 1 3 1) (1 4 2 1 1 1) (7 4 3 1) (2 4 2 1 1 1) (4 1 3 1) (4 1 3 1 2) (1 2 3 1 3) (1 5 1 3) (2 11) (3 4) (9) (2 1 5) (1 1 1 3) (3 2 2) (7))) (quote #f)) (make-problem "19981116-JAM (2)" (quote ((10) (17) (4 9 3) (4 2 7 2 3) (3 4 5 3 4) (3 4 5 3 4) (4 4 5 3 4) (4 2 5 2 5) (5 6 6) (6 4 2 7) (12 11) (11 10) (10 9) (5 6 5 5) (5 13 4) (4 15 3) (1 1 13 1 1) (5 11 5) (5 5) (8 7))) (quote ((10) (15) (14 2) (14 3) (3 7 4) (2 3 4 1 3) (1 4 7 2) (1 5 8 1) (3 4 9 1) (4 10 1) (12 5 1) (11 5) (9 4) (9 4 1) (11 5 1) (4 3 5 1) (3 3 8 1) (2 5 8 1) (1 5 8 2) (2 5 1 3) (14 3) (14 2) (13 2) (14) (7))) (quote #f)) (make-problem "19981119-MSS (3)" (quote ((3 1 3 1 1 1 1 1) (1 1 1 1 1 2 1 1 1 1) (1 1 1 3 1 2 1 1) (1 1 1 1 1 1 1 1 2) () (3) (2 3) (2 2 3) (1 2 2 3) (1 2 2 3) (4 3 1 2) (1) (8 1) (16) (25) (24) (21) (16) (11) (4))) (quote ((1 1 4) (4 1 4) (1 1 4) (3 5) (4 5) (4 5) (1 4 5) (4 1 6) (1 4 5) (4 5) (3 1 5) (1 1 5 5) (3 5 6) (5 6) (4 1 6) (1 9) (1 5) (4 5) (6) (4 6) (6) (2 6) (1 1 5) (1 1 3) (1))) (quote #f)) (make-problem "19990126bLLO (4)" (quote ((2 2 1) (3 7) (6 2 2 5) (6 4 4 2) (4 4 1) (3 2 2 1) (2 3 2) (1 2 3) (1 3 2) (3 2 3) (5 1 3) (7 2) (7 2) (7 2) (5 2) (25) (3) (20 3) (3) (18 2))) (quote ((1 1 1) (1 1 1 1) (2 1 1 1) (3 1 1 1) (3 3 1 1 1) (2 6 1 1) (2 7 1 1) (1 7 1 1) (1 7 1 1) (6 1 1) (3 3 1 1 1) (2 1 1 1) (2 1 1 1) (3 1 1 1) (3 1 1 1) (3 3 1 1 1) (1 1 4 1 1 1) (3 5 1 1 1) (7 1 1) (1 2 1 1) (8 1) (4 6 5) (2 13) (1 2 10) (4 1))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k25x25 b/pkgs/games/paint-by-numbers/solution-sets/k25x25 deleted file mode 100644 index 67bf4442e7..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k25x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x25") (define problems (list (make-problem "19980522-SDN (1)" (quote ((1 1) (1 1 1) (1 1 3) (3 3) (1 1 3) (1 1 5) (5) (7) (7) (9) (11) (15) (17) (19) (19) (19) (17) (15) (11) (7 1) (1 1 1) (3 1 1) (5 3) (9 1 1) (9 1 1))) (quote (() (5) (1 1) (5 3) (5) (7) (7) (9) (10 2) (13 2) (15 3) (18 4) (25) (18 4) (15 3) (13 2) (10 2) (9) (7) (7) (5) (3) (5) (1 1) (5))) (quote #f)) (make-problem "19980909-YEN (2)" (quote ((10 10) (8 5 8) (5 9 5) (4 7 4 4) (3 7 4 3) (2 7 3 2) (2 8 4 2) (2 9 5 2) (1 16 1) (1 15 1) (14) (12) (11) (9) (7) (1 5 1) (1 4 1) (2 3 1 2) (2 3 3 2) (2 3 5 2) (3 2 3 3) (4 2 1 4) (5 5) (8 8) (10 10))) (quote ((10 10) (8 5 8) (5 9 5) (4 15 4) (3 17 3) (2 19 2) (2 13 1 2) (2 12 2) (1 12 1) (1 12 1) (4 7 1) (3 6 3) (2 4 5) (3 4 3) (4 5 1) (1 8 1) (1 8 1) (2 5 2) (2 2) (2 2) (3 3) (4 4) (5 5) (8 8) (10 10))) (quote #f)) (make-problem "19990924-VAL (3)" (quote (() () (1) (1) (1) (10) (12) (6 3 3) (3 2 1 1 1 2) (2 1 1 1 1 2 1) (1 3 3 4) (6 7) (7 2 4) (2 7 2 1) (2 10 1) (6 8) (5 7) (2 7 2) (1 7 1) (11) (4 4) (4 4) (2 6) (1 5) (5))) (quote (() () () () () (3 4) (3 7) (3 3 5) (3 8 4) (4 14) (5 11 1) (3 5 8) (4 3 7 3) (1 3 15) (5 14) (3 2 10) (2 9 4) (3 11) (3 3 3) (3 5) () () () () ())) (quote #f)) (make-problem "19991020aSHE (4)" (quote ((20 2) (3 14 2) (2 11 2) (1 9 3) (2 9 3) (3 9 4) (12 4) (8 5) (7 6) (6 7) (5 8) (5 9) (7 9) (7 6) (7 4) (3 2 3) (2 4 3) (3 3 3) (1 6) (2 6) (1 6) (2 1 6) (2 1 8) (1 11) (13))) (quote ((25) (3 14 1 2 1) (2 11 1 2) (1 9 3) (2 10 2) (3 6 3 3) (9 4 4) (8 2 3) (7 2 5) (7 9) (7 9) (7 7) (6 7) (5 5) (4 4) (3 3) (2 6) (2 6) (1 6) (1 7) (7) (9) (10) (13) (13))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k25x30 b/pkgs/games/paint-by-numbers/solution-sets/k25x30 deleted file mode 100644 index 93186d7770..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k25x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x30") (define problems (list (make-problem "19980714-GAS (1)" (quote (() (3) (4) (4) (5) (4) (3) (4 2 4) (8 8) (20) (21) (20) (20) (20) (19) (19) (19) (19) (20) (21) (21) (22) (22) (20) (18) (16) (14) (3 3) () ())) (quote (() (8) (13) (15) (17) (18) (20) (21) (21) (21) (19) (19) (4 18) (5 18) (5 19) (5 19) (4 21) (2 21) (21) (20) (6 8) (4 6) (2 4) (2) ())) (quote #f)) (make-problem "19980716cGAS (2)" (quote (() (7) (3 3) (2 3 2) (2 3 3 2) (1 2 2 1) (1 2 2 1) (1 1 1 1) (1 1 1 1) (1 1 7 1 1) (1 2 2 1) (3 3) (2 2) (2 5 2) (1 4 4 1) (2 5 5 2) (1 2 7 2 1) (1 3 5 3 1) (1 6 6 1) (1 5 5 1) (1 1 2 2 1 1) (1 5 5 1) (1 6 6 1) (2 3 5 3 2) (1 2 7 2 1) (2 5 5 2) (2 4 4 2) (2 5 2) (3 3) (9))) (quote (() () (9) (3 3) (2 2) (9 5 2) (2 1 4 4 2) (2 6 5 5 1) (1 2 1 2 7 2 2) (2 2 1 3 5 3 1) (1 1 1 6 6 1) (1 2 1 5 5 1) (1 1 1 1 2 2 1 1) (1 2 1 5 5 1) (1 1 1 6 6 1) (2 2 1 3 5 3 1) (1 2 1 2 7 2 2) (2 6 5 5 1) (2 1 4 4 2) (9 5 2) (2 2) (3 3) (9) () ())) (quote #f)) (make-problem "19980802-JON (3)" (quote (() (1) (3) (4) (4) (4) (3) (2) (7 6) (18) (20) (22) (21) (20) (19) (19) (19) (19) (19) (20) (21) (21) (21) (19) (19) (17) (15) (13) (4 4) ())) (quote (() (10) (13) (16) (18) (19) (20) (21) (21) (21) (21) (19) (19) (3 19) (25) (4 21) (4 21) (4 21) (2 20) (19) (5 7) (3 5) (1 2) () ())) (quote #f)) (make-problem "19990723-KHO (4)" (quote ((8 8) (6 6) (4 5 4) (3 7 3) (2 9 2) (1 6 1 1) (1 5 3 1) (4 4) (4 4) (2 4) (3) (3) (3 3) (5 5) (13) (15) (3 9 1) (3 9 3) (3 2 1 4) (3 1 2 3 3) (3 5 5 1) (3 11 1) (3 9 3) (1 3 7 3 1) (1 3 3 1) (2 11 2) (3 8 3) (4 4) (6 6) (8 8))) (quote ((7 7) (5 5) (4 4) (3 5 3) (2 7 2) (2 9 2) (1 3 3 1) (1 4 3 3 1 3 1) (6 6 3 3) (7 6 4 2) (7 7 5 2) (5 9 5 2) (4 5 5 4 2) (3 5 6 1 3 2) (3 4 6 5 2) (2 3 6 5 2) (2 4 1 3 2) (1 3 5 3 1) (1 2 4 3 1) (2 1 3 2 2) (2 1 3 2) (3 3) (4 4) (5 5) (7 7))) (quote #f)) (make-problem "19990920-LLO (5)" (quote ((6) (4 4) (3 3) (2 2) (2 2 2) (2 2 2) (1 2 1) (2 2 2) (1 2 1) (1 4 1) (22) (3 3) (22) (22) (1 1) (1 5 1) (2 2) (20) (12) (8 5) (4 7) (1 2 4 4) (1 2 3 3) (1 2 3 5) (1 2 3 3) (1 2 4 4) (1 2 7) (1 2 5) (1 2) (1 2))) (quote ((4 5) (3 4 2) (2 4 1) (2 4 1) (2 1 2 1) (1 1 2 2) (2 1 1 2 2) (1 2 1 2 3) (2 2 1 2 3) (2 2 2 2 13) (1 4 2 4) (1 3 2 13) (2 2 2 13) (2 1 2 3) (1 1 2 1 3) (2 1 2 1 2) (1 1 2 1 2 5) (2 1 2 1 1 7) (2 4 1 1 9) (2 4 1 3 3) (3 4 2 2 1 2) (4 5 3 1 3) (9) (7) (5))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k25x35 b/pkgs/games/paint-by-numbers/solution-sets/k25x35 deleted file mode 100644 index 6c7411e9fd..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k25x35 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 25x35") (define problems (list (make-problem "19981015bGAS (1)" (quote (() (21) (1 1) (1 15 1) (1 1 1 1) (1 1 1 1) (1 15 1) (1 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 3 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 3 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 3 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 3 1) (1 1) (1 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1) (1 3 3 3 1 1 1) (1 1 1 1) (1 7 3 1 1 1) (1 1 1 1 1 1 1 1) (1 7 3 3 1) (1 1) (21) ())) (quote (() () (33) (1 1) (1 1) (1 4 3 3 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 3 3 3 3 3 1 1 1) (1 1 1 1 1 1) (1 1 1 3 3 3 3 3 1 1 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 3 3 3 3 3 3 1) (1 1 1 1) (1 1 1 3 3 3 3 3 3 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 3 3 3 3 3 3 1) (1 1 1 1) (1 1 1 3 3 3 3 7 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 4 3 3 3 3 7 1) (1 1) (1 1) (33) () ())) (quote #f)) (make-problem "19990527dDRA (2)" (quote ((25) (25) (20 2) (8 7 2) (7 1 1 1 5 1) (6 1 1 1 4 1) (5 1 1 1 1 1 2) (5 1 1 1 1 1 2) (5 1 1 1 1 1 2) (5 1 1 1 1 1 2 1 1) (5 1 1 1 1 1 2 2 2) (5 1 1 1 1 1 4 2) (5 1 1 1 1 1 5 3) (5 1 1 1 1 1 5 3) (5 1 1 1 1 1 5 3) (5 1 1 1 5 3) (4 4 1 1 5 3) (3 8 5 3) (2 12 5 3) (1 12 5 3) (1 8 1 5 3) (1 3 4 2 5 3) (1 3 2 3 5 3) (1 3 5 3 5 3) (1 3 5 3 5 3) (1 3 5 3 5 3) (1 9 3 4 2) (1 9 3 3 1) (1 9 13) (1 9 13) (11 13) (11 13) (11 13) (25) (25))) (quote ((35) (19 5) (18 1 14) (17 2 14) (16 3 14) (6 5 9) (5 9 5 13) (4 5 13) (3 11 6 12) (3 5 12) (3 12 5 12) (3 5 2) (3 13 3 13) (4 2 14) (5 11 1 15) (6 7) (35) (35) (6 24) (4 18 7) (2 1 14 7) (2 7) (2 1 14 7) (4 18 7) (6 24))) (quote #f)) (make-problem "19990607bDRA (3)" (quote (() (4 1 1 4 1 1) (1 1 1 1 1 2 1) (4 1 1 1 4 1 1 1) (1 2 2 1 1 1 2) (4 1 1 1 1 1 1) () () () () () (3) (2 2) (7) (3) (3) (3) (3) (3) (3) (3) (2 3) (2 2 4 3) (2 10 3) (12 1 3) (3 7 2 3) (3 4 8) (4 8) (15) (13) (10) () () () ())) (quote (() () (3 1) (1 1 1 4) (1 1 1 5) (1 3 5) (4 4) (5 5 4) (1 3 4) (1 4 3) (1 5 3) (5 5 3) (3 5 3) (5 5 4 4) (1 1 1 4 2 5) (1 1 3 3 1 6) (5 2 3 7) (1 3 4) (5 1 3 4) (1 10) (1 8) (1 6) (5) () ())) (quote #f)) (make-problem "19991010cTPV (4)" (quote ((25) (3 1 1 9) (2 8) (2 8) (2 9) (3 3 10) (3 2 7) (3 2 6) (3 3 6) (3 2 7) (4 3 8) (5 2 5) (4 3 2 4) (4 2 3) (3 1 3) (3 4) (3 5) (2 7) (2 1 2 7) (2 2 4 8) (2 2 4 8) (2 6 7) (2 3 5) (2 3) (2 2 2) (2 1 3 2) (3 1 4 2) (3 3 1 4 2) (4 4 1 3 3) (5 5 2 4) (6 5 9) (7 5 9) (8 3 10) (10 11) (25))) (quote ((35) (35) (2 12 9) (1 4 7) (1 1 6) (1 5) (2 2 4) (1 2 3) (1 1 2 2) (1 2 1 2) (1 2 4 3 1) (1 5 5 1) (2 1 5 1 6 1) (1 2 3 7 1) (1 1 1 5 2) (1 1 1 1 1 3) (2 2 2 2 8) (6 2 2 2 6) (7 2 1 5 3 5) (11 2 5 4 5) (12 2 7 5 5) (13 8 4 6) (24 7) (35) (35))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k30x20 b/pkgs/games/paint-by-numbers/solution-sets/k30x20 deleted file mode 100644 index af831f4b39..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k30x20 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x20") (define problems (list (make-problem "19981106-KVL (1)" (quote (() (1 1) (2 2) (8) (8) (2 2 2) (10 8) (15 6) (19 4) (21 2 1) (22 3) (28) (17 10) (3 10 3 4 2) (3 6 2 2 3 3) (3 5 3 4) (12 3 6) (9 2 4) () ())) (quote (() (3) (6) (8) (5 3) (7 2) (8 2) (8 2) (9 2) (9 2) (9 2) (9 2) (8 3) (8 3) (8 3) (7 3) (7 2) (7 1) (5 5) (11) (6 1) (4 5 1 2) (7 6 2) (3 3 5 2) (7 3 3) (7 3 2) (3 3 3 3) (7 7) (4 5) ())) (quote #f)) (make-problem "19990311-FRA (2)" (quote (() (2) (2) (2) (3) (4) (27) (27) (27) (4) (4 1) (4 1) (6 1 3) (3 1 1) (3 1 1 3 1 1 1) (1 3 1 1 2 1 3 1) (1 3 1 2 1 1 1) (1 1 1 3) (1 1 1) (1 3))) (quote (() (1) (8 1) (9 6) (10 1) (11) (2 3 1) (1 3) (3) (3) (3 6) (3 1 1) (3 3) (3) (3 1 3) (3 1 1 1) (3 5) (3) (3 4) (3 1) (3 1) (3 4) (3) (3 3 1) (3 1 1 1) (3 5) (3) (3 4 1) (3) ())) (quote #f)) (make-problem "19990601cDRA (3)" (quote (() (3 1 3 1) (1 1 1 1) (2 1 2 3 1 2 1 1 2 3) (1 1 1 2 1 1 1 1 1 2) (1 1 1 3 1 1 2 2 1 1) () () (26) (2 2 7) (2 6 2 1) (9 1 1 1 2 1) (1 1 1 1 1 2 1) (1 2 2 1) (1 2 2 1) (1 1 1 1 1 1) (2 2 11 2 7) (2 2) () ())) (quote ((5) (1 1 1 6) (1 1 1 1) (1 1 1) (1 3 4 1 2) (4 1 2) (3 1 1 1) (1 1 1 1) (1 1 1) (3 1 2 1) (3 1 1 1) (1 1 1 4 1) (1 1 1) (3 1) (1 3 1) (5 1 1 1) (1 1 4 1) (3 1 1 1) (1 1 3 1) (3 1 2) (2 2 1 2) (1 2 1) (3 2 2 1) (2 2 1) (3 2 1) (1 1 3 1) (1 2 1) (5 4) (2 1) (2 1))) (quote #f)) (make-problem "19991106-BDH (4)" (quote ((7) (9) (6 3) (6 3) (13) (16) (1 13) (2 10) (3 7) (5 5 7) (23) (7 10 5) (7 8 6) (8 7) (25) (25) (25) (24) (22) (20))) (quote ((8) (12) (12) (12) (11) (10) (10) (1 7) (2 6) (4 6) (4 6) (4 6) (4 6) (4 6) (4 3 6) (7 4 6) (13 6) (12 6) (11 7) (20) (2 16) (2 16) (9 10) (7 8) (6 6) (3) (3) (2) (1) (1))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k30x25 b/pkgs/games/paint-by-numbers/solution-sets/k30x25 deleted file mode 100644 index d2abb147e9..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k30x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x25") (define problems (list (make-problem "19980715-GAS (1)" (quote ((30) (30) (30) (13 15) (12 14) (12 14) (12 14) (12 14) (12 14) (13 15) (13 12) (7 6) (4 3) (1 1) (1 2) (3 1 3 4) (3 3 4 3) (2 4 4 3) (2 3 3 2) (1 2 2 1 2) (1 1 1 1 3 1) (3 4 1) (4 5) () ())) (quote ((11 7) (11 4) (11 2) (12) (13) (14) (13 2) (13 3) (12 2) (12 1 1) (11 3) (11 4) (4 2 6) (3) (3) (4 2) (11 6) (11 5) (11 4) (11 2 1) (12 2) (12 3) (13 4) (13 3) (13) (12) (11 1) (10 3) (10 6) (10 9))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k30x30 b/pkgs/games/paint-by-numbers/solution-sets/k30x30 deleted file mode 100644 index 7f39293c92..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k30x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x30") (define problems (list (make-problem "19981106-GAS (1)" (quote (() () (5 6) (1 2 2 1) (2 12 2) (1 2 2 1) (3 3) (1 3 3 1) (1 1 1 1 1 1) (2 1 3 3 1 2) (1 1 3 1 3 1 1) (1 4 1 4 1) (1 2 1 2 1) (1 1 1) (1 1 1) (1 3 1) (2 7 2) (1 3 1) (2 1 1 2) (2 2 11 2 2) (2 2 1 1 1 2 2) (1 2 1 2 1) (2 1 1 1 1) (1 7 1) (1 1) (1 1) (1 1 6 1) (1 1 1 1) (1 1 1 2) (25))) (quote (() () (8) (3 1) (3 8 2 1) (1 6 4 1) (1 1 1 4) (1 1 1 1) (2 1 2 1 1) (3 1 1 1 1) (1 1 4 3 1) (1 1 4 1 1 1) (1 5 1 5 1) (1 1 1 1 1) (1 3 1 1 1) (1 8 5 1) (1 3 1 1 1) (1 1 1 1 3) (1 5 1 5 1 1) (1 1 4 1 1 1 1) (2 1 4 3 1 1) (2 1 1 1 1 1 1) (1 1 2 1 1 1) (1 1 1 1 1) (1 1 1 1) (1 6 4 1) (3 8 2 2) (9) () ())) (quote #f)) (make-problem "19981230-SQU (2)" (quote (() () (4 4) (6 6) (8 8) (9 9) (9 9) (8 8) (7 6 7) (5 8 5) (10) (13) (14) (14) (18) (2 14 2) (2 14 2) (2 16 2) (2 2 12 2 2) (1 2 10 2 1) (4 3 2 3 4) (2 2 6 2 2) (4 2 2 2 4) (1 2 1 2 1 2 1) (2 1 2 2 2 1 2) (2 2 2 2 2) (2 2 2 2) (2 2 2 2) (2 2 2 2) (30))) (quote ((1) (3 1) (5 3 3 1) (7 2 3 2 1) (7 2 3 2 1) (8 2 2 2 2 1) (8 2 2 2 3) (7 1 2 2) (6 7 3 1) (5 8 2 2 1) (12 2 1) (12 2 1) (14 3) (12 1 2) (18 1) (18 1) (12 1 2) (14 3) (12 2 1) (12 2 1) (5 8 2 2 1) (6 6 3 1) (7 1 2 2) (8 2 2 2 3) (8 2 2 2 2 1) (7 2 3 2 1) (7 2 3 2 1) (5 3 3 1) (3 1) (1))) (quote #f)) (make-problem "19990104-FRA (3)" (quote ((7) (7) (7) (7) (7) (7) (8) (9) (18) (19) (30) (11 1 3 8) (12 4 1 9) (11 5 10) (10 5 10) (10 4 1 9) (9 3 3 8) (25) (3 20) (1 17) (15) (12) (10) (7) (7) (5) (4) (5) (3) ())) (quote ((2) (3) (4) (6) (7) (8) (9) (10) (9) (8) (19) (11 8) (11 9) (11 5) (11 11) (11 11) (25) (5 4 9) (5 2 12) (5 13) (4 2 13) (3 4 12) (17 2) (15) (14) (13) (13) (12) (10) (9))) (quote #f)) (make-problem "19990708-VEG (4)" (quote ((1 1 3 1 1 3 1 1) (1 1 1 1 2 2 1 5) (3 1 1 1 1 1 2 5) (1 1 1 1 1 1 1 3) (1 1 3 1 1 3 1) () () () () (1) (3) (5 1) (7 1) (10) (11) (13) (15) (2 2) (2 2 2 2) (2 2 2 2) (2 2) (2 2) (12 3 9) (1 1 1 3 3 3 1 1) (2 2 2 2 3 2 2 2) (1 1 1 3 3 3 1 1) (30) (13) (1 1) (1 1))) (quote ((5 2 2) (1 1 1 1) (5 1 1 1) (2 2) (5 1 1 1) (1 1 1 1 1) (5 2 2) (1 1 1) (5 1 1 1) (1 1 2 2) (1 13) (1 14) (5 4 2) (5 2 2) (5 6 2 2) (1 1 1 7 6) (1 1 8 6) (7 2 6) (6 2 3) (5 2 1) (2 4 3) (4 17 1) (4 13) (4 1 2 2) (2 1 1 1) (1 1 1) (2 2) (1 1 1) (1 1 1) (2 2))) (quote #f)) (make-problem "19990729-WHO (5)" (quote ((3) (1 2) (1 5) (1 1 1 4) (1 1 1 3) (1 1 1 2) (1 5) (1 3) (1 2) (1 1) (1 1) (1 1) (3 2) (12 5) (13 6) (14 8) (15 9) (16 9) (16 10) (16 10) (16 9) (16 9) (8 7 9) (8 16) (27) (26) (25) (22) (15) (5))) (quote (() (3) (6) (12) (13) (14) (15) (16) (16) (17) (9 6) (9 6) (17) (17) (16) (16) (17) (17) (28) (1 5) (28) (2 3 16) (6 15) (1 1 15) (5 14) (3 13) (2 11) (1 10) (7) (2))) (quote #f)) (make-problem "19990820-DAH (6)" (quote (() (7 1 8) (1 4 2 1 2 1) (1 2 3 1 1 1 1) (1 2 4 1 1 1 1) (1 3 5 1 2 1) (1 2 1 2 1 1 1 1) (3 2 1 2 2) (3 2 8) () () (8 4) (8 3 4 2 2) (2 2 2 3 2) (1 1 1 1 3) (1 2 1 1 1 2) (1 1 1 1) (8 1 1 2) (6 2) () () (6 3) (1 1 2 1 1 1) (1 1 1 4 2 1 1) (1 1 1 1 2 2 1) (1 1 1 5 3 2) (6 1 1 1 2 2) (4 2 1 2) (1 2 1 6) ())) (quote (() (7 6) (1 1 2 1 6 1) (1 1 1 1 2 1 2) (2 1 1 1 1 1 3) (2 1 1 1 1 1 1 3) (8 1 1 2 1 2) (7 2 1 6 1) (6) () () (3 6) (3 2 1 2) (6 2 1 1 1 1 1) (4 1 1 1 1 1) (4 2 1 1 1 1) (5 3 1 1 1 1 1) (1 1 3 2 3 1) (3 2) () () (8 6) (1 2 1 5) (1 2 1 1 2 1) (2 1 1 1 2 2 2) (2 1 1 1 2 2 1 1 1) (1 2 1 1 4 1 3) (1 2 2 1 1) (8 3) ())) (quote #f)) (make-problem "19990821-ICO (7)" (quote (() () (1 1 1 1 1) (2 1 1 1 1) (2 2 1 1 1 1) (1 2 1 4 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 1 1 1 1) (1 2 1 6 3 7) (6 4 3 5) (6 2 2 3) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (2 2 2 1) (1 1 3 3 1 1 3 1 1 3) (1 1 1 1 2 1 1 1 1 1) (1 1 1 3 1 2 3 1 1 3) (1 1 1 1 1 1 1 1 1 1) (3 1 3 1 1 3 1 2 3) ())) (quote ((9) (2 5) (19 1) (24) (2) (9 1) (5) (1) (6) (8 5) (21 1 1) (21 1 1) (8) (6 5) (1) (1) (5) (22) (24 1) (8 1 1 1) (1 3) () (10 5) (2) (12 5) (13 1) (12) (2 3 1) (10 1 1 1) (1 3))) (quote #f)) (make-problem "19990908-ALE (8)" (quote ((12 16) (11 15) (10 14) (4 4 14) (3 4 3 10) (2 4 3 9) (2 3 4 8) (3 4 4 8) (4 5 5 9) (6 5 5 10) (7 4 6 10) (8 3 5 11) (8 3 4 12) (8 4 3 12) (8 4 2 5 6) (8 4 2 4 5) (8 4 2 3 5) (9 3 2 3 4) (9 4 1 2 1 1 3) (10 4 1 3 3 2) (10 4 3 4) (11 2 3) (16 1 1 2) (21 2 2) (21 5) (20 4) (19 3) (21 1 6) (21 1 6) (20 1 5))) (quote ((30) (30) (5 23) (4 22) (3 21) (3 21) (4 1 20) (5 3 19) (11 13) (17 11) (2 15 9) (1 1 12 8) (3 8 8) (7 3 8) (1 13 2 8) (2 15 8) (6 6 7) (5 3 8 7) (4 1 7 2 7) (4 7 2 3 3) (5 7 2 3 2) (6 7 1) (14 3) (14) (15 1 2) (17 2 3 3) (18 2 3 3) (19 2 6) (30) (30))) (quote #f)) (make-problem "19990913-TUC (9)" (quote ((12 14) (13 15) (13 15) (13 15) (1 6 6 3) (1 3 5 5 3 3) (1 1 4 4 3 3) (1 1 1 3 3 1 3) (1 3 3 3 1 1 3) (1 3 3 3 3 3) (1 3 3 6 3 3 3) (2 1 4 6 4 1 4) (3 5 6 5 5) (3 5 6 5 5) (3 5 5 5) (3 5 5 5) (3 5 5 5) (2 4 4 4) (1 1 1 3 3 1 1 3) (1 3 3 3 3 3) (2 4 4 4) (30) () (30) (1 1 2 1 1 1 2) (1 2 1 2 1 4 4 2 1 3) (1 4 1 2 2 2) (1 2 1 2 1 4 4 2 4) (1 1 2 1 1 1 2 1) (30))) (quote ((22 7) (4 7 2 1 1) (4 1 4 5 2 1 1 3 1) (4 2 4 1 1 1 3 1) (4 1 4 5 2 1 1 1 1) (4 7 2 7) (22 1 1) (22 3 3) (22 3 3) (7 1 1 1) (6 1 7) (5 4 1 1 1) (3 4 1 1 1 1 1) (4 1 1 1 1 1) (4 1 1 3 1) (3 4 1 7) (5 4 1 1 1) (6 1 1 1 1 1) (7 1 1 1 1 1) (22 1 3 1) (22 7) (22 1 1) (4 7 2 1 1 3) (4 2 3 5 2 1 1 1 3) (4 3 3 1 1 2 1 1) (4 2 3 5 2 1 7) (4 7 2 1 1 1) (22 1 1 1 1) (22 1 1 1 1) (22 1 1 1))) (quote #f)) (make-problem "19990916bCAR (10)" (quote ((30) (30) (30) (7 7 6) (6 5 5) (5 3 3 3 4) (5 5 1 5 4) (5 6 6 4) (5 15 4) (5 5 5 4) (6 4 4 5) (6 3 3 5) (7 4 4 6) (8 3 3 7) (9 5 8) (9 3 8) (10 1 9) (11 10) (12 11) (13 12) (14 13) (15 8 3) (23 3 2) (7 12 3 1) (7 2) (7 2) (7 1 1 12 3 1) (7 1 13 3 2) (24 3) (30))) (quote ((30) (30) (30) (30) (30) (5 20) (4 18) (3 10 2) (3 3 9 4) (3 5 7 2) (3 6 6 4) (3 8 5 3) (4 8 5 4) (5 8 4 4) (6 1 4 3 4) (7 1 3 2 4) (6 1 4 3 4) (5 8 4 4) (4 8 5 4) (3 8 6 4) (3 6 7 4) (3 5 8 4) (3 3 10 4) (3 9 1 1 2) (4 9 1 1 1) (5 11 2 2 1) (21 2 2 1) (22 4 2) (23 2 3) (24 4))) (quote #f)) (make-problem "19990920-BBA (11)" (quote ((6) (3 2 1 2) (1 1 1 4 4) (3 1 1 1 2 3) (8 2 2 1 4) (11 8 2) (1 1 1 6 9 1) (1 24) (1 2 12 4 3) (4 1 1 1 1 1 3 7 1) (1 5 3 5 4 1 2) (3 5 2 4 7 1) (3 1 5 1 1 4 2 1) (1 4 3 4 5 7) (1 1 3 4 1 3 2 3 1) (4 1 6 4 9) (7 1 2 2 4 3) (3 4 2 2 2 1 3 2) (3 1 1 1 2 2 1 8) (2 3 3 4 1 3 1 1) (3 2 2 1 2 2 1 4) (2 1 3 3 2 4 2) (1 1 3 3 2 1 1 1) (1 1 1 1 1 3 1) (1 3 1 1) (2 6) (5 6) (3 5 2 1 1) (1 3 1 1 2 4) (2 3 3 4 1))) (quote ((4) (4 2 1) (2 6 6) (1 3 1 4 2) (2 3 3 5 1) (1 2 2 5 1 1) (4 4 1 1 3 1 1) (1 2 1 4 3 4 2) (1 7 5 3 2 1) (5 2 8 3 1 1) (1 8 1 2 4 1 1) (1 1 5 2 4 1 2) (2 6 1 1 6 4) (3 6 1 3 8) (1 2 4 2 3 4 2) (3 1 6 14) (1 1 2 2 4 4 2 1 1) (1 1 7 3 7 2) (2 7 3 7 3 1) (8 2 2 5) (2 3 1 1 2 2 2) (1 9 6 1 2 1) (1 8 2 5 1 1) (11 1 3 1 1 3) (2 10 2 4 1) (4 1 1 6 1 1 1) (2 1 8 5 1) (4 2 4 2 2 1) (2 2 3 3) (3 2))) (quote #f)) (make-problem "19991002bTPV (12)" (quote ((30) () (2 1) (3 2) (3 3) (1 2 4) (1 1 5) (30) (1 2 4 1) (1 1 4 1) (1 3 1) (1 2 1) (1 1 1) (1 1 1) (30) (1 1 1) (5 1 5) (6 1 1 6) (6 1 6) (4 1 1 4) (1 1 1) (30) (4 1) (4 5) (2 1 6) (1 2 6) (4 4) (4) (30) (1 1))) (quote ((1 1 1 1 1) (1 1 1 2 1 1) (1 1 1 4 1 1) (1 1 1 4 1 1) (1 1 1 4 1 1) (1 1 1 4 1 1) (1 17 1 1) (1 3 1 1 1 1) (1 3 1 1 1 1 1) (1 4 1 1 1) (1 3 1 1 2 2) (1 1 1 10) (1 1 1 3 3) (1 1 1 11) (1 1 1 2 2 1) (1 1 1 1 1) (1 1 1 1 2 1) (1 1 1 1 4 1) (1 1 1 1 4 1) (1 1 1 1 4 1) (1 1 1 1 4 1) (1 1 17 1) (1 5 1 1 1) (1 4 1 2 1 1) (1 4 1 4 1 1) (1 4 1 4 1 1) (1 4 1 4 1 1) (1 5 1 4 1 1) (1 17 1 1) (1 1 1 1 1))) (quote #f)) (make-problem "19991012-LSA (13)" (quote ((16 13) (4 4 5 4 3 1) (2 1 2 5 2 2 1) (4 2 2 3 1 3 3) (5 1 3 3 2 4 3) (1 2 1 1 2 2 2 3) (2 2 1 2 2 1 2 3) (3 1 2 2 2 1 2 4) (1 2 2 2 1 2 1 2 5) (2 1 1 2 1 2 2 1 1 1) (3 2 2 2 2 1 1 1) (4 1 1 1 1 1 1 3) (5 2 3 1 2 1 2 4) (1 2 2 2 1 1 1 5) (3 1 1 1 1 2 2 2 1) (7 3 1 1 2 1 4) (7 2 1 2 1 1 1) (3 2 1 1 1 2 3 1 1) (1 1 1) (1 1 22 1 1) (3 1 1 3) (2 2 1 1 1 3 1 1 3 1 3) (2 2 1 1 1 1 1 1 1 1 1 1 2) (2 2 1 3 1 1 3 1 1 5) (2 2 5) (6 6) (7 7) (8 8) (9 9) (10 10))) (quote ((30) (5 2 4 4 10) (2 2 2 3 4 2 5) (2 3 1 2 2 9) (1 3 1 1 2 11) (3 3 1 1 2 1 5) (2 1 1 2 1 3 1 1 1 4) (2 3 1 1 1 1 1 1 3) (2 2 2 1 1 1 1 2) (1 2 3 4 1 2 1) (1 3 3 2 1 1 1) (1 3 3 1 1 1) (2 1 2 2 1 1 1) (3 3 4 1 2) (4 1 1 1) (5 12 1 1) (10 1 1 1) (1 1 2 1 4 1 2) (1 8 1 1 1) (3 7 1 1) (6 1 1 1 1 1 1) (2 1 7 1 2 2) (2 1 4 1 1 1 3) (1 5 1 1 1 1 1 4) (1 5 3 1 1 1 5) (5 2 1 1 11) (2 2 2 2 7) (2 6 4 1 5 7) (1 6 3 1 10) (10 19))) (quote #f)) (make-problem "19991028-BDH (14)" (quote ((7 7) (9 9) (11 11) (12 12) (12 12) (12 12) (12 12) (12 12) (30) (28) (8 4 8) (5 1 2 1 5) (2 3 3 2) (3 3 3 3) (2 3 3 2) (2 3 3 2) (3 3 3 3) (3 1 1 3) (2 2) (2 2) (2 4 2) (2 6 2) (2 4 2) (1 1) (1 1 1 1) (2 14 2) (2 10 2) (3 4 3) (3 3) (10))) (quote ((7) (9) (11) (12 7) (12 13) (18 2) (14 2) (12 1) (11 2 2) (10 5 1 1) (8 7 2 2) (7 5 2 1) (2 1 2 1) (3 3 3 1) (4 3 3 1) (4 3 3 1) (3 3 3 1) (2 1 2 1) (7 5 2 1) (8 7 2 2) (10 5 1 1) (11 2 2) (12 1) (14 2) (18 2) (12 13) (12 7) (11) (9) (7))) (quote #f)) (make-problem "19991101-SHE (15)" (quote ((4) (2 2) (1 2) (2 1 3) (2 3) (2 1 3) (3 3) (3 4) (5 4) (1 7) (2 7) (2 8) (2 4) (1 2 2 2) (1 2 3 4) (3 3 4 7) (3 4 4 2) (8 7 1) (6 11 1) (5 8 3) (5 8) (17) (17) (16) (15) (14) (13) (11) (9) (5))) (quote (() (3) (3) (5) (5) (7) (9) (11) (1 4 8) (5 8) (3 8) (9) (9) (9) (3 11) (4 8 13) (8 16) (2 3 15) (1 1 3 13) (1 1 3 11) (2 1 4 8) (14 6) (14 1) (9 2 1) (5 2 1) (2 1 1) (1 1 1) (1 2 1) (5) ())) (quote #f)) (make-problem "19991105bBDH (16)" (quote ((1) (1 1) (1 1) (1 1 1) (1 1 2) (2 3) (1 1 1) (2 1) (4 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1) (1 1 4) (1 1 1 1) (1 1 1 1) (4 1 1 1 1) (6 1 1 5) (7 1 1 4) (4 1 1 6) (17) (16) (14))) (quote ((2) (2) (3) (3) (2) (3) (3) (4) (5) (3) (22) (1 3) (3 1 3) (1 1 1 3) (1 4 3) (3 1 3) (1 3) (1 3) (2 3) (27) (3) (4) (3) (2) (2) (6) (1 3) (1 1) (1 1) (5))) (quote #f)) (make-problem "19991113aBAR (17)" (quote ((11) (15) (18) (20) (22) (24) (25) (27) (24 2) (5 4 1) (2 2 1) (1 5 5 1 1) (6 2 2 5 2) (4 6 7) (2 18 2) (2 3 3 2) (8 3 3 6) (6 7 8) (4 3 2 2 4 4) (3 5 6 2) (2 3 4 3 2) (2 13 1) (2 4 4 1) (2 1) (2 1 2) (3 2 3) (4 1 1 3 1 3) (6 1 1 2 4) (11 2 2 11) (30))) (quote ((12) (3 13) (3 8 5) (3 7 4) (5 2 2 3) (6 3 3 5) (7 2 1 4 2 2) (7 1 3 3 2) (8 1 3 3 2) (8 1 3 3 4) (9 2 1 2 2 2) (9 3 2 2 1) (9 2 1 2 1) (9 2 2 3 2) (9 2 2 2 2) (9 2 2 2 1 1) (9 3 1 3 1 2) (9 2 1 2 2 4) (9 1 3 2 2 1) (9 1 3 4 2) (9 1 3 3 2) (9 2 1 4 2) (9 3 4 2) (8 2 4 3) (9 7 4) (6 8 2) (4 1 3 3) (3 1 3 5) (3 2 4 6) (6 12))) (quote #f)) (make-problem "19991113eBAR (18)" (quote ((6) (1 8) (11 1) (12) (1 6) (2 1 7 1) (1 2 7) (5 10) (6 9) (4 8) (7 8) (5 8) (2 10) (2 2 9) (1 3 13) (1 2 3 8) (6 4 3 5) (1 1 1 4 3) (6 9) (7 8) (8 8) (8 8) (8 5 2) (8 6 1) (18) (17) (16) (14) (12) (10))) (quote ((4) (2 1 1 1) (2 2 2 1 1) (2 4 2 1 1) (11 2 1) (4 7 7) (4 1 5 1 7) (4 3 1 9) (6 1 10) (6 3 17) (17 12) (16 11) (13 1 10) (12 7) (2 11 6) (11 6) (13 6) (2 7 6) (1 1 2 6) (2 7) (3 6) (4 6) (11) (10) (8) (5) (5) (5) (6) (6))) (quote #f)) (make-problem "19991115aBAR (19)" (quote ((3 11) (3 9) (4 8) (5 6) (6 5) (12 4) (6 3) (8 3) (1 7 2) (8 2) (3 2 2) (2 4 1) (7 1) (10 1) (11 1) (3 4 4 1) (9 4 4) (10 4 1) (9 3 1) (13 1) (13 1) (13 1) (13 2) (8 3 2) (7 4 2) (4 2 1 2 3) (6 3 3) (6 4 4) (5 1 2 5) (4 6))) (quote ((3) (4) (4) (4) (3) (2) (2) (1) (1 2 1 2) (1 1 3 2 5) (6 4 5 6) (11 13) (9 4 9) (27) (25) (6 13 3) (4 12 2) (1 1 3 7) (1 2 6) (1 1 3 6) (1 2 7) (2 2 6) (3 2 3 3) (3 3 2) (4 3 1) (5 1 2) (6 2 3) (8 1 5) (11 1 8) (30))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k30x35 b/pkgs/games/paint-by-numbers/solution-sets/k30x35 deleted file mode 100644 index d7f70c13a8..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k30x35 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x35") (define problems (list (make-problem "19990507aJOJ (1)" (quote ((6 2 1 3 1 2 1 1 4) (5 1 1 1 4 1 1 1 1 3) (5 1 1 1 1 1 1 1 1 1) (4 1 1 1 1 1 2 1 1 1 3) (2 1 1 3 2 2 3 3 1) (1 2 18 2) (1 23) (2 21 2) (1 25) (3 22 2) (3 11 8 3) (2 10 7 2) (2 5 6 1) (1 5 2 2 5) (3 1 1 1 1 2) (2 1 1 1 1 1 1 1 1 1) (2 1 1 1 2 1 1 1 1) (2 1 2 4 2 1 1) (2 1 6 1 2) (1 3 6 3) (2 2 6 2 1) (3 2 2 4 2 2 1) (3 2 3 3 2 1) (4 2 5 5 2 2) (4 2 12 2 3) (3 4 6 3 3) (1 7 5 2) (3 4 3 2 1) (29) (1 8 2) (12 10) () (30) () (30))) (quote ((7 6 3 8 3 1 1) (5 1 4 5 6 2 1 1 1) (4 1 1 2 2 2 5 2 1 1 1) (4 1 1 4 2 2 3 1 1 1) (3 1 1 6 3 4 2 1 1 1 1) (1 1 8 1 6 1 1 1 1) (1 1 8 4 1 1 1 1) (1 1 8 1 2 1 1 1 1) (2 1 7 2 3 1 1 1) (1 8 2 3 1 1 1) (2 9 2 3 2 1 1 1) (1 8 1 1 2 2 1 1 1) (2 1 7 1 1 1 2 2 1 1) (2 7 1 1 3 3 2 1 1) (2 8 2 5 2 2 1 1) (2 5 6 2 2 1 1) (1 7 6 2 2 1 1) (9 2 5 2 2 1 1) (1 6 1 1 3 3 2 1 1) (1 8 1 1 1 2 2 1 1) (2 8 1 1 2 2 1 1 1) (1 9 2 3 2 1 1 1) (1 8 2 3 1 1 1) (1 10 2 2 1 1 1 1) (1 1 10 1 3 1 1 1 1) (1 1 8 1 4 1 1 1 1) (1 1 1 1 3 3 5 3 1 1 1) (2 1 1 1 1 3 4 2 2 1 1 1) (2 1 1 1 3 2 2 4 3 1 1) (3 1 1 4 4 8 2 1 1))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k30x40 b/pkgs/games/paint-by-numbers/solution-sets/k30x40 deleted file mode 100644 index 793c41e838..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k30x40 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 30x40") (define problems (list (make-problem "19980514-KVL (1)" (quote ((14) (14) (16) (18) (20) (1 7 6) (1 3 4 4) (3 9 3) (5 8 2) (1 4 8 2) (1 1 13 1) (1 1 5 1 1) (1 1 2 1) (1 1 1 3 1) (3 1 1 6 1) (5 1 9 1) (1 4 8 2) (1 1 10 2) (1 1 8 3) (1 1 2 4 4) (1 4 6) (3 13) (5 11) (1 4 11) (1 1 15) (1 1 14) (1 1 1 11) (1 1 3 3) (3 4 2) (5 2 2) (1 4 2 2) (1 15) (1 14) (1 1 14) (1 14) (3 13) (5 11) (7 11) (18) (16))) (quote (() () () () () (34) (2 2 2 2 2 4) (3 2 2 2 2 5) (6 5 2 1 5 2 1 4) (6 2 2 2 2 4) (7 2 2 2 2 3) (7 2 4 3 5 5 3) (8 2 1 3 2 5 2) (6 1 2 2 2 2 5 2) (6 12 20) (5 7 5 19) (5 6 5 8 9) (5 5 6 6 1 9) (5 5 7 6 9) (6 4 6 7 9) (6 4 6 7 9) (7 3 4 8 9) (6 2 2 10 9) (7 23) (34) () () () () ())) (quote #f)) (make-problem "19990224aJOJ (2)" (quote ((13 1 1) (14 1) (1 14) (7 1 1 13) (8 3 12) (2 2 1 3 11) (2 2 4 11) (2 2 1 3 11) (2 2 4 11) (2 2 1 3 11) (8 3 12) (7 1 1 13) (1 14) (14 1) (13 1 1 3 2) (12 3 3 2) (11 3 1 4 2) (11 4 5 2) (11 3 1 2 2 2) (11 4 2 5) (11 3 1 2 4) (12 3 2 3) (13 1 1 2 3) (14 1) (1 14) (4 1 1 13) (6 3 12) (2 2 1 3 11) (2 2 4 11) (8 1 3 11) (8 4 11) (2 2 1 3 11) (2 2 3 12) (2 2 1 1 13) (1 14) (14 1) (13 1 1) (12 3) (11 3 1) (11 4))) (quote ((2 11 5) (2 9 11 6 5) (2 9 11 8 5) (2 2 2 11 3 2 5) (2 2 2 11 2 2 5) (2 2 2 11 2 2 5) (2 2 2 11 3 2 5) (2 9 11 8 5) (2 7 11 6 5) (2 11 5) (2 11 5) (2 5 3 3 5 3) (2 1 1 1 1 2 1 1 1 2 1 1 1 1 2 1) (1 2 1 1 2 1 1 1 1 1 2 1 1 2 1 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1) (2 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1) (3 3 5 3 3 2) (11 11) (11 11) (11 9 11) (11 9 11) (11 4 11) (11 4 11) (11 4 11) (11 4 11) (11 9 11) (11 9 11) (11 11))) (quote #f)) (make-problem "19990507bJOJ (3)" (quote ((2 1 1 2 1 1 1) (2 1 1 1 1 1 1 3) (3 1 1 1 1 2 1 1) (2 11 2) (3 12 2) (2 12 2) (13 2) (1 2 14 2) (2 1 16) (18) (3 9) (2 2) (2 2) (2 2) (2 2) (2 2) (2 8 2) (2 10 2) (2 2) (3 3 3 3) (3 2 1 1 2 3) (2 1 2 2 2 1 2) (2 1 1 2 2 2 1 1 2) (2 1 2 1 1 2 1 2) (2 1 3 2 3 1 2) (2 1 4 1 2) (2 4 2) (2 6 2) (2 6 2) (2 6 2) (2 4 2) (2 2) (2 12 2) (2 3 2 2) (3 7 3) (6 6) (3 6 6 3) (2 1 1 11 1 1 2) (3 1 1 1 3 1 1 1 3) (2 1 1 1 2 2 1 1 1 2))) (quote (() (1) (3 2) (5 2) (1 1 2 2 2 4) (2 1 1 2 3 6 2) (1 2 1 1 4 1 13) (1 1 1 1 5 4) (1 1 1 2 4 6) (2 2 2 6 4 1 2) (1 1 2 4 1 2 2 2 5) (1 8 2 1 2 1 2 2 1) (9 2 1 2 1 3 3 2) (1 7 2 1 1 6 1 1 2) (9 2 2 7 1 1 2) (1 7 2 2 7 1 1 2) (10 2 1 1 6 1 1 2) (8 2 1 2 1 3 1 1 2) (10 2 1 2 1 3 2) (1 9 1 2 2 2 2 1) (1 9 4 1 5) (1 2 1 8 2) (1 1 4 6 6) (1 1 1 3 5 4) (2 1 1 1 1 3 1 13) (1 1 1 1 2 3 6 2) (2 1 2 2 2 4) (1 5 2) (3 2) (1))) (quote #f)) (make-problem "19990525bKHO (4)" (quote ((2) (2) (2) (2) (2) (2) (4) (10) (2 2) (1 4 1) (1 1 1 1) (1 1 4 1 1) (1 1 1 1) (1 1 4 1 1) (1 1 1 1) (1 4 1) (1 1) (12) (1 1) (1 1 2 1 1) (1 2 2 2 1) (1 1) (1 2 2 2 1) (1 2 2 2 1) (1 1) (1 2 2 2 1) (1 2 2 2 1) (1 1) (1 2 2 2 1) (1 2 2 2 1) (1 1) (1 2 2 2 1) (1 1 2 1 1) (1 1) (1 3 1) (1 5 1) (1 5 1) (1 3 1) (2 2) (10))) (quote (() () () () () () () (31) (2 1 2) (1 3 1 1 2 2 2 1 1) (1 1 1 1 2 2 2 2 2 2 1) (1 1 1 1 1 1 4 1) (1 1 1 1 1 1 2 2 2 2 2 4 1) (1 1 1 1 1 1 2 2 2 2 2 4 1) (2 1 1 1 1 1 2 1) (8 1 1 1 2 2 2 2 2 1) (8 3 1 1 2 2 2 1 1) (3 1 2) (31) () () () () () () () () () () ())) (quote #f)) (make-problem "19990611-KVL (5)" (quote (() (9) (13) (11 2) (9 6 1) (6 5) (4 2) (3 2) (3 1) (4 2) (4 1) (5 1) (5 1) (10 2 1) (11 7 3) (12 1 2) (12 5 2) (12 4 2) (13 2 1) (12) (4 2) (5 3) (5 3) (6 7) (13) (12) (11) (10) (13 1) (10) (10) (10) (7) (6) (7) (10 2) (14 2) (16 2) (15 3) (15 4))) (quote ((1) (7 3) (18 3) (20 4) (25 4) (16 12 5) (4 9 17) (5 7 16) (4 7 16) (5 7 17) (4 7 19) (4 27) (4 18 6) (4 4 3 5 5) (3 1 1 2 5) (4 1 1 1 3) (4 1 2 1 2) (2 1 6) (1 1 2 3 1) (1 2 1 2) (3 1 1) (1 1 1) (2) (2) (2) (3 1 1) (10 5) (4 4) (2) (1))) (quote #f)) (make-problem "19990612-ARE (6)" (quote ((9) (3 3) (4 5) (20 5) (23 1) (2 19 5) (18 1) (1 17 5) (1 15) (1 13 5) (1 5 10 1 1) (5 9 5) (4 7 1 1) (4 11 1 1) (4 1 10) (4 12 3) (3 1 4 6 1) (2 1 4 6 1) (1 6 1) (1 1 5 3) (1 1 7) (1 5 1) (2 7 1) (1 3 4 1) (6 1) (6 5) (2 4) (2 4 5) (2 4 1 1) (9 1 1) (8 1 1) (6 5) (6) (8 5) (10 1 1) (10 5) (10 1 1) (9 1 1) (6 1) (2 1))) (quote ((1) (3 2) (4 9 1 2 1) (3 6 3) (4 8) (5 7 1) (1 4 2 2) (1 5 1 2) (1 6 1 1 1 2) (1 8 1 1 1 2 6) (1 8 5 2 7) (1 9 5 1 3 6) (1 10 5 2 1 11) (1 10 4 1 10) (1 13 1 1 2 11) (1 16 1 1 14) (1 36) (1 26 6) (1 25 3) (23) (10 8) (6) (5) (3) () (3 1 5 5 5 5) (1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 5 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1 1 2) (1 3 5 1 5 3 1))) (quote #f)) (make-problem "19990715-TAN (7)" (quote ((17) (2 2) (2 6 6 2) (2 6 6 2) (2 5 5 2) (2 9 1 6 2) (2 4 9 2) (1 5 3 4 1) (1 9 4 6 1) (1 4 5 3 1) (1 3 4 2 1) (1 7 6 3 1) (1 5 1) (1 4 2 2 7) (1 3 1 1 3 2) (1 3 1 3 5) (1 3 1 2 6) (1 5 1 2) (1 7 2 2) (1 4 4 1 2) (2 2 2 4 1) (2 2 1 2 4 1) (2 3 3 3 1) (4 7 1) (2 3 1) (1 1 4 2 1) (6 2 6 1) (1 1 1) (1 4 3 2 4 1) (1 4 2 4 4 1 2 1) (1 3 2 4 2 1) (1 3 8 12 1) (1 11 11 1) (2 9 9 2) (2 8 8 2) (2 5 5 2) (2 2 2 2) (2 13 2) (2 2) (17))) (quote ((15 8) (2 2 1 2) (2 11 2 1 4 2) (2 13 2 1 5 2) (2 15 1 1 6 2) (2 5 3 5 4 2 3 2) (2 5 2 5 1 2 5 2) (1 6 1 1 1 1 8 1) (1 4 1 2 3 1 1 1 2 9 1) (1 4 1 1 2 3 5 1 1) (1 4 2 1 3 1 5 1 1) (1 2 1 1 1 1 2 4 1 1) (1 2 1 1 2 4 1 1) (1 1 1 2 2 1 1) (1 1 1) (1 1 2 2 1 1) (1 2 2 1 2 4 1 1) (1 2 1 2 1 1 4 1 1) (1 5 2 1 2 1 2 1 5 1 1) (1 5 2 1 3 2 2 1 5 1 1) (1 5 1 1 3 1 2 1 9 1) (1 4 2 1 2 1 1 2 7 1) (2 5 1 5 2 1 2 6 2) (2 4 4 2 1 1 1 5 2) (2 4 1 1 1 6 1 1 3 2) (2 5 1 2 7 5 2) (2 4 1 2 11 2) (2 1 2 2) (8 15) ())) (quote #f)) (make-problem "19990803aDAH (8)" (quote ((30) (1 1) (1 2 2 3 2 3 1) (1 1 1 1 1 1 1 2 1) (1 2 3 1 1 2 1 1 1 1) (1 3 2 1 1 7 1) (1 1 1 1 1 3 2 1) (1 3 6 1 2 2 1) (1 2 1 1 2 1 1 2 1 1) (1 1 2 1 6 1 2 1) (1 6 2 3 2 1 1 1 1) (1 1 1 3 3 6 1) (1 2 3 2 1 3 1 1) (1 1 2 2 2 4 1 1) (1 3 3 7 3 1 1) (1 3 1 8 3 3 1) (1 1 16 4 1) (1 4 12 1 1 1) (1 1 10 2 1 1) (1 1 1 3 9 1 1 1) (1 5 7 4 2 1) (1 1 7 4 1) (1 6 1) (1 6 1) (1 6 1) (1 6 1) (12 6 10) (12 6 10) (12 6 10) (12 6 10) (12 6 9) (10 7 7) (8 3 1 1 3 6) (7 3 2 1 2 2) (3 2 3 3 5 1) (1 5 2 1 2 2 2 1) (1 1 1 1 3 1 3 1 1) (1 3 2 3 4 2 2 3 1) (1 1) (30))) (quote ((40) (1 9 1) (1 2 2 2 2 2 9 2 1) (1 1 1 1 1 1 8 1 1) (1 2 2 1 1 2 1 3 8 3 1) (1 2 5 3 1 8 1 1) (1 1 1 1 1 2 2 8 1 1 1) (1 6 2 2 1 1 7 3 1) (1 1 1 1 1 4 6 2 1) (1 3 3 3 4 6 2 1 1) (1 1 1 1 1 2 5 1 1 1) (1 5 2 4 5 2 2 1) (1 1 2 1 2 9 1 2 1) (1 1 1 19 4 1) (1 5 24 2 1 1) (1 3 25 1 1) (1 1 3 2 18 1 1) (1 3 2 22 1) (1 3 20 1 1 1) (1 2 1 1 4 2 4 1) (1 1 3 3 2 2 3 4 1 1 1) (1 1 1 1 1 1 1 5 2 1 1) (1 4 2 2 4 2 5 5 1) (1 1 2 1 1 1 2 6 3 1) (1 3 1 3 2 3 1 7 1 2 1) (1 1 1 1 2 1 1 7 1 1 1) (1 1 3 1 2 7 2 1 1) (1 2 2 2 3 7 2 1) (1 8 1) (40))) (quote #f)) (make-problem "19990803bDAH (9)" (quote ((30) (1 1 1 1 1 1 1 1) (1 1 4 1 1 1 1 3 1 1 1) (1 1 1 1 1 1 3 1 1 1) (1 4 3 3 2 1 2 2 2) (1 1 1 5 1 1 1 1) (1 1 1 5 2 2 2 2) (1 2 1 1 1 1 1 1 1 1) (1 1 3 3 1 2 1 2 1 1) (2 1 1 1 1 1 1 1 1 3 1) (1 1 2 2 1 3 1 2 4 1 1) (1 2 1 1 1 1 1 1 1 1) (1 3 2 4 1 6 2 1) (2 1 1 1 1 1 1 1) (1 1 6 1 5 3 1 2) (1 2 1 1 1 1 1) (1 1 2 1 1 2 1 10) (6 1 1 2 2 1 1 1 1) (1 1 2 1 1 4 1) (1 4 1 5 1 1 1 1 1) (1 1 1 6 1 3 1 2 1) (1 2 1 1 1 1 1 1 1) (1 1 1 5 7 3 1 1) (1 4 1 1 1 1) (1 1 1 1 3 13 1) (1 6 1 1 1 1 1 1 1 1 1 1) (1 1 1 2 1 2) (1 3 6 1 2 2 1) (1 1 1 1 2 4 4 1) (1 1 1 1 1 3 1 9 1) (1 1 1 1 1 1 1 1 9 1) (1 1 1 1 1 2 2 1 7 2) (1 1 1 2 7 3) (1 3 3 1 3 1 5 2) (1 1 1 1 1 1 1 3 1 1) (1 1 1 1 1 5 1 2 1 2 1) (1 1 1 1 1 1 1 2 1) (1 3 1 4 2 1 5 3) (1 1 1) (30))) (quote ((1 38) (1 1 1 1 1) (5 1 1 1 1 3 3 1 3 1 2 2) (1 1 10 1 1 1 1 1 1 1 1) (1 3 1 1 1 1 1 5 3 1 1) (1 1 4 2 1 4 5 1 1 1) (1 1 1 1 1 5 3 1 1) (1 3 3 1 1 5 4 1 1 1) (1 1 1 5 1 1 1 1 3 5 1) (1 3 1 1 1 1 1 1 6 1) (1 1 3 3 1 1 7 3 1) (1 5 3 1 1 1 2 1 1 1 1 1 1) (1 1 1 1 4 2 1 1 1 1 1 1 1) (1 4 2 3 1 1 1 3 5 1 1) (1 1 1 1 1 2 4 1 1 1) (4 1 6 1 2 1 1 5 1 1) (1 1 1 2 1 2 1 1 8 1) (1 1 2 6 1 1 1 1 1) (1 1 1 1 1 4 1 2 2 3 4 1) (3 1 3 1 1 6 1 1) (1 3 3 2 6 1 2 7 2 1) (3 1 1 3 1 7 1 1) (1 3 1 1 3 3 1 3 7 1 1) (2 2 5 1 1 1 1 7 1 1) (1 2 2 1 5 2 7 2 1) (2 2 2 2 1 1 1 1 6 2 1) (1 3 1 3 1 1 1 2 3 2 1) (3 5 1 7 1 1 1) (1 1 1 1 1 1 3 1 1) (40))) (quote #f)) (make-problem "19991021-BBA (10)" (quote ((3 2) (5 2) (5 5 2) (5 1 3) (1 3 3 9) (3 5 1 3) (3 3 1 5 2) (3 5 1 1 2) (3 5 3 2) (4 5 1 2) (6 5 2 2) (5 3 7 2) (4 3 9 2) (3 4 13) (1 6 1 8) (8 4 2) (2 3 2 2) (1 1 1 1 1 2) (4 2 2 2) (3 4 1) (2 3 1 1) (2 2 2) (10) (10) (1 1) (9) (9) (8) (8) (8) (7) (7) (2 2 4 3) (1 1 4 4) (9 4 4) (7 4 3) (1 1 1 5 3) (5 9) (5 9) (3 4 5))) (quote ((3) (1 2) (5) (3 2 3) (6 6) (7 2 3) (3 2 3 5) (5 3 1 2) (5 4 3) (5 5 6 4) (3 3 15 8) (6 3 2 2 15) (12 2 1 2 15) (13 2 2 14) (2 17 7 3) (6 4 2 3 15) (2 2 1 2 2 15) (4 2 1 3 15) (5 11 2 1) (3) (3) (3 3) (1 1 2 4) (1 1 1 1 4) (1 1 1 2 4) (1 1 1 1 3) (1 1 2 3) (3 2) (19) (19))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k35x25 b/pkgs/games/paint-by-numbers/solution-sets/k35x25 deleted file mode 100644 index aa65442ddc..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k35x25 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 35x25") (define problems (list (make-problem "19980530-GOS (1)" (quote ((16 14) (13 12) (10 10) (9 1 3 2 1 9) (9 1 1 1 1 1 1 1 8) (9 1 1 1 1 1 3 7) (8 1 1 1 3 1 1 1 2) (8 2 1 1 1 1 1) (8 1) (7 2 4 2) (7 2 2 4 1 1 5) (6 2 3 1 1 3 3) (5 3 4 3 2 1) (5 2 2 2 2 2 1 1) (5 2 2 2 2 1 4 5) (1 2 6 4 6) (2 4 1 6) (2 3 2 5 7) (3 2 1 9 7) (3 3 9 8) (7 7 8) (4 9) (2 1 11) (4 4 12) (14 14))) (quote ((16 3) (15 3) (15 3 2) (15 5 2) (15 5 1) (12 2 1) (11 3 1) (9 4 2) (6 9 2) (3 9 3) (2 4 2) (2 4 5 1) (2 1 5 1) (1 4 4 2 1 1) (1 1 3 2 3) (1 5 5 3) (1 5 3) (4 3) (1 1 1 2 3) (5 1 3 4) (1 2 1 4) (1 5 1 1 1 3 1) (1 1 3 1 2 1) (2 4 1 2) (2 1 2 3) (3 1 3 3) (4 1 2 1 4) (5 1 1 1 6) (6 3 1 8) (7 10) (6 1 11) (6 1 11) (6 2 11) (7 3 11) (7 17))) (quote #f)) (make-problem "19980616-HEI (2)" (quote ((1 1 4 8 1) (3 1 6 10 3) (1 6 10 3) (1 6 16) (1 1 1 1 6 6 1) (1 3 1 8 6 1) (1 1 1 6 1) (1 1 1 6 1 1 1) (1 6 1 1 1) (9 7 5 1 1 1) (9 4 1) (2 1 2 3 1) (2 3 2 2 1) (2 1 2 11) (2 2) (3 2 2 1 2 2) (4 2 1 1 1 1 1 2) (5 2 2 1 2 2 4) (5 2 1 1 1 1 2 5) (5 2 2 6) (5 15 7) (2 15 6) (1 2 6 1) (2 6) (5 8))) (quote ((1 1 6 1) (1 4 1 6 1 1) (2 1 6 1) (2 1 9) (1 1 8) (4 1) (1) (1 9) (10 10) (2 2) (1 2 4 2) (5 2 1 1 2) (6 2 1 1 2) (6 2 1 2) (6 5 4 2) (6 2 1 2) (5 2 4 2) (1 2 1 1 2) (2 1 2) (9 2 2) (10 10) (11 9) (12) (13) (14) (4 1) (4 1) (3 1 1 4) (3 1 1 1 5) (1 1 6) (11 7) (1 1 8) (3 1 1 1 8) (3 1 1 4 1) (4 1 4 1 1))) (quote #f)) (make-problem "19980716aGAS (3)" (quote (() () (11) (5 5) (3 1 1 3) (3 2 5 2 3) (2 2 5 2 2) (2 4 5 4 2) (1 6 5 6 1) (2 7 7 7 2) (1 27 1) (1 27 1) (1 27 1) (1 27 1) (1 27 1) (2 4 13 4 2) (1 3 1 5 1 3 1) (2 1 1 5 1 1 2) (2 1 1 1 2) (3 1 3) (3 3) (5 5) (11) () ())) (quote (() () (7) (3 3) (2 5 2) (2 9 2) (1 9 1) (2 11 2) (1 9 1 1) (2 9 2) (1 10 1) (1 1 7 1) (2 8 2) (2 6 2) (1 7 1) (1 14 1) (1 13 1) (1 15 1) (1 13 1) (1 14 1) (1 7 1) (2 6 2) (2 8 2) (1 1 7 1) (1 10 1) (2 9 2) (1 9 1 1) (2 11 2) (1 9 1) (2 9 2) (2 5 2) (3 3) (7) () ())) (quote #f)) (make-problem "19990119-JAM (4)" (quote (() (7) (7) (8) (9) (9) (9) (6 2) (5 1) (6 2) (9) (9) (3 5) (2 1 5) (3 14 7) (8 8 1 7) (7 8 5 3) (8 5 8 1 3) (5 7 8 4) (4 1 7 14) (4 13 8) (17 6) (15 6) (19) ())) (quote (() () () () (17) (21) (12 8) (11 1 7) (12 5 3) (7 9 1 2) (6 9 4) (7 7 7) (11 6) (3 7) (10) (10) (10) (4 5) (3 4) (4 5) (10) (1 8) (1 4 2) (1 4 1) (7 2) (10) (10) (3 6) (2 1 5) (3 5) (7) (5) (3) () ())) (quote #f)) (make-problem "19990208aFRA (5)" (quote ((1 24) (31) (1 29) (3 28) (3 2 27) (2 2 8 8) (2 2 5 11 7) (3 6 2 1 2 6) (9 2 1 2 5) (8 2 1 3 5) (4 2 1 3 4) (3 26 3) (2 28 2) (2 29 2) (1 30 1) (30) (35) (3 3) (5 5) (2 2 2 2) (5 5) (3 3) () (8 8 8 4) ())) (quote ((1 5 1) (10 1 1) (1 6 3 1) (3 4 4 3 1) (3 2 2 10 1) (2 2 4 8 2 1) (2 2 3 11 1) (3 5 6 3 1) (9 6 1) (8 6) (7 6) (7 7 1) (6 8 1) (6 2 6 1) (5 2 6 1) (5 2 6 1) (5 1 6 1) (5 1 6 1) (5 1 6 1) (5 1 6) (5 11) (5 1 6 1) (5 1 6 1) (5 1 6 1) (5 1 6 1) (5 11 3 1) (5 15 1) (6 10 2 1) (7 11 1) (8 6 3) (10 6) (11 5 1) (12 1 1) (14 1 1) (15 1 1))) (quote #f)) (make-problem "19990220aFRA (6)" (quote ((35) (22 10) (21 3 9) (17 1 3 9) (16 3 3 9) (16 4 3 9) (9 2 4 2 9) (8 2 1 10) (7 3 9) (6 1 8) (5 7) (5 3 2) (4 9 1 1) (3 1 8 9 3) (2 5 8 5 3 1) (1 28 1 2) (30 3) (31 2) (1 31 1) (2 20) (4 5 13) (5 3 14) (6 26) (35) (35))) (quote ((16 7) (15 2 6) (14 4 5) (13 5 5) (12 7 4) (10 7 3) (9 8 2) (8 8 2) (7 7 2) (6 6 3) (6 1 5 4) (6 1 10) (6 12) (6 12) (7 12) (8 12) (4 2 12) (3 3 1 12) (3 3 1 11) (3 3 11) (4 3 10) (2 1 10) (1 4 2 10) (1 5 2 10) (1 5 1 7 3) (2 1 7 3) (9 7 3) (10 7 3) (11 7 3) (14 4 3) (13 1 3 3) (12 3 2 3) (11 3 1 1 3) (12 1 3 3) (13 5 3))) (quote #f)) (make-problem "19990220bFRA (7)" (quote ((35) (8 9 3 1 4) (7 9 3 3) (6 8 3 3) (6 8 4 4) (1 4 4 2 4 5) (1 3 3 15) (1 1 1 2 1 4 1 4) (1 2 1 1 2 5 2 1 4) (1 4 2 2 4 5 2 4) (1 5 5 5 15) (1 6 6 1 1 2 2 1) (1 7 7 1 1 1 2 1 1 1) (1 6 6 1 1 1 2 1 1 1) (1 7 7 1 1 1 1 1) (1 8 8 1 2 2 1 1 1) (1 8 8 1 1 1 2 1 1 1) (1 8 8 1 1 1 2 1 1 1) (1 8 8 1 1 1 1 1 1 1) (1 8 8 15) (1 7 7 15) (3 5 5 17) (5 3 3 19) (7 1 1 21) (8 22))) (quote ((25) (5 4) (6 5 5 4) (7 5 7 3) (7 12 3) (8 13 2) (3 1 12 2) (2 1 12 1) (1 2 11) (1 1 12) (1 1) (1 1 12) (1 2 11) (2 1 12 1) (3 1 12 2) (8 13 2) (8 12 3) (7 5 7 3) (6 5 5 4) (5 4) (25) (11 6) (1 3 5 2 9) (1 5 1 6) (1 3 1 17) (7 1 6) (7 3 2 3 6) (2 21) (1 2 2 6) (2 1 1 1 2 10) (1 2 2 6) (2 21) (11 6) (11 6 6) (12 7))) (quote #f)) (make-problem "19990305-FRA (8)" (quote ((12 20) (12 1 3 1 14) (12 1 3 1 2 5 4) (12 3 1 1 1 1 1 2 1) (3 3 1 1 1 1 1 2 1 2) (1 7 2 2 1 1 1 2 3) (9 9 1 1 2 1 2) (11 12 1 2 2) (13 19) (14 19) (6 7 19) (5 2 6 7 9) (5 2 6 4 9) (6 7 2 10) (15 11) (15 13) (14 16) (14 18) (14 10) (13 9) (13 8) (11 21) (9 22) (1 7 23) (2 7 24))) (quote ((6 13 2) (5 15 1) (5 17) (4 20) (4 20) (4 6 12) (4 5 2 11) (4 5 2 11) (4 6 12) (4 20) (4 17) (5 15 1) (2 13 2) (2 3 10 3) (2 6 4) (5 3 4) (4 9 4) (14 1 4) (1 7 1 4) (5 7 2 4) (1 6 2 4) (12 2 4) (3 5 3 4) (2 1 6 3 4) (3 4 4 4) (11 6 4) (3 12 4) (3 3 17) (25) (2 17) (5 19) (4 1 18) (3 3 17) (25) (2 1 16))) (quote #f)) (make-problem "19990909-PIP (9)" (quote ((8) (2 2) (5 2 2 5) (1 3 1 1 3 1) (1 1 1 1 1 1) (2 2 2 3) (8 3 6 3 6 1) (1 1 10 1 1) (1 1 3 2 1 1 1) (9 1 6 1 9) (8 1 3 1 1 2 1 8) (9 1 1 1 1 1 2 9) (9 2 1 1 1 1 9) (8 2 1 1 1 1 1 8) (8 1 1 1 1 1 2 8) (8 2 1 1 1 1 1 1 8) (8 1 1 1 1 1 1 2 8) (8 2 1 1 1 1 1 1 8) (7 3 1 1 1 1 2 7) (1 1 1 1 1 1 2 1) (1 4 1 1 3 1) (1 10 1) (1 6 1) (2 2) (6))) (quote (() () (13) (3 10) (1 1 10) (1 1 10) (1 1 10) (1 1 10) (2 1 10) (2 1 10) (3 3 2 2) (2 1 6 1) (3 1 2 3 1 4 1) (2 3 1 1 1 1 2 1) (2 2 2 1 1 3 1) (1 2 2 1 1 1 3 1) (1 2 1 1 1 1 1 1 2 1) (1 2 2 1 1 1 1 3 1) (1 2 1 1 1 1 1 1 2 1) (1 2 2 1 1 1 1 3 1) (1 2 1 1 1 1 1 1 2 1) (2 1 1 1 1 1 1 2 1) (2 3 2 1 1 1 3 1) (3 1 2 2 1 1 3 1) (2 1 6 1) (3 3 2 2) (2 1 10) (2 1 10) (1 1 10) (1 1 10) (1 1 10) (1 2 11) (2 1 10) (2 10) ())) (quote #f)) (make-problem "19991011aLLO (10)" (quote ((5 14) (7 12) (9 10) (9 2 2) (7 2 2) (5 2 2) (5 2 2) (5 1 2 2) (5 3 2 2) (5 3 10) (17 1) (1 3 1 6 1 1) (2 1 6 6) (3 8 1 2 1 1) (3 10 11 1 1) (2 3 4 1 1) (1 15 4 3 1 1) (1 15 1 1 2 1 1) (17 1 1 1 3 1 1) (17 1 2 2 1 1) (4 4 9) (4 2 2 7 2 1 3) (2 4 4 1 1 1 1 1 1 1) (1 4 4 6 1 1) (2 2 4))) (quote ((3) (3) (2 3) (4 4) (2 11) (4 1 2 2) (11 3 4) (12 1 4 4) (12 1 4 2) (12 1 4) (11 1 4 2) (4 1 2 4 4) (2 1 2 4 4) (3 2 4 2) (4 2 4 1) (3 2 4 3) (1 2 4 1 1) (1 1 4 3) (1 1 1 4 1 1) (2 1 3 3) (18 3 1) (10 3 1 1 1) (3 1 2 2 1 1 1) (3 1 2 1 1 1 1 1 1) (3 1 2 1 1 1 1 1) (3 1 2 1 1 1 1 1) (3 1 2 1 1 1 1 1 1) (3 1 2 2 1 1 1) (10 3 1 1 1) (22) (2 9) (1 1 2) (10) (1 2) (10))) (quote #f)) (make-problem "19991013-KHO (11)" (quote (() (1) (1) (5) (1 4) (7) (5 1) (2 3 3) (4 1 1) (5 1) (17 2) (20 3) (21 3) (12 8) (10 7) (8 7) (5 6) (3 1 4) (2 2 6) (1 2 2 3) (1 1 2 2) (2 1 2 2) (2 1 2 2) (1 2 1 1) (2 2 2 2))) (quote (() (2) (3) (3 5 1) (1 2 7 4) (4 15) (1 3 12) (16 1) (3 10 2 2) (7 7) (6) (5) (5) (4) (4) (3) (3) (3) (6) (7) (8) (9) (10) (7 3 1) (4 2 4) (2 2) (1 3) (2 3 1) (1 1 4) (1 2) (1 1) (3) () () ())) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k35x30 b/pkgs/games/paint-by-numbers/solution-sets/k35x30 deleted file mode 100644 index e0407122ee..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k35x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 35x30") (define problems (list (make-problem "19980420-KVL (1)" (quote (() () () (4) (7) (9) (8 2) (5 6) (4 6) (5 4 2) (6 4 2) (2 10 4) (20) (1 1) (21) (21) (2 7 7 1) (2 3 3 6 3) (11 2 2 4) (19 4 1) (7 8 5 2) (2 3 7 3 1) (6 7 3 2) (6 8 6 1) (2 4 5 2 1 3 2) (1 10 2 4 1) (2 11 3 5 1) (10 4 4 5 2) (21 8) ())) (quote ((17) (4 11 3) (6 2 3 2 2) (5 1 2 7 3) (8 15) (9 15) (4 3 7 5) (4 2 3 2 4) (4 2 6 4) (5 3 6 4) (10 7 3 1) (2 6 2 10) (8 2 10) (4 2 2 10) (2 1 11 2) (2 2 10 1) (4 4 5 1) (3 11 2) (2 6 6) (1 4 4) (4 3) () (1) (2) (3 2) (4 1) (7 1) (3 8) (1 7) (6) (4) (3) (3 1) (2 3 2) (4))) (quote #f)) (make-problem "19980716bGAS (2)" (quote ((5) (5 4 1) (8 5 4) (10 4 7) (10 13) (10 9) (10 9) (10 9) (10 2 9) (10 2 9) (10 6 9) (10 6 9) (10 1 4 1 9) (10 3 4 3 9) (10 10 9) (10 12 9) (10 10 9) (10 6 9) (10 1 2 1 9) (10 2 9) (10 2 9) (10 2 9) (10 9) (10 9) (10 9) (14 9) (8 4 9) (5 5 8) (2 4 5) (5))) (quote ((26) (26) (26) (26) (26) (26) (26) (26) (26) (26) (1 1) (1 1) (2 1 1 1) (1 5 2) (1 4 1) (2 2 5 1) (1 8 2) (1 14 1) (1 14 1) (2 8 1) (1 2 5 2) (1 4 1) (2 5 1) (1 1 1 2) (1 1) (1 1) (26) (26) (26) (26) (26) (26) (26) (26) (26))) (quote #f)) (make-problem "19981201-JAM (3)" (quote ((8 7 18) (7 1 5 1 5 10) (7 2 3 3 3 2 9) (6 4 5 3 9) (3 7 5 5 8) (3 3 6 2 1 6 3) (4 3 3 2 7 3) (5 3 1 3 4 2 5 1 3) (6 3 4 3 2 2 3) (6 2 1 1 4 4 3 3) (5 2 3 6 2 3 1 3 2) (3 2 3 1 4 4 1 2 4 1) (2 2 3 2 3 5 4 4) (3 2 4 2 5 1 4 2 1) (3 2 5 1 4 3 4 1 1) (3 1 3 3 3 4 5 2) (2 1 3 4 1 2 1 6 4 2) (1 3 2 5 1 1 7 3 3) (4 3 2 1 2 3 1 3 2) (1 3 3 3 5 1 3 1) (2 4 3 2 7 2) (3 3 2 2 4 5 4 3 1) (4 4 5 4 3 3 2) (6 4 6 2 2 1 4 2) (6 3 2 4 1 4 6 1) (6 2 5 2 6 4) (5 2 1 6 1 8 2) (4 2 3 6 2 3 5) (5 2 2 1 2 2 1 6) (9 4 6 4 7))) (quote ((18 11) (17 1 10) (12 3 2 9) (4 5 5 8) (4 1 4 1 2 5 4 2) (4 2 2 2 1 1 3 3 1 1) (3 3 2 4 2 2 1) (1 2 5 2 5 5 1) (5 3 3 1 2 5 1 1) (1 5 1 3 2 1 4 3) (2 5 3 2 3 2 1 2) (3 3 1 1 3 3 2 3 1) (3 2 3 4 2 3 3 2) (3 2 2 1 3 1 2 2 2 2) (2 1 2 2 3 2 3 3 1) (1 4 4 1 1 5 3) (5 1 6 1 1 5 2 1) (1 3 2 4 1 1 5 1 1) (2 2 2 2 3 1 2 3 1 1) (3 2 1 1 6 4 2 1) (3 6 1 6 2) (3 2 2 5 2 5 2 2) (2 3 3 3 3 4 4) (1 5 3 1 5 2 5 1) (1 6 3 6 1 4 2) (2 4 2 1 5 2 3 2) (4 4 3 2 4 3 1) (5 3 6 1 3 1 3) (5 2 1 6 1 1 2 2 1) (5 1 4 6 4 2) (5 6 6 5 3) (5 4 2 2 5 3) (10 4 1 1 1 2 3) (11 1 4 2 4) (12 7 4 4))) (quote #f)) (make-problem "19990205-FRA (4)" (quote ((11 23) (10 1 11 4 2) (9 3 9 1 1) (8 5 8 1) (7 7 7 1) (6 9 6 1) (5 11 6 2) (4 13 6 3) (3 15 6 4) (2 17 6 5) (1 6 6) (1 1 1 13) (1 2 2 13) (1 3 3 5 5) (1 5 5 4 4) (1 6 6 4 4) (1 7 8 3 4) (1 8 8 3 1) (1 7 3 7 3) (1 6 5 6 3) (1 5 7 5 3) (1 4 9 4 3 1) (1 3 11 3 3 3) (1 2 13 2 13) (1 1 15 1 13) (1 17 13) (1 13) (35) (35) (35))) (quote ((30) (10 3) (9 14 3) (8 1 12 1 3) (7 2 10 2 3) (6 3 8 3 3) (5 4 7 4 3) (4 5 5 5 3) (3 6 3 6 3) (2 7 1 7 3) (1 8 8 3) (9 8 3) (1 8 8 3) (2 7 2 7 3) (3 6 3 6 3) (4 5 5 5 3) (5 4 7 4 3) (6 3 8 3 3) (7 2 10 2 3) (8 1 12 1 3) (9 14 3) (10 3) (30) (2 24) (1 23) (1 8 7) (2 5 7) (2 3 7) (3 2 7) (2 3 7) (1 5 7) (1 9 7) (1 10 8) (2 11 8) (18 9))) (quote #f)) (make-problem "19991010aTPV (5)" (quote (() () (12) (7 7) (8 4 8) (3 3 3 3) (3 4 8 4 3) (4 10 4) (11 11) (9 4 9) (9 9) (1 18 3) (3 14 7) (1 3 2 2 2 3 1 1 3) (2 1 10 1 1 3 1) (3 1 1 1 1 1 1 1 3) (4 1 1 1 1 1 2 1 2) (3 3 1 1 1 3 1 1 2) (5 14 6 3) (7 2 2 2 10 1 2) (22 6) (18 2 2) (12 3 2) (2 1 2) (1 1 2) (1 1 2) (2 3 1) (3 3) (5) ())) (quote (() (3 4) (5 6) (17) (2 4 1 1 3) (2 1 5 5) (2 1 4 5 3) (2 1 6 5) (3 1 6 5) (4 6 5 3) (13 5) (2 4 5 5) (1 1 2 1 2 1 1 3) (1 1 2 1 12) (1 1 2 1 4 5) (1 1 2 1 2 1 1 3) (2 4 5 5) (21) (4 6 1 1 3) (3 1 6 5) (2 1 6 5) (2 1 4 5 3) (2 1 5 5) (2 4 1 1 3) (17) (5 2 2 6) (3 3 2 1 3) (1 6 1 2) (3 2 1 1 1) (2 9) (1 1 3 2) (3 1 1 1 1) (12) (8) ())) (quote #f)) (make-problem "19991118-BDH (6)" (quote ((35) (1 1) (1 7 1) (1 11 4) (5 11 1 1) (1 1 15 3 1) (1 1 1 3) (1 6 3 1) (1 1 5 1) (1 1 1 1) (1 3 12) (8 1) (1 1) (1 1) (3 3) (1 11 5 1) (1 1 1 1) (13 1 1) (2 2 1) (2 8) (2 7 1) (1 9 1) (1 7 7 1) (1 8 5 8 1) (1 9 5 9 1) (1 11 3 11 1) (1 12 3 12 1) (1 12 1 12 1) (1 12 3 12 1) (1 12 3 12 1))) (quote ((30) (1 1 1 1 4) (1 1 1 2 1 4) (1 1 1 1 1 5) (1 4 1 1 1 6) (1 1 1 1 1 7) (1 1 1 1 1 8) (1 1 2 1 1 8) (1 1 1 1 1 8) (1 4 1 1 8) (1 1 1 1 8) (1 1 1 1 8) (1 3 3 8) (1 3 1 5) (1 4 2) (1 4 2 2) (1 4 2 4 2) (1 4 2 7) (1 4 2 4 2) (1 4 2 2) (1 4 2) (1 3 1 5) (1 3 8) (1 1 3 8) (1 1 1 1 8) (1 1 1 8) (1 1 1 8) (1 2 1 2 8) (1 1 1 5 8) (1 3 1 1 1 7) (1 1 1 1 1 6) (1 3 1 1 1 5) (1 1 1 1 2 1 4) (1 1 1 1 1 1) (30))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k35x35 b/pkgs/games/paint-by-numbers/solution-sets/k35x35 deleted file mode 100644 index 32b521fff4..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k35x35 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 35x35") (define problems (list (make-problem "19981015aGAS (1)" (quote ((17) (1 2) (1 1 1) (17 1) (1 1 1) (1 1 1) (1 1 1) (1 1 1 1 1) (1 5 1 1) (1 1 1) (1 1 1) (1 1 1) (17 1) (1 1 1) (1 1 1) (1 1 1) (1 1 1 1 1) (1 5 1 1) (1 1 1) (1 1 1) (1 1 1) (17 1) (1 1 1 1 1 1 1 2 1) (1 1 1 1 1 1 1 3 1) (1 1 1 1 1 1 1 2 1 1) (16 1 1) (1 1 1 1) (1 1 1 1) (1 1 1 1 1 1) (1 6 1 1 1) (1 1 2 1) (1 2 1 1) (16 1 1) (1 2) (18))) (quote (() () () () () () () (8) (2 3) (19 1 1 1 1) (2 1 2 2 1 1) (1 1 1 1 1 1 1 1) (1 1 1 2 2 2 1 1) (1 1 1 1 1 1 1 1 1) (1 1 1 2 2 1 1 1) (1 1 2 1 2 1 1 1 1 1 1) (1 1 1 1 1 2 2 1 1 1) (1 1 1 1 1 1 1 1 2 1 1) (1 1 1 1 1 2 2 1 1) (1 1 2 1 2 1 1 1 1 1) (1 1 1 2 2 1 1) (1 1 1 1 1 1 1 1) (1 1 1 2 9 1) (1 1 1 1 2 1 1) (1 1 1 3 1 1) (1 32) (1 1 1) (2 1) (32) () () () () () ())) (quote #f)) (make-problem "19990202-SQU (2)" (quote ((3 3 3 2 3) (3 3 1 1 3 1 1 1) (3 1 1 1 3 3 2 1) (3 1 1 3 1 1 1) (3 3 3 2 1) (3 3) (26) (2 3 3 2) (2 5 3) (2 3 4) (30) (1 3 1) (1 2 1) (1 16 1 2) (1 16 2 1 3) (1 2 2 2 5) (1 2 2 5) (1 2 2 3 1) (1 2 2 2 2 1) (1 2 2 2 1 2) (1 2 2 1 3) (1 2 2 5) (1 2 2 2 5) (1 2 2 4 3 1) (1 2 2 4 2 1) (1 2 2 2 1 2) (1 2 2 1 3) (4 2 2 7) (1 1 16 5 1) (1 1 16 4 1) (1 1 3 1) (1 27 1) (1 1) (1 1) (35))) (quote ((8) (1 1) (1 1) (1 22 1) (2 2 1 1) (3 3 1 1) (3 2 1 17 1 1) (3 2 1 17 1 1) (4 1 2 2 1 1) (3 1 2 2 1 1) (1 3 1 2 2 1 1) (3 3 1 2 2 1 1) (1 5 2 2 1 1) (1 3 2 2 1 1) (2 5 2 2 1 1) (1 3 1 2 2 1 1) (2 3 1 2 2 1 1) (3 1 2 2 1 1) (4 1 2 2 1 1) (3 1 1 2 2 1 1) (3 1 1 17 1 1) (3 1 1 17 1 1) (2 1 1 1 1) (1 1 1 2 1 1) (1 1 2 2 4 1 1) (3 1 1 1 2 2 4 1 1) (1 1 1 1 1 2 1 1) (1 3 1 1 1 1) (1 22 1) (5 1 4 4 4 5 1) (1 1 1 1 4 4 4 5 1) (5 4 4 5 1) (1 23 1) (5 1 1) (1 8))) (quote #f)) (make-problem "19990220-JOJ (3)" (quote ((35) (13 6 14) (12 4 13) (11 2 12) (10 11) (5 5) (5 6) (6 7) (7 8) (8 1 1 1 1 1 1 9) (6 1 3 1 1 3 1 7) (4 1 1 1 1 1 1 5) (2 1 2 1 1 2 1 3) (3 1 3 1 1 3 1 4) (4 1 3 1 1 3 1 5) (5 1 1 1 1 6) (6 1 3 1 1 3 1 7) (5 2 1 1 2 6) (4 2 3 4 3 2 5) (3 1 4 4 1 4) (4 1 2 2 1 5) (6 1 1 7) (8 1 2 2 1 9) (8 2 3 3 2 9) (9 1 6 1 10) (10 1 1 11) (13 14) (11 1 1 2 1 1 12) (12 1 1 1 1 13) (11 12) (10 11) (8 9) (7 4 4 8) (6 14 7) (5 16 6))) (quote ((35) (35) (12 22) (12 5 15) (11 3 14) (5 4 1 13) (5 2 11) (5 1 4 10) (5 1 2 1 7) (5 1 3 3 6 1) (4 1 1 1 2 1 4 2) (3 1 2 1 3 1 1 1 1 3) (2 2 3 1 3 2 3 3) (1 1 3 1 1 1 1 3) (2 1 1 1 2 1 3) (3 1 3 3 1 1 2) (4 1 1 1 2) (4 1 1 1 2) (3 1 3 3 1 1 2) (2 1 1 1 2 1 3) (1 1 3 1 1 1 1 3) (2 2 3 1 3 2 3 3) (3 1 2 1 3 1 1 1 1 3) (4 1 1 1 2 1 4 2) (5 1 3 3 6 1) (5 1 2 1 7) (5 1 4 10) (5 2 11) (5 4 1 13) (5 5 3 14) (12 5 15) (12 22) (35) (35) (35))) (quote #f)) (make-problem "19990416-SNI (4)" (quote ((8 15 5) (7 2 13 6) (6 2 12 7) (5 2 11 4 8) (5 1 10 4 9) (4 1 10 3 2 8) (4 1 2 4 1 7) (4 11 5 3 6) (4 11 6 5 5) (3 12 5 7 4) (3 12 5 8 3) (3 1 5 4 3 10 2) (2 1 3 1 4 2 9 3) (2 1 1 3 2 4 1 9 4) (1 3 5 6 9 5) (1 5 11 8 6) (1 10 4 6 7) (1 1 1 2 1 4 4 9) (1 3 2 3 4 3 10) (2 15 1 1 11) (3 13 2 2 10) (3 1 10 4 3 9) (3 1 6 7 3 8) (3 1 5 7 1 2 9) (3 1 4 3 3 3 10) (3 4 2 8 11) (4 6 9 10) (4 17 9) (5 8 7 10) (5 8 7 11) (6 8 6 12) (6 8 4 13) (5 2 4 14) (4 3 5 4 15) (4 6 16))) (quote ((35) (14 16) (12 2 1 15) (9 8 9) (5 3 3 7 5) (3 2 3 1 3 2 2 2 1) (2 2 5 3 12 2) (1 2 1 8 1 13 2) (2 2 11 13 1) (1 3 11 13 2) (4 5 3 6 6 2) (6 4 1 8 2 5 2) (6 4 2 2 4 3 5 2) (6 5 2 6 6 2) (6 9 5 3 2) (6 10 12 1 1) (6 1 10 9 2) (5 1 3 8 13) (4 2 4 5 3 9) (4 1 7 1 3 9 1) (3 2 6 3 3 8 2) (3 1 5 6 8 3) (2 2 3 11 4) (2 2 2 10 4 5) (1 1 2 10 1 3 1 6) (1 1 1 10 3 1 3 7) (1 10 5 12) (3 9 18) (5 7 19) (7 5 20) (9 3 21) (10 1 22) (11 23) (35) (35))) (quote #f)) (make-problem "19990520-TAM (5)" (quote ((1 1) (1 1 2) (1 1 1 1) (1 1 1 1) (1 1 1) (1 1 18 2) (1 1 20 2) (2 2 2 14 2) (2 2 3 2 2 3) (6 6) (5 2 2 5) (3 4 4 3) (3 4 4 3) (3 2 2 3) (1 3 3) (2 24) (1 1 4 1 1 1 1 1 1 1 1 3) (1 24) (1 24) (2 24) (2 24) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (24) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (26) (26) (26) (26) (26) (2 2) (2 2) (2 2) (2 2))) (quote (() (2 2) (7 7) (1 1) (1 2 1) (8) (5) (23) (14 1 5) (15 1 9) (2 2 20) (2 2 1 14) (5 6 1 5) (4 2 1 4 1 5) (3 4 16) (3 4 1 14) (3 2 6 1 5) (3 1 4 1 5) (3 16) (3 1 14) (3 6 1 5) (3 2 1 4 1 5) (3 4 16) (3 4 1 14) (4 2 6 1 5) (5 1 4 1 5) (2 2 16) (2 2 1 18) (15 1 9) (14 1 5) (23) (2 5) (7) (1) (2))) (quote #f)) (make-problem "19990830-KHO (6)" (quote ((35) (26 5) (7 12 3 4) (6 1 1 1 4 4 4) (5 2 1 1 2 2 3) (4 4 2 1 2) (3 6 1 1 7 1) (2 6 3 3 7) (1 6 1 3 1 6) (2 5 1 1 6) (4 4 4 3) (4 4 4 4) (2 4 5 4 7) (1 4 7 4 4 1) (2 4 3 1 3 4 2) (10 1 3 1 1 10) (9 1 3 9) (9 3 4 2) (9 1 3 1 3 3 3 1) (10 5 1 3 2 2) (12 2 3 3 4 1 1 1) (4 8 1 1 7 3 1) (3 9 3 8 1 2) (2 2 6 8 2 1) (2 1 1 4 9 2) (2 3 3 11) (3 8 12) (8 1 1 6) (7 1 1 5) (7 7 5) (7 1 1 7 1 1 5) (9 2 11 2 7) (35) (35) (35))) (quote ((9 22) (8 21) (7 2 8 9) (6 4 7 3 8) (5 4 6 2 1 8) (4 2 6 1 2 8) (3 1 10 9) (2 2 3 15 4) (2 22 4) (2 12 8 1 3) (2 9 5 1 4) (2 8 4 1 4) (3 4 2 1 1 3) (4 1 2 1 4) (3 1 2 3 1 1 1 4) (4 2 1 3 1 1 7) (3 2 2 1 3 1 6) (3 1 5 3 1 6) (3 2 2 1 3 1 6) (4 2 1 3 1 1 6) (5 2 3 1 1 6) (5 1 3 7) (4 4 3 4 1 4) (3 8 5 4 1 4) (2 1 9 3 7 1 3) (2 2 10 8 4) (1 3 21 4) (1 2 5 14 1 3) (1 1 2 3 5 5 4) (1 4 3 3 5 4) (2 4 2 2 2 11) (4 3 2 1 2 12) (5 2 2 2 2 10) (6 1 4 4 11) (7 7 12))) (quote #f)) (make-problem "19990904-PIP (7)" (quote ((29) (27 1) (1 1 2) (2 2 1) (1 1 28) (1 2 1 1) (1 4 9 1 9 1) (2 1 1 1 1 1 1) (1 1 1 1 3 1 1) (2 2 1 1 1 1) (1 1 4 1 2 1 1 1 1 1 1) (1 2 1 1 1 1 1 1 1 1 1 1 1 1) (1 4 1 2 1 1 1 1 2 1 1) (2 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 2 1 1 1 1 1 1) (2 2 1 2 2 1) (1 1 4 1 1 1) (1 2 1 1 1 13 1 1 1) (1 4 1 1 1) (2 1 2 13 2 1) (1 1 1 1 1 1) (2 2 1 1 1 1) (1 1 4 1 1 1) (1 2 1 1 1 1) (1 4 1 1 1) (1 1 1 1 1) (2 1 1 1 1) (1 1 1 1 3 1 1) (1 2 1 1 1 1 1 1) (1 4 9 1 9 1) (2 1 1) (28) () () ())) (quote ((28) (2 1 1 1 1 1 1 1 1 1) (3 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1 1 1) (2 28) (2 1 1) (2 1 10 1 11 1) (2 1 1 1 1 1 1) (2 1 1 3 1 1) (2 1 1 5 1 1) (2 1 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1 1 1) (2 1 1 1 1 1 1) (2 1 1 3 1 1 1 1) (2 1 2 1 1 1 1 2 1) (2 1 1 3 1 1 1 1) (2 1 1 1 1 1 1 1 1) (2 1 1 3 1 1 1 1) (2 1 2 1 1 1 1 2 1) (2 1 1 3 1 1 1 1) (2 1 1 1 1 1 1) (2 1 1 5 1 1 1 1) (2 1 1 1 1 1 1 1) (1 1 1 1 2 2 1 1) (5 1 3 1 1) (1 1 1 1 1 1) (1 10 1 11 1) (1 1) (28) () ())) (quote #f)) (make-problem "19991007cKHO (8)" (quote ((3 3) (3 3) (3 4 3) (3 1 1 3) (5 3 5) (1 3 7) (1 3 3 2) (1 3 4 2 2) (1 2 2 1 2 3 2) (1 1 1 1 2 1 3) (1 1 1 2 5) (1 2 1 1 2 6) (1 3 1 2 6) (3 1 2 8) (3 3 1 2 6 3) (3 1 3 1 7 3) (3 1 3 1 5 4 3) (1 3 3 3 3 1 5) (1 3 7 3 7) (1 3 7 1 3 5 2) (1 3 5 3 1 1 5 3) (1 1 2 1 2 1 2 1 1 1 2 5) (1 1 1 1 2 1 2 1 1 1 2 3 2) (1 1 1 1 1 3 1 1 1 1 2 1 3) (1 1 1 1 1 2 1 1 1 1 2 5) (1 1 2 1 1 1 1 1 1 1 2 6) (1 2 1 1 3 1 1 2 1 2 6) (3 1 1 7 2 1 2 6) (3 1 1 5 3 1 2 4) (3 1 5 3 1 5) (3 3 3 3) (3 3) () () ())) (quote ((12) (1 1) (3 6 2) (1 1 1 1 1) (2 2 2 1 2) (1 1 1 1 1) (2 2 4 2) (1 2 1 1) (12 1 13) (2 1 1 1 1) (3 4 2 1 13) (1 1 2 2 1 4 2) (2 2 1 1 2 3 2 5) (1 1 2 1 1 2 4 4) (2 2 2 1 5 1 5) (1 2 1 6 2) (1 1 1 23) (1 1 1 1 1) (1 1 1 23) (1 1 12 1) (2 2 4 7 2) (1 1 2 6 1 2 1) (2 2 2 7 2 1 2) (1 2 2 6 1 1) (4 7 13) (12 2 1 1) (12 1 13) (1 1 12) (2 1 3 2) (1 2 2 5) (2 3 2 6) (1 2 2 5) (4 2 6) (12) (12))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k35x40 b/pkgs/games/paint-by-numbers/solution-sets/k35x40 deleted file mode 100644 index b897115d1c..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k35x40 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 35x40") (define problems (list (make-problem "19980425-HUB (1)" (quote ((8 6 2 2 6) (8 8 2 2 8) (2 2 2 2 2 2 2) (2 2 2 2 2 2 2) (2 2 2 2 2 2 2) (2 2 8 6 8) (3 3 8 4 8) (6 2 2 2 2 2) (4 2 2 1 2 2 2) (1) (5 1 1 1 1 1 9) (3 1 1 1 1 1 6) (5 1 1 1 1 1 1 8) (3 1 1 1 1 1 6) (4 1 1 1 1 1 10) (2 1 1 1 1 1 5) (4 1 1 1 1 1 8) (2 1 1 1 1 1 5) (4 1 11 1 8) (5 1 1 1 5 1) (3 1 11 1 3) (1 21 1 3) (3 17 8) (2 3 9 7 2) (2 4 10 2) (2 9 1 7 2) (5 1 1 1 1 8 2) (2 1 1 1 1 6 2) (1 6 1 1 1 1 7 3) (1 2 1 1 1 1 9 1) (1 6 1 1 1 1 8 2) (1 2 1 1 1 8 4) (2 6 1 1 1 8 5) (2 3 1 1 1 6 6) (3 4 1 1 1 6 7) (4 2 1 1 6 8) (5 3 1 1 5 9) (7 9 11) (10 14) (35))) (quote ((2 2 9 12) (2 3 9 6 8) (2 3 5 1 1 1 9 6) (2 2 1 1 1 1 1 1 1 7 5) (2 2 1 1 1 1 1 1 4 4) (2 3 1 1 1 1 1 1 3 3) (8 2 4 1 1 1 1 1 4 3) (7 2 5 1 1 1 1 2 2) (1 2 1 1 1 1 2) (8 1 2 1 1 2) (9 1 2 1 3 1 1 1) (2 2 2 9 1 1 1) (2 2 1 4 1 1 1) (2 2 6 1 1 1) (2 2 3 4 4 2 1 1 1 1 2 1) (9 2 1 4 1 1 1 1 1 1 1 1) (8 1 4 2 1 1 1 1 2 1) (2 7 1 1 1 1 1 1 1 1) (4 3 4 1 4 2 1 1 1 1 2 1) (6 1 4 1 1 1 1 1 3 1) (3 1 3 1 1 1 1 1 3 1) (4 1 2 2 1 1 6 2) (4 2 6 1 1 1 7 2) (3 2 3 1 2 12 2) (6 1 1 13 3) (4 1 1 1 1 12 3) (1 1 1 11 4) (8 1 1 1 1 1 1 11 5) (9 1 1 1 1 1 1 10 6) (2 2 5 1 1 6 2 7) (2 2 9 2 2 8) (2 2 9 2 2 9) (2 2 9 2 2 9) (9 9 7 10) (8 10 5 11))) (quote #f)) (make-problem "19981020-MON (2)" (quote ((3 11) (4 5 4) (3 5 4) (3 5 3) (3 5 2) (4 5 2) (3 5 2) (4 2) (4 3 3 3 2 1) (4 1 1 1 1 1 2 1) (2 1 2 1 3 2 2) (2 1 1 1 1 1 2 2) (4 1 1 3 1 2 3) (4 2 2) (4 1 2 1 1 1) (2 1 1 2 4 1) (2 1 3 4 1 1 1) (1 4 3 8 1) (1 1 1 3 2 4 1) (1 6 3 1 2 2 1) (2 5 1 3 1 2 4 1) (2 1 12 8 1) (1 1 2 6 12) (3 4 2 10) (8 2 10) (4 1 2 10) (1 1 4 2 11) (3 1 1 2 2 9) (5 5 2 2 8) (2 1 4 2 2 3 7) (12 2 2 6) (9 1 2 2 6) (13 2 4) (10 3 5) (6 2 3 5) (2 9 5) (2 4 3 5) (2 2 4 5) (2 2 1 2 3) (2 2 10))) (quote ((2) (1 1 4 1) (2 2 5 3 3 3) (2 2 4 6 5) (5 2 3 7 1) (5 2 7 3) (3 2 10) (2 9) (34) (13 2 4 1 4 3 1) (6 3 1 6 1 3 4 3) (37) (5 3 2 2 1) (5 5 1 1 2 2 1) (5 1 1 2 2 2 1) (4 2 2 2 2 2 1) (3 2 2 2 2) (2 1 1 7 2 2 3) (1 5 9 2 2 3) (1 1 1 7 2 3 3) (1 2 2 2 4) (1 5 1 2 2 4) (2 1 1 2 2 2 4) (3 3 2 2 4) (4 2 2 4) (33) (32) (2 11) (5 12) (1 15) (16) (4 2 2 10) (3 2 7) (2 6) (13))) (quote #f)) (make-problem "19990202bLLO (3)" (quote ((8 20) (2 2 2 2) (1 1 1 1 1 2 1 1 3 1) (1 4 3 1 1 1 1 1 1 1 2) (1 1 1 3 3 2 1 1 1 1 2) (1 1 1 3 1 1 1 1 1 1 1 2) (1 1 1 1 1 1 1 2 2 2 3 1) (1 1 1 1 2 2) (1 1 1 1 20) (1 1 1 1) (2 1 1 2 6 6 6) (1 1 1 1 1 1 1 1 1 1) (2 2 1 2 1 1 2 1 1 2 1) (2 2 1 1 1 1 1 1 1 1 1) (2 2 1 1 1 1 1 1 1 1 1) (5 5 1 1 1 1 2 1 1 1 1) (1 2 2 1 1 1 1 1 1 1) (1 2 2 1 6 6 6) (5 5) (2 2 6 6 6) (2 2 1 1 1 1 1 1) (2 2 1 1 1 1 2 1 1 1 1) (2 2 1 2 1 1 1 1 1 1 1) (2 2 1 1 1 1 1 1 1 2 1) (2 2 1 1 1 1 2 1 1 2 1) (2 2 1 1 1 1 1 1) (2 2 6 6 6) (1 1 1 1) (2 1 1 2 6 6 6) (1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 2 1 1 2 1 1 2 1) (1 1 1 1 1 1 1 1 2 1 1 2 1) (1 1 1 1 1 1 1 1 2 1 1 1 1) (1 1 1 1 1 1 1 1 2 1 1 1 1) (1 4 1 1 1 1 1 1 1) (1 1 6 6 6) (2 2 4) (8 8) (3 4 5) (3 4 5))) (quote ((4) (10 1 1 9) (2 2 1 1 2 2) (1 15 1) (1 32 2) (1 1 1 3) (1 1 1 3) (1 32 1 1) (1 15 1) (2 2 1 1 2 2) (10 1 1 9) (3 4 1) (7 1) (2 2 8 8 8 2) (1 1 1 1 1 1 1 1 2) (1 5 1 1 1 1 1 2 1 1 1 2 1 2) (1 1 1 1 4 1 1 3 1 1 2 1 2) (1 5 1 1 1 1 1 1 3) (1 1 8 8 10) (1 5 1 2) (1 1 1 1 1 8 8 11) (1 1 1 1 1 1 1 1 2) (1 5 1 1 1 2 1 1 2 1 1 1 4 1 3) (1 1 1 1 2 1 1 1 1 2 1 1 4 1 2) (1 1 1 1 1 1 1 1 2) (1 5 1 8 8 8 1) (1 1 1 1) (1 1 8 8 8) (1 5 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 4 1 1 2 1) (1 5 1 1 3 1 1 2 1 1 4 1) (1 1 1 1 1 1 1 1) (2 2 8 8 8) (7) (3))) (quote #f)) (make-problem "19990529aDRA (4)" (quote (() () (3) (5) (7) (7) (6) (7) (6) (5) (7) (2 9) (1 3 10) (2 16 4) (2 15 4) (2 2 2 5) (4 4 2 5 12) (2 1 1 8 1) (2 1 5 2 1 1) (2 1 5 2 1) (2 1 2 6 1) (2 1 7 1) (2 1 7 1) (14 8 11) (2 1 8 1) (2 1 10 1) (2 1 11 1) (2 1 6 5 1) (2 1 5 4 1) (2 1 3 4 1) (9 4 7 4 7) (2 4 4) (2 4 4) (2 4 3) (2 4 4) (2 3 3) (2 3 3) (2 5 4) (2 4 3) (2))) (quote ((27) (27) (1 1 1) (3 1 1 1) (1 3 1 1) (5 1 1) (3 15) (3 1 1 1) (2 1 1 1) (2 1 1) (2 2 3 1 3) (5 2 1 3 1 5) (6 2 5 1 7) (7 4 3 1 4 4 2) (7 6 3 5 4 2) (13 1 5 1 3 2) (11 3 8 1 6) (8 3 7 1 4) (6 3 7 1 2) (4 3 9 1) (7 10 1) (5 9 1) (4 3 5) (2 1 4) (1 1 4) (1 1 4 2) (1 1 4 2) (1 1 4 3) (15 6) (1 1 1 3) (1 1 1 2) (1 1 1) (1 1 1) (1 1 1) (1 1 1))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k40x30 b/pkgs/games/paint-by-numbers/solution-sets/k40x30 deleted file mode 100644 index fb5a178189..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k40x30 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 40x30") (define problems (list (make-problem "19980501bGOS (1)" (quote (() () () () () () () () () (37) (37) (1 1 1 1 2 2 2 1 1 1 1 2 2) (1 1 1 3 1 1 1 1 2 1 3 1 2 1 1 1) (1 1 1 3 1 1 3 2 1 3 1 1 2 3) (1 1 1 3 2 1 2 6 2) (1 1 1 3 1 3 1 2 1 4 7 1) (1 1 1 3 1 1 1 1 2 1 4 5 1 1) (1 1 1 1 1 2 2 2 1 2 6 2) (37) (6 3) (6 5 1 4 1 6 3) (6 3) (37) () () () () () () ())) (quote (() (14) (2 5) (5 8) (2 5) (14) (2 5) (2 2 2 1 1) (2 2 2 1 1) (10 1 1) (2 1 1 1) (2 2 4 1 1) (2 1 1 1 1) (10 1 1) (3 2 2 1) (2 2 2 1 1) (3 2 2 1 1) (10 1) (2 1 1 1) (5 4 1 1) (5 4 1 1) (2 1 1 1) (10 1) (2 1 1 1) (2 2 2 1 1) (2 2 2 1 1 1) (10 1 1) (2 5 1 1) (5 1 1 1) (2 5 1 1) (10 1 1) (2 1 5 1) (2 6 1) (10 1) (3 2 2 1) (2 2 2 5) (3 2 6) (14) () ())) (quote #f)) (make-problem "19980501cGOS (2)" (quote (() (3 4) (6 6) (1 8 7) (2 2 16 2) (3 2 16 2 2) (5 5 1 5 2 3) (8 4 1 5 5) (15 3 4 8) (2 12 1 16) (3 25 2) (3 19 3) (16 3) (3 6) (3 5) (2 1 4) (4 4) (2 4) (10) (10) (9) (9) (7) (7) (3 3) (3 3) (4 4) (5 5) (5 5) ())) (quote (() () (2) (2 3 1) (2 2 2) (7) (5) (6) (7) (4) (4) (4) (4 4) (11) (14 2) (21 3) (28) (4 3 1 11) (4 1 3 2 11) (10 6) (2 1 3 11) (3 19) (27) (21 3) (19 2) (14) (7 5) (4 4) (4) (4) (4) (7) (7) (5) (7) (2 2 2) (2 3 1) (2) () ())) (quote #f)) (make-problem "19980508-SDN (3)" (quote ((15 7 10) (1 1 1 1 10) (1 11 1 1 1 2 2) (1 11 1 1 1 10) (1 11 1 1 1 5 3) (1 11 1 13 10) (1 11 1 24) (1 11 1 13 10) (1 11 1 6 1 2 10) (1 11 1 13 10) (1 11 1 1 1 10) (1 1 10) (15 10) (1 1 1 6 2 10) (15 7 2) (3 2 10) (1 14 10 2) (3 1 2 10) (9 3 1 10) (9 1 1 10) (1 1) (25 10) (25 1) (2 1 1 1 1 1 1 3 3) (25 1 1) (1 1 1 1 1 1 1 1 1 1 1) (25 3) (2 1 1 1 1 1 1 3 3) (25) (25))) (quote ((15 9) (1 1 1 4 4) (1 9 3 2 1 1 2) (1 9 1 1 2 2 3 2) (1 9 3 2 4 4) (1 9 1 1 2 2 1 1 2) (1 9 4 3 2 3 2) (1 9 8 4 4) (1 9 4 3 2 1 1 2) (1 9 3 2 2 3 2) (1 9 3 3 4 4) (1 9 3 1 2 2 1 1 2) (1 9 1 1 1 2 3 2) (1 3 1 4 4) (15 1 2 1 1 2) (1 2 3 2) (5 1 4 4) (5 1 2 1 1 2) (5 1 2 3 2) (11 1 4 4) (1 5 1 2 1 1 2) (1 5 1 2 3 2) (1 3 1 1 4 4) (1 3 1 1 7 4) (1 5 2 1 9) (8 2 1 1) (3 1 1 2) (5 1 2 1) (5 1 1 1 1) (1 1 1 1) (20 1) (20 1) (2 17 1) (2 11 5 1) (2 11 5 1) (2 1 9 5 1) (2 1 9 1 3 1) (2 11 1 3 1 5) (20 3 2) (20 5))) (quote #f)) (make-problem "19981027aMNT (4)" (quote ((2) (2) (8) (2) (1 2) (1 2) (5 2) (1 10) (1 2) (1 2) (1 10) (7 10) (1 10) (1 4 4) (1 18) (24) (24) (18) (34) (24) (32) (40) (17 12) (17 6) (21 5) (20 1) (19 2) (18 2) (17 2) (32))) (quote ((1 1) (1 2) (1 3) (1 1 4) (1 10) (1 10) (1 1 10) (1 1 1 10) (1 1 2 12) (13 12) (1 1 2 12) (1 1 16) (1 16) (16) (16) (1 20) (1 1 20) (1 1 20) (1 1 20) (13 16) (13 16) (1 1 12 1) (1 1 12 1) (1 1 12 1) (1 13 1) (9 1) (9 1) (9 1) (9 1) (2 5 1) (2 6 1) (2 6 1) (1 4 1) (1 4 1) (1 4 1) (1 5 2) (1 1 1 2) (1 1 2) (1 3) (1 1))) (quote #f)) (make-problem "19981027bMNT (5)" (quote ((16) (3 7 3) (4 7 3) (2 7 4 1) (3 7 3 2) (17 3) (3 7 3 4) (4 7 2 5) (17 13) (1 1 7 5 1) (16 8 1 1 1 1) (16 1 5 1 1 2 1) (7 7 1 5 8 1) (7 7 4 2 1 3 1 1) (16 4 2 1 3 2 1) (16 7 12 1) (16 8 1) (16 6 15) (16 4 1 15) (2 8 2 3 3 1 8 2) (2 8 2 2 1 1 1 8 2) (16 2 1 1 15) (17 1 4 6 7) (1 4 6 7) (1 3 15) (1 2 15) (1 1 1 8 2) (1 1 8 2) (1 15) (16))) (quote ((14) (1 13) (2 9 2) (3 9 2) (4 13) (5 13) (3 1 13) (4 1 2 9) (2 4 2 9) (3 4 13) (9 13) (1 6 13) (1 6 9 2) (9 9 2) (9 13) (6 1 13) (6 2 1) (3 4 12) (3 3 2 11) (7 3 7 1) (1 3 12 4 1) (1 2 7 3 1 3 1) (4 8 3 1 4 1) (3 13 9 1) (15 1 1) (1 1 13) (8 2 5 2) (2 1 1 2 5 2) (5 1 13) (2 4 13) (2 4 13) (1 6 5 6) (1 2 1 5 6) (1 1 1 13) (1 3 13) (1 2 13) (1 1 2 5 2) (1 2 5 2) (1 13) (14))) (quote #f)) (make-problem "19981228-BAU (6)" (quote ((5) (7) (3 3) (2 2 2) (2 2 2) (3 3 2) (2 2 2) (2 2 2) (3 3 3) (2 2 2 2) (2 2 4 2) (3 3 6 3) (2 2 2 2 2) (2 2 3 2 2) (3 3 5 3 2) (2 2 2 2 2 2) (2 2 2 2 2 2) (3 3 3 3 3 3) (2 2 2 2 2 2) (2 2 2 2 2 2) (3 17 3 3) (3 17 2 3) (2 3 2 2) (2 3 3 2) (26 2 2) (26 2 2) (2 4) (2 3) (29) (27))) (quote (() () (5) (7) (3 4) (4 2 2) (3 2 2) (4 2 2) (3 2 2) (4 3 2 2) (3 5 2 2) (4 3 2 2 2) (3 4 2 2 2) (4 3 2 2 2) (3 4 3 2 2) (4 3 5 2 2) (3 4 3 2 2 2) (3 3 4 2 2 2) (2 4 3 2 2 2) (2 3 4 2 2 2) (2 3 6 2 2 2) (4 3 4 2 2 2) (2 3 3 2 2 2) (3 3 5 2 2) (4 4 4 2 2) (4 3 6 2) (3 4 4 2) (4 3 3 2) (3 4 2) (4 3 2) (3 4 2) (3 4 2) (3 7) (4 3) (3 2) (7) (5) () () ())) (quote #f)) (make-problem "19990118-FRA (7)" (quote (() (3 3) (1 2 2 1) (1 2 2 1) (1 12 1) (1 14 1) (1 16 1) (1 20 1) (6 6 6) (4 1 1 4 1 1 4) (4 1 1 4 1 1 4) (5 6 5) (22) (10 9) (10 9) (11 10) (11 10) (7 2 2 6) (8 3 7) (9 1 8) (9 8) (16) (12) (8) () (1 1 4 4 1 1) (2 2 1 1 1 1 1 1) (1 2 1 3 1 1 1 1 1 1) (1 1 1 1 1 2 2) (1 1 4 4 1 1))) (quote (() () () () () () () () (8 5) (1 11 1) (1 13 1) (1 14 1) (1 16 1) (1 4 11 5) (5 2 11) (4 11 5) (4 2 5 6 1 1 1) (5 7 5 1 1 1) (14 5 1 1) (9 2 1 4) (9 2 3 5) (9 2 1 4 1 1) (5 7 5 1 1) (4 2 6 5 5) (4 5 5) (5 2 11 5) (1 4 11 1) (1 16 1) (1 14 1) (1 13 1) (1 11 1) (8 5) () () () () () () () ())) (quote #f)) (make-problem "19990123aFRA (8)" (quote (() () (2) (8) (10) (12 3) (4 14 3) (1 2 1 1 3) (1 23) (1 21) (3 20) (20) (16) (14) (12) (10) (8) (6) (10) () () (12 12) (1 10 10 1) (1 8 8 1) (9 9) (7 7) (5 5) (11 11) () ())) (quote (() () () (2) (1 1 1) (2 1 1) (3 5 1) (1 2 7) (1 1 7) (2 1 7) (2 1 7) (4 7) (6 5 1) (1 6 3 1) (2 7 2 1) (3 8 1 1) (4 9 1) (4 11) (4 11) (5 11) (5 11) (4 11) (4 11) (4 9 1) (3 8 1 1) (2 7 2 1) (1 6 3 1) (6 5 1) (4 7) (4 7) (3 7) (3 7) (3 7) (3 5 1) (2 2 1 1) (1 1 1 1) (2) () () ())) (quote #f)) (make-problem "19990208bFRA (9)" (quote ((2 22) (1 21) (1 22) (3 13 2 6) (1 4 4 10 2 7) (1 10 9 2 8) (1 9 2 8) (1 10 2 7) (1 16 10 2 7) (1 16 9 2 8) (1 1 1 1 1 1 1 8 2 9) (1 1 2 1 1 1 1 1 1 9 2 8) (1 1 1 1 1 1 1 1 21) (1 2 1 1 1 1 1 3 4 3) (1 1 1 1 1 3 3 12 2) (1 16 2 14 1) (1 2 12 1) (1 3 2) (1 4 3) (1 5 4) (1 6 5) (1 5 4) (1 21) (1 5 13) (1 4 3 12) (1 4 3 2) (1 16 4 3 2) (1 4 3 12) (1 5 13) (40))) (quote ((30) (1 1 1) (2 8 1 1) (1 2 1 1 1 1) (1 2 1 1 1 1) (2 8 1 1) (1 2 1 1 1) (1 2 3 1 1 1) (1 2 1 1 1) (1 8 1 1) (1 2 1 1 1) (1 6 1 1 1) (1 2 1 1 1) (1 8 1 1) (2 2 1 1 1) (1 2 1 3 1 1) (1 2 3 1 1) (2 8 1 1) (1 2 1) (30) (30) (15 13) (14 12) (13 1 5 2) (13 3 1 1 4 1) (13 3 1 4 1) (13 3 1 4 1) (10 2 3 2 2) (5 2 1 1 3 3 3) (4 2 4 3 3 3) (3 6 2 3 3 3) (5 2 1 1 3 3 3) (4 2 4 3 3 3) (3 9 3 3 3) (13 3 3 3) (13 3 1 3 3) (13 1 6 3) (14 7 3) (15 13) (30))) (quote #f)) (make-problem "19990208cFRA (10)" (quote (() () (17 18) (4 3 3 2 18) (5 2 2 3 5 8 3) (5 1 1 3 4 2 2 2) (3 2 1 1 2 1 5 2 3) (4 3 3 2 6 1 1 4) (4 1 2 6 1 2 1 4) (3 4 4 1 4 1 1 1 1 2) (6 1 1 4 4 1 1 1 1 2) (5 1 1 3 6 1 2 1 4) (5 2 2 3 6 1 1 4) (4 4 4 2 4 1 1 2) (9 7 5 2 2 2 3) (9 7 9 7) () (9 7 9 7) (4 2 2 2 7 1 1 5) (3 3 1 1 3 1 8 6) (8 6 9 7) (5 3 5 3) (5 3 5 3) (6 4 6 4) (6 4 6 4) (6 4 7 5) (6 4 7 5) (7 5 8 6) () ())) (quote (() () (14 11) (14 11) (14 11) (4 2 6 2 8) (1 3 4 2 1 9) (2 2 2 3 1 2 5) (2 1 1 3 1 2 1) (3 1 1 4 2 1) (1 3 6 3) (1 1) (1 3 6 3) (3 1 1 4 2 1) (2 1 1 3 1 2 1) (2 2 2 3 1 2 5) (1 3 4 2 1 9) (4 2 6 2 8) (14 11) () (14 11) (14 11) (14 11) (14 11) (3 3 2 2 11) (2 2 2 1 4 5) (3 2 2 4 3) (4 1 1 2 1 2 1) (4 1 2 2 1 2 1) (3 1 1 1 1) (3 1 1 1 1) (4 1 2 2 1 2 1) (4 1 1 2 1 2 1) (3 2 2 4 3) (2 2 2 1 4 5) (3 3 2 2 11) (14 11) (14 11) () ())) (quote #f)) (make-problem "19990221aFRA (11)" (quote ((33) (23 8) (21 8) (20 8) (19 8) (18 8) (2 11 8) (1 9 8) (1 3 7 8) (1 4 5 8) (1 5 3 8) (2 1 8) (10 24) (10 1 22) (8 19) (6 4 16) (4 3 6 13) (2 4 9 10) (1 4 11 7) (1 3 14 5) (1 1 17 3) (2 21) (6 1 3 1 1 5) (6 3 2 1 1 1 19) (6 1 1 1 1 1 3 1 3 1 1 1) (8 1 2 1 1 5 3 2 1 1 1 1) (6 1 3 1 1 5 1 1 1 1 1 1) (26 1 2 1 1 3) (24 1 3 1 1 3) (40))) (quote ((30) (7 7 9) (6 5 8) (6 3 5 2 8) (6 3 4 4 8) (6 3 4 3 8) (7 2 3 3 1 1 3) (8 1 3 2 2 1 1 3) (9 2 1 3 1 3) (10 2 13) (11 7 3) (12 1 8 6) (11 9 5) (10 2 10 4) (9 3 6 3) (8 5 14) (7 6 5 3) (6 8 13) (5 9 4 3) (4 11 4 1 5) (3 12 3 5) (2 14 11) (2 8 6 10) (1 8 7 10) (9 8 3 1 1) (8 12 1 1 1) (7 10 1 1 1) (6 9 7) (5 8 1 1) (4 7 2 4) (3 6 3 3) (2 5 4 2) (1 4 1 1) (3 7) (2 1 1) (1 7) (1 1 1) (1 1 3) (1 3) (7))) (quote #f)) (make-problem "19990401-JOJ (12)" (quote ((40) (40) (12 24) (9 21) (7 4 19) (6 10 18) (5 5 5 17) (4 3 4 16) (3 3 6 3 15) (2 3 3 3 3 14) (2 2 2 2 2 5 7) (2 2 3 5 2 2 4 7) (1 2 2 2 2 1 2 5 5 1) (1 1 2 2 2 2 2 4 5 1) (2 2 2 3 1 2 2 4 5 1) (2 1 1 3 1 2 2 5 3 2) (2 1 1 3 2 2 2 5 3 2) (2 2 2 5 2 2 7 1 3) (1 2 2 2 2 2 6 2) (1 2 3 3 3 3 5 4 1) (2 2 3 7 3 3 3 2 1) (2 2 3 2 3 2 8 1) (2 3 4 4 9 1) (3 3 9 12 2) (4 4 4 10 4) (5 5 11 7) (6 19 10) (8 16 11) (9 13 13) (10 15))) (quote ((14 12) (12 10) (9 4 7) (8 10 6) (7 4 5 5) (6 3 3 4) (5 3 7 3 3) (4 3 4 4 3 3) (4 2 3 3 2 2) (3 2 3 4 3 3 1) (3 2 1 2 2 2 3) (3 2 2 2 2 2 4) (2 2 1 2 2 2 2 3) (2 2 1 1 4 2 2 3) (2 2 1 1 4 2 2 3) (2 2 1 1 1 1 2 2 3) (3 2 2 2 1 1 2 3) (3 2 1 2 2 2 1 3) (3 3 2 4 2 2 4) (4 2 2 2 2 4) (4 3 3 3 2 4) (5 3 5 3 5) (6 3 2 3 5) (7 4 4 6) (8 9 5) (9 4 1 5 1) (11 3 4 1) (13 4 4 2) (21 4 2) (20 3 3) (20 4 4) (10 7 3 4) (12 4 4 4) (15 1 5 5) (17 5 5) (18 1 2 5) (17 4 6) (15 1 2 6) (12 4 7) (10 18))) (quote #f)) (make-problem "19990525aKHO (13)" (quote ((2 3 1 1 2) (9 2 3 3 4) (4 21 1) (5 2 1 5 2 2 2 2) (3 2 2 4) (4) (2) () (7) (12 5) (12 3) (2 2 3) (2 2 3) (2 2 3) (2 2 3) (2 2 3) (2 2 3) (24) (2 4 9 3 2) (2 4 10 2 1) (2 2 4 15 1) (3 3 2 1 1) (1 2 23 1) (2 8 3 16 1) (3 2 2 4 16) (11 1 2 2 9 3) (2 5 2 1 1 1 1 1 2 3) (1 1 3 1 4 1 1 7 1 1 2) (1 1 1 1 1 2 2 1 1 3) (1 1 4 2 4))) (quote ((8) (2 4 1) (3 2 2 1 1) (5 2 2 1) (5 1 3) (4 1 4) (1 1 1 3) (3 1 2 1) (4 1 1 1 1) (4 4 1) (2 5) (2 2 1) (2 2 1) (2 19) (1 16) (2 2 1 3 4) (4 2 4 1 2 2) (5 2 4 1 1 1) (3 2 4 1 1 1) (2 2 4 1 2 2) (2 2 1 3 4) (3 16) (4 12 6) (1 4 4 1) (2 4 4 1) (4 4 4 1) (4 4 4 1) (2 4 4 1) (2 4 4 1) (3 1 4 5) (2 1 2 4 2) (2 11 1 3 1 1) (4 11 1 3 1 1) (4 11 1 4 2) (2 2 1 2 5) (1 10) (2 1 4) (5 3) (2) (1))) (quote #f)) (make-problem "19990527aDRA (14)" (quote ((11 27) (10 2 25) (9 2 2 23) (8 8 21) (7 5 5 19) (6 11 19) (6 1 4 3 1 10 7) (6 3 5 2 8 2 6) (6 5 2 3 6 5 5) (6 2 4 4 4 4 3 4) (6 5 2 4 2 11 3) (6 2 5 2 1 2 4 4 3 2) (6 5 2 4 2 13 1) (6 2 5 4 2 1 4 6 1) (6 4 2 3 3 2 8 1 1) (8 5 2 4 3 5 3 1) (10 3 1 5 1 2 2 5 1) (12 1 6 5 5 1 1) (14 7 6 1 5 1) (23 6 7 1) (1 1 2 1 1 1 2 2 3 3 1) (1 3 2 1 2 1 2 1 4 4 5 1 1) (1 3 2 1 2 3 3 1 5 1) (1 3 1 2 2 1 6 4 2 5 2) (1 1 2 1 2 1 4 5 1 3 4) (29 1 6) (30 8) (40) (40) (40))) (quote ((30) (20 5) (20 3 5) (20 3 5) (30) (20 5) (5 5 1 7) (4 8 5 1 6) (3 2 8 4 2 5) (2 3 2 1 1 1 14) (1 5 8 4 5) (6 8 3 1 7) (1 5 1 1 1 2 2 1 7) (1 2 3 8 2 5) (1 4 2 8 11) (2 6 1 5) (2 5 8 2 1 7) (3 3 8 3 1 7) (3 2 4 3 4 8) (4 8 15) (4 6 1 5) (20 1 1 5) (20 1 5) (10 10) (10 1 7 9) (9 3 2 4 8) (9 4 7 7) (8 6 4 2 6) (8 2 4 7 5) (7 9 7 4) (7 5 3 3) (6 2 6 9 3) (6 9 1 3 2 4) (7 3 3 9 4) (8 6 4 3 5) (9 4 9 5) (10 3 2 3 1 6) (11 1 9 6) (12 7) (30))) (quote #f)) (make-problem "19990527eDRA (15)" (quote ((16 11 11) (17 9 12) (18 7 13) (14 4) (12 6 3 8 4) (10 19 2 4) (8 19 4 4) (7 6 4) (7 20 6 4) (7 20 6 4) (7 2 4 6 4) (7 2 12 1 1 6 4) (7 2 3 3 1 1 6 4) (7 2 2 3 4 6 4) (7 2 1 5 3 4 6 4) (7 2 1 1 1 1 3 1 1 6 4) (7 2 1 2 2 3 1 1 6 4) (7 2 1 5 4 4 6 4) (7 2 1 1 1 4 4 6 4) (7 2 2 3 5 1 1 6 4) (7 2 1 1 2 1 1 6 4) (7 2 9 1 4 6 4) (7 2 10 1 1 1 6 4) (7 2 2 5 1 1 1 1 6 4) (7 2 4 6 4) (7 20 5 4) (7 20 3 6) (7 20 1 8) (7 10) (40))) (quote ((30) (30) (30) (30) (30) (30) (30) (7 1) (6 20 1) (6 20 1) (5 1 2 3 1) (5 1 2 9 2 3 1) (4 2 2 3 1 3 3 1) (4 2 2 2 5 3 3 1) (3 3 2 1 1 2 1 3 3 1) (3 3 2 1 2 1 1 3 3 1) (2 3 2 1 1 2 1 3 3 1) (1 1 3 2 1 5 4 3 1) (2 3 2 1 1 3 3 1) (3 3 2 1 3 2 3 1) (3 2 2 9 3 3 1) (3 3 2 10 3 1) (3 3 2 13 3 1) (3 3 2 3 1) (3 2 20 1) (3 3 3 2 2 1 4 1) (2 3 3 2 2 1 4 1) (1 1 3 20 1) (2 3 1) (3 2 21 1) (3 2 20 2) (3 1 21 2) (3 1 20 3) (3 21 3) (3 20 4) (3 4) (30) (30) (30) (30))) (quote #f)) (make-problem "19990613-FRA (16)" (quote ((40) (40) (8 2 23) (18 18) (22 14) (27 12) (27 12) (3 1 11) (3 1 1 10) (3 1 2 9) (3 1 8) (3 1 3 8) (3 1 1 1 8) (3 1 3 4) (3 1 7 4) (3 7 4) (3 1 7 4) (3 4) (5 13 6 7) (4 3 11 3 4 3 6) (4 3 11 3 4 3 6) (5 13 6 7) (40) (1 4 2 2) (40) (40) (40) (40) (40) (40))) (quote ((30) (23 6) (23 6) (7 5 6) (7 1 2 6) (7 2 1 6) (7 2 1 6) (7 2 1 6) (2 4 1 2 6) (2 4 5 6) (2 4 12) (2 4 12) (7 12) (7 12) (2 4 5 6) (2 4 5 6) (2 4 5 6) (7 5 6) (3 3 5 6) (3 3 5 6) (3 3 1 2 6) (3 3 2 1 6) (4 2 2 1 6) (4 2 2 8) (4 2 1 9) (4 2 5 6) (15 1 5 6) (5 5 6) (7 2 6 5 6) (8 1 1 4 1 2 6) (9 6 2 1 6) (10 3 2 1 6) (13 3 2 1 6) (13 3 1 9) (13 3 12) (13 5 6) (23 6) (23 6) (23 6) (23 6))) (quote #f)) (make-problem "19990714aNEP (17)" (quote ((33) (2) (1 1 3 3 1 1 1 1 2 2 2 3) (1 1 1 1 1 1 1 1 1 1 1 1 1 3) (1 1 3 1 1 1 1 1 1 1 1 2 3) (1 1 1 3 3 3 1 1 1 2) (1 1 2) (26 2) (2 2) (2 3) (2 3) (2 6) (1 6) (1 6) (2 6) (2 7) (2 7) (2 7) (2 8) (2 8) (2 8) (2 8) (3 6) (2 4) (2 3) (2 2) (2 7) (2 11) (5 13) (4 14))) (quote ((1 3 4) (1 1 2 2) (1 3 2 2) (1 2 2) (1 4 2 2) (1 1 1 1 2) (1 4 1 2) (1 1 2) (1 4 1 2) (1 1 1 1 1) (1 1 1 1 2) (1 1 2) (1 4 1 2) (1 1 1 2) (1 4 1 2) (1 1 2) (1 4 1 1) (1 1 1 1) (1 4 1 1) (1 1 2) (1 4 1 1) (1 1 1 1) (1 2 1 1) (1 1 1) (1 6 1) (1 1 2) (1 1 3) (1 1 3) (1 1 5 3) (1 4 10 4) (1 3 19) (3 21) (2 20 4) (20 4) (3 11 4) (2 11 4) (1 3) (2) () ())) (quote #f)) (make-problem "19990729-DAH (18)" (quote ((16 16) (11 6 11) (9 16 9) (7 7 9 7) (5 4 3 4 5) (4 4 3 4 4) (3 3 3 3 3 3) (2 4 3 7 4 2) (1 3 3 11 3 1) (4 3 7 3 4) (3 3 7 3 3) (3 3 7 3 3) (3 3 8 3 3) (3 3 9 3 3) (3 3 9 3 3) (3 3 10 3 3) (3 3 9 3 3) (3 3 8 3 3) (3 3 8 3 3) (3 3 7 3 3) (4 3 7 3 4) (1 3 11 3 3 1) (2 4 7 3 4 2) (3 3 3 3 3 3) (4 4 3 4 4) (5 4 3 4 5) (7 9 7 7) (9 15 9) (12 6 11) (16 16))) (quote ((9 6 9) (8 10 8) (7 12 7) (6 4 4 6) (5 3 3 5) (4 4 4 4) (4 3 3 4) (3 3 3 3) (3 2 6 2 3) (2 2 10 2 2) (2 2 12 2 2) (1 2 4 4 2 2) (1 2 2 2 1 1) (1 2 2 2 2 1) (1 2 1 2 2 1) (1 2 2 4 3 2 1) (2 1 7 4 2) (2 2 15 3) (2 1 15 4) (2 2 15 1 2) (2 1 15 2 2) (4 15 1 2) (3 15 2 2) (2 4 7 1 2) (1 2 3 4 2 2 1) (1 2 2 1 2 1) (1 2 2 2 2 1) (1 2 2 2 2 1) (1 2 4 4 2 1) (2 2 12 2 2) (2 2 10 2 2) (3 2 6 2 3) (3 3 3 3) (4 3 3 4) (4 4 4 4) (5 3 3 5) (6 4 4 6) (7 12 7) (8 10 8) (9 6 9))) (quote #f)) (make-problem "19990924-KHO (19)" (quote (() (37) (31) (24) (17) (14) (21 13) (23 4) (24 3) (8 8 3) (9 10 2) (10 13 2) (11 3 2) (12 3 2) (13 3 2) (14 5 2 3) (15 6 1 3) (16 6 4) (22 7) (19 10) (16 13) (13 16) (10 19) (7 22) (4 25) (1 28) (31) (34) (37) ())) (quote (() (20) (1 19 1) (1 19 1) (1 19 1) (1 18 2) (1 18 2) (1 18 2) (2 17 3) (2 3 13 3) (2 3 12 3) (2 3 10 4) (2 3 9 4) (2 3 8 4) (2 3 6 5) (3 3 5 5) (3 3 4 5) (3 3 2 6) (3 3 2 6) (3 3 2 6) (3 3 2 7) (3 3 2 7) (4 2 1 2 7) (4 2 1 2 8) (4 1 1 2 8) (5 2 2 8) (6 3 2 9) (6 3 2 9) (6 3 2 9) (6 3 1 10) (6 3 1 10) (6 3 10) (6 6 11) (6 8 11) (6 6 11) (7 12) (9 14) (28) (28) ())) (quote #f)) (make-problem "19990928-BBA (20)" (quote ((3 2) (1 2) (3) (3) (1 2 27) (1 1 1 2 3 3 2 2 1) (3 2 1 2 1 1 3 2) (1 1 2 1 1 1 3 3) (1 1 3 3 1 1 3 1 3) (3 1 5 2 1 1 3 2 3) (5 8 8 1 5) (3 1 5 1 4 1 5) (1 1 3 1 1 2 1 5) (1 1 1 3 1 1 1 2 3) (1 1 1 1 2 1 3) (1 1 1 1 2 3) (1 3 1 1 1 1 3) (1 1 1 1 1 1 3) (1 1 1 1 1 1 1 1 3) (1 1 1 1 1 1 1 1 1 3) (2 1 1 3 15) (2 2 5 2 1 5) (1 1 1 2 3 1 1 4) (1 5 1 2 3 3 2) (1 3 1 3 2 1 1 1 1) (1 1 1 1 1 2 1 3 1) (1 6 1 7 1 1) (1 1 1 2 3 1 2 2) (1 7 1 13) (1 2 3 2 4 2 1))) (quote ((1 1) (7 1) (1 2 1 3) (4 5) (2 3 3) (1 1 1) () (26) (1 1 2) (1 3 1 7) (1 5 1 1 2 1 2) (1 7 11) (1 5 1 1 1) (2 3 1 1 5 1) (4 1 1 2 4) (1 4 2 1 2 1 3) (2 5 3 3 3 1) (3 1 1 1 1 2 1 1) (2 1 2 1 1 1 2 3) (1 1 1 1 1 3 1) (2 1 2 7 1) (3 1 9 2 5) (2 1 3 1 1 1 1) (1 11 1 3 1 2) (2 3 2 2 1 1 2) (5 6 2 2 2) (1 2 2 2 1 1 2) (3 3 3 1 3 3) (2 2 2 1 1 2) (1 5 2 1 2) (1 3 3 3 2) (1 16 1 1) (1 18 2) (26) () () () () () ())) (quote #f)) (make-problem "19991011bLLO (21)" (quote ((9) (4 2 4 3) (6 2 5 2) (5 12 4) (1 13 7) (3 3 5 3 4 2) (4 4 2 4 1 5) (1 4 8 10) (2 7 4 1 4 1) (7 4 1 6 3) (4 4 8 5 1) (2 4 1 3 4 4 1 2) (11 9 5) (3 2 6 1 5 1) (3 4 1 4 5 2 1) (1 5 5 3 1 2 1) (7 2 8) (5 1 1 1 3) (4 1 1) (4 1 1) (3 1 1) (3 1 1) (3 1 1) (3 1 1) (3 1 1 10) (3 1 1 2 2) (4 1 1 5 4 5) (5 6 1 1 2 1 1) (5 1 4 1) (8 1 1 2 2 1 1))) (quote ((7 3 1) (1 2 7) (7 2 3 1) (4 2 4 2 1) (5 6 2 4) (2 6 19) (5 22) (3 3 1 1 16) (1 6 3 1 4 3) (2 3 4 2 3 1) (1 8 6) (8 3 1 1) (2 3 9 1) (5 2 1 5) (15 1 1) (1 2 2 1 3 2 11) (8 5 2 1) (5 7 3 1) (1 2 1 2 3 12) (7 6 1) (4 3 4 1) (10 4) (2 3 4 3 1) (3 1 1 1 2 2 1) (8 2 1 1 1) (2 2 2 2 1) (1 2 1 1 1) (2 1) (2 1) (3 2) (1 3) (1 3) (3 2) (2 1) (1) (1 1) (2 1) (1 1) (2 1) (1))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k40x35 b/pkgs/games/paint-by-numbers/solution-sets/k40x35 deleted file mode 100644 index 716a64d215..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k40x35 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 40x35") (define problems (list (make-problem "19981012-TAB (1)" (quote ((12 13 13) (9 10) (12 13 13) (9 10) (13 9 14) (12 13 13) (12 13 13) (11 15 12) (11 11 12) (11 5 12) (11 1 12) (11 12) (12 13) (13 14) (14 15) (16 17) (18 19) (18 1 19) (18 19) (16 3 17) (14 3 3 15) (13 11 14) (12 6 6 13) (11 7 7 12) (11 6 6 12) (11 5 5 12) (11 4 4 12) (11 3 3 12) (12 1 1 13) (12 13) (13 14) (9 10) (12 13 13) (9 10) (12 13 13))) (quote ((35) (35) (35) (35) (35) (35) (35) (35) (35) (1 1 27 1 1) (1 1 27 1 1) (1 1 3 11 3 1 1) (1 1 9 5 1) (1 1 3 7 7 1 1) (1 1 4 5 7 1 1) (1 1 5 5 6 1 1) (1 1 5 3 6 1 1) (1 1 6 3 5 1 1) (1 1 6 5 1 1) (1 1 7 1 1 1 1 1) (1 1 6 5 1 1) (1 1 6 3 5 1 1) (1 1 5 3 6 1 1) (1 1 5 5 6 1 1) (1 1 4 5 7 1 1) (1 1 3 7 7 1 1) (1 1 9 5 1) (1 1 3 11 3 1 1) (1 1 27 1 1) (1 1 27 1 1) (35) (35) (35) (35) (35) (35) (35) (35) (35) (35))) (quote #f)) (make-problem "19981216-JTR (2)" (quote ((40) (14 10 14) (3 7 8 7 3) (2 1 1 4 8 4 2 2) (1 2 4 1 4 6 4 5 1) (2 1 4 4 4 2 1 1) (3 2 2 1 3 4 3 1 2 2 3) (2 1 2 3 1 3 2 3 1 1 1 2 1) (1 2 3 1 2 2 2 1 3 1 2 1) (2 3 2 2 1 1 2 1 1 2 2 2 2) (1 1 1 1 1 2 1 1 1 1 1 1 1 1 1) (2 6 1 1 1 1 6 1 2) (1 1 2 1 3 1 1 1 1 1 2 1) (1 1 4 2 1 2 2 6 1 1) (2 2 1 1 4 2 1 3 1 1 2) (3 3 3 1 2 1 3 2 3) (4 2 1 3 2 5 3 4) (5 2 7 2 1 3 3 5) (6 2 2 2 6) (5 7 2 7 5) (5 5 1 2 1 5 5) (5 2 1 1 1 2 1 1 5) (4 1 1 1 5 2 6 1 2 4) (4 1 4 1 1 2 1 1 4 4) (4 2 1 1 1 1 2 1 1 1 3 4) (4 1 1 2 1 1 2 2 1 2 1 1 4) (4 1 1 2 1 2 2 1 2 1 4) (4 2 1 1 1 1 1 1 2 1 2 4) (5 3 1 1 2 2 1 1 2 5) (6 1 1 1 8 1 2 1 6) (7 5 8 1 7) (8 10 8) (40) (40) (40))) (quote ((5 23) (4 5 21) (3 1 2 1 2 20) (2 3 2 2 19) (2 1 1 1 1 1 5 7) (2 1 3 1 1 1 1 3 6) (2 2 4 1 3 2 2 1 5) (2 1 2 1 1 3 3 3 4) (3 1 3 1 2 1 2 2 3) (3 2 1 5 1 1 2 3 1 3) (3 1 3 1 1 1 1 1 1 2 1 1 3) (4 1 2 2 1 1 1 1 3 2 3) (5 1 2 2 2 1 1 2 1 3) (6 1 2 1 1 1 1 6 1 3) (1 5 1 1 3 1 1 1 1 3) (2 4 1 1 2 2 2 3 3 4) (4 4 1 1 1 2 1 1 2 6) (5 3 1 2 1 1 7) (7 2 8) (10 13 6) (10 13 6) (7 2 8) (5 3 3 1 1 1 7) (4 4 1 2 1 1 2 2 6) (2 4 1 1 2 2 2 3 3 4) (1 5 1 1 1 1 1 1 1 1 3) (6 1 1 1 2 1 6 3) (5 1 2 3 1 1 1 3 3) (4 2 2 1 1 1 1 3 2 3) (3 1 1 1 1 1 1 2 2 3) (3 2 1 1 4 1 1 1 3 3) (3 1 5 1 3 1 1 1 2 3) (2 1 1 1 1 2 2 1 2 4) (2 2 2 1 1 1 1 1 1 1 1 5) (2 3 1 3 1 1 1 2 6) (2 1 1 1 3 5 7) (2 1 1 1 2 19) (3 2 1 1 20) (4 4 21) (5 23))) (quote #f)) (make-problem "19990221-JOJ (3)" (quote ((40) (5 33) (3 33) (2 6) (2 5) (2 4) (2 5 2 3) (2 6 4 2) (2 2 2 6 2) (2 2 2 2 2 3) (2 6 2 2 4) (2 5 6 5) (2 2 6 5) (2 2 2 2 4) (2 2 2 2 3) (2 2 2 2 2) (2 2) (2 3) (2 4) (2 5) (40) (40) (2 1 1 3 2 1 2 2 3 1) (1 2 5 1 2 5 2 2 1 2 1 3) (3 4 4 3 2 2 1 1 1 1 1) (1 2 6 6 2 2 2 1 2 1 3) (2 1 3 3 3 3 2 3 1) (40) (40) (10 1 2 2 1 9) (9 5 2 2 2 2 12) (10 3 2 2 2 10) (12 2 2 2 2 2 12) (9 3 2 2 2 2 9) (40))) (quote ((22 8) (24 10) (3 3 1 9) (2 2 3 8) (2 15) (1 2 8) (1 2 1 1 8) (3 2 1 1 8) (3 2 3 8) (3 10 2 1) (3 2 6 1 1 1) (3 3 5 1 1 1) (3 4 2 2 2) (3 10 3 11) (3 10 2 6 5) (3 2 2 9 1) (3 2 2 3 2 2 5) (3 6 2 1 1 8) (3 4 2 1 1 3 1) (3 2 2 3 1 3) (3 9 1 3) (3 8 2 7 1) (3 9 2 8) (3 3 2 2 6 5) (3 3 2 9 1) (3 9 3 3 5) (3 8 2 3 8) (3 2 3 2 1) (3 3 3 1 1 1) (3 9 1 1 1) (3 2 2 3 1) (3 3 11) (3 4 10) (3 5 9) (4 2 8) (5 2 16) (6 4 4 8) (7 6 5 1 1 8) (22 1 1 8) (22 3 8))) (quote #f)) (make-problem "19990420-DRA (4)" (quote ((40) (40) (40) (6 2 30) (6 29) (5 1 28) (4 1 2 27) (3 3 26) (2 5 25) (1 5 24) (1 5 5 23) (2 7 5 6 4 3) (11 5 2 1 2) (11 6 4 1) (11 4 2 1) (11 1 1 1 1 1) (11 1 1 1) (10 1 2) (9 1 2) (7 2 1 1) (6 4 3 1 1) (5 2 10 4 1) (4 5 11 5 1) (4 5 10 1 3 2) (5 4 11 2 5) (6 3 11 4 5) (7 3 11 5 5) (7 2 11 5 6) (8 2 11 5 6) (9 2 11 5 6) (12 11 4 6) (12 11 4 5) (11 13 3 6) (40) (40))) (quote ((35) (9 24) (8 23) (7 24) (6 12 11) (5 11 10) (3 10 9) (4 1 9 2 7) (4 9 3 6) (3 1 7 6 5) (4 5 5 14) (5 5 10 2) (6 5 1 2) (7 6 2) (8 6 7 3) (9 6 13) (10 4 14) (11 4 14) (11 14) (11 14) (11 14) (12 14) (12 15) (12 15) (12 15) (12 3 4) (12 3) (11 4 2) (11 11) (11 12) (11 10) (12 7 2) (13 2) (13 3 2) (12 1 5 4 3) (11 1 20) (11 3 14) (12 4 2 1 11) (13 2 12) (35))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/k40x40 b/pkgs/games/paint-by-numbers/solution-sets/k40x40 deleted file mode 100644 index 3d703fba7a..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/k40x40 +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Kajitani 40x40") (define problems (list (make-problem "19980410-KVL (1)" (quote ((40) (7 14 6 4) (6 5 3 15 3) (5 1 4 17 2) (2 2 1 5 8 8 2) (5 7 17 2) (4 17 3) (2 11 16 4) (1 2 1 1 1 2 9 12) (1 2 1 1 1 2 22) (2 11 6 8 7) (4 25) (8 29) (8 27) (9 5 5 11 2) (3 5 15 8) (10 23) (10 21) (11 6 9 3) (6 4 18) (12 8 8) (2 9 15) (13 14) (13 12) (14 2 11) (14 3 2 9) (15 2 8) (15 1 4 6) (16 5 3 5) (7 8 1 3) (1 5 8 1 2) (2 7 2) (3 10) (3 3 10) (3 3 32) () () () () ())) (quote ((35) (8 20 4) (4 2 2 10 9 3) (7 2 4 15) (6 1 1 19 2) (3 1 1 19 2) (2 3 4 7 11 2) (1 1 1 1 1 17) (1 1 2 1 1 16 3) (1 4 4 15 3) (1 4 1 1 17) (1 4 1 1 1 15) (2 3 4 1 13) (3 1 1 2 11) (6 1 1 3 9) (7 2 4 7) (2 4 2 5 5) (8 7 3) (17 2 1) (14 3 1 1) (19 1 1 1 1) (19 1 5 1) (4 15 4 1) (10 10 2 1) (21 2 2 1) (14 7 2 1 1) (1 16 4 1 1) (8 14 1) (24 1) (25 1) (25 1) (3 9 4 5 1) (2 3 16 1) (1 19 1) (1 20 1) (1 21 1) (2 11 10 1) (3 8 15 1) (31 1) (31 1))) (quote #f)) (make-problem "19980512-SDN (2)" (quote ((18) (26) (20 2) (2 9 2) (1 1 2) (2 2 2) (2 2 10 2) (1 1 18 2) (2 18 3 2) (13 2 1 2) (2 1 2) (2 1 2) (2 1 2) (2 1 2) (4 1 2) (11 1 2) (18 1 1 2) (2 8 1 1 2) (1 1 1 1 2) (2 2 1 1 2) (2 2 8 2) (1 1 16 2) (2 19 2) (13 2) (2) (2) (2) (2) (2) (13) (24) (22 2) (2 8 2) (1 1 2) (2 2 2) (2 2 11) (1 1 22) (2 21) (13) ())) (quote (() (2) (6) (2 2 2) (1 1 6 2) (1 1 2 2 6) (2 2 1 1 2 2) (8 1 1 1 1) (2 2 2 2 2 1 1) (2 2 8 2 2) (2 2 2 2 2 8) (2 2 2 2 2 2 2) (2 2 2 2 2 2) (2 2 2 2 2 2) (3 2 2 2 2 2) (2 3 3 2 2 2) (2 2 2 2 3 2) (2 2 2 3 2 2) (2 2 2 2 2 3) (2 2 2 2 2 2) (2 2 2 2 2 2) (2 2 2 2 2 2) (3 2 3 2 2 2) (2 3 2 2 2 2) (2 2 2 2 2 2) (2 2 10 2 2) (2 2 2 3 2 2) (2 2 2 2 3 2) (2 2 2 2 2 2) (2 2 2 2 2 3) (2 4 2 2 2) (2 3 2 2 2) (2 16 2 2) (2 2 2) (2 2 2) (2 2 2) (2 2 2) (2 2 2) (37) (37))) (quote #f)) (make-problem "19980716dGAS (3)" (quote ((40) (18 18) (17 17) (16 4 16) (15 6 15) (14 8 14) (13 10 13) (12 12 12) (11 5 5 11) (10 5 5 10) (9 6 6 9) (8 7 7 8) (7 8 8 7) (6 1 1 10 6) (5 2 4 15 5) (4 3 3 15 4) (3 4 1 1 16 3) (2 5 1 2 5 8 2) (1 6 3 5 8 1) (1 4 7 1) (1 6 9 8 1) (1 7 8 9 1) (2 6 19 2) (3 5 1 17 3) (4 4 2 16 4) (5 3 2 5 8 5) (6 2 2 4 6 6) (7 1 3 4 4 7) (8 2 2 2 8) (9 2 2 1 9) (10 16 10) (11 14 11) (12 12 12) (13 10 13) (14 8 14) (15 6 15) (16 4 16) (17 17) (18 18) (40))) (quote ((40) (18 18) (17 17) (16 4 16) (15 6 15) (14 8 14) (13 10 13) (12 5 6 12) (11 6 7 11) (10 1 7 10) (9 2 4 9) (8 3 2 8) (7 4 2 1 1 7) (6 5 1 9 6) (5 6 9 5) (4 7 1 1 4 4) (3 8 2 2 5 3) (2 5 1 3 3 1 6 2) (1 5 1 17 1) (1 5 5 17 1) (1 5 5 8 7 1) (1 5 5 7 7 1) (2 5 6 6 6 2) (3 14 5 5 3) (4 11 3 4 4) (5 10 4 3 5) (6 9 5 2 6) (7 8 6 1 7) (8 8 9 8) (9 8 9 9) (10 16 10) (11 14 11) (12 12 12) (13 10 13) (14 8 14) (15 6 15) (16 4 16) (17 17) (18 18) (40))) (quote #f)) (make-problem "19980828-GOS (4)" (quote (() (20) (22) (24) (26) (28) (30) (32) (34) (36) (38) (4 3 3 4 4) (3 2 2 3 3) (2 1 1 2 2 2) (2 1 3 3 3 2 3 2) (2 3 3 2 5 1 3 2) (2 8 2 5 1 3 2) (2 7 2 5 1 2 2) (2 5 2 5 1 3) (2 5 2 5 1 4) (3 4 2 5 1 6) (4 3 2 5 1 6) (6 3 2 5 1 6) (7 3 2 5 1 6) (2 3 3 2 5 1 6) (2 1 3 3 3 2 6) (2 3 3 2 6) (3 4 4 3 6) (4 5 5 4 6) (38) (36) (34) (32) (30) (28) (26) (24) (22) (20) ())) (quote (() (20) (22) (5 4 5) (5 3 5) (5 2 3 5) (6 4 4 6) (7 3 2 7) (9 4 9) (11 5 11) (38) (10 25) (10 25) (10 10) (10 10) (10 10) (10 25) (10 25) (14 14) (12 12) (11 11) (10 10 10) (10 12 10) (10 12 10) (10 12 10) (10 10 10) (11 11) (12 12) (14 14) (38) (9 9) (8 8) (7 5 7) (6 5 15) (5 3 14) (5 14) (5 14) (22) (20) ())) (quote #f)) (make-problem "19980926-JON (5)" (quote ((15 19) (16 3 17) (18 3 16) (7 6 3 4 6) (5 6 3 3 3 5 4) (4 2 7 1 3 1 4 3 3) (3 2 4 5 2 4 3 2) (3 2 4 5 2 6 4 3 1) (2 2 4 5 3 7 3 2 1) (1 2 4 5 3 8 4 3) (1 2 4 3 6 5 3 4 2) (2 3 3 6 3 2 5 1) (2 3 2 8 7 1) (2 6 6 6 2) (2 5 4 5 2) (1 5 2 5 1) (1 34 1) (1 4 4 19 4 1) (1 4 4 6 7 3 4 1) (6 3 6 6 10) (1 3 4 6 6 3 4 1) (1 3 4 5 4 4 3 2) (1 4 4 4 4 3 4 2) (2 3 4 3 7 4 2) (2 8 3 6 5 2) (2 2 8 8 1 3) (1 2 24 5) (2 1 22 4) (2 1 18 4) (1 4 3 3 4 1) (1 4 3 3 4 1) (2 5 3 3 5 2) (2 5 3 5 2) (3 5 3 5 3) (4 5 3 5 4) (5 25 5) (7 22 6) (8 17 8) (9 10) (11 4 11))) (quote ((11 11) (9 13 9) (8 5 1 7 7) (6 5 8 5 6) (5 3 14 4 5) (4 2 24 4) (4 2 12 3 5 4) (3 2 10 2 2 4 3) (3 1 5 2 11 4 2) (3 6 3 12 4 1) (3 4 3 12 3 1) (3 3 4 3 7 3) (3 2 4 1 3 4 3) (4 5 16 3) (4 6 16 3) (3 7 9 6 3) (3 2 3 7 3 3) (3 1 6 5 3 3) (1 3 8 3 3 6 1) (2 11 3 6 1) (5 7 3 6 1) (1 4 4 3 3 3 3 1) (1 3 7 5 3 3) (2 6 7 6 3) (6 5 9 6 3) (5 5 16 3) (5 4 13 3) (4 1 3 5 6 3) (3 2 3 2 8 2) (3 4 3 12 3 1) (3 6 2 8 3 4 2) (3 1 9 6 3 4 2) (3 2 10 1 4 5 3) (3 3 16 5 3) (4 3 24 4) (4 4 14 7 5) (5 4 6 7 6) (6 6 1 9 7) (7 14 9) (9 11))) (quote #f)) (make-problem "19981120-VAL (6)" (quote ((8 7) (10 2 2 2 2 2 2 2 8) (8 1 1 1 1 1 1 1 1 7) (8 7) (8 7) (40) (10 3 3 3 3 3 9) (9 1 1 1 1 1 7) (8 1 1 1 1 1 1 1 1 1 6) (7 3 3 3 3 3 3 5) (7 1 1 1 1 1 1 1 1 1 5) (7 3 3 3 4) (6 1 1 1 4) (6 3) (6 2) (5 2) (7 2 2 2 2 2 2 2 2 2 2 2) (5 1 1 1 1 1 1 1 1 1 1 1 1) (5 1) (5 1) (5 1 2) (5 1 1 2 3) (5 2 2 8) (6 4 4 8) (6 3 2 2 3 8) (6 3 1 1 3 8) (7 4 4 8) (7 1 8) (7 4 4 8) (8 3 1 1 3 9) (8 3 2 2 3 9) (9 4 4 10) (9 2 2 10) (9 1 1 11) (10 11) (11 12) (12 13) (13 14) (15 15) (17 17))) (quote ((40) (40) (40) (40) (40) (15 1 17) (12 1 14) (9 1 11) (1 3 1 9) (1 2 1 1 6) (1 1 3 1 5) (1 2 1 1 1 4) (1 4 3 1 3) (1 2 1 1 1 1 1 2) (1 1 3 1 2 2 2) (1 2 1 1 4 4 1) (1 3 1 3 2 2 3 1) (1 2 1 1 3 1 1 3) (1 1 3 1 4 4) (1 2 1 1 1 1) (1 4 3 1 4 4) (1 2 1 1 1 3 1 1 3) (1 1 3 1 3 2 2 3) (1 2 1 1 4 4 1) (1 3 1 2 2 1) (1 2 1 1 1 1 2) (1 1 3 1 3) (1 2 1 1 1 4) (1 4 3 1 5) (1 2 1 1 1 7) (1 1 3 1 9) (1 2 1 1 11) (1 2 1 20) (8 1 19) (9 1 18) (11 1 18) (13 1 18) (14 1 19) (17 20) (40))) (quote #f)) (make-problem "19981207-JTR (7)" (quote ((1) (1) (1 1 1 1) (1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 2 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 4 1 1 1 1 1 1 1) (1 1 1 1 1 3 4 3 1 1 1 1 1) (1 1 1 3 3 4 3 3 1 1 1) (1 3 3 3 4 3 3 3 1) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 3 4 3 3 3 3) (3 3 3 4 4 4 3 3 3) (3 3 3 16 3 3 3) (3 3 4 14 4 3 3) (3 4 4 12 4 4 3) (4 4 4 4 4 4 4) (4 4 18 4 4) (4 4 16 4 4) (4 4 14 4 4) (4 4 4 4 4) (4 20 4) (4 18 4) (4 16 4) (4 4 4) (22) (20) (18) (4) (4) (4) (14) (22) (30))) (quote ((3 12) (2 14) (3 14) (4) (3 12 4) (2 14 4 1) (3 14 4 1) (4 4 1) (3 12 4 4 1) (2 14 4 4 2) (3 14 4 4 2) (4 4 4 2) (3 12 4 4 3 2) (2 14 4 3 3 3) (3 14 3 3 3 3) (4 3 3 3 3) (3 3 3 3 3) (3 3 3 3 3) (3 33) (1 34) (2 34) (4 33) (3 3 3 3 3) (3 3 3 3 3) (4 3 3 3 3) (3 14 3 3 3 3) (2 14 4 3 3 3) (3 12 4 4 3 2) (4 4 4 2) (3 14 4 4 2) (2 14 4 4 2) (3 12 4 4 1) (4 4 1) (3 14 4 1) (2 14 4 1) (3 12 4) (4) (3 14) (2 14) (3 12))) (quote #f)) (make-problem "19981221-SDN (8)" (quote (() (6 2 2 2 2 6) (6 2 2 2 2 6) (2 2 2 2 2 2) (2 2 2 2 2 2) (5 2 7 2 6) (5 2 7 2 6) (2 2 2 2 2) (2 3 2 2 2 2) (6 3 2 2 2 6) (6 3 2 2 2 6) () () () (6 6 2 6 6) (6 6 2 6 6) (2 2 2 2 2 2) (2 2 2 2 2 2) (6 6 6 6 5) (6 6 6 6 5) (2 2 2 2 2 2) (2 2 2 2 2 2) (2 6 6 6 6) (2 6 6 6 6) () () () (6 6 1) (6 6 11) (2 2 2 6 11) (2 2 2 6 1 2 2) (6 6 2 2) (6 6 2 2) (2 2 6 2 2) (2 2 6 2 2) (6 2 2 2) (6 2) () () ())) (quote (() (2 2 6 6 2) (2 2 2 6 6 2) (2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2) (10 10 2 6) (10 10 2 6) () () (3 2 6 6) (3 2 6 6) (3 2 2 2 2 2) (2 2 2 2 2) (6 2 10) (10 6 2 10) (10) () (10 2 2) (6 10 2 2) (6 2 2 2 2) (2 2 2 2 2) (2 6 2 2) (2 6 2 2) (10) (10) (6 2) (6 2 2) (10 2 2 2 2) (10 2 2 2 2) (2 6 8) (2 6 8) (6 2 2) (6 2 2) (2 2 2 2 2 8) (2 2 2 2 2 2 8) (2 6 2 2 2 2) (2 6 2 2 2 2) (10 2) (10) ())) (quote #f)) (make-problem "19981223aBAU (9)" (quote ((1 4) (2 6) (3 7 2) (4 4 4 4 4) (3 7 5 2 4 7 2) (6 2 7 5 8) (2 5 9 1 2 6) (3 2 9 3) (1 11 2) (1 13 1) (4 13 1) (5 15 3) (4 1 15 5) (3 3 15 6) (2 2 1 15 1 2 3) (3 1 15 10) (2 1 13 1 1 5) (1 2 1 2 2 4) (1 6 1 1 1 2 2 4) (20 5) (25 4) (5 21 3) (7 20 3) (3 1 6 8 4 4) (4 4 1 13 4) (1 1 7 2 2 1 3 3) (3 4 1 5 5 2) (1 1 6 2 2 1 2 1) (4 3 2 4 5 3) (4 6 4 4 4) (3 3 2 2 2 2 1 5) (3 6 5 7) (3 2 2 2 2 1 3) (2 4 5 3) (1 3 1 5) (6 4) (4 5) (4 5) (3 2) (1))) (quote ((3 5 3) (3 4 4 5) (3 2 1 14) (4 4 5 1 2 3) (5 2 1 4 5 2) (1 1 4 5 2) (4 2 1 2 1 3 4) (4 6 5 6 3) (4 2 1 4 8 4) (2 3 5 10 8) (5 8 12 5) (2 18 5 1 1) (1 18 2 5) (12 7 2) (13 6) (13 4) (19) (13 5) (13 8) (12 9) (19 5) (1 19 4) (5 8 11 2) (4 2 5 6 8) (3 6 1 5 2 2) (7 5 3 1 4) (3 1 3 1 6 4) (5 5 4 1 4) (6 4 7 4) (3 2 2 2 4 3 3) (4 3 1 8 2) (3 4 4 2 2) (3 3 1 4 1 2) (3 4 3 1) (3 3 1 2 4) (3 4 3 3) (3 4 3 3) (2 7 3) (2 7 3) (1 4 3))) (quote #f)) (make-problem "19981223bBAU (10)" (quote ((5 11) (8 6 6) (2 6 7 8) (3 8 2 12 2) (12 3 4 5 3 3) (5 5 8 3 2 5) (6 4 9 1 8) (9 16 8) (6 2 12 9) (3 4 9 9) (9 5 2 7) (8 6 6) (6 12 3) (5 6 10 2) (2 5 7 11) (2 5 8 9) (2 6 9 6) (3 8 16) (2 9 1 5) (2 9 2 2) (2 9 4 3) (2 9 14) (3 1 3 1 18) (3 7 11 6) (1 1 5 9 8) (1 1 3 7 10) (4 1 12) (4 1 5 5 1) (4 1 8 3 3) (4 1 10 5) (5 2 8 3 5) (3 1 1 1 1 5 4 5) (2 3 2 4 6 5) (1 3 3 12 6) (7 8 7 2 3) (16 7 3 2) (6 8 3 8) (4 7 2 8) (2 7 2 7) (9 8))) (quote ((4 15) (7 8 8) (8 3 11 2) (2 7 2 5 3) (2 7 1 1 6) (3 1 5 8) (5 2 2 4 8) (6 1 2 7 4 1) (5 5 6 2 1 3 1) (5 5 11 1 1 2) (5 22 5) (5 17 1 6) (1 2 12 2 6) (2 2 13 7) (1 2 3 5 8) (5 9) (5 2 4) (5 8 5 3) (7 5 5 8) (7 5 5 7) (8 6 5 7) (9 7 5 5 1) (2 6 8 5 4 1) (3 4 14 2 3) (5 3 1 4 6 2 5) (6 2 2 2 6 10) (8 4 1 5 10) (6 5 1 5 7 1) (1 2 7 3 1 4 2) (1 2 7 2 2 3 3) (4 8 2 3 5) (6 10 6 4) (10 6 6 5) (5 5 4 7 6) (4 6 3 7 6) (2 7 2 12 2) (13 4 6 2) (11 3 9) (9 2 8) (7 8))) (quote #f)) (make-problem "19990208-ELS (11)" (quote ((2 2 2 1 2 2) (4 4 2 1 2 4) (1 1 1 2 1 2 6) (1 2 1 2 1 2 2 8) (1 2 1 2 1 2 1 2 10) (1 1 1 2 1 2 1 1) (11 2 1 2 1 2 2 1) (1 1 1 2 2 1 2 2 1) (1 2 1 2 1 2 1 2 1 1) (1 2 1 2 1 2 1 2 1 2 1) (1 1 1 1 1 2 1 2 1) (11 2 2 10) (2 1 3) (2 1 1 2) (12 1 1 13) (20 1 12) (1) (1) (1) (4 3 3 3) (3 3 3 4) (1) (1) (1) (12 1 20) (13 1 1 13) (2 1 1 2) (2 1 2 3 1 2 1 1) (2 2 2 2 2 1 1 3) (2 2 2 2 1 2 1 5) (1 2 2 1 2 1 2 1 1 5) (1 2 3 2 1 2 1 1 1) (3 2 2 2 2 2 1 1 1 1 1) (7 2 2 1 2 5 1 1 1) (2 10 2 1 2 1 1 1 1) (6 1 2 1 2 1 1 1 1 1 1 1) (4 2 2 1 1 1 1 1) (4 2 1 2 1 1 1 1 1 1) (4 2 1 2 1 1 1 1 1) (6 2 1 2 1 1 1 1 1 1 1))) (quote ((2 1 2 1 1) (10 2 1 2 5) (1 1 1 2 1 2 1 2) (2 2 1 2 1 2 2 3 2) (2 2 1 2 1 2 1 2 3 3 1) (1 1 1 2 1 2 10) (10 2 1 2 1 9) (1 1 1 2 2 3 7) (2 2 1 2 1 2 1 2 2 6) (2 2 1 2 1 2 1 2 1 2 3 1) (1 1 1 2 1 2 2 4) (10 3 2 5 2) (2 1 1 2 1 1) (2 1 1 2) (12 1 1 13) (10 1 20) (1) (1) (1) (3 3 3 4) (4 3 3 3) (1) (1) (1) (20 1 12) (13 1 1 13) (2 1 1 2) (2 1 3 7) (8 2 2 2) (2 1 2 1 2 2 1 1 1) (3 2 1 2 1 2 1) (4 2 1 2 1 2 11) (5 3 2 2 1) (5 3 2 1 2 1 1 1 1 1 1) (4 2 1 2 1 2 1) (3 2 1 2 1 2 11) (2 1 2 2 3) (8 2 1 2 4 2 2 2) (2 1 2 3) (2 1 2 11))) (quote #f)) (make-problem "19990219-JOJ (12)" (quote (() () () () (3) (5 3) (5 6) (6 8) (7 8) (7 8) (9 10) (11 12) (12 14) (29) (21 11) (18 12) (18 14) (34) (20 8) (16 1) (15 2) (21) (3 6 2 1 3) (5 2 3 1 2) (3 6 2 2 1 2) (2 1 4 4 2 3 1 3) (2 1 2 5 1 1 1 1 1) (3 1 3 3 1 3 1) (1 1 1 1 1 3 13) (1 3 1 4 1 3 1) (16 3 1 1 1 1 1) (1 3 1 4 3 1 3) (1 1 1 1 1 4 2 1 2) (3 1 3 2 1 2) (2 1 2 3) (2 1 2) (3) () () ())) (quote (() (3) (5 3) (6 2 1 2) (6 2 1 2) (7 3 1 3) (8 1 1 1 1 1) (9 1 3 1) (12 13) (12 1 3 1) (13 1 1 1 1 1) (14 3 1 3) (15 3 1 2) (17 2 2 1 2) (21 3) (21 1) (22 1) (22 1) (20) (2 2 3 6) (2 2 1 7) (2 2 1 2 4) (3 2 1 2 2) (2 2 1 2 2) (7 3) (10 2) (11 1 3) (15 2 1 2) (13 6 1 2) (14 3 1 3) (14 1 1 1 1 1) (14 1 3 1) (13 13) (3 8 1 3 1) (1 8 1 1 1 1 1) (2 2 3 1 3) (2 1 2) (2 1 2) (3) ())) (quote #f)) (make-problem "19990222-JOJ (13)" (quote (() () () (22) (2 1 2) (2 2) (2 1 2) (2 1 2) (2 2 2) (2 1 4 1 2) (1 1 2 6 2 2) (2 2 2 2 8 2) (7 2 12 2) (7 2 11 2) (9 2 6 2 2) (7 2 2 3 1 2) (11 2 1 2) (11 2 2) (10 2 2) (6 10) (6 4 22) (6 6 2 22) (4 8 2 22) (2 11 2) (2 11 2) (2 10 2) (2 10 2) (2 10 2) (2 10 3 2) (2 10 4 2) (2 10 2 2) (2 10 2 2) (2 10 2 2) (2 8 3 2) (2 8 3 2) (2 2 7 2) (2 2 3 2) (2 2 2 2) (2 2 2 2) (2 3 3 2))) (quote ((3) (20) (20) (3) (2) (5 2 10 1) (7 18) (10 19) (24) (23) (26) (25) (3 4 19) (5 18) (4 10 2 1) (2 4 2) (2 3) (3) (1 5 3 3) (2 8 3 2) (3 2 3 3 2) (1 3 2 3 2) (1 1 1 2 3 2) (2 1 1 3 2) (1 1 3 4) (1 5 4) (1 2 3 4) (1 7 4) (1 8 4) (1 10 4) (1 5 4) (1 3 4) (1 3 4) (1 5 4) (1 7 1 3) (1 1 2 3) (1 3 2 3) (3 2 3 20) (2 8 20) (1 5 3))) (quote #f)) (make-problem "19990402-JOJ (14)" (quote ((12 3 20) (1 11 2 2 4 12) (10 2 2 3 3 11) (11 2 2 1 1 10) (11 2 6 1 9) (8 2 7 1 9) (1 8 2 2 3 1 9) (1 7 2 2 2 1 9) (6 2 2 3 10) (9 2 2 11) (5 2 2 10) (1 5 2 2 10) (1 4 2 2 9) (4 2 2 8) (6 2 2 8) (1 3 2 2 7) (3 2 2 6) (2 2 2 5) (1 2 2 3 2 5) (4 2 2 2 6) (2 2 2 6) (1 4 2 7) (2 1 2 2 6) (5 2 3 4) (5 3 3) (6 1 3) (6 3 3) (7 5 2) (8 5 2) (9 1 5 2) (10 3 3 3) (11 2 2 3) (11 3 2 4) (12 3 3 5) (13 4 4 6) (14 6 8) (15 1 1 6) (17 7 4) (18 5 6 3) (19 6 3 2))) (quote ((1 1 1 3 17) (1 2 2 1 2 2 3 18) (2 1 1 1 19) (20 1 17) (19 2 17) (17 3 15) (14 3 13) (12 6 12) (10 5 11) (8 4 10) (7 4 9) (4 3 7) (3 4 6) (2 4 5) (1 2 4) (2 3) (2 1 3) (1 3 2) (8 1) (5) (1 2) (3 2) (3 2 1) (3 3 5 2) (2 1 2 2 7 2) (1 1 2 2 2 5 2) (1 1 3 1 2 2 3) (1 1 4 5) (2 1 1 3 2 1 1) (3 4 1 3 2 1) (4 4 3 2 1 2) (13 2 5 2 2) (15 5 1 3 1 1 2) (16 2 1 2 5 2 1 1) (17 4 1 7 3 2) (23 8 4 2) (24 3 6 1) (27 9) (40) (40))) (quote #f)) (make-problem "19990414-JOJ (15)" (quote ((1 1 9 14 4 3) (1 1 5 17 5 1 1) (1 4 21 3 1 1) (1 3 25 1 1 1) (1 3 26 1 3) (2 20 5 1) (1 1 17 2 3 1 3) (1 1 1 15 2 1 2 3 1 1) (3 14 1 2 3 3 3) (1 1 14 1 2 4 3 1 1) (1 1 15 1 2 2 2 3 1 1) (8 3 2 4 3) (3 7 8 3 3) (1 1 5 2 3 2 1 1) (3 2 2 1 3 2 2 3) (1 1 1 2 2 3 2 2 1 1) (3 3 2 2 2 2 3 3) (3 2 2 2 2 4) (3 3 2 2 6 5 3) (1 1 3 2 1 2 2 4 1 1) (3 3 2 2 3 3 3) (1 1 2 2 2 2 2 1 1) (3 1 3 2 2 1 3) (1 3 3 2) (1 4 6 2 3) (1 1 5 4 2 2 1 1) (3 6 4 2 2 1 3) (1 1 1 7 1 2 2 1 1 1) (1 1 1 8 2 2 1 1) (1 3 6 2 3) (4 2 7 2 6) (4 2 8 3 6) (3 2 7 2 7) (3 2 3 7 3 7) (3 2 2 2 6 3 6) (2 2 2 2 7 2 2 5) (2 2 2 2 7 2 5) (2 2 2 2 2 4 2 4) (2 2 2 5 2 6 2 3) (2 2 2 3 4 7 2 3))) (quote ((2 4 5 5 4 10) (3 1 1 1 1 1 1 1 1 1 1 10) (2 4 5 5 4 5) (3 4) (8 4 9 2 7) (6 7 6 3 7) (5 9 5 11) (3 9 9 6) (2 26 7) (1 19 5 1) (1 11 5 2) (1 10 2 5 2) (1 9 4 5 2) (10 2 2 5 2) (10 4 2) (10 4 1) (11 4 2) (12 4 3) (9 2 4 2) (8 4 1) (8 1 3) (7 2 3 1) (7 3 3 2 2 2) (6 1 1 3 2 2 2) (6 1 4 3 2 2 1) (6 3 2 3 2 2) (6 3 2 1 2 2 1 2) (5 1 3 1 2 1 1 4) (5 1 4 2 6 5) (6 3 2 4 4 7) (1 8 2 2 1 2 4 3) (1 4 3 5 1 2 1 7 2) (2 4 3 3 2 6 2 1) (3 2 6 5 6 2 3) (3 15 3 7 3) (23 11 2) (9) (5 5 5 5 5 10) (1 1 1 1 1 1 1 1 1 1 1 1 10) (5 5 5 5 5 10))) (quote #f)) (make-problem "19990418-DRA (16)" (quote (() (38) (18 19) (17 1 18) (15 3 17) (13 6 16) (12 9 1 13) (10 11 1 11) (9 1 2 8 2 10) (6 2 1 2 1 3 2 9) (6 5 5 3 2 3 8) (6 4 5 5 1 4 7) (7 2 6 1 4 5 7) (6 3 7 1 4 4 7) (5 3 6 2 5 2 8) (5 4 5 1 1 4 2 9) (6 4 4 3 3 2 9) (6 4 6 1 3 2 10) (7 2 1 5 3 3 10) (8 1 2 3 1 2 2 11) (9 3 2 1 13) (10 2 1 4 14) (11 1 2 1 2 15) (12 1 1 16) (15 1 18) (11 1 19) (10 1 4 16) (10 2 3 15) (16 13) (12 3 3 12) (11 4 12) (10 2 7 12) (10 3 21) (10 5 3 16) (16 2 15) (16 1 1 14) (16 4 14) (16 6 14) (16 21) ())) (quote (() (38) (38) (38) (38) (38) (13 23) (8 1 2 21) (8 2 5 20) (8 9 19) (7 5 5 18) (6 4 1 2 4 3 5) (6 1 4 4 2 2 6) (5 3 7 4 1 1 6) (4 3 9 1 1 2 7) (4 2 11 2 1 3 8) (3 3 11 2 4 8) (3 4 4 3) (2 5 1 1 1 2 4 7 2) (1 7 2 1 1 2 2 2 6 3) (2 5 2 5 2 3 5 4) (3 4 3 1 2 2 3 3 3) (4 3 6 3 2 2 2 3) (5 3 8 2 4 3 2) (6 3 6 1 6 4 1) (5 1 3 4 2 7 7) (6 1 1 1 2 9 7) (6 6 4 19) (7 8 20) (8 5 22) (9 3 24) (10 25) (38) (38) (38) (38) (38) (38) (38) ())) (quote #f)) (make-problem "19990422-VOL (17)" (quote (() () () () () (1 1 1 1 1 1) (3 1 1 3 3 3 3) (1 3 1 5 1 3 2 2 2 2 2 2) (10 6 1 18) (3 3 4 6 1 2 5 2 2 1) (15 3 6 11) (1 4 4 5 1 1 7 2 3) (19 8 2 5) (2 2 4 2 5 2 2 1 7 1) (7 8 2 7 9) (19 3 3 5 3) (3 3 2 1 1 2 1 7 7 1) (1 3 13 1 6 2 5) (7 3 3 1 1 5 3 4 1) (19 18) () (19 18) (1 1 1 9 3 2 5 2 3 2) (1 1 3 3 5 1 6 11) (1 1 1 13 10 7) (1 15 3 3 8 1) (7 1 2 2 5 8 3) (1 1 2 4 1 9 6) (1 5 3 7 10) (1 3 1 1 1 1 1 2 5 4 2 4) (1 5 3 15 2) (8 4 3 4 9) (1 5 3 1 10 2 4) (1 1 2 12 6 11) (1 1 10 4 2 15) (1 7 7 4 7 2 2) (15 3 18) (5 2 4 5 1 5 2 5 1) (19 18) ())) (quote (() (13 18) (3 5 2 1 1 1 3) (6 6 4 1 1 2 2 3) (3 6 3 1 1 4 3) (15 18) (1 5 3 2 1 1 2 9 1) (4 8 8 3 5) (1 4 1 1 1 2 2 1 1 8) (13 6 5 1) (14 5 1 6) (1 1 4 2 3 5 6) (5 6 1 2 2 1 2 3) (2 6 3 5 6) (5 6 5 1 4 1) (9 3 6 2 4) (1 2 7 1 1 5 1 5 2) (9 5 5 2 9) (2 2 4 1 1 2 8 6) (13 18) () (13 18) (3 1 5 2 6 9 1) (2 5 6 1 11 4) (9 4 4 5 7) (2 10 14 3) (5 4 1 5 2 9) (3 9 2 9 5) (7 3 4 2 8 1) (2 4 2 1 8 7) (5 4 1 18) (2 1 6 1 3 4 2 4 1) (3 6 1 1 4 11) (5 4 2 14 3) (3 10 8 2 6) (2 3 3 4 5 12) (14 1 7 4 3) (2 3 2 1 1 4 11 1) (12 18) ())) (quote #f)) (make-problem "19990503-DRA (18)" (quote ((7 23) (5 10 21) (4 14 20) (3 6 4 19) (2 6 4 1 4 18) (1 6 7 4 17) (1 2 6 5 16) (1 1 2 2 4 6 15) (1 1 9 4 14) (1 5 10 5 13) (1 4 6 5 4 12) (1 3 5 1 4 1 5 11) (1 2 1 2 1 4 10) (1 3 7 3 5 5 9) (1 13 6 2 3 8) (1 13 4 2 1 4 7) (1 13 5 6 3 6) (1 12 6 5 4 5) (1 7 1 3 4 1 3 4) (2 6 2 2 3 7 4 3) (2 6 9 2 2 3 3 2) (2 16 3 3 3 4 1) (2 16 5 3 2 1) (2 17 1 2 3 1 2 1) (3 15 12 1 2 1) (3 14 15 1 1) (3 14 9 3 2 1 1) (3 14 8 2 1 1 1) (4 14 4 2 4 2 1) (4 16 2 4 3 1 2 1) (4 10 1 1 7 1 3 1) (5 8 7 1 3 2) (5 8 7 7 3 3) (6 14 7 4 3) (7 3 7 5 6 3) (8 3 4 8 4) (9 3 6 9 5) (10 4 11 6) (11 20 7) (12 8))) (quote ((40) (5 21) (4 13 16) (3 3 15 12) (2 3 3 15 9) (1 4 2 17 7) (1 4 1 1 19 6) (5 1 1 21 5) (4 2 2 22 4) (3 1 4 6 15 3) (2 8 5 17 2) (2 7 5 15 3 1) (2 3 4 5 15 3) (2 7 6 15 2) (2 5 1 3 11 2 2) (2 10 10 3 1 1) (3 10 11 3 1 1) (1 3 3 5 11 3 1 1) (1 6 2 5 5 2 3 1 1) (2 5 1 5 1 1 1 3 1 1) (3 4 4 6 2 1 2 2 1) (4 5 2 6 5 1 1 2 1) (5 4 1 3 2 6 3 2) (6 5 4 1 9 4 2) (7 4 9 5 4 2) (8 5 12 6 3) (9 4 5 1 11 3) (10 3 4 10 4) (11 4 1 2 6 5 4) (12 3 8 3 4) (13 4 7 4 5) (14 3 1 7 5) (15 4 6 1 5 1) (16 3 1 1 1 5 2) (17 4 4 1 5 3) (18 3 2 5 4) (19 5 4 5) (20 10 8) (21 9) (40))) (quote #f)) (make-problem "19990509-JOJ (19)" (quote ((16) (7 5) (4 3) (4 2) (3 2) (3 1) (2 1) (2 2) (2 3 2) (2 4 3) (2 9) (1 1) (2 7) (1 7 6) (1 5 4) (2 3 2) (2 2) (2 5 3 1) (1 8 5 2) (1 16 6) (1 5 4 4 2) (1 4 2 2 4 1) (1 4 1 1 6) (1 6 3 1 3 8) (2 8 2 1 2 9) (2 10 3 9 1) (2 3 25 2) (2 7 17 3 2) (2 9 18 1 1) (1 3 29 1) (1 3 1 5 12 7 1) (1 3 3 3 14 5 2) (1 4 6 1 10 1 5 2) (1 4 8 8 2) (2 7 6 4 7 3) (3 3 7 4 6 3) (4 1 6 6 4) (8 14 4) (4 6 4) (5 5))) (quote ((11 8) (6 5 3) (4 2 3 2) (4 6 2) (4 8 2) (3 4 3 1) (3 3 1 3 1) (2 3 3 2 1) (2 3 2 2 2) (2 1 4 3 3) (2 2 8 3) (2 1 3 6 1 2) (1 1 4 8 1) (2 2 9 5 1) (2 1 10 6 1) (2 1 11 1 5) (2 2 14 5) (1 2 4 9 5) (1 1 1 4 8 2) (1 1 1 3 1 7 1 2) (1 2 1 3 2 7 2 2) (1 1 2 3 2 7 2 2) (1 2 2 4 7 2 2) (1 2 1 4 8 1 2) (1 1 1 14 2) (1 1 2 3 8 3) (2 4 3 1 7 4 1) (2 1 2 3 2 6 4 1) (2 1 1 3 2 4 1 4 1) (1 1 2 3 5 4 2) (2 2 2 4 3 3 3 2) (1 1 1 2 4 6 2) (2 2 2 1 6 6 2) (2 2 2 1 7 5 2) (4 4 7 5 2) (2 6 4 2) (1 6 3 3) (1 4 3) (2 2 2 4) (2 8))) (quote #f)) (make-problem "19990518-MNT (20)" (quote ((11 10 15) (10 14 14) (9 2 2 12) (8 2 3 11) (7 2 3 10) (6 2 2 9) (6 2 2 8) (6 2 2 7) (6 2 2 6) (6 4 2 5) (7 3 3 4) (8 8 2 4) (9 7 3 3) (9 2 2 3) (12 8 5 2 3) (12 9 6 2 3) (11 4 5 9 3) (10 1 3 6 9 3) (8 1 1 1 1 2 1 3) (8 6 2 4 5 4 2) (8 7 2 2 4 1 1 1) (7 6 1 1 4 1 4 1) (7 7 1 1 4 2 1 1) (3 2 1 1 9 1 1) (2 11 1 1 8 1 1 1) (1 12 3 2 1 7 4 1) (1 13 3 4 6 5 1) (1 14 1 12 1) (1 31 2) (1 22 11 1) (1 9 11 6 1 4) (3 12 4 1 5) (9 13 8 5) (9 3 9 8 6) (9 4 6 9 7) (10 5 4 9 7) (11 5 9 8) (12 5 9 10) (13 14 11) (14 11 12))) (quote ((40) (25 9) (24 4 9) (23 5 8) (23 7 8) (23 7 8) (5 13 7 8) (4 5 10 7 8) (3 7 6 1 7 8) (2 2 3 4 4 7 5) (1 2 4 3 5 7 2 4) (2 2 2 1 4 7 4 3) (1 2 1 4 7 5 2) (2 6 11 2 4 1) (2 6 15 4) (2 2 3 1 1 7 4) (2 2 2 1 1 1 7 4) (2 2 1 1 2 8 3) (2 2 1 1 2 8 2) (2 3 1 6 9 2) (2 4 1 1 8 3) (2 3 1 2 7 4) (2 2 1 2 6 5) (1 3 2 1 5 6) (2 2 1 6 2 2 7) (1 2 2 2 3 8) (2 2 2 12 8) (2 2 4 12 7) (3 2 4 19 1) (4 2 2 18 2) (5 2 2 1 13 3) (6 2 3 1 12 3) (7 3 3 1 4 3 1 4) (8 4 2 1 4 2 3 6) (9 8 1 1 1 3 1 7) (10 8 1 4 1 9) (12 1 2 2 1 10) (19 1 4 1 10) (20 1 1 10) (21 5 11))) (quote #f)) (make-problem "19990525-DRA (21)" (quote ((1) (3 1 1 3 3 1 1 3 2 3 1) (1 1 3 1 1 1 2 1 1 1 1 1 1 1 1) (1 1 1 1 1 3 1 2 3 1 1 3) (3 1 1 3 1 1 1 1 1 1 3 1 1 1) () () (1) (3) (5) (7) (11) (11) (11) (11) (11) (4 11 4) (5 11 5) (6 11 6) (7 11 7) (27) (27) (25) (23) (23) (23) (25) (25) (19) (11) (13) (15) (1) (1) (1) (1) (1) () () ())) (quote (() (4) (1 1) (4) () (4) (1) (4 6) (7 2) (12) (12) (4 12) (1 1 11) (1 1 10 1) (9 2) (4 21) (1 1 21) (4 22) (23) (4 24) (1 30) (1 24) (4 23) (22) (4 21) (1 1 21) (4 9 2) (10 1) (4 11) (1 1 12) (3 12) (12) (4 7 2) (1 1 6) (4) () () (3 1) () ())) (quote #f)) (make-problem "19990527bDRA (22)" (quote ((40) (40) (40) (21 16) (8 14 3 11) (6 10 5 2 2 8) (2 2 12 5 1 1 9) (2 2 5 6 5 9) (2 3 2 2 2 1 7 11) (2 1 2 2 3 2 4 4 6) (2 3 3 4 4 3 7) (4 2 2 3 4 2 8) (4 5 2 3 3 3 4 3) (4 4 2 2 5 2 5 3) (6 4 2 5 4 1 3) (3 2 4 2 3 3 4 1 3) (2 4 2 2 2 2 6 1 3) (4 4 2 2 1 1 7 1 3) (6 2 2 2 2 2 4 4) (6 2 2 4 2 3 5) (8 2 5 1 2 6) (9 1 3 5 2 1 4 3) (10 1 2 2 2 5 2) (3 5 2 2 1 3 5 3) (4 2 2 3 2 3 6) (6 1 1 3 2 2 8) (7 3 3 1 9) (6 7 3 2 2 4) (5 9 3 2 2 1 5) (4 11 1 1 5 6) (16 1 5 7) (17 2 7 4) (17 1 8 5) (17 1 15) (16 1 15) (16 2 15) (15 1 14) (13 15) (12 13) (40))) (quote ((40) (40) (6 5 23) (9 4 6 16) (10 3 6 4 10) (6 1 2 3 6 3 11) (5 3 2 5 1 12) (5 5 2 2 5 13) (4 6 3 2 3 14) (8 4 3 1 15) (11 3 1 14) (12 5 3 13) (7 3 5 2 11 1) (9 2 3 2 10 1) (11 1 3 9 1) (8 2 4 5 7 1) (8 3 4 3 3 1) (9 3 4 1 1) (5 2 5 3 6 1 1) (6 5 5 3 4 1) (10 9 2 1) (3 6 2 3 1) (3 5 4 2 1) (3 13 3 2 1) (4 6 4 5 3 1 1) (5 4 3 5 7 1 1) (6 3 1 2 9 1) (7 2 1 11) (4 2 3 1 4 10) (7 6 3 2 3 9) (6 5 6 2 2 9) (5 5 7 2 3 9) (10 4 3 3 2 8) (9 5 3 2 4 1 7) (14 3 4 2 7) (18 4 3 3 8) (12 3 16) (22 17) (40) (40))) (quote #f)) (make-problem "19990529bDRA (23)" (quote (() (9) (13) (11 5) (14 5) (16 5) (22) (3 3 1 12) (2 2 6) (2 6) (5 8 6) (2 2 1 1 1 1) (4 1 6) (2 1 1 2 7) (3 1 2 1 1 7) (5 2 3 1 7) (1 4 5 2 4) (2 2 1 6) (2 2 2) (1 3) (1 2 2) (1 1 1 2) (1 7 4) (2 3 1 2) (1 4) (2 4) (2 2 2) (2 2 2) (3 3 4) (8 2 2) (2 2 4) (8 2 7) (6 2 2 9) (8 2 2 11) (10 2 2 12) (12 2 2 14) (14 4 15) (15 16) (35) (35))) (quote (() () (4) (5) (6) (7) (7 8) (4 3 9) (11 2 9) (12 2 9) (4 1 1 2 2 9) (4 1 1 1 1 1 1 9) (5 1 2 2 2 2 1 7) (7 2 1 2 4 6) (7 3 1 2 5 5) (6 4 2 3 1 2 4) (6 2 1 1 2 3) (7 1 1 1 1 2 2) (6 1 3 1 1 2) (7 1 1 2 2 1 2) (7 1 1 1 1 2 2) (7 1 3 2 2 3) (2 4 1 1 2 2 4) (3 3 2 2 2 5) (3 2 3 2 6) (8 4 1 8 7) (16 9 8) (8 4 3 4 1 9) (14 4 12) (6 9 11) (4 7 10) (8 10) (9) (9) (8) (7) (5) () () ())) (quote #f)) (make-problem "19990530aDRA (24)" (quote ((40) (40) (26 13) (5 20 13) (5 11 3 13) (5 20 13) (5 5 1 4 1 1 11) (4 1 4 3 2 3 13) (5 4 4 3 2 3 13) (4 4 4 3 2 3 2 10) (4 4 6 1 4 10) (4 4 30) (40) (14 24) (13 1 24) (6 4 1 24) (6 1 3 1 12) (6 1 5 5 10) (5 2 1 1 2 7 7) (4 1 2 3 4 5) (3 1 2 1 1 1 5 4) (3 1 2 1 1 3 4) (3 1 1 1 3 4 1 2 1 4) (3 2 3 3 1 1 4) (3 1 3 3 2 1 1 4) (3 2 1 5 3 1 1 1 4) (3 2 2 3 2 2 1 1 4) (3 1 2 5 5 1 2 4) (4 1 2 11 1 2 5) (5 1 6 5 2 6) (6 1 13 2 7) (7 5 5 8) (8 15 9) (12 13) (40) (40) (40) (40) (40) (40))) (quote ((40) (40) (40) (20 12) (7 1 7 1 1 2 1 11) (3 8 2 1 10) (4 2 7 2 1 9) (4 2 7 1 1 2 1 8) (4 10 1 2 1 7) (4 2 2 5 2 2 1 1 7) (4 2 7 1 1 1 1 7) (6 10 2 1 1 1 1 7) (6 9 4 1 1 2 6) (6 7 3 1 2 1 6) (13 7 3 1 1 1 6) (6 3 4 2 1 1 1 6) (10 5 2 3 1 1 1 1 6) (10 5 1 1 3 1 1 1 6) (10 5 1 3 1 1 1 6) (7 5 2 1 2 1 1 1 6) (6 3 5 2 4 1 1 1 1 6) (16 3 1 1 1 6) (4 1 5 1 3 1 1 1 6) (16 4 2 1 1 1 6) (6 9 3 1 1 1 1 6) (6 9 2 1 2 1 6) (2 6 2 1 1 2 6) (6 3 5 2 1 1 1 7) (6 3 6 1 2 1 1 1 7) (9 6 2 2 1 1 7) (18 2 1 1 2 7) (18 5 1 1 2 8) (18 4 1 1 2 9) (19 2 1 1 2 10) (19 1 1 1 2 11) (20 12) (40) (40) (40) (40))) (quote #f)) (make-problem "19990530bDRA (25)" (quote ((40) (40) (40) (40) (40) (15 15) (14 14) (13 13) (12 12) (11 11) (10 10) (9 9) (8 8) (7 7) (6 1 1 6) (6 5 5 6) (6 6 6 6) (6 6 6 6) (6 4 4 6) (6 2 2 6) (6 6) (7 1 1 7) (8 2 2 8) (3 3 9) (1 4 10) (1 6 1 1 1 1 6 3) (1 6 1 1 1 1 6 3) (1 5 1 1 1 6 1) (4 5 1 1 1 6 1) (5 4 5 1) (6 5 6 5) (7 4 5 6) (8 3 4 7) (9 2 3 8) (10 4 5 9) (11 12 10) (12 10 11) (13 8 12) (14 3 13) (15 14))) (quote ((40) (24 12) (24 12) (23 12) (23 11) (23 10) (14 6 9) (13 7 8) (12 7 7) (11 7 6) (10 7 5) (9 8 4) (8 3 4 3) (7 4 5 2) (6 6 1 1) (5 5 2) (5 4 2 3) (5 2 1 2 3) (5 2 2 3) (5 2 4) (5 2 2 4) (5 1 2 4) (5 2 2 3) (5 4 4) (5 5 4) (6 6 3) (7 4 6 1) (8 3 5 2) (9 9 3) (10 8 4) (11 8 5) (12 8 6) (13 8 7) (14 8 8) (25 9) (25 10) (25 10) (27 10) (27 10) (40))) (quote #f)) (make-problem "19990530cDRA (26)" (quote ((40) (40) (9 28) (7 3 27) (6 5 12 10) (5 8 1 1 9) (5 5 3 8) (5 3 2 6 7) (5 3 2 6 7) (5 4 1 7 7) (5 4 1 4 2 1 7) (6 3 1 3 1 3 1 7) (6 3 2 6 1 7) (6 2 3 2 1 7) (6 2 3 3 2 7) (6 4 1 2 7) (13 1 1 3 7) (13 8 12) (12 3 11) (11 1 3 1 10) (10 3 3 9) (10 4 4 9) (4 5 19 9) (3 5 19 9) (2 5 19 9) (2 4 16 8) (2 3 15 5 7) (3 1 2 15 5 7) (4 3 1 4 10 5 7) (5 3 4 11 8) (6 3 4 13 10) (7 2 4 13 10) (8 1 4 13 10) (8 13 10) (7 5 11) (7 4 3 11) (7 4 11) (8 1 5 12) (40) (40))) (quote ((40) (40) (24 13) (23 12) (22 11) (5 14 1 10) (4 6 10 3 9) (3 10 11 3 2 3) (3 11 12 3 2) (2 4 4 14 3 2) (2 4 1 7 2) (2 3 12 13 2) (3 2 1 6 14 2) (4 2 4 13 2) (5 8 12 3) (5 8 6 2 2) (6 4 1 2 12 2 2) (5 3 1 1 12 2 2) (5 4 1 3 12 2 2) (5 1 4 1 3 13 3) (5 2 3 14 3) (5 1 1 14 3) (5 1 1 14 3) (6 2 2 13 3) (5 1 12 2) (5 12 2) (4 5 5 2) (4 5 3 4 2) (4 7 6 3 4 3) (4 5 5 3 6) (5 4 3 10) (6 8 3 10) (7 9 11) (40) (40) (40) (40) (40) (40) (40))) (quote #f)) (make-problem "19990601aDRA (27)" (quote ((18 1 19) (5 10 9 7) (5 10 9 7) (7 10 9 9) (8 8 9 10) (3 1 5 16 4 1 4) (2 5 11 4 3) (2 6 9 8 3) (3 8 7 10 4) (4 10 5 12 5) (13 17) (12 10 16) (11 12 15) (10 1 4 1 6 4) (3 3 1 1 4 1 1 5 4 3) (2 4 1 1 4 1 4 6 2) (1 7 1 4 1 3 8 1) (1 8 14 2 9 1) (9 4 4 4 2 10) (10 4 4 2 11) (11 10 2 12) (12 2 2 13) (12 2 2 1 13 1) (1 10 10 14 1) (1 9 12 13 1) (1 8 14 11 2) (2 6 14 10 2) (3 5 12 8 2) (4 4 2 4 3) (5 4 4) (8 1 1 1 11) (7 1 2 2 2 10) (6 2 16 3 9) (5 4 14 5 8) (3 6 7 6) (10 14) (9 13) (7 10 10) (6 6 8 7 9) (5 8 9 8))) (quote ((18 17) (16 5 14) (6 7 10 13) (5 5 12 6 5) (6 4 13 5 5) (1 2 5 14 3 5) (1 3 6 14 2 5 1) (3 11 13 1 5 2) (4 10 13 6 2) (4 11 9 3 2) (4 8 6 3 1 2) (5 6 6 4 2 3 2) (6 4 1 3 2 4 2 2) (7 2 2 4 5 2 1 1) (8 1 2 1 4 6 2 2) (9 2 1 2 6 2 2) (10 8 1 5 2 2) (1 7 8 2 5 2 2) (6 8 2 5 2 2) (1 5 8 1 5 2 2) (6 2 1 2 6 2 2) (1 6 2 4 6 2 2) (8 1 2 1 4 5 2 1 1) (7 3 1 3 2 4 2 2) (6 5 6 2 1 2 3 2) (6 6 2 3 3 1 2) (6 13 5 3 2) (6 12 7 1 7 2) (5 11 8 2 6 2) (4 11 11 2 5 2) (3 11 12 3 5 1) (1 11 13 4 5) (1 3 5 15 4 5) (5 4 15 4 5) (6 3 15 10) (5 4 15 10) (6 6 13 11) (15 9 12) (16 4 15) (18 18))) (quote #f)) (make-problem "19990601bDRA (28)" (quote ((35) (13 21) (14 19) (15 17) (16 6 7) (17 4 3) (17 1 4 5) (14 2 1 4 7) (13 1 3 4 7) (12 1 11 7) (11 4 10 8) (3 4 6 7 10) (2 1 2 15 10) (2 5 13 10) (1 8 12 12) (13 8 12) (7 7 7 13) (6 1 7 6 13) (6 7 4 13) (7 9 12) (6 10 2 11) (4 9 7 8) (3 7 9 7) (2 4 12 7) (1 1 3 15 6) (5 6 11 6) (4 10 1 9 6) (3 11 8 7) (3 14 5 9) (2 16 2 9) (2 17 11) (2 5 10 13) (1 4 10 13) (7 2 6 2 12) (6 4 4 5 11) (6 5 8 10) (29 10) (40) (40) (40))) (quote ((25 13) (14 9 6 7) (12 8 4 7) (11 9 3 10) (11 9 2 11) (11 8 1 12) (12 4 1 1 7 4) (12 3 1 5 5) (13 2 1 2 5 7) (13 3 5 5 7) (11 4 5 5 6) (10 9 6 6) (9 2 8 7 4) (1 6 4 7 10 4) (1 4 6 7 10 4) (2 3 5 7 10 4) (3 3 5 5 10 4) (4 1 5 4 3 6 4) (5 1 5 2 2 6 4) (5 2 6 1 1 4 4) (5 2 7 2 2 5) (5 10 5 1 5) (5 10 7 6) (5 11 7 6) (4 11 8 7) (4 7 10 7) (4 1 4 10 6) (5 5 3 8 2 5) (11 6 7 3 4) (10 7 6 5 3) (9 10 4 10) (7 10 3 12) (5 12 12) (5 17 13) (3 33) (1 34) (34) (35) (35) (35))) (quote #f)) (make-problem "19990604aDRA (29)" (quote ((40) (40) (40) (7 32) (5 2 21 8) (5 3 17 2 6) (5 3 15 3 6) (5 3 15 3 6) (5 3 15 3 6) (6 1 17 3 6) (8 8 3 7 1 7) (8 8 3 8 9) (8 9 1 9 9) (8 6 6 9) (8 6 1 1 6 9) (9 3 2 2 4 9) (10 1 2 2 2 10) (11 1 11) (11 12) (11 12) (6 7) (2 1 5 5 1 3) (4 6 6 5) (2 7 7 3) (11 2 2 12) (12 2 2 13) (12 1 1 1 1 14) (9 1 1 11) (4 3 6 5 3 6) (5 1 8 7 1 7) (4 24 6) (40) (40) (5 2 4 3 14) (5 2 2 2 2 2 2 2 13) (5 5 3 2 14) (5 5 2 2 2 2 2 13) (5 2 2 2 2 2 2 2 13) (5 2 2 2 2 2 14) (40))) (quote ((40) (40) (21 1 16) (21 1 16) (22 5 1 9) (4 12 7 2 1) (4 10 9 2 4 1) (3 5 10 8 3 4 1) (10 5 7 4 2 1) (4 4 5 4 6 12) (5 7 3 6 12) (5 8 2 5 1) (16 6 1 4) (15 1 1 5 1 4) (15 1 2 6 1 1) (13 2 2 11) (13 2 10) (10 1 4 1) (12 3 1 4) (13 3 1 4) (12 4 1) (10 1 10) (13 2 2 10) (13 2 2 4 1) (15 1 1 1 5 1 2 1) (15 6 1 2 1) (16 1 6 1 2) (6 8 2 12) (6 7 2 6 12) (5 4 5 3 7 11) (11 4 8 10) (4 5 9 9 9) (5 9 8 9) (5 11 6 1 9) (22 17) (21 1 16) (21 1 16) (40) (40) (40))) (quote #f)) (make-problem "19990604bDRA (30)" (quote (() (19 18) (18 1 17) (18 2 16) (14 1 2 16) (13 3 3 2 10) (12 5 1 2 3 10) (11 5 1 1 3 11) (13 2 4 11) (16 4 4 7) (16 2 2 3 6) (3 10 5 4 1 5) (2 3 1 5 2 1 3 4) (2 2 1 1 1 1 2 10) (1 4 3 3 2 2 10) (1 6 2 2 1 2 11) (10 3 2 13) (5 3 4 2 3 9) (4 3 4 2 3 8) (3 3 3 3 1 3 2 6) (2 5 3 2 1 2 5 4) (1 7 6 3) (1 5 1 2 1 1 3 4 2) (1 3 5 1 1 2 7 3 2) (1 3 4 4 10 3 2) (1 3 3 12 3 2) (4 3 2) (5 3 2) (7 8) (7 1 1 8) (7 21 8) (8 19 9) (8 15 9) (9 1 9 1 10) (9 4 4 10) (10 15 11) (10 15 11) (11 13 12) (11 13 12) ())) (quote (() (25 12) (13 5 13) (11 5 17) (10 5 18) (10 5 19) (11 4 4 11) (11 3 4 11) (12 2 3 1 8) (13 2 2 2 2 6) (12 3 1 2 2 4) (11 1 3 4 2 2 2) (6 4 2 3 3 3 3) (5 4 3 2 1 3 5) (4 2 4 3 1 1 3 5) (3 3 3 1 3 3 4 4) (3 3 2 1 1 3 2 4 4) (3 4 2 2 4 2 4 4) (4 3 3 2 3 4 4 4) (1 1 4 1 4 4) (6 2 2 3 3 4 4) (1 3 1 2 2 3 4 4) (2 2 1 2 2 1 2 4 4) (6 3 1 2 2 2 4 4) (5 4 2 3 3 3 5) (4 4 1 1 3 4 3 5) (4 3 1 3 4 3 3) (4 1 4 2 1 4 2 2 2) (4 5 2 3 2 2 4) (10 4 3 2 2 6) (9 6 2 1 8) (8 8 3 11) (9 7 2 11) (10 7 18) (11 7 17) (20 16) (21 11) (38) (38) ())) (quote #f)) (make-problem "19990606-DRA (31)" (quote (() (6) (14) (19) (21) (24) (27) (27) (2 5 5) (2 21) (2 12 4) (5 19) (6 18) (1 17) (2 16) (5 16) (9 19) (14 2 11) (3 3 3 1 1 8) (4 2 1 1 1 8) (2 1 2 1 1 8) (2 2 3 1 8) (2 3 2 1 8) (2 4 3 3 8) (2 2 2 3 1 8) (2 2 2 4 2 3 5) (6 6 2 1 1 4) (2 4 5 1 2 1 1 4) (4 2 4 1 1 2 1 3) (7 2 2 1 2 1 3) (1 2 1 1 2 1 3 3) (5 2 6 4) (5 16) (2 2 16) (2 2 6 9) (2 2 5 10) (3 5 11) (5 6 12) (14 13) (12 14))) (quote (() (2) (4) (3 1) (3 2) (1 2 2 1) (3 2 11) (1 9 6 7) (7 11 2 2 2) (8 3 3 2 2 1) (3 2 4 2 1 1 3 2) (4 2 4 1 2 1 2 2 3) (5 1 4 1 1 1 2 2 2) (5 2 1 2 1 1 2) (5 1 1 2 2) (7 1 2 2 2) (8 2 2) (9 2 2) (9 2 3 2) (10 1 5 3) (6 4 2 4 3) (7 5 1 4 4) (7 6 1 5 8) (7 8 5 7) (7 8 4 7 1) (7 9 7 2) (7 10 11 3) (6 8 2 4 4 4) (6 10 1 7 5) (5 1 7 5 1 1 1 9) (5 1 7 2 1 1 8) (6 15 2 1 8) (5 14 1 1 8) (19 3 8) (19 9) (32) (31) (29) (13) ())) (quote #f)) (make-problem "19990606-KVL (32)" (quote ((4 33) (2 17 1 11) (2 18 12) (1 30) (1 23 3) (1 25 1 2) (2 8 10 3) (2 5 5 8) (4 5 4 8 6) (11 3 5 5) (10 2 3 4) (9 2 2 3) (8 2 2 2) (7 2 2 1) (7 1 2 1) (7 1 1 4 1) (7 1 1 7 1) (8 2 2 8) (9 1 2 8) (13 1 8) (29) (29) (21 6) (21 6) (21 7) (15 4 4 2) (16 1 1 3) (5 10 5) (4 3 9 7) (3 7 6 7) (3 10 3 6) (3 13 6) (4 12 3) (7 6 3) (10 3 6 3) (13 7 5) (12 12) (3 9) (5) ())) (quote ((38) (3 32) (1 30) (1 21 5) (19 3 4) (18 4 4) (18 4 4) (1 5 10 5 3) (1 4 10 4 3) (3 5 9 4 3) (10 5 9 5 2) (9 2 12 4 2) (8 2 10 4 1) (8 2 9 5) (7 2 4 10 4) (7 1 2 2 5 4 4) (7 2 2 7 3 2 1) (6 1 2 6 4 1 2) (6 1 2 6 3 1 2) (6 2 1 2 7 3 3) (6 1 2 11 4) (6 1 1 7 4) (6 1 1 7 1 5) (6 1 1 8 3 4 2) (6 2 10 5 1 2) (6 1 10 6 5) (1 5 1 8 6 5) (2 4 1 7 6 4) (1 5 1 12 4) (7 1 7 4) (7 1 2) (7 1) (8) (4 3) (4 4) (5 4) (6 4) (5 6) (4 8) (4 12))) (quote #f)) (make-problem "19990607aDRA (33)" (quote ((40) (40) (9 30) (40) (3 16 18) (21 2 1 1 10) (21 3 7) (7 8 6 1 1 6) (3 3 12 1 1 2 3 4) (3 13 5 3 5) (18 1 6 3 1 6) (11 7 2 2 4) (19 2 1 4 1 5) (18 1 2 2 2 3) (17 1 3 3 4 2 4) (18 3 4 2 4) (21 4 5 2 1) (21 1 1 2 2 1) (5 4 10 1 6 2 2 1) (2 2 2 3 7 1 1 2 2 1) (1 2 1 4 7 2 4 2 2 1) (1 2 1 4 8 1 2 1 1) (1 2 5 10 2 3 1 1) (1 4 5 13 2 2 2 1) (1 3 5 15 2 1 3) (1 3 5 16 1 1 1 2) (1 3 5 16 1 1 3) (1 2 4 17 1 1 1 2) (2 2 3 18 1 1 3) (2 2 3 6 8 1 1 1 2) (2 2 3 5 7 1 1 3) (2 1 2 6 2 6 1 1 1 2) (3 1 1 7 3 5 1 1 1 3) (3 2 8 7 1 1 7) (3 2 10 3 8) (3 2 11 7 9) (3 1 13 12) (4 33) (4 34) (4 34))) (quote ((40) (20 12) (19 8) (4 3 17 3) (9 21) (18 14) (19 1 3 2) (7 13 3) (7 11 9 4) (2 16 10 6) (18 11 7) (11 16 8) (27 9) (24 12) (19 13) (20 16) (40) (7 6 25) (7 1 2 1 14 6) (7 1 1 1 14 5) (4 2 1 1 15 2 4) (4 1 2 1 2 10 3 1 3) (5 5 2 2 9 2 1 3) (6 1 3 1 2 2 9 1 1 3) (6 4 1 4 12 1 3) (5 1 2 4 2 12 1 3) (6 1 1 3 1 2 11 1 3) (5 1 1 11 1 3) (6 1 1 1 1 1 1 1 10 1 4) (5 1 3 1 1 1 1 1 1 8 2 4) (7 3 1 1 1 1 1 2 6 1 1 4) (8 1 1 1 1 1 1 2 1 1 5) (6 1 2 1 7 1 6) (7 1 13 1 7) (9 1 18 7) (8 2 1 8) (13 2 4 2 1 1 1 1 7) (16 5 2 1 1 1 8) (16 16) (40))) (quote #f)) (make-problem "19990607cDRA (34)" (quote ((40) (9 16 12) (8 14 11) (8 1 12 1 11) (7 3 10 1 11) (7 4 8 1 11) (6 2 2 7 1 11) (6 1 2 6 2 11) (5 2 3 4 3 11) (5 2 2 4 10) (4 3 3 4 10) (4 4 4 3 10) (4 4 3 2 10) (4 2 3 4 1 10) (5 8 1 11) (4 3 3 1 12) (3 3 4 2 2 12) (3 3 2 2 2 1 11) (3 3 2 7 11) (2 5 2 8 11) (2 6 12 10) (2 7 8 9) (1 12 8 8) (1 22 7) (1 23 6) (1 1 22 5) (1 3 22 4) (1 4 19 3) (1 5 7 8 3) (1 6 3 7 4) (1 8 2 6 4) (2 11 2 5) (2 16 1 4 6) (2 16 2 7) (2 15 14) (2 15 14) (2 14 14) (2 19 13) (2 22 13) (2 24 12))) (quote ((40) (22 9) (19) (16 1) (10 1 2) (8 2) (6 3 2) (4 6 3) (2 7 4 3) (1 3 4 7 3) (1 3 1 17 3) (2 5 3 7 14) (3 8 9 12) (4 5 11 11) (5 2 3 9 10) (8 3 1 8 10) (9 2 3 7 9) (9 2 2 2 7 9) (9 2 1 1 7 9) (9 2 1 1 7 9) (8 2 2 2 7 8) (7 2 4 7 8) (6 3 4 7 8) (5 15 8) (4 2 1 11 1 8) (3 4 2 11 1 1 3) (2 6 13 1 1 3 1) (1 11 12 1 6) (2 2 10 1 7) (9 6 10 1 6) (21 9 1 6) (22 8 1 6) (23 7 1 6) (24 2 2 7) (25 1 1 8) (26 9) (27 11) (40) (40) (40))) (quote #f)) (make-problem "19990616-DRA (35)" (quote ((40) (1 12 5 17) (2 13 5 17) (2 1 1 1 1 1 1 1 1 3 1 3) (2 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 2 2) (2 1 1 1 1 1 1 1 2 1 2 2 2) (40) (40) (40) (40) (40) (40) (40) (12 12) (10 14 10) (8 18 8) (7 4 1 1 1 1 1 1 1 3 7) (6 4 1 1 1 1 1 1 1 1 3 6) (5 3 1 1 1 1 1 1 1 1 1 2 5) (4 24 4) (3 1 24 1 3) (2 2 24 2 2) (1 3 24 3 1) (1 3 24 3 1) (1 3 24 3 1) (2 2 24 2 2) (3 1 24 1 3) (4 24 4) (5 24 5) (6 24 6) (7 23 7) (8 19 8) (10 14 10) (12 12) (40) (40) (40) (40) (40) (40))) (quote ((40) (1 20 15) (1 15 3 14) (1 18 5 13) (3 13 7 12) (3 1 12 11) (3 11 10) (16 9) (3 9 13 8) (5 9 15 8) (3 8 15 7) (14 3 13 7) (3 7 2 14 6) (3 1 7 2 1 14 6) (3 1 7 3 15 6) (13 2 1 14 6) (1 7 3 15 6) (3 9 2 1 14 6) (3 7 3 15 6) (13 2 1 14 6) (3 7 3 15 6) (3 1 7 2 1 14 6) (1 7 3 15 6) (13 2 1 14 6) (3 7 3 15 6) (3 1 7 2 1 14 6) (3 7 3 15 6) (13 1 1 13 6) (3 9 2 14 7) (5 8 2 13 7) (4 10 15 8) (5 9 14 8) (3 11 9) (17 10) (3 12 11) (3 15 7 12) (3 16 5 13) (4 15 3 14) (22 15) (40))) (quote #f)) (make-problem "19990618aDRA (36)" (quote ((40) (10 13 11) (9 3 11 3 10) (8 4 1 1 4 9) (8 4 4 9) (8 4 4 9) (9 10) (2 3 4 1 1 12) (1 1 3 12) (1 3 3 12) (1 3 1 12) (2 4 2 1 2 5 3 2) (2 4 5 4 1 1) (3 6 3 5 1) (4 8 6 1) (14 8 2) (15 9 2) (15 10 3) (13 9 4) (10 10) (9 9) (8 8) (8 8) (7 7) (6 6) (4 4) (3 2 2 3) (2 4 4 2) (2 4 4 2) (2 4 1 1 4 2) (2 4 2 2 4 2) (3 2 2 2 2 3) (4 2 3 3 2 4) (7 5 5 7) (7 5 5 7) (7 5 5 7) (7 5 2 5 7) (8 3 6 3 8) (9 16 9) (40))) (quote ((40) (8 29) (7 14 9) (8 12 4 8) (9 10 6 7) (8 11 6 7) (7 11 4 8) (8 12 2 3) (3 15 2 4 2) (2 3 13 2 6 1) (1 4 12 6 1) (1 4 6 6 1) (1 4 5 4 2) (2 3 2) (4 2 2) (3 2) (3 1 1 2) (3 2 3) (3 1 2 3) (3 5 4) (3 1 2 4) (3 2 3) (3 1 1 3) (3 2) (4 2 2) (2 3 2) (1 4 5 2) (1 4 6 4 2) (1 4 12 6 1) (2 3 12 6 1) (3 14 2 6 1) (21 2 4 2) (12 8 2 3) (11 7 4 8) (12 7 6 7) (13 6 6 7) (12 8 4 8) (11 10 9) (12 25) (40))) (quote #f)) (make-problem "19990618bDRA (37)" (quote (() () () (2 2) (3 3) (5 5) (7 7) (3 5 2 9) (1 2 8 4 8 3 1) (1 4 6 6 4 3 2) (2 4 5 2 1 3 6 2) (2 11 2 1 2 8 2) (2 5 5 4 4 6 2) (1 5 5 6 4 5 2) (1 4 7 4 6 4 1) (12 6 5) (7 4 4 7) (6 3 1 2 2 6) (3 3 2 3 3 3) (2 3 3 3 3 2) (3 4 3 2) (3 4 3 3) (5 4 3 3) (5 5 3 4) (4 6 4 3) (4 6 4 4) (4 7 4 4) (12 6 3) (11 10) (10 11) (5 5 11) (4 4 12) (4 3 12) (4 3 6 6) (2 2 5 5) (1 1 3 4) (2 2) (1 1) () ())) (quote (() () (3) (9 3) (3 3 3 4) (7 7 7) (4 12 7) (4 10 7) (3 9 8) (3 4 3 8) (4 2 3 4 4) (3 1 3 4 6) (8 4 8) (8 4 10) (8 3 12) (7 3 8 3) (1 3 1 3 8) (1 1 2 8) (7 1 7) (8 5) (3 3) (7 3) (1 1 4 5) (1 3 1 1 17) (7 2 19) (3 4 2 17) (2 5 2 12) (2 1 3 6 8) (2 3 2 8 6) (3 4 2 12) (3 4 3 11) (3 6 2 10) (15 7) (17 6) (6 6 6) (3 5 3 3) (9) () () ())) (quote #f)) (make-problem "19990618cDRA (38)" (quote ((40) (40) (2 3 33) (2 3 11 18) (2 10 17) (2 3 9 1 16) (2 3 8 4 16) (14 22) (3 7 22) (2 3 5 21) (2 4 20) (2 3 3 2 19) (2 3 1 4 18) (8 6 17) (2 3 2 7 16) (2 1 3 8 15) (2 1 1 4 9 14) (2 3 16 13) (2 3 17 12) (25 11) (2 3 19 10) (2 1 20 9) (2 1 1 21 8) (2 3 22 7) (2 3 1 19 6) (9 21 5) (2 2 22 4) (2 6 3 17 3) (2 4 4 19 2) (2 6 4 4 13 2) (2 2 4 5 15 2) (8 9) (2 2 9) (2 3 1 9) (2 1 9) (2 2 8 5 19) (2 3 13 19) (20 19) (40) (40))) (quote ((40) (40) (2 2 1 1 1 1 3) (4 3 1 4 5 4 1 1 1 1 5) (4 3 1 5 5 3 1 1 1 1 5) (4 3 1 4 5 4 3 1 1 4) (2 2 1 1 1 3 2 1 3) (40) (12 10 6 5) (12 9 5) (11 8 6 5) (10 14 5) (9 14 5) (8 14 3 5) (7 15 4) (6 16 3 5) (5 20 5) (4 19 5) (3 2 18 5) (3 4 15 1 5) (3 5 14 2) (3 7 13 1 5) (4 7 14 5) (5 7 13 5) (15 12 5) (16 11 5) (17 10 5) (18 9 5) (19 8 5) (20 7 5) (21 6 5) (22 14) (23 13) (24 12) (25 11) (26 10) (27 9) (28 9) (40) (40))) (quote #f)) (make-problem "19990625-DRA (39)" (quote ((40) (16 17) (15 16) (5 8 15) (6 6 14) (6 4 13) (6 4 9 3) (6 4 8 3) (1 5 3 2 2 7 3) (2 4 2 3 3 7 4) (2 5 2 2 2 6 4) (2 4 2 2 2 5 5) (2 3 2 5 6) (3 3 2 4 6) (3 3 2 4 6) (3 3 2 5 6) (3 3 2 5 4 1) (3 3 2 5 4 1) (4 3 2 2 5 1) (4 3 5 1) (5 6 2) (6 6 2) (7 8 2) (11 8 2) (5 3) (4 4) (3 5) (2 6 12) (1 8 2 10) (1 7 1 4 8) (1 7 3 7 7) (1 6 5 8 5) (1 6 7 10 5) (1 6 7 11 4) (1 5 8 7 3) (1 5 10 8 2) (4 15 6 1) (4 17 6) (3 23 8) (2 27 7))) (quote ((36 2) (8 19 3) (9 14 4) (11 8 8) (12 5 9 1) (3 13 3 9 1) (4 10 2 8 2) (5 9 1 8 2) (8 3 1 7 3) (9 2 1 4 4) (15 1 1 3 5) (16 2 6) (5 2 2 8) (4 2 8) (3 2 9) (2 2 1 10) (1 4 11) (1 2 1 10) (1 9) (1 5) (1 4) (1 2 1 4) (1 4 6 4) (2 2 1 6 4) (3 2 5 3) (4 2 5 2) (5 3 1 5 2) (18 2 6 2) (18 2 1 6 2) (17 3 1 5 1) (16 4 2 5 1) (13 5 2 5) (11 6 3 6) (10 7 4 5) (8 11 4 5) (7 10 7 4) (6 10 9 3) (17 11 3) (16 16 2) (37 2))) (quote #f)) (make-problem "19990628-DRA (40)" (quote ((40) (1 26 1) (2 20 2) (3 12 3) (4 4) (6 14 6) (9 14 9) (11 16 11) (11 16 11) (1 18 1) (1 7 20 7 1) (2 5 2 16 2 5 2) (3 3 3 14 3 3 3) (4 1 4 8 4 1 4) (8 7 6 7 8) (8 4 4 4 8) (8 4 2 4 8) (9 4 4 4 9) (10 16 10) (11 16 11) (11 16 11) (11 14 11) (12 14 12) (12 14 12) (12 14 12) (12 14 12) (12 14 12) (12 14 12) (12 14 12) (11 16 11) (11 1 8 1 11) (11 2 8 2 11) (11 3 8 3 11) (11 16 11) (11 16 11) (12 14 12) (13 1 1 13) (14 10 14) (15 15) (40))) (quote ((40) (1 7 29) (1 6 1 28) (1 5 2 27) (1 4 3 26) (1 4 3 26) (1 3 3 26) (2 3 2 27) (2 3 1 23) (2 2 5 22) (3 2 7 21) (3 2 6 7 5) (3 5 8 6 4) (3 8 1 14 5 3) (4 8 1 13 5 2) (4 8 1 12 3 1 1) (4 9 18 1 1) (4 10 18 1 1) (4 11 19 1 1) (4 31 1 1) (4 31 1 1) (4 11 19 1 1) (4 10 18 1 1) (4 9 18 1 1) (4 8 1 12 3 1 1) (4 8 1 13 5 2) (3 8 1 14 5 3) (3 5 8 6 4) (3 2 6 7 5) (3 2 7 21) (2 2 5 22) (2 3 1 23) (2 3 2 27) (1 3 3 26) (1 4 3 26) (1 4 3 26) (1 5 2 27) (1 6 1 28) (1 7 29) (40))) (quote #f)) (make-problem "19990703-NEP (41)" (quote ((13 13) (9 2 2 3 2) (3 7 1 1 1 1 1 1) (7 3 2 1 1 1 1 3) (14 1 1 1 1 1 3) (11 2 1 1 1 1 3) (3 10 1 1 1 1 1 3) (6 8 2 2 3 4) (7 7 13) (2 14 1) (4 28) (1 5 27) (3 5 26) (1 4 5 25) (2 4 31) (3 4 17 11) (1 2 5 15 1) (1 3 4 14 1 7 1) (1 3 18 3 1 1 1 2) (1 4 6 14 1 1 3) (2 9 2 13 5 3) (2 8 4 11 7 1 1) (2 8 2 7 1 6 2) (12 1 4 6 1 2 6 1) (13 1 1 5 1 4 2 2) (4 1 1 5 1 4 1 2 1) (9 4 4 5 2 2 1 4) (2 3 1 4 4 5 3 2 4) (1 1 1 1 4 4 5 5 1 2 1) (1 1 1 2 4 4 5 4 2 1 2) (1 1 1 1 4 4 5 3 4 4) (2 3 1 5 7 3 2 4 1) (9 4 4 7 3 4 2) () (32 7) (1 3 2 1 3 2 1 3 5 2 3) (1 2 2 1 1 1 1 1 1 1 1 2 2 1 2 2) (1 1 1 1 1 1 1 1 1 2 1 2 2 1 2 2) (1 3 1 3 1 1 1 2 1 2 2 1 4 2) (5 2 3 2 2 2 2 1 2 3))) (quote ((9 1 1 6) (2 5 7 1 1) (7 2 2 2 4 1) (10 1 3 1 3 1) (3 8 2 2 2 3) (6 6 7 1 1 1) (6 5 2 2 1 1 1) (2 12 1 3 1 2 1) (4 10 2 1 2 6) (6 9 1) (2 6 15 1 4) (4 10 10 2 2) (2 5 8 2 9 1 4) (1 3 6 6 4 8 2) (1 4 6 5 2 1 6) (1 4 13 1 2 5 1 2 1) (2 4 13 1 6 1 1 3) (2 5 13 2 5 1 2 1) (2 5 13 1 6 1 6) (3 18 1 1) (3 29 2 3) (3 29 1 4) (33 2) (33 6) (33 2 1) (1 1 1 1 1 7 5 2 1 3) (1 1 1 1 7 5 7 1 1 3) (9 5 5 1 6 2) (1 1 5 3 1 2 6 5) (9 6 1 1 4 2 2 6) (2 2 6 2 2 4 1 1 1 2) (1 5 1 6 1 4 2 1 3 2 2) (2 2 6 2 4 2 3) (9 6 1 7 1 1 1 6) (2 2 6 2 5 2 1 2 2 3) (1 5 1 6 1 3 4 3 1 1 1) (2 2 6 2 2 4 3 1 1 1) (9 6 4 2 2 3 2 1) (1 6 6 4 1 2 3 1 6) (1 6 7 3 2 6))) (quote #f)) (make-problem "19990714bNEP (42)" (quote ((3 2 3) (2 1 2 1 2 1) (1 1 1 2 1 1) (1 2 2 2 2 1 2) (2 2 2 2 2 1 2 2) (2 1 2 2 2 2) (2 2 2 2 2) (2 2 2 2 2 1) (1 2 2 2 2 2) (2 2 2 2 2 2 2) (2 2 2 2 2 2 2 1) (1 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 1) (1 2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 2) (2 2 2 2 2 2 2 2 2 2) (30) (1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1) (34) (1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1) (38) (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (1 1) (38) (1 32 1) (1 32 1) (1 32 1) (1 32 1) (1 10 1 1 1 10 1) (1 10 1 1 1 10 1) (1 10 2 2 2 10 1) (1 10 2 2 2 10 1) (2 10 10 2) (2 32 2) ())) (quote (() (4 2) (1 11) (5 1) (1 1 11) (2 1 8 2 11) (5 7 2 1 11) (2 2 1 1 11) (1 2 10 2 2 11) (5 1 9 1 1 11) (1 1 2 11) (1 11 2 1 11) (14 1 1 11) (1 2 2 11) (17 1 1 5 1) (1 14 1 2 5 1) (1 2 1 9 1) (1 18 1 1 5 2 1) (19 2 2 5 1) (2 1 1 5 2 1) (1 1 2 9 1) (20 2 1 5 1) (1 19 1 1 9 1) (1 2 2 5 2 1) (1 16 1 1 5 1) (17 1 2 5 1) (1 2 1 11) (15 1 1 11) (1 12 2 2 11) (2 1 1 11) (1 9 1 2 11) (12 2 1 11) (1 1 1 11) (8 2 2 11) (1 9 1 11) (2 1 2 11) (5 4 1) (2 1 11) (1 2 4 2) (5))) (quote #f)) (make-problem "19990722-DRA (43)" (quote ((40) (40) (2 3 1 3 1 2 16) (2 2 1 3 3 3 19) (2 1 1 1 3 3 3 2 5) (2 2 1 3 3 7 1 8 4) (2 3 2 3 3 1 10 3) (24 12 2) (22 13 2) (21 16 1) (7 4 7 17 1) (7 2 7 17 1) (7 1 1 6 16 1) (7 4 6 8 8 2) (6 1 2 1 5 7 7 2) (6 6 5 6 2 5 3) (6 2 2 5 6 3 4) (6 6 4 6 13) (7 2 2 3 5 13) (9 6 3 5 12) (8 9 1 4 12) (7 13 4 12) (7 7 6 3 12) (7 4 2 8 2 11) (4 3 2 10 2 11) (3 6 2 12 2 10) (3 1 2 1 12 2 10) (3 3 1 1 1 12 1 10) (3 5 2 2 3 7 1 9) (3 5 1 1 2 10 9) (3 4 5 1 1 10 9) (4 7 1 10 9) (15 2 9 11) (16 7 11) (2 8 4 7 10) (1 3 6 5 6 10) (5 6 12 9) (5 10 9) (1 3 34) (2 35))) (quote ((36 2) (35 2 1) (2 27 4) (3 21 3 4) (4 19 2 3 2 4) (5 18 1 4 3 2 1) (2 7 6 1 4 4 2) (10 4 2 1 4 8) (2 5 2 3 1 6 2 9) (6 5 3 2 8 10) (6 5 3 2 5 1 10) (6 4 2 3 5 4 10) (2 3 4 4 2 6 4) (14 7 2 4 1 3) (2 14 6 2 2 3 1 3) (2 15 3 4 1 1 1 3) (2 11 11 2 1 3) (2 16 11 1 2 2) (2 17 8 1 1 2) (12 2 7 4 1 1 2) (3 1 3 5 1 7 4 1 1 2) (2 1 1 2 9 1 12 1 2) (2 1 1 1 11 12 1 2) (2 1 1 1 13 14 2) (4 1 15 13 2) (6 16 12 2) (5 9 6 10 2) (4 9 4 4 9 2) (4 8 8 3 3 3 2) (4 9 9 1 2 1 2) (4 10 11 4 2) (4 11 23) (4 11 23) (4 11 23) (4 11 23) (5 10 23) (6 8 24) (7 3 25) (9 27) (40))) (quote #f)) (make-problem "19990801-NEP (44)" (quote ((1 1) (1 1 1 1) (1 1 1 1) (1 1) (1 1) (1 1) (1 1 2 1 1) (1 2 1 1 2 1) (1 3 1 1 3 1) (1 1 3 2 3 1 1) (1 1 2 2 1 1) (1 2 1 1 2 1) (1 2 6 2 1) (1 2 2 2 1) (1 1 1 1) (3 2 2 3) (1 1 1 1) (1 12 1) (5 4 5) (40) (40) (40) (40) (1 1) (40) (1 1 1 1 1 1) (1 1 1 1 1 1) (7 5 5 7) (1 1 1 1 1 1 1 1 1 1 1 1) (1 1 1 5 5 1 1 1) (7 1 1 7) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (7 1 1 7) (1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1) (7 5 5 7) (1 1 1 2 2 2 2 1 1 1) (1 1 1 2 8 2 1 1 1) (7 2 2 2 2 7))) (quote ((21) (5 1 1 1 1 1 1) (2 1 5 1 4 4 1) (1 20 1 1 1 1 1 1) (2 1 5 4 4 4) (5 1 1 1 1 1 1) (4 16) (4 1) (4 1) (4 1 2) (4 1 3) (4 1 3 2) (4 1 1 1 1) (6 4 1 10) (2 2 1 4 1 1 1 1) (2 2 3 4 1 3 2) (1 3 1 4 1 3) (4 1 4 1 2) (2 1 1 6 1 1) (1 1 2 6 1 1) (1 1 2 6 1 1) (2 1 1 6 1 1) (4 1 4 1 2) (1 3 1 4 1 3) (2 2 3 4 1 3 2) (2 2 1 4 1 1 1 1) (6 4 1 10) (4 1 1 1 1) (4 1 3 2) (4 1 3) (4 1 2) (4 1) (4 1) (4 16) (5 1 1 1 1 1 1) (2 1 5 4 4 4) (1 20 1 1 1 1 1 1) (2 1 5 1 4 4 1) (5 1 1 1 1 1 1) (21))) (quote #f)) (make-problem "19990807-DRN (45)" (quote ((2) (1) (2) (3) (2) (1) (2) (3) (2) (1) (2) (3) (2) () (2) (1 2 4) (5 2 1 1) (2 2 2 1 1 1) (2 2 2 1 1 1 2) (1 2 2 2 1 1 1) (2 2 1 1 1 2) (2 1 1 2) (12 4) (1 2) (1 2) (2 3 1 4) (1 3 1 1 1 6) (2 3 3 1 15) (3 1 17) (3 1 20 2) (13 19 4) (15 16 6) (17 11 7) (19 6 10) (22 4 12) (23 13) (27 12) (28 11) (29 10) (30 9))) (quote ((13 1 2 1 1 1 10) (1 3 3 3 5 1 3 10) (1 1 1 2 1 10) (2 3 1 14) (2 3 1 14) (2 1 14) (2 1 10) (2 1 3 10) (2 1 1 1 10) (3 3 10) (2 10) (18) (10) (9) (9) (1 8) (2 8) (3 7) (4 7) (6 6) (6 6) (4 6 6) (2 1 1 8 5) (2 1 1 1 10 4) (1 1 1 14 4) (2 1 1 13 4) (1 1 1 2 10 4) (1 1 2 8 1 3) (4 6 3 2) (6 4 1) (5 6) (5 7) (5 7) (4 8) (2 9) (1 9) (10) (10) (11) (11))) (quote #f)) (make-problem "19990808bVAC (46)" (quote ((5 5 5) (3 2 3 3 2 3) (2 2 2 1 1 2 2 2) (2 2 2 9 2 2 2) (1 2 1 3 3 1 2 1) (2 3 2 2 2 1 1 2 2 2 3 2) (1 2 1 1 2 2 1 1 2 1) (1 2 2 4 1 4 2 1 1) (1 2 2 1 4 4 1 1 1 2 1) (1 2 1 1 5 5 1 2 2 1 1) (1 2 2 1 4 4 2 1 2 1) (1 1 1 1 4 5 1 1 1 1) (1 2 2 2 4 4 2 1 2 1 1) (2 1 1 1 5 1 5 2 2 1 2) (1 2 1 1 13 1 1 1 2 1) (1 1 3 3 5 3 3 1 1) (2 1 2 5 1 3 1 6 1 2) (1 1 1 3 1 1 1 1) (2 2 7 1 1 8 1 2) (2 3 7 3 2) (3 3 4 4 3 1 3) (5 4 4 3 1) (2 6 6 1 2) (2 3 4 5 4 3 3) (2 2 4 3 4 1 1 2) (1 2 6 5 6 3 1) (2 2 4 5 5 4 2 2) (1 1 4 3 3 4 1 1) (1 2 6 5 5 6 2 1) (1 1 4 5 5 5 4 1 1) (2 3 3 3 3 4 2) (7 5 5 5 7) (2 5 5 5 5 2) (2 3 3 3 3 2) (3 5 5 5 5 3) (7 5 5 5 7) (6 3 3 3 6) (7 5 5 5 7) (33) (2 2))) (quote ((9) (3 4) (2 1 2 3 5) (2 1 2 3 2 3 2 4) (1 1 2 3 2 2 2 1 6) (2 2 3 1 2 3 8) (1 1 2 3 3 3 2 4 5) (1 2 2 2 2 1 2 4 4) (1 2 3 1 1 1 2 6 5) (2 2 3 2 2 1 1 4 5 2) (2 3 3 1 1 1 1 4 3 1) (2 4 1 1 1 6 5 2) (3 3 1 1 1 4 5 5) (3 7 1 1 4 3 4) (9 1 6 5 5) (17 4 5 5 2) (1 8 2 4 3 3 1) (2 2 2 2 6 5 5 3) (2 1 1 1 4 2 5 5 6) (1 1 1 5 1 3 3 4) (2 1 1 1 4 2 5 5 6) (2 2 2 2 6 5 5 3) (1 8 2 4 3 3 1) (17 4 5 5 2) (9 1 6 5 5) (3 7 1 1 4 3 4) (3 3 1 1 1 4 5 5) (2 3 1 1 1 1 6 5 2) (2 3 1 1 1 1 1 1 1 4 3 1) (2 2 2 2 1 1 1 1 4 5 2) (1 2 2 1 13 6 5) (1 2 1 1 1 1 1 1 4 4) (1 1 1 2 1 3 8 4 5) (2 2 2 2 3 1 2 3 9) (1 1 1 1 2 2 2 2 1 6) (2 1 2 1 2 2 3 2 4) (2 1 1 3 5) (3 4) (9) ())) (quote #f)) (make-problem "19990831-DAH (47)" (quote ((40) (40) (40) (14 16) (12 12) (10 12 10) (8 16 9) (7 20 8) (6 22 7) (5 24 6) (5 25 5) (4 34) (4 13 2 2 2 4) (3 12 2 2 2 5) (3 12 2 2 2 2 3) (3 32 3) (3 10 2 2 2 4 2) (2 9 2 2 2 6 2) (2 9 2 2 2 7 2) (2 34 2) (2 7 2 2 2 9 2) (2 6 2 2 2 9 2) (2 4 2 2 2 10 3) (3 32 3) (3 2 2 2 2 12 3) (5 2 2 2 12 3) (4 2 2 2 13 4) (34 4) (5 25 5) (6 24 5) (7 22 6) (8 20 7) (9 16 8) (10 12 10) (12 12) (14 14) (40) (40) (40) (40))) (quote ((40) (40) (17 17) (13 4 15) (11 12 13) (9 13 1 11) (8 14 1 10) (7 15 2 9) (6 14 1 3 8) (6 14 3 3 7) (5 13 2 4 6) (5 14 2 5 6) (4 12 1 3 6 5) (4 12 3 1 8 5) (3 11 2 3 6 4) (3 11 2 2 7 4) (3 9 1 3 2 7 4) (3 8 3 1 3 8 4) (3 7 2 3 1 9 4) (3 7 2 2 3 7 4) (3 7 3 2 2 7 4) (3 9 1 3 2 7 4) (3 8 3 1 3 8 4) (3 7 2 3 1 9 4) (4 7 2 2 11 4) (4 6 3 2 11 4) (4 8 1 3 12 5) (4 6 3 1 12 5) (5 5 2 14 6) (5 4 2 13 6) (6 3 3 14 7) (7 3 1 14 7) (8 2 15 8) (9 1 14 9) (10 1 13 10) (12 12 12) (14 4 14) (16 18) (40) (40))) (quote #f)) (make-problem "19990902-TUC (48)" (quote ((19 3 2 12) (19 3 1 12) (18 1 2 1 12) (18 1 2 2 12) (17 2 1 2 12) (17 2 17) (16 3 16) (16 3 16) (15 3 15) (8 3 8) (8 5 3 5 8) (8 5 2 5 8) (3 3 4 2 4 8) (1 1 3 3 1 3 8) (1 1 3 1 1 1 8) (1 3 2 8) (6 3 6) (4 5 4) (2 6 2) (6) (5) (1 5 2) (3 1 5 4) (5 3 2) (7 2 4 3) (8 1 4 1) (8 2 3 4 3) (8 4 4 4) (8 5 1 5 8) (8 5 3 5 8) (8 3 8) (15 3 15) (16 3 16) (16 3 16) (17 2 17) (12 1 2 17) (12 5 1 18) (12 2 1 19) (15 3 19) (12 3 19))) (quote ((12 3 19) (15 3 18) (13 3 1 18) (15 2 1 17) (12 1 2 17) (17 2 1 16) (16 3 16) (16 3 15) (9 3 9) (9 5 3 4 9) (9 4 3 4 9) (9 4 1 3 9) (9 3 3 4 1) (9 2 2 4 1 1) (9 4 1 1) (8 2 3 1) (6 3 6) (4 5 4) (2 6 2) (6) (6) (2 6 3) (4 5 4) (6 5 6) (3 5 8) (1 7 9) (2 6 2 2 9) (4 3 3 9) (9 4 1 4 9) (9 4 3 4 9) (9 5 2 5 9) (9 3 9) (16 2 16) (16 3 16) (17 2 17) (17 2 17) (18 1 1 12) (18 1 1 1 1 12) (19 2 1 1 12) (19 2 3 12))) (quote #f)) (make-problem "19990905-ARE (49)" (quote ((1) (1) (1 17) (1 19) (1 20) (1 1 3) (1 7 3) (1 5 1 1 3) (1 1 1 1 3) (2 2 1 2 3) (2 3 1 3) (2 5 17 3) (1 5 19 3) (6 21 3) (4 23 3) (2 27) (28) (1 1) (2 23 1) (1 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 2 2 2 2 2 1) (1 1 1 1) (2 31 2) () (4 3 3 1 3 3 3 4) (2 1 1 1 1 1 1 1 1 1 2) (3 1 2 3 3 1 1 1 3) (2 1 1 1 1 1 1 1 1 2) (4 1 3 1 1 1 3 1 4))) (quote ((2 1) (1 3) (5) (3 3 1 1) (3 3 2 2 1 1) (2 4 1 1 1) (1 5 16) (2 5 3 1) (1 5 2 1) (1 4 3 1 12 1 1) (1 1 4 1 12 1 5) (2 1 5 1 1 1) (3 1 6 1 1) (6 6 1 1 5) (3 1 9 1 12 1 1 1 1) (3 1 6 1 12 1 1 1) (3 1 6 1 1) (3 1 1 6 1 1 4) (3 4 6 1 1 1 1) (3 6 1 12 1 4) (3 6 1 12 1) (3 6 1 1 5) (3 6 1 1 1 1) (3 6 1 1 3) (3 6 1 12 1) (3 6 1 12 1 5) (3 6 1 1 1 1) (3 6 1 1 5) (3 6 1 1) (3 5 1 12 1 1) (3 4 1 12 1 5) (3 3 1 1 1) (3 2 1) (12 1) (9 15 1 1) (6 1 1 1) (1 1) (5) (1 3) (2 1))) (quote #f)) (make-problem "19990916aCAR (50)" (quote ((22 8 6) (3 17 6 5) (2 17 6 4) (3 8 15 3) (11 14 3) (12 15 3) (29 4) (7 14 7 5) (6 12 7 6) (7 4 9 17) (13 26) (14 24) (3 12 23) (2 12 13 7) (3 15 11 6) (11 8 11 7) (10 8 18) (11 10 1 15) (24 1 7 4) (22 1 7 3) (24 6 2) (23 2 4 2) (31 1 1 1) (30 2 2 1 1) (5 1 4 14 8) (4 1 3 12 9) (4 2 2 2 8 10) (5 3 3 3 8 11) (6 3 4 3 5 12) (3 1 5 14) (2 2 3 2 6 15) (2 2 3 2 5 12 3) (2 2 3 2 4 3 3 2 2) (3 4 2 4 2 5) (5 6 11 8) (4 1 2 1 23) (1 1 1 3 1 1 23) (4 1 4 1 1 23) (5 1 6 1 23) (4 1 4 1 22))) (quote ((37 2) (36 3) (2 10 16 3 3) (1 8 14 3 2 3) (2 10 11 2 3 1 3) (24 1) (8 15 5) (7 15 2) (8 15 4 5 3) (24 3 5 4) (16 9 5 4) (4 10 12 3 3) (3 3 6 12 3 2 2) (4 5 14 2 3 1 3) (11 12 1) (11 12 5) (12 12 2) (13 15 4 4) (13 15 4 5) (14 11 3 6) (15 10 6 6) (1 6 7 15 6) (4 7 1 11 1 6) (1 6 10 1 8 2 6) (17 1 9 2 6) (19 7 2 7) (18 2 6 3 7) (28 3 7) (3 21 4 7) (2 18 6 6) (1 15 9 5) (5 6 11 5) (4 4 10 6) (5 4 8 7) (1 10 9 7) (2 11 8 8) (3 13 7 8) (20 10 7) (22 9 6) (24 7 6))) (quote #f)) (make-problem "19990927-BBA (51)" (quote ((2 1) (2 2) (2 3) (2 3) (2 4) (2 4) (2 2 4) (2 2 4) (3 2 2 4) (6 2 2 5) (3 3 2 2 5) (2 3 2 2 2 3) (3 2 2 2 2 3) (2 4 2 2 2 4) (2 2 5 2 2 6) (2 3 4 17) (4 2 4 9 7) (5 2 6 2 2 4) (10 8 2 2 4) (9 2 2 4 2 4) (8 2 2 5 4) (7 2 2 5 3) (7 2 2 2 14) (10 2 2 14) (4 4 2 1 3) (3 5 2 2) (4 3 4 2 2) (7 5 3) (8 8 6) (12 6 7) (10 20) (11 4 15) (14 4 8) (14 4 6) (19 6) (24) (21) (18) (14) (10))) (quote ((4) (7) (12) (3 14) (3 15) (2 15) (3 7 8) (2 6 8) (2 8 10) (2 4 13) (3 3 4 9) (2 3 4 8) (3 3 2 10) (3 3 13) (7 4 7) (5 3 7) (24 3 8) (24 12) (2 12) (19 4 7) (16 1 2 6) (4 2 2 3 7) (4 2 1 10) (21 10) (21 10) (5 2 2 3 6) (17 2 5) (15 3 6) (5 2 9) (5 2 8) (5 2 7) (6 3 7) (6 3 6) (2 3 4 5) (2 5 2 5) (2 4 6) (3 4) (2 3) (2 1) (2 1))) (quote #f)) (make-problem "19991008-LLO (52)" (quote ((6 6 2) (16 1 1) (18 1 4) (5 12 6) (5 14 4) (1 4 15 2) (3 4 15 1 1) (5 4 4 1 1 2) (3 4 2 2 1 3) (2 2 5 1 9 1 1 4) (1 6 3 3 4 1) (1 4 3 2 3 1) (3 2 1 3 2 2 2 1) (5 2 1 2 1 1 2 1 1 2) (4 1 1 2 1 1 2 1 3) (5 4 2 1 2 1 2 1 4) (6 2 3 1 3 4 1) (1 3 1 5 1 1 5 3 1) (5 5 2 5 2 1) (3 2 14 1 2) (4 2 4 4 4 1 3) (8 4 4 1 4) (4 2 12 4 1) (1 3 2 10 3 1) (8 10 2 1) (3 1 2 8 1 2) (4 1 2 6 1 3) (7 1 4) (1 6 1 6 1) (3 1 3 8 1) (3 1 1 1 3 3 4) (7 3 2 2 1) (9 3 2 1 2 1 2) (4 2 2 7 4 4 1 4) (1 3 2 3 7 1 1 2 1 1 1 1) (8 3 1 1 1 1 1) (7 3 2 2 3 1 1 1 3) (8 7 5 1 1 1 1 2 1) (3 8 1 1 1 1 1 1 1) (3 6 6 9))) (quote ((1 1 5 5 5 4 2) (4 5 5 4 5 5) (4 30) (4 7 5 3 10) (1 1 1 5 1 3 3 2 4) (1 5 1 3 4 3) (7 1 6 3 7) (10 2 1 4 3 1 2 1) (13 2 1 2 1 3 2) (13 2 1 2 2 2) (5 3 2 1 1 2) (4 4 1 1 1) (3 6 7 1) (3 4 1 7 3 2) (8 2 7 5 3) (7 1 4 8 3 3 3) (6 2 2 9 2 2 2) (7 1 1 2 6 2 2 2) (7 1 1 2 2 8 2 2) (7 1 1 3 8 2 2) (7 1 1 1 3 9 3 3) (7 1 1 1 2 6 3 5) (7 1 2 2 6 2 3) (6 1 3 9 2 3) (5 2 8 2 2 1) (4 2 7 2 1 1) (2 3 7 7) (2 6 1) (8) (2) (2) (8) (2 20 1 1) (1 2 1 3 3 3 12) (1 4 3 3 3 1 1) (1 4 3 3 3 1 1 1) (4 4 3 3 2 2 3) (2 20 2 2 1) (2 1 1) (7))) (quote #f)) (make-problem "19991011-VAL (53)" (quote ((2) (2) (10) (16) (18) (18) (1 1) (3 6 3) (2 1 2 2 1 2) (1 2 4 2 1) (1 1 6 1 1) (1 6 1) (1 6 1) (1 4 1) (1 1) (3 6 3) (2 1 2 2 1 2) (1 2 4 2 1) (1 1 1 1 1 1) (1 1 1 1) (1 1 1 1) (1 4 1) (1 1) (3 6 3) (2 1 2 2 1 2) (1 2 4 2 1) (1 1 1 1 1 1) (1 1 1 1) (1 1 1 1) (1 4 1) (1 1) (1 1) (18) () () (4 5 4 4) (1 1 1 1 1 1) (4 1 1 1 4) (1 1 1 1 1) (4 1 4 1))) (quote (() () () () () () () (1 1 1) (1 1 1) (1 1 1) (1 1 1 3 1) (29 1 1 1) (3 1 1 1 1) (3 1 1 3) (3 1) (4 2 2 2 1 1) (4 2 2 2 1 1) (4 2 3 2 3 2 3 1 5) (4 1 5 1 1 1 1 1 1 1 1) (6 1 5 1 1 1 1 1 1 1 1) (6 1 5 1 1 1 1 1 1 1) (4 1 5 1 1 1 1 1 1 1 5) (4 2 3 2 3 2 3 1 1 1) (4 2 2 2 1 1 1) (4 2 2 2 1 5) (3 1) (3 1 5) (3 1 1 1) (29 1 1) (1 1 1 3) (1 1 1) (1 1 1) (1 1 1) () () () () () () ())) (quote #f)) (make-problem "19991103-BDH (54)" (quote ((12 23) (11 22) (10 21) (10 20) (9 20) (10 18) (10 11) (11 10) (12 10) (14 5 4) (14 4 4) (9 3 5 4 5) (9 1 9 4) (10 2 1 2) (11 3 7 1) (11 4 9 1) (10 5 9 1) (9 5 10) (8 7 10) (8 8 9) (8 1 5 2 9) (8 2 4 1 1 9) (8 3 4 1 2 10) (8 4 3 2 2 10) (8 5 3 2 2 10) (8 2 2 3 2 3 10) (9 2 1 5 4 10) (9 2 2 3 5 10) (10 2 2 6 10) (10 3 11 11) (11 11 11) (10 15 1 11) (8 13 1 11) (8 5 1 11) (9 3 3 2 1 11) (10 5 2 1 11) (19 2 2 11) (20 2 2 12) (21 4 13) (22 14))) (quote ((40) (40) (40) (40) (40) (40) (40) (40) (18 6 6) (4 6 4 5 4 1 5) (2 5 2 7 1 3 4) (1 4 7 4 4) (3 1 2 2 4 4) (2 1 2 1 3 5) (1 5 2 6) (1 2 3 6) (1 7 4 6) (1 1 10 4 5) (2 1 11 4 1 4) (3 1 12 4 2 3) (5 1 12 4 2 2) (5 1 2 3 4 2 1) (6 1 2 2 4 2) (6 1 2 2 4 1) (6 2 6 5 1) (6 2 2 6 2) (6 2 5 2 1) (6 2 7 6 2) (6 1 2 8 3) (7 3 11) (11 5 18) (11 26) (11 26) (11 26) (10 26) (9 1 25) (13 25) (13 24) (14 23) (40))) (quote #f)) (make-problem "19991109-TMA (55)" (quote ((35) (1 1 1 1 17) (1 4 2 1 4 20) (1 1 1 1 2 1 16 2) (1 2 1 1 2 4 2 19) (1 1 2 1 1 20) (40) (1 20) (40) (14 1 1 1 1 1 1) (14 1 1 1 2 1 2 1 2 1 4) (14 3 1 2 1 2 1 1 2) (14 3 1 2 1 2 1 1 2 4) (7 6 3 1 1 1 2 1 1) (7 32) (6 5 1) (1 1 1 1 1 26) (2 6 1 4 1 2) (1 8 1 6 1 1 1 2) (3 9 2 1 1 1 2) (4 10 4 6 3 2) (1 2 2 1 6 2 4 1 2) (1 1 1 26) (4 2) (1 26) (2 6 2 2 1 3) (3 1 11) (7 9 1 1 3 1 1 2) (7 8 1 1 2 7 3) (7 7 2 2 3 5 4) (13 1 3 3 5) (11 11 1 5) (9 4 1 1 6 5) (7 2 3 1 1 1 10 3) (5 4 2 1 6 2 2) (4 5 5 3 5 2 1) (2 3 4 1 5 3) (1 20 3) () (6 22 5))) (quote ((21 1 2 11 1) (1 1 8 1 3 1 10 1) (1 3 1 9 2 9 1) (1 1 1 1 8 2 9 1) (1 1 1 9 2 8 1) (7 8 7 1) (1 1 7 7) (1 1 3 5 3) (1 1 2 7 6) (1 1 1 8 5 1 1) (7 9 2 5 4 1) (1 1 8 2 4 4 1) (1 1 1 1 9 2 4 5 1) (1 1 1 1 8 1 3 1 3 3 1 1) (1 3 1 1 1 5 1 2 3 1 2 1) (7 1 5 13 3 3 1) (1 1 2 4 12 8 1) (1 3 1 1 5 11 2 7 1) (1 1 1 1 1 1 10 1 1 1 1 1) (1 1 1 7 1 5 1 1 1 1 1 1) (9 1 1 5 1 1 1 1) (9 3 1 1 1 1 2 1 7 1) (9 3 1 1 4 6 1 1 1 1) (9 1 7 1 1 1 1 1 1) (15 1 1 1 2 3 1 1 1) (9 1 1 1 1 1 3 10 1) (9 3 1 1 1 1 1 2 2 5 1) (9 3 1 7 1 3 1 5 1) (9 1 3 3 1 4 7 1) (15 3 3 1 1 3 6 1) (9 1 7 1 1 3 3 1) (9 1 3 1 1 1 3 3 2) (9 1 2 1 1 1 1 1 4 2) (9 1 1 1 1 1 1 1 2) (15 7 4 1) (8 1 1 1 1 3 3 1 1) (2 5 1 1 1 1 1 1 1 2 4 4 1) (6 1 1 1 1 1 1 6 3 1) (6 3 1 9 8 2 1) (20 9 1))) (quote #f)) (make-problem "19991118-CIT (56)" (quote ((24 15) (1 17 15) (1 12 3 3 10) (3 8 3 1 1 1 1 3 4) (3 9 1 2 1 1 1 1 2 1 5) (3 10 3 1 1 1 1 3 6) (3 9 1 2 1 1 1 1 2 1 5) (13 3 1 1 1 1 3 4) (1 12 3 3 10) (1 5 3) (3 7 3) (3 14 3 3 10) (1 6 1 1 1 1 3 4) (1 6 3 1 1 1 1 1 2 1 5) (13 3 1 1 1 1 1 3 6) (1 6 3 1 1 1 1 1 2 1 5) (1 6 1 1 1 1 3 4) (1 16 3 3 10) (1 9 3) (1 5 3) (1 12 3 3 10) (13 3 1 1 1 1 4) (14 1 2 1 1 1 1 1 3 4) (15 3 1 1 1 1 1 3 4) (14 1 2 1 1 1 1 1 3 4) (1 6 3 1 1 1 1 4) (1 12 3 3 10) (3 19 15) (3 35) (3 35) (3 35) (40) (1 1 4 1 1 2) (1 1 4 1 1 6) (1 2 1 10 3 2 1 3) (1 1 10 3 2 1 3) (1 1 6 3 1 6) (1 2 1 6 3 1 2) (40) (40))) (quote ((40) (1 5 2 1 4 5 2) (1 5 2 1 4 5 2) (1 1 1 2 4 1 1 3) (1 1 1 2 4 1 1 3) (1 5 2 1 2 4 5 2) (1 5 2 1 2 4 5 2) (40) (32 2) (32 2) (32 2 2) (32 2 2) (9 7 12 2 2) (3 3 1 1 1 1 3 6 2 2) (4 1 2 1 3 1 2 1 15) (5 3 1 3 1 3 16) (4 1 2 1 3 1 2 1 15) (3 3 1 1 1 1 3 14) (9 7 12 6) (2 5 6) (2 5 2) (9 7 12 2) (3 1 1 1 1 6 6) (3 3 1 1 3 1 1 3 6 6) (12) (3 3 1 1 3 1 1 3 6 2) (3 1 1 1 1 6 2) (9 7 12 2 2) (2 5 2 2) (2 5 2) (9 7 12 2) (3 3 1 1 3 1 1 14) (4 1 2 2 1 2 1 3 6 2) (5 3 3 3 1 3 6 2) (4 1 2 2 1 2 1 3 6 1 1 2) (3 3 1 1 3 1 1 6 1 1 2) (9 7 12 1 1 2) (32 4 2) (40) (40))) (quote #f)) (make-problem "19991119aKHO (57)" (quote ((19 5 8) (11 3 3 7) (10 2 1 5 1 5 6) (9 3 2 2 1 1 2 6) (9 1 2 2 2 2 2 6) (9 2 4 2 2 2 3 7) (5 4 3 2 2 2 3 1 4) (4 4 4 2 2 2 2 2 3) (3 2 2 4 2 1 1 1 2 3 3) (3 2 3 3 1 1 1 3 4 2) (3 4 4 3 1 1 2 4 2 1) (4 4 3 2 1 2 4 4 1) (2 1 4 13 3 2 2 1) (1 5 6 3 5 1) (2 5 1 1 1 2 4 2) (2 3 1 1 3 3 1 1 5 1) (2 5 1 2 2 2 3 1) (1 5 1 1 2 2 1 2 2) (2 4 2 3 1 1 2 3) (2 5 1 1 1 1 1 2 3) (1 4 1 2 2 1 2 1 2 3) (1 3 1 1 2 1 3 2) (1 3 1 3 1 2 1 1 4 2) (4 2 2 1 1 1 5 2) (1 2 2 2 3 2 6 2) (2 1 2 2 3 2 2 2 4 2) (5 1 3 3 2 1 1 1 2 2) (6 1 1 2 3 2 2 2 2 2) (8 2 2 2 2 2 2 4 2) (7 3 3 1 1 1 5 2) (7 2 4 1 2 1 2 6 2) (8 1 3 3 2 2 2 8 2) (9 3 3 2 2 1 9 3) (9 2 1 2 3 1 9 3) (10 1 3 2 2 3 4) (13 2 1 2 3 1 5) (14 5 3 12) (22 3 11) (22 3 9) (21 1 1 1 8))) (quote ((14 4 16) (13 2 15) (12 3 14) (8 1 5 5 14) (7 1 1 2 2 14) (6 3 2 1 2 1 1 13) (6 5 2 2 2 2 12) (6 1 2 2 2 1 2 1 9) (6 1 2 1 1 2 2 2 2 8) (3 3 2 1 1 1 2 3 5 6) (2 2 3 1 1 1 2 2 2 2 5) (1 4 2 1 1 2 1 3 4 5) (1 1 3 1 2 2 2 4 5 6) (1 2 3 2 1 1 1 2 1 4 1 4) (1 4 3 4 2 1 3 2 2 3) (2 3 2 3 5 5 3) (3 3 2 2 1 1 2 2 5 4) (2 4 1 2 2 1 1 3 2 5) (1 2 5 2 6 2 4) (6 2 3 5 4) (1 6 1 1 2 2 4 5) (1 2 2 1 1 2 4 1 2) (1 6 1 1 1 2 3 4) (6 1 1 1 2 1 1) (1 2 2 1 3 4) (2 7 2 2 2 2 2 5) (4 3 2 1 1 1 1 1 1 1 2 1 1 3) (2 2 2 1 3 1 2 1) (1 3 3 3 1 1 1 3 1 1) (1 3 4 2 2 1 6 3) (1 2 4 1 1 1 8 2) (4 4 3 1 8 3) (1 3 1 3 5 2 7 4) (2 1 2 4 5 6 4) (6 15 4 4) (6 2 15 2 5) (7 7 6 6) (9 3 1 3 8) (10 1 24) (16 23))) (quote #f)) (make-problem "19991126-JOJ (58)" (quote ((12 2 2 13) (12 6 7 11) (11 17 9) (11 19 8) (9 19 9) (8 22 8) (9 11 1 7 7) (9 3 1 2 7 6) (9 3 2 2 5 7) (8 3 2 1 4 8) (9 2 2 2 3 8) (9 3 1 2 1 2 2 9) (10 3 1 2 1 2 2 10) (10 2 1 2 1 2 3 9) (11 2 2 1 2 2 10) (12 2 1 1 2 11) (12 1 5 5 12) (13 1 1 1 12) (14 12) (13 2 11) (12 4 4 10) (12 12 10) (11 1 9 1 9) (10 1 8 3 8) (10 2 7 5 7) (9 3 7 6 6) (8 2 7 5 5) (7 2 7 5 4) (5 2 7 6 3) (3 3 6 7 1) (8 4 4 8 5) (14 15) (4 2 9 2 10) (1 1 1 4 2 1 1 2 1 2) (1 1 1 2 1 1 3 1 2 1 1 1 1 1) (1 2 2 2 3 1 2 1 1 1 1 1) (1 1 2 2 3 2 2 1 2 1 2) (12 3 3 11 3) (15 4 11 3) (15 5 16))) (quote ((32 3) (32 1 1 3) (32 1 3) (29 4 4) (29 3 1 3) (28 3 1 3) (28 3 6) (27 2 3) (5 3 16 2 6) (4 1 1 13 4 6) (4 7 9 4 3) (2 10 7 6 6) (7 4 3 3 3 2 2) (7 1 3 1 3 2 4 3) (8 1 1 1 4 4 1 5) (6 2 3 1 1 5 6) (6 1 1 1 1 10 5) (6 5 1 11 3 1) (7 3 1 11 2 2) (6 2 10 1 3) (6 1 1 8 4) (5 2 6 5) (5 3 1 6 1) (6 1 1 1 1 4) (6 1 5 1 3 2 1) (7 1 3 1 2 3 9) (7 1 1 6 10) (1 8 4 9 3) (1 13 3 8 1 1 3) (2 9 1 5 7 1 3) (2 1 6 1 8 8 4) (3 1 3 12 6 2 3) (6 1 15 6 4) (7 17 5 4) (26 2 2 3) (27 4 4) (28 3 1) (29 3 2 3) (29 4 4) (40))) (quote #f)) (make-problem "19991202-DAN (59)" (quote ((13) (27) (18 21) (18 21) (4 8 4 2 12 5) (4 3 2 4 2 10 5) (4 1 1 4 2 6 6) (4 5 3 6) (4 6 4 7) (4 6 4 7) (5 7 4 6) (5 2 4 3 2 2 5) (11 3 3 1 1 4) (6 2 3 2 3) (6 1 4 2 3 3) (6 5 2 1 4) (5 6 3 1 5) (4 11 4 1 1 1 6) (4 11 5 3 7) (1 4 7) (4 11) (4 12 4 7) (5 12 4 6) (5 12 4 6) (5 11 3 6) (5 11 3 5) (5 11 3 5) (5 11 2 4) (5 10 2 3) (6 10 2 3) (5 10 1 3) (5 10 3) (5 10 3) (3 5 3) (3 4 3) (3 4 3) (4 5 3) (4 4 3) (5 5 3) (5 5 3))) (quote ((15) (28) (17 20) (17 20) (2 9 20) (3 4 11 4) (4 1 4 2) (5 1 2 4) (4 3 2 8) (3 2 2 13) (5 2 2 13) (4 2 2 13 2) (3 3 3 13 4) (3 4 4 20) (11 5 20) (18 20) (18 17) (18 14) (1 12) (18) (19 10) (3 6 4 9) (4 3 3 6) (5 2 3) (5) (6 2) (6 1 1) (7 1 1) (7 5) (7 1 1) (7 1 1) (6 2) (6 2 1) (5 2 3 4) (4 5 4 7) (12 5 19) (20 19) (20 19) (20 6) (13))) (quote #f)) (make-problem "19991203-DAN (60)" (quote ((3 3 1 1 4) (1 1 1 2 1 1 1) (1 1 1 1 1 1 1 1 3) (1 1 1 1 2 1 1) (3 3 1 1 4) (5) (4 2 1 1 3 7) (1 1 1 1 1 1 1 2 6) (3 1 1 1 1 3 11) (1 4 1 1 1 1 11) (3 1 1 4 1 1 11) (6) (19 7) (6) (7) (7) (6) (7) (6) (10 6) (14 5) (16 5) (18 5) (26) (25) (25) (24) (24) (23) (24) (23) (22) (5 4 4) (5 4 4) (5 4 4) (6 4 4) (7 4 4) (8 4 4) (7 4 4) ())) (quote ((5 2 1 1 1) (1 1 1 1 1 1 2) (1 1 1 1 1 1 2) (3 1 2 1 3) (1 3) (1 1 4 1 4) (5 1 1 1 4) (1 1 1 1 1 4) (4 1 5) (5 1 6) (1 5 1 7) (1 1 1 8) (1 1 1 11) (5 5 1 11) (1 11) (5 5 1 17) (1 1 1 1 1 19) (1 1 1 1 1 20) (5 1 2 1 20) (13 2) (1 13) (1 13) (1 13) (2 13) (4 13) (5 18) (2 3 20) (6 19) (6 19) (8 11 2) (11 10) (12 8) (13 8) (22) (18) (15) (12) (7) () ())) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solution-sets/misc b/pkgs/games/paint-by-numbers/solution-sets/misc deleted file mode 100644 index 3a72705e08..0000000000 --- a/pkgs/games/paint-by-numbers/solution-sets/misc +++ /dev/null @@ -1 +0,0 @@ -(unit (import paint-by-numbers:problem^) (export paint-by-numbers:problem-set^) (define set-name "Misc") (define problems (list (make-problem "Happy Happy Joy Joy" (quote ((5) (9) (2 7) (4 8) (4 7) (6 7) (7 7) (7 6) (7 5) (5 1 4) (4 2 3) (2 4 1) (9) (5))) (quote ((4) (8) (10) (12) (1 8 1) (2 5 2) (4 3 3) (5 4) (7 5) (8 3) (9 1) (10 1) (10) (8) (4))) (quote #f)) (make-problem "Solver Breaker" (quote ((1) (2 2) (1) (2) (2 2) (1))) (quote ((1) (2 2) (1 1) (1) (2 2) (1))) (quote #f))))) \ No newline at end of file diff --git a/pkgs/games/paint-by-numbers/solve.rkt b/pkgs/games/paint-by-numbers/solve.rkt deleted file mode 100644 index aa372c5575..0000000000 --- a/pkgs/games/paint-by-numbers/solve.rkt +++ /dev/null @@ -1,707 +0,0 @@ -#lang racket -(provide/contract [solve (-> (listof (listof integer?)) ; row-info - (listof (listof integer?)) ; col-info - (-> number? number? symbol? ; set-entry - void?) - (-> number? void?) ; setup-progress - void)]) - -(define (solve row-info col-info set-entry setup-progress) - (local [ - (define (pause) '(sleep 1/16)) - - ; all test cases are commented out. - - ; to work on large lists, we must make filter tail-recursive. - ; this one reverses. - - ; filter-rev : returns a list of all elements in a-list which - ; satisfy the predicate. If a precedes b in a-list, and both - ; occur in the result, then b will precede a in the result. - ; ((A -> boolean) (list-of A) -> (list-of A)) - - (define (filter-rev fun a-list) - (foldl (lambda (elt built-list) - (if (fun elt) - (cons elt built-list) - built-list)) - null - a-list)) - - ;(equal? (filter-rev (lambda (x) (> x 13)) '(2 98 27 1 23 2 09)) - ; '(23 27 98)) - - - ; transpose : transposes a matrix represented as a list of lists - ; ((list-of (list-of T)) -> (list-of (list-of T))) - - (define (transpose list-list) - (apply map list list-list)) - - ;(equal? (transpose '((a b c d e) - ; (f g h i j) - ; (k l m n o))) - ; '((a f k) - ; (b g l) - ; (c h m) - ; (d i n) - ; (e j o))) - - - ; TYPE-DECLARATIONS: - ; there are three kinds of cell-list: the board-row-list, the tally-list, and the try-list. - ; - ; (type: board-row (list-of (union 'off 'on 'unknown))) - ; (type: tally-row (list-of (union 'off 'on 'unknown 'maybe-off 'maybe-on 'mixed))) - ; (type: try-row (list-of (union 'maybe-off 'maybe-on 'unknown))) - (define try-row? (listof (symbols 'maybe-off 'maybe-on 'unknown))) - (define try-batch? (listof (or/c number? (listof try-row?)))) - - ; - ; (type: board (list-of board-row)) - - ; board-ref : returns the board element in (col,row); - ; (board num num -> (union 'on 'off 'unknown)) - - (define (board-ref board row col) - (list-ref (list-ref board row) col)) - - ; board-width : returns the width of the board - ; (board -> num) - - (define (board-width board) - (length (car board))) - - ; board-height : returns the height of the board - ; (board -> num) - - (define (board-height board) - (length board)) - - ; extract-rows : returns the board as a list of rows - ; (board -> board) - - (define (extract-rows board) - board) - - ; extract-cols : returns the board as a list of columns - ; (board -> board) - - (define (extract-cols board) - (transpose board)) - - ; reassemble-rows : turns a list of rows into a board - ; (board -> board) - - (define (reassemble-rows board-line-list) - board-line-list) - - ; reassemble-cols : turns a list of columns into a board - ; (board -> board) - - (define (reassemble-cols board-line-list) - (transpose board-line-list)) - - ; entirely-unknown : does this row consist entirely of 'unknown? - - (define (entirely-unknown row) - (andmap (lambda (x) (eq? x 'unknown)) row)) - - ; finished? : does this board contain no unknown squares? - - (define (finished? board) - (not (ormap (lambda (row) (ormap (lambda (cell) (eq? cell 'unknown)) row)) board))) - - - ; threshold info : the threshold is the limit at which - ; memoize-tries will simply give up. - - (define initial-threshold 2000) - - (define (next-threshold threshold) - (+ threshold 2000)) - - - ; procedures to simplify the construction of test cases: - - ; condensed->long-form : takes a tree of short-form symbols and - ; converts them to their long form, following this mapping: - ; u -> unknown | X -> off - ; ? -> maybe-on | O -> on - ; ! -> maybe-off | * -> mixed - - (define (condensed->long-form symbol-tree) - (cond [(cons? symbol-tree) - (cons (condensed->long-form (car symbol-tree)) - (condensed->long-form (cdr symbol-tree)))] - [(case symbol-tree - ((u) 'unknown) - ((?) 'maybe-on) - ((!) 'maybe-off) - ((X) 'off) - ((O) 'on) - ((*) 'mixed) - ((()) '()) - (else (error 'condensed->long-form "bad input: ~a" symbol-tree)))])) - - ;(equal? (condensed->long-form '(((? !) u) (* () X O))) - ; '(((maybe-on maybe-off) unknown) (mixed () off on))) - - ; check-changed : check whether a tally-row reveals new information to be added - ; to the grid - ; (tally-row -> boolean) - - (define (check-changed tally-list) - (ormap (lambda (cell) - (case cell - ((off on unknown mixed) #f) - ((maybe-off maybe-on) #t) - (else (error "unknown element found in check-changed: ~a" cell)))) - tally-list)) - - ;(and (equal? (check-changed '(off off on unknown mixed)) #f) - ; (equal? (check-changed '(off on maybe-off on mixed)) #t) - ; (equal? (check-changed '(off maybe-on on on unknown)) #t)) - - ; rectify : transform a tally-row into a board row, by changing maybe-off - ; to off and maybe-on to on. - ; (tally-row -> board-row) - - (define (rectify tally-list) - (map (lambda (cell) - (case cell - ((off on unknown) cell) - ((maybe-off) 'off) - ((maybe-on) 'on) - ((mixed) 'unknown) - (else (error "unknown element in rectified row")))) - tally-list)) - - ;(equal? (rectify '(off on maybe-on mixed unknown maybe-off)) - ; '(off on on unknown unknown off)) - - ; make-row-formulator: - ; given a set of block lengths, create a function which accepts a - ; set of pads and formulates a try-row: - ; (num-list -> (num-list num -> (list-of (union 'maybe-off 'maybe-on 'unknown)))) - - (define (make-row-formulator blocks) - (lambda (pads) - (apply append - (let loop ([pads pads] - [blocks blocks]) - (cond [(null? (cdr pads)) - (if (null? blocks) - (list (build-list (car pads) (lambda (x) 'maybe-off))) - (list (cons 'maybe-off (build-list (apply + -1 (car pads) blocks) (lambda (x) 'unknown)))))] - [else - (cons (build-list (car pads) (lambda (x) 'maybe-off)) - (cons (build-list (car blocks) (lambda (x) 'maybe-on)) - (loop (cdr pads) (cdr blocks))))]))))) - - #| - (equal? ((make-row-formulator '(3 1 1 5)) '(1 2 1 3 3)) - '(maybe-off maybe-on maybe-on maybe-on maybe-off maybe-off maybe-on maybe-off maybe-on - maybe-off maybe-off maybe-off maybe-on maybe-on maybe-on maybe-on maybe-on - maybe-off maybe-off maybe-off)) - - (equal? ((make-row-formulator '(3 1 1 5)) '(2 4 4)) - '(maybe-off maybe-off - maybe-on maybe-on maybe-on - maybe-off maybe-off maybe-off maybe-off - maybe-on - unknown unknown unknown unknown unknown unknown unknown unknown unknown unknown)) - |# - - #| check-try : - see whether a try fits with the existing row information (curried) - (tally-row -> (try-row -> boolean)) - |# - - (define (check-try tally-list) - (lambda (try-list) - (andmap (lambda (tally try) - (or (eq? try 'unknown) - (case tally - ((off) (eq? try 'maybe-off)) - ((on) (eq? try 'maybe-on)) - (else #t)))) - tally-list - try-list))) - - #| - (equal? ((check-try '(unknown off on unknown unknown unknown)) - '(maybe-on maybe-on maybe-on maybe-off maybe-off maybe-off)) - #f) - - (equal? ((check-try '(unknown off on unknown unknown unknown)) - '(maybe-off maybe-off maybe-on maybe-on maybe-on maybe-off)) - #t) - - (equal? ((check-try '(unknown off on unknown unknown unknown)) - '(unknown unknown unknown unknown unknown unknown)) - #t) - |# - - #| choose : like math. as in, "9 choose 3" - (num num -> num) - |# - - (define (factorial a) - (if (<= a 1) - 1 - (* a (factorial (- a 1))))) - - (define (choose a b) - (if (> b a) - (error 'choose "(choose ~v ~v): ~v is greater than ~v" a b b a) - (let ([b (max b (- a b))]) - (/ (let loop ([x a]) - (if (= x (- a b)) - 1 - (* x (loop (- x 1))))) - (factorial b))))) - - #| - (and - (= (choose 0 0) 1) - (= (choose 10 10) 1) - (= (choose 10 1) 10) - (= (choose 10 2) 45) - (= (choose 10 8) 45)) - |# - - #| initial-num-possibilities : - given a list of block lengths, calculate the number of ways they could fit - into a row of the given length. The easiest way to model this is to imagine - inserting blocks at given locations in a fixed set of spaces - - (listof num) num -> num - - |# - - (define (initial-num-possibilities blocks size) - (choose (+ 1 (- size (apply + blocks))) (length blocks))) - - #| - (= (initial-num-possibilities '(2 3 3 4) 40) - (choose 29 4)) - |# - - #| build-possibles: - builds a list of the possible rows. given a number of spaces, and a number - of bins to put the spaces in, and a row-formulator, and a line-checker predicate, - build-possibles makes a list of every possible row which passes the predicate. - If the number of possibilities grows larger than the threshold, the search is - aborted. - - (num num ((list-of num) -> try-row) (try-row -> bool) num -> (union (list-of try-row) #f)) - |# - - (define (build-possibles things total-bins row-formulator line-checker threshold) - (let/ec escape - (let* ([built-list null] - [list-length 0] - [add-to-built-list - (lambda (new) - (if (= list-length threshold) - (escape #f) - (begin (set! built-list (cons new built-list)) - (set! list-length (+ list-length 1)))))]) - (let tree-traverse ([things things] - [bins total-bins] - [so-far-rev null]) - (let* ([this-try-rev (cons things so-far-rev)] - [formulated (row-formulator (reverse this-try-rev))]) - ;(when (= debug-counter 0) - ; (printf "~v\n~v\n" formulated (line-checker formulated))) - (when (or (= bins total-bins) (line-checker formulated)) - (if (= bins 1) - (add-to-built-list formulated) - (let try-loop ([in-this-bin (if (= bins total-bins) - 0 - 1)]) - (unless (> (+ in-this-bin (- bins 2)) things) - (tree-traverse (- things in-this-bin) - (- bins 1) - (cons in-this-bin so-far-rev)) - (try-loop (+ in-this-bin 1)))))))) - built-list))) - - - #| - ;build-possibles test case - (let* ([row-formulator-one (make-row-formulator '(2))] - [line-checker (check-try '(unknown unknown unknown on unknown unknown))] - [test-one (build-possibles 4 2 row-formulator-one line-checker 10000)] - [row-formulator-two (make-row-formulator '(1 1))] - [test-two (build-possibles 4 3 row-formulator-two line-checker 10000)]) - (and - (equal? test-one - '((maybe-off maybe-off maybe-off maybe-on maybe-on maybe-off) - (maybe-off maybe-off maybe-on maybe-on maybe-off maybe-off))) - (equal? test-two - '((maybe-off maybe-off maybe-off maybe-on maybe-off maybe-on) - (maybe-off maybe-on maybe-off maybe-on maybe-off maybe-off) - (maybe-on maybe-off maybe-off maybe-on maybe-off maybe-off))))) - |# - - #| spare-spaces: - calculates the number of spare spaces in a line. In other words, - line-length - sum-of-all-blocks - - ((list-of num) num -> num) - |# - - (define (spare-spaces block-list line-length) - (let* ([black-spaces (apply + block-list)] - [spare-spaces (- line-length black-spaces)]) - spare-spaces)) - - ; first-pass: - ; generates the information about row contents which can be inferred directly - ; from the block info and nothing else (i.e., uses no information from an existing - ; board. - ; ((list-of (list-of num)) num -> (list-of (list-of (union 'on 'unknown)))) - - (define (first-pass info-list line-length) - (let ((row-pass - (lambda (block-list) - (let* ([spares (- (spare-spaces block-list line-length) (max 0 (- (length block-list) 1)))] - [shortened-blocks - (map (lambda (block-length) (- block-length spares)) - block-list)] - [all-but-start - (foldr append null - (let build-row-loop ([blocks-left shortened-blocks]) - (if (null? blocks-left) - null - (let ([extra-pad (if (null? (cdr blocks-left)) 0 1)]) - (if (> (car blocks-left) 0) - (cons (build-list (car blocks-left) (lambda (x) 'on)) - (cons (build-list (+ spares extra-pad) (lambda (x) 'unknown)) - (build-row-loop (cdr blocks-left)))) - (cons (build-list (+ spares extra-pad (car blocks-left)) - (lambda (x) 'unknown)) - (build-row-loop (cdr blocks-left))))))))] - [whole-row (append (build-list spares (lambda (x) 'unknown)) - all-but-start)]) - whole-row)))) - (map row-pass info-list))) - - #| - (let ([test-result (first-pass '((4 3) (5 1)) 10)]) - (equal? test-result '((unknown unknown on on unknown unknown unknown on unknown unknown) - (unknown unknown unknown on on unknown unknown unknown unknown unknown)))) - |# - - #| unify-passes: - unify the result of running first-pass on both the rows and the columns - (let ([BOARD (list-of (list-of (union 'unknown 'on)))]) - (BOARD BOARD -> BOARD)) - |# - - (define (unify-passes board-a board-b) - (let ([unify-rows - (lambda (row-a row-b) - (map (lambda (cell-a cell-b) - (case cell-a - ((on) 'on) - (else cell-b))) - row-a row-b))]) - (map unify-rows board-a board-b))) - - #| - (let* ([board-a '((unknown unknown on) (on unknown unknown))] - [board-b '((unknown on unknown) (on on unknown))] - [test-result (unify-passes board-a board-b)]) - (equal? test-result '((unknown on on) (on on unknown)))) - |# - - #| whole-first-pass: - take a set of row descriptions and the board dimensions and generate the - merged first-pass info - ((list-of (list-of num)) (list-of (list-of num)) num num -> - (list-of board-row)) - |# - - (define (whole-first-pass row-info col-info width height) - (unify-passes (first-pass row-info width) - (transpose (first-pass col-info height)))) - - #| memoize-tries: - given the black block widths and the line length and some initial board - and a progress-bar updater, calculate all possibilities for each row. - If skip-unknowns is #t, rows whose content is entirely unknown will be - skipped, and #f returned for that row. - effect: updates the progress bar - ((list-of (list-of num)) num (list-of board-row) (-> void) boolean -> (union (list-of try-row) #f)) - |# - - (define (memoize-tries info-list line-length board-rows old-tries threshold) - (let* ([unmemoized (filter number? old-tries)]) - (if (null? unmemoized) - old-tries - (let* ([least-difficult - (apply min unmemoized)]) - ;(eprintf "guessed tries: ~v\n" least-difficult) - (map (lambda (old-try-set block-list board-row) - (cond [(and (number? old-try-set) (= old-try-set least-difficult)) - (let ([spaces (spare-spaces block-list line-length)] - [bins (+ (length block-list) 1)] - [row-formulator (make-row-formulator block-list)] - [line-checker (check-try board-row)]) - (or (build-possibles spaces bins row-formulator line-checker threshold) - (* 2 old-try-set)))] - [else old-try-set])) - old-tries - info-list - board-rows))))) - - #| - (equal? (memoize-tries '((4) (1 3)) - 6 - '((unknown on unknown unknown unknown unknown) - (unknown off unknown unknown unknown unknown)) - void) - '(((maybe-on maybe-on maybe-on maybe-on maybe-off maybe-off) - (maybe-off maybe-on maybe-on maybe-on maybe-on maybe-off)) - ((maybe-on maybe-off maybe-on maybe-on maybe-on maybe-off) - (maybe-on maybe-off maybe-off maybe-on maybe-on maybe-on)))) - |# - - #| batch-try: - take a board-line list and a list of possibles, and trim it down by - checking each try-list against the appropriate board-line - - ((list-of board-row) (list-of (union (list-of try-row) #f)) -> (list-of (union (list-of try-row) #f))) - |# - - (define (batch-try board-line-list try-list-list-list) - (map (lambda (line try-list-list) - (if (not (number? try-list-list)) - (filter ; filter-rev - (let ([f (check-try line)]) - (lambda (try-list) (f try-list))) - try-list-list) - try-list-list)) - board-line-list - try-list-list-list)) - - #| - (equal? (batch-try '((unknown unknown unknown off) - (unknown on unknown unknown)) - '(((maybe-on maybe-on maybe-on maybe-off) - (maybe-off maybe-on maybe-on maybe-on)) - ((maybe-on maybe-on maybe-off maybe-off) - (maybe-off maybe-on maybe-on maybe-off) - (maybe-off maybe-off maybe-on maybe-on)))) - '(((maybe-on maybe-on maybe-on maybe-off)) - ((maybe-off maybe-on maybe-on maybe-off) - (maybe-on maybe-on maybe-off maybe-off)))) - |# - - ; tabulate-try : take one possibility, and merge it with the row possibles - ; (tally-list try-list) -> tally-list - - (define (tabulate-try tally-list try-list) - (map (lambda (tally try) - (case tally - ((off on mixed) tally) - ((unknown) try) - ((maybe-off maybe-on) (if (eq? try tally) - try - 'mixed)) - (else (error "unknown cell type during tabulate-try: ~a" tally)))) - tally-list - try-list)) - - - #| - (equal? (tabulate-try '(on off maybe-off maybe-off maybe-on maybe-on maybe-on) - '(on off mixed maybe-on maybe-on mixed maybe-off)) - '(on off mixed mixed maybe-on mixed mixed)) - |# - - ; batch-tabulate : take a board-line-list and a list of sets of tries which check with the board - ; and tabulate them all to produce a new board line list (before rectification) - ; (board-line-list try-list-list-opt-list) -> tally-list - (define (batch-tabulate board-line-list try-list-list-opt-list) - (map (lambda (board-line try-list-list-opt) - (if (not (number? try-list-list-opt)) - (foldl (lambda (x y) (tabulate-try y x)) board-line try-list-list-opt) - board-line)) - board-line-list - try-list-list-opt-list)) - - - ; (equal? (batch-tabulate '((unknown unknown unknown off) - ; (unknown unknown on unknown)) - ; '(((maybe-on maybe-on maybe-off maybe-off) - ; (maybe-off maybe-on maybe-on maybe-off)) - ; ((maybe-off maybe-on maybe-on maybe-off) - ; (maybe-off maybe-off maybe-on maybe-on)))) - ; '((mixed maybe-on mixed off) - ; (maybe-off mixed on mixed))) - - (define (print-board board) - (for-each (lambda (row) - (for-each (lambda (cell) - (printf (case cell - ((off) " ") - ((unknown) ".") - ((on) "#")))) - row) - (printf "\n")) - (extract-rows board))) - - ; animate-changes takes a board and draws it on the main screen - (define (animate-changes board draw-thunk outer-size inner-size) - (let outer-loop ([outer-index 0]) - (if (= outer-index outer-size) - null - (let inner-loop ([inner-index 0]) - (if (= inner-index inner-size) - (begin - (pause) - (outer-loop (+ outer-index 1))) - (begin - (draw-thunk board outer-index inner-index) - (inner-loop (+ inner-index 1)))))))) - - (define (draw-rows-thunk board row col) - (set-entry col row (board-ref board row col))) - - (define (draw-cols-thunk board col row) - (set-entry col row (board-ref board row col))) - - ; (print-board '((on on unknown off) - ; (on on unknown unknown) - ; (unknown unknown on on) - ; (off unknown on on))) - - ; do-lines takes a board-line-list and a try-list-list-list and returns two things: a tally-list-list - ; and a new try-list-list-list - ; (board-line-list try-list-list-opt-list) -> (tally-list-list try-list-list-opt-list) - (define do-lines - (contract - (->* (any/c try-batch?) - (values (listof (listof any/c)) try-batch?)) - (lambda (board-line-list try-list-list-opt-list) - (let ([new-tries (batch-try board-line-list try-list-list-opt-list)]) - (values (batch-tabulate board-line-list new-tries) - new-tries))) - 'do-lines - 'caller)) - - ; full-set takes a board and a pair of try-list-list-lists and returns a new board, a new pair - ; of try-list-list-lists, and a boolean (whether it's changed) - (define full-set - (contract - (->* (any/c try-batch? try-batch?) - (values any/c try-batch? try-batch? boolean?)) - (lambda (board row-try-list-list-opt-list col-try-list-list-opt-list) - (let*-values ([(board-rows new-row-tries) - (do-lines (extract-rows board) row-try-list-list-opt-list)] - [(row-changed) - (ormap check-changed board-rows)] - [(new-board) - (reassemble-rows (map rectify board-rows))] - [( _ ) - (when row-changed - (animate-changes new-board draw-rows-thunk - (board-height new-board) - (board-width new-board)))] - [(board-cols new-col-tries) - (do-lines (extract-cols new-board) col-try-list-list-opt-list)] - [(col-changed) - (ormap check-changed board-cols)] - [(final-board) - (reassemble-cols (map rectify board-cols))] - [( _ ) - (when col-changed - (animate-changes final-board draw-cols-thunk - (board-width final-board) - (board-height final-board)))]) - (values final-board new-row-tries new-col-tries (or row-changed col-changed)))) - 'full-set - 'caller)) - - ; on 2002-10-17, I wrapped another layer of looping around the inner loop. - ; the purpose of this outer loop is to allow the solver to ignore rows (or - ; columns) about which the solver knows nothing for as long as possible. - - (define (local-solve row-info col-info) - (let* ([rows (length row-info)] - [cols (length col-info)] - [initial-board (whole-first-pass row-info col-info cols rows)] - [_ (animate-changes initial-board draw-cols-thunk - (board-width initial-board) - (board-height initial-board))]) - (let outer-loop ([outer-board initial-board] - [skip-threshold initial-threshold] - [old-row-tries (map (lambda (info) - (initial-num-possibilities info (board-width initial-board))) - row-info)] - [old-col-tries (map (lambda (info) - (initial-num-possibilities info (board-height initial-board))) - col-info)]) - (let* ([row-try-list-list-opt-list (memoize-tries row-info cols outer-board old-row-tries skip-threshold)] - [col-try-list-list-opt-list (memoize-tries col-info rows (transpose outer-board) old-col-tries skip-threshold)]) - (let loop ([board outer-board] - [row-tries row-try-list-list-opt-list] - [col-tries col-try-list-list-opt-list] - [changed #t]) - (if changed - (call-with-values (lambda () (full-set board row-tries col-tries)) - loop) - (if (finished? board) - board - (if (equal? outer-board board) - (outer-loop board (next-threshold skip-threshold) row-tries col-tries) - (outer-loop board skip-threshold row-tries col-tries))))))))) - - ] - (local-solve row-info col-info))) - - -; test case: - -;(require solve) -; -;(let* ([test-board (build-vector 20 (lambda (x) (make-vector 20 'bad-value)))] -; [set-board! (lambda (col row val) -; (vector-set! (vector-ref test-board row) col val))]) -; (solve `((9 9) (6 10) (5 11) (4 3 5) (2 1 3) (2 4 2) (1 3 6) (5 1 1 1) (2 2 1 3 1) (7 4 1) (7 4 2) (1 3 9) (1 2 4 6) (1 6 9) (1 4 7) (2 1 4 2) (5 3 4) (5 7) (5 10) (5 11)) -; `((1 8) (2 4 4) (4 1 2 4) (8 2 4) (6 1 3 7) (4 8 4) (3 7 1) (1 2) (1 2) (2 2 2 1) (3 2 1 1 1 2) (7 8 2) (3 7 4 2) (3 1 1 2 3 3) (3 4 6 3) (4 1 4 3) (4 1 4 4) (5 1 4 4) (7 4 5) (7 6 5)) -; set-board! -; (lambda (x) (void))) -; (equal? (map (lambda (row) -; (apply string-append -; (map (lambda (x) -; (case x -; [(off) " "] -; [(on) "x"])) -; row))) -; (apply map list (map vector->list (vector->list test-board)))) -; -; `("x xxxxxxxx " -; "xx xxxx xxxx " -; "xxxx x xx xxxx" -; "xxxxxxxx xx xxxx" -; "xxxxxx x xxx xxxxxxx" -; "xxxx xxxxxxxx xxxx" -; "xxx xxxxxxx x" -; "x xx " -; "x xx " -; " xx xx xx x" -; " xxx xx x x x xx" -; "xxxxxxx xxxxxxxx xx" -; "xxx xxxxxxx xxxx xx" -; "xxx x x xx xxx xxx" -; "xxx xxxx xxxxxx xxx" -; "xxxx x xxxx xxx" -; "xxxx x xxxx xxxx" -; "xxxxx x xxxx xxxx" -; "xxxxxxx xxxx xxxxx" -; "xxxxxxx xxxxxx xxxxx"))) diff --git a/pkgs/games/parcheesi/admin-gui.rkt b/pkgs/games/parcheesi/admin-gui.rkt deleted file mode 100644 index 7e9ab9877c..0000000000 --- a/pkgs/games/parcheesi/admin-gui.rkt +++ /dev/null @@ -1,803 +0,0 @@ -#| - -When playing and it's a user's turn, the history has an extra step at the end that -corresponds to the unplayed move! that's confusing. - -|# - -(module admin-gui racket - (require "gui.rkt" - "die.rkt" - "interfaces.rkt" - "admin.rkt" - "board.rkt" - "moves.rkt" - "rules.rkt" - "best-players.rkt" - framework - racket/gui) - - (provide gui-game%) - - ;; move-candidate = (make-move-candidate coordinate move (listof number)) - (define-struct move-candidate (move dice) #:inspector (make-inspector)) - - (define-struct past (board color roll) #:inspector (make-inspector)) - (print-struct #t) - - (define gui-game% - (class* object% (game<%>) - - (define the-game (new game%)) - (define/public (register o) (send the-game register o)) - (define/public (start) (send the-game start)) - (define game-observer - (new - (class* object% (game-observer<%>) - (define/public (introduce . x) (void)) - (define/public (taking-turn color roll) - (queue-callback - (lambda () - (set-box! (cdr (assq color latest-dice)) roll) - (set! history (append history (list (make-past partial-history color roll)))) - (update-players-dice color roll)))) - (define/public (took-turn color board) - (queue-callback - (lambda () - (set! partial-history board) - (send board-pasteboard set-board board)))) - (define/public (game-over winner-name color) - (queue-callback - (lambda () - (if winner-name - (set-bottom-message (format "~a (~s) won!" winner-name color)) - (set-bottom-message "everone cheated"))))) - (super-new)))) - (send the-game set-observer game-observer) - - (define gui-player% - (class* object% (player<%>) - (define color #f) - (define/public (start-game _color) - (set! color _color) - "Human") - (define/public (do-move board roll) - (let ([chan (make-channel)]) - (queue-callback - (lambda () - (enable-gui board roll color chan))) - (channel-get chan))) - (define/public (doubles-penalty) - (let ([sema (make-semaphore 0)]) - (queue-callback - (lambda () - (message-box "Parcheesi" - (format - "~a rolled doubles 3 times, so the front-most piece goes back to the start." - color)) - (semaphore-post sema))) - (semaphore-wait sema))) - (super-new))) - - (define board-pasteboard (new board-pasteboard% (admin-gui this))) - - ;; history : (listof past) - (define history '()) - ;; partial-history : board - ;; temporary holding variable until a move is complete and history can be updated. - (define partial-history (new-board)) - - (define frame (new board-frame% (label "Parcheesi") (style '(metal)) (board-pasteboard board-pasteboard))) - (define main-hp (new horizontal-panel% (parent frame))) - (define bottom-panel (new horizontal-panel% - (parent frame) - (stretchable-height #f))) - (define bottom-msg (new message% (parent bottom-panel) (stretchable-width #t) (label ""))) - (define left-vp (new vertical-panel% (parent main-hp) (stretchable-width #f))) - (define board-ec (new editor-canvas% - (style '(no-hscroll no-vscroll)) - (parent main-hp) - (editor board-pasteboard) - (min-height 400) - (min-width 400))) - (define right-vp (new vertical-panel% (parent main-hp) (stretchable-width #f))) - - (define blue-player-panel (new vertical-panel% - (alignment '(center top)) - (parent left-vp) - (stretchable-height #f))) - (new horizontal-panel% (parent left-vp)) - (define yellow-player-panel (new vertical-panel% - (alignment '(center bottom)) - (parent left-vp) - (stretchable-height #f))) - (define red-player-panel (new vertical-panel% - (alignment '(center top)) - (parent right-vp) - (stretchable-height #f))) - (new horizontal-panel% (parent right-vp)) - (define green-player-panel (new vertical-panel% - (alignment '(center bottom)) - (parent right-vp) - (stretchable-height #f))) - - (define dice '()) - - (define/private (make-dice color parent) - (let* ([p (new horizontal-panel% (parent parent) (stretchable-height #f))] - [die-objects (list (new die% (parent p) (dim? #t)) - (new die% (parent p) (dim? #t)) - (new die% (parent p) (dim? #t)) - (new die% (parent p) (dim? #t)))] - [dice-in-order - (case color - [(yellow blue) (reverse die-objects)] - [else die-objects])]) - (set! dice (cons (list color dice-in-order) dice)))) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; - ;; controlling the players - ;; - - (define/private (add-gui-player-controls color parent-panel) - (let* ([accept-move-button (new button% - (label "Done") - (parent parent-panel) - (callback (lambda (x y) (accept-move))))] - [reset-move-button (new button% - (label "Reset") - (parent parent-panel) - (callback (lambda (x y) (reset-button-callback))))] - [bp-panel (new horizontal-panel% - (parent parent-panel) - (stretchable-height #f) - (stretchable-width #f))]) - (send accept-move-button enable #f) - (send reset-move-button enable #f) - (make-dice color parent-panel) - (set! gui-player-accept-move-buttons - (cons (cons color accept-move-button) gui-player-accept-move-buttons)) - (set! gui-player-reset-move-buttons - (cons (cons color reset-move-button) gui-player-reset-move-buttons)))) - - (define gui-player-accept-move-buttons '()) - (define gui-player-reset-move-buttons '()) - - (define/private (go-back) - (reset-move) - (set! viewing-index - (cond - [(eq? viewing-index 'latest) (- (length history) 1)] - [(and this-move-color (zero? viewing-index)) 'latest] ;; only go to latest when its time to show a move - [(zero? viewing-index) (- (length history) 1)] - [else (- viewing-index 1)])) - (update-gui)) - (define/private (go-forw) - (reset-move) - (set! viewing-index (cond - [(eq? viewing-index 'latest) 0] - [(and this-move-color (= viewing-index (- (length history) 1))) - 'latest] - [(= viewing-index (- (length history) 1)) - 0] - [else (+ viewing-index 1)])) - (update-gui)) - - (define/private (reset-button-callback) - (reset-move) - (update-gui)) - - (define/private (reset-move) - (set! current-moves '()) - (set! current-board start-board) - (set! current-dice start-dice) - (set! dice-used '())) - - (define/private (accept-move) - (update-players-dice this-move-color start-dice) - (for-each (lambda (die) (send die set-dim #t)) - (cadr (assq this-move-color dice))) - (let ([accept (cdr (assq this-move-color gui-player-accept-move-buttons))] - [reset (cdr (assq this-move-color gui-player-reset-move-buttons))]) - (send reset enable #f) - (send accept enable #f)) - (channel-put answer-chan current-moves)) - - (define current-moves '()) - (define answer-chan #f) - (define start-board #f) - (define current-board #f) - (define start-dice #f) - (define current-dice '()) - (define dice-used '()) - (define this-move-color #f) - (define viewing-index 'latest) - (define latest-dice (list (cons 'green (box null)) - (cons 'red (box null)) - (cons 'blue (box null)) - (cons 'yellow (box null)))) - - (define/private (enable-gui board roll color _answer-chan) - (set! current-board board) - (set! start-board board) - (set! current-dice roll) - (set! start-dice roll) - (set! dice-used '()) - (set! this-move-color color) - (set! answer-chan _answer-chan) - (set! current-moves '()) - (set-bottom-message "") - (update-gui)) - - (define/public (build-new-board/register-move mc) - (let ([new-move (move-candidate-move mc)]) - (with-handlers ([exn:bad-move? - (lambda (x) - ;; call this first, since it calls set-bottom-message - ;; and we don't want that one to survive - (update-gui) - - (set-bottom-message (exn-message x)))]) - (let-values ([(new-board total-bonuses) - (make-moves start-board (append current-moves (list new-move)))]) - (set-bottom-message "") - (set! dice-used (append dice-used (move-candidate-dice mc))) - (set! current-board new-board) - (set! current-moves (append current-moves (list new-move))) - (set! current-dice (foldl remq (append start-dice total-bonuses) dice-used)) - (update-gui))))) - - (define/private (update-gui) - (cond - [(eq? viewing-index 'latest) - (dim-dice-except this-move-color) - (for-each (lambda (latest-dice-line) - (if (eq? this-move-color (car latest-dice-line)) - (update-players-dice this-move-color current-dice) - (update-players-dice (car latest-dice-line) (unbox (cdr latest-dice-line))))) - latest-dice) - (send board-pasteboard set-board current-board) - (let-values ([(highlights move-candidates) - (find-roll-coordinates current-board current-dice this-move-color)]) - (send board-pasteboard set-highlighted-squares highlights move-candidates))] - [(number? viewing-index) - (let ([past (list-ref history viewing-index)]) - (clear-dice-except (past-color past)) - (update-players-dice (past-color past) (past-roll past)) - (send board-pasteboard set-board (past-board past)) - (send board-pasteboard set-highlighted-squares '() '()))] - [else (error 'update-gui "unknown viewing index ~e" viewing-index)]) - (reset-accept/move-buttons) - (reset-forw-back-buttons)) - - (define/private (reset-accept/move-buttons) - (when this-move-color - (let ([accept (cdr (assq this-move-color gui-player-accept-move-buttons))] - [reset (cdr (assq this-move-color gui-player-reset-move-buttons))]) - (send reset enable (and (eq? viewing-index 'latest) (not (null? current-moves)))) - (send accept enable - (and (eq? viewing-index 'latest) - (with-handlers ([exn:bad-move? (lambda (x) - (set-bottom-message - (string-append - (format "~a is not done: " this-move-color) - (exn-message x))) - #f)]) - (take-turn this-move-color start-board start-dice current-moves) - #t)))))) - - (define/private (reset-forw-back-buttons) - (send forw enable (not (null? history))) - (send back enable (not (null? history)))) - - (define/private (set-bottom-message msg) (send bottom-msg set-label msg)) - - (define/private (dim-dice-except color) - (for-each (lambda (die-roll) - (cond - [(eq? (car die-roll) color) - (for-each (lambda (die) (send die set-dim #f)) (cadr die-roll))] - [else - (for-each (lambda (die) (send die set-dim #t)) (cadr die-roll))])) - dice)) - - (define/private (clear-dice-except color) - (for-each (lambda (die-roll) - (cond - [(eq? (car die-roll) color) - (for-each (lambda (die) (send die set-dim #f)) (cadr die-roll))] - [else - (for-each (lambda (die) (send die set-digit #f)) (cadr die-roll))])) - dice)) - - (define/private (update-players-dice color roll) - (let loop ([roll roll] - [dice (cadr (assq color dice))]) - (cond - [(null? dice) (void)] - [(null? roll) (send (car dice) set-digit #f) - (loop roll (cdr dice))] - [else (send (car dice) set-digit (car roll)) - (loop (cdr roll) (cdr dice))]))) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; - ;; player choice gui - ;; - - (define/private (index->player i) - (case i - [(0) best-player%] - [(1) polite-player%] - [(2) reckless-player%] - [(3) gui-player%] - [else - (message-box "Parcheesi" (format "index->player got ~s" i)) - gui-player%])) - - (define players (vector 'unfilled-in-players-array - 'unfilled-in-players-array - 'unfilled-in-players-array - 'unfilled-in-players-array)) - - (define/private (add-choose-player-controls color parent-panel init-selection) - (let* ([color-order '((green . 0) (red . 1) (blue . 2) (yellow . 3))] - [color-index (cdr (assq color color-order))]) - (vector-set! players color-index (index->player init-selection)) - (new radio-box% - (parent parent-panel) - (selection init-selection) - (label #f) - (choices '("Amazing Grace" - "Polite Polly" - "Reckless Renee" - "You")) - (callback - (lambda (rb y) - (vector-set! players - color-index - (index->player - (send rb get-selection)))))))) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; - ;; put all the gui elements together - ;; - - (define/private (make-player-control-panel parent color ah aw init-selection) - (let* ([parent - (new panel:single% - (stretchable-height #f) - (parent parent))] - [choose-player-panel (new vertical-panel% - (parent parent) - (style '(border)) - (alignment `(,aw ,ah)) - (stretchable-width #f) - (stretchable-height #f))] - [control-player-panel (new vertical-panel% - (parent parent) - (style '(border)) - (alignment `(,aw ,ah)) - (stretchable-width #f) - (stretchable-height #f))]) - (add-gui-player-controls color control-player-panel) - (add-choose-player-controls color choose-player-panel init-selection) - (list color parent choose-player-panel control-player-panel))) - - (define gui-player-control-panels - (list (make-player-control-panel green-player-panel 'green 'top 'left 0) - (make-player-control-panel red-player-panel 'red 'bottom 'left 1) - (make-player-control-panel yellow-player-panel 'yellow 'top 'right 2) - (make-player-control-panel blue-player-panel 'blue 'bottom 'right 3))) - - (define/private (get-player-panel color i) - (let ([e (assq color gui-player-control-panels)]) - (unless e - (error 'get-player-panel "bad color ~e" color)) - (list-ref e i))) - (define/private (get-player-parent-panel c) (get-player-panel c 1)) - (define/private (get-choose-player-panel c) (get-player-panel c 2)) - (define/private (get-control-player-panel c) (get-player-panel c 3)) - - (define sbf-panel (new panel:single% - (parent bottom-panel) - (stretchable-width #f) - (stretchable-height #f) - (alignment '(right center)))) - - (define start-button (new button% - (label "Start Game") - (parent sbf-panel) - (callback - (lambda (x y) - (for-each (lambda (color) - (send (get-player-parent-panel color) - active-child - (get-control-player-panel color))) - '(red blue green yellow)) - (send sbf-panel active-child bf-panel) - (start-game))))) - (define bf-panel (new horizontal-panel% (parent sbf-panel) (stretchable-width #f) (stretchable-height #f))) - (define back (new button% - (label "<") - (parent bf-panel) - (callback (lambda (x y) (go-back))))) - (define forw (new button% - (label ">") - (parent bf-panel) - (callback (lambda (x y) (go-forw))))) - (define rules-button (new button% (parent bottom-panel) (label "Rules") (callback (lambda (x y) (show-rules))))) - - (super-new) - (send frame show #t) - - ;; start the game - (define/private (start-game) - (for-each (lambda (player%) (send the-game register (new player%))) (vector->list players)) - (thread (lambda () (send the-game start)))))) - - (define board-pasteboard% - (class pasteboard% - (inherit get-admin get-view-size) - (init-field admin-gui) - (init-field [board (new-board)]) - - (define/public (set-board _board) - (set! board _board) - (frame-size-changed)) - - ;; highlighted-squares : (listof (cons coordinate (listof coordinate))) - ;; the first element in the list is the key and the rest are - ;; squares that should be highlighted when the cursor moves over - ;; the key square - (define highlighted-squares '()) - ;; move-candidates : (listof (cons coordinate (listof move-candidate))) - (define move-candidates '()) - (define/public (set-highlighted-squares hs mcs) - (set! highlighted-squares hs) - (set! move-candidates mcs)) - - ;; current-highlight : (listof coordinate) - (define current-highlight '()) - (define current-mouse #f) - - (define/override (on-paint before? dc left top right bottom dx dy draw-caret) - (let ([admin (get-admin)]) - (when admin - (let-values ([(w h) (get-size)]) - (let ([pen (send dc get-pen)] - [brush (send dc get-brush)]) - (when before? (draw-board board dc w h dx dy #f)) - (unless before? (draw-highlighted-squares dc dx dy w h)) - (send dc set-pen pen) - (send dc set-brush brush)))))) - - (define/private (draw-highlighted-squares dc dx dy w h) - (send dc set-pen (send the-pen-list find-or-create-pen "black" 1 'transparent)) - (send dc set-brush (send the-brush-list find-or-create-brush "black" 'hilite)) - (for-each (lambda (highlighted-offset) - (let-values ([(x y cw ch) (coordinate->xywh highlighted-offset w h)]) - (send dc draw-rectangle (+ dx x) (+ dy y) cw ch))) - current-highlight)) - - (inherit dc-location-to-editor-location) - (define/override (on-event event) - (let-values ([(w h) (get-size)]) - (cond - [(and (send event button-up?) - (find-next-selected-snip #f)) - => - (lambda (snip) - (super on-event event) - (let ([pawn-id (send snip get-pawn-id)]) - (let-values ([(x y) (dc-location-to-editor-location (send event get-x) (send event get-y))]) - (let* ([potential-move-line - (memf (lambda (mcl) (in-coord? (car mcl) x y w h)) - move-candidates)]) - (if potential-move-line - (let* ([potential-moves (cdar potential-move-line)] - [new-move (ormap (lambda (mc) - (and (= pawn-id (get-move-id (move-candidate-move mc))) - mc)) - potential-moves)]) - (if new-move - (send admin-gui build-new-board/register-move new-move) - (reset-snips))) - (reset-snips))))) - (update-current-mouse (get-mouse-coordinate event w h)))] - [else - (update-current-mouse (get-mouse-coordinate event w h)) - (super on-event event)]))) - - (inherit find-next-selected-snip) - (define/private (get-mouse-coordinate event w h) - (cond - [(and (send event dragging?) - (find-next-selected-snip #f)) - => - (lambda (snip) (send snip get-coord))] - [else - (let-values ([(x y) (dc-location-to-editor-location (send event get-x) (send event get-y))]) - (let loop ([highlights highlighted-squares]) - (cond - [(null? highlights) #f] - [else - (let* ([highlight-list (car highlights)] - [highlight (car highlight-list)]) - (let-values ([(sx sy cw ch) (coordinate->xywh highlight w h)]) - (if (and (<= sx x (+ sx cw)) - (<= sy y (+ sy ch))) - highlight - (loop (cdr highlights)))))])))])) - - (inherit invalidate-bitmap-cache) - (define/private (update-current-mouse mse) - (unless (equal? current-mouse mse) - (set! current-mouse mse) - (set! current-highlight - (if mse - (let ([ent (assoc current-mouse highlighted-squares)]) - (if ent - (cdr ent) - '())) - '())) - (invalidate-bitmap-cache))) - - - (inherit insert begin-edit-sequence end-edit-sequence find-first-snip set-min-width set-min-height) - (define/public (frame-size-changed) (reset-snips)) - (define/private (reset-snips) - (begin-edit-sequence) - (let loop ([s (find-first-snip)]) - (when s - (let ([n (send s next)]) - (send s release-from-owner) - (loop n)))) - (let-values ([(w h) (get-size)]) - (let ([pawn-size (get-piece-size w h)]) - (set-min-width w) - (set-min-height h) - (for-each-piece/position - board w h - (lambda (pawn x y coord) - (insert (new coordinate-snip% - (color (pawn-color pawn)) - (id (pawn-id pawn)) - (coord coord) - (w pawn-size) - (h pawn-size)) - x - y))))) - (end-edit-sequence)) - - (define/private (get-size) - (let ([wb (box 0)] - [hb (box 0)]) - (get-view-size wb hb) - (values (max 10 (- (unbox wb) 3)) - (max 10 (- (unbox hb) 3))))) - - (super-new) - (inherit set-selection-visible) - (set-selection-visible #f))) - - (define coordinate-snip% - (class snip% - (define/override (draw dc x y left top right bottom dx dy draw-caret) - (let ([old-pen (send dc get-pen)] - [old-brush (send dc get-brush)] - [old-smoothing (send dc get-smoothing)]) - (send dc set-pen (send the-pen-list find-or-create-pen "black" 1 'solid)) - (send dc set-brush (send the-brush-list find-or-create-brush (pawn-drawn-color color) 'solid)) - (send dc set-smoothing 'aligned) - (send dc draw-ellipse x y w h) - (send dc set-pen old-pen) - (send dc set-brush old-brush) - (send dc set-smoothing old-smoothing))) - (define/override (get-extent dc x y wb hb descent space lspace rspace) - (set-box/f! wb w) - (set-box/f! hb h) - (set-box/f! descent 0) - (set-box/f! space 0) - (set-box/f! lspace 0) - (set-box/f! rspace 0)) - (init-field id coord color w h) - (define/public (get-coord) coord) - (define/public (get-pawn-id) id) - (super-new) - (inherit set-snipclass) - (set-snipclass coordinate-snipclass))) - - (define (set-box/f! b v) (when (box? b) (set-box! b v))) - - (define coordinate-snipclass - (new - (class snip-class% - (define/override (read in) - (let ([id (send in get-fixed)] - [coord '???]) - (new coordinate-snip% (id id) (coord coord)))) - (super-new)))) - (send coordinate-snipclass set-classname "parcheesi:coordinate-snipclass") - (send coordinate-snipclass set-version 1) - (send (get-the-snip-class-list) add coordinate-snipclass) - - (define board-frame% - (class frame% - (init-field [board-pasteboard #f]) - (define/public (set-board-pasteboard bpb) (set! board-pasteboard bpb)) - (define/override (on-size w h) - (when board-pasteboard - (send board-pasteboard frame-size-changed))) - (define/override (on-superwindow-show shown?) - (when board-pasteboard - (send board-pasteboard frame-size-changed))) - (super-new))) - - (define (in-coord? coord x y w h) - (let-values ([(cx cy cw ch) (coordinate->xywh coord w h)]) - (and (<= cx x (+ cx cw)) - (<= cy y (+ cy ch))))) - - ;; coordinate->xywh : coordinate -> (values number number number number) - (define (coordinate->xywh loc w h) - (cond - [(main-c? loc) - (let*-values ([(x y horizontal?) (find-main-coordinates (main-c-count loc) w h)] - [(cw ch) (get-cell-size horizontal? w h)]) - (values (- x (/ cw 2)) (- y (/ ch 2)) cw ch))] - [(home-row-c? loc) - (let*-values ([(x y horizontal?) (find-home-row-coordinates (home-row-c-color loc) - (home-row-c-count loc) - w - h)] - [(cw ch) (get-cell-size horizontal? w h)]) - (values (- x (/ cw 2)) (- y (/ ch 2)) cw ch))] - [(home-c? loc) - (values (* w 1/3) (* h 1/3) (* w 1/3) (* h 1/3))] - [(start-c? loc) - (case (start-c-color loc) - [(blue) (values 0 0 (* w 1/3) (* h 1/3))] - [(red) (values (* w 2/3) 0 (* w 1/3) (* h 1/3))] - [(yellow) (values 0 (* h 2/3) (* w 1/3) (* h 1/3))] - [(green) (values (* w 2/3) (* h 2/3) (* w 1/3) (* h 1/3))])] - [else (error 'coordinate->xywh "unk loc ~e" loc)])) - - ;; find-roll-coordinates : board - ;; (listof number) - ;; color - ;; -> (values (listof (cons coordinate (listof coordinate))) - ;; (listof (cons coordinate (listof move-candidate)))) - ;; finds the coordinates for the moves that the GUI highlights. - ;; in the resulting list, the first entry is the place with the - ;; piece and subsequent entries are places that it can move to. - (define (find-roll-coordinates board roll color) - (let-values ([(start-coords start-moves) - (find-start-roll-coordinates board roll color)] - [(main-coords main-moves) - (find-main-roll-coordinates board roll color)] - [(home-coords home-moves) - (find-home-roll-coordinates board roll color)]) - (values (map (lambda (x) (cons (car x) (eliminate-duplicates (cdr x)))) - (append start-coords main-coords home-coords)) - (collapse-same-coordinates (append start-moves main-moves home-moves))))) - - ;; eliminate-duplicates : (listof X) -> (listof X) - (define (eliminate-duplicates lst) - (let ([ht (make-hash)]) - (for-each (lambda (x) (hash-set! ht x #t)) lst) - (hash-map ht (lambda (x y) x)))) - - ;; collapse-same-coordinates : (listof (cons coordinate (listof move-candidate))) - ;; -> (listof (cons coordinate (listof move-candidate))) - (define (collapse-same-coordinates l) - (let ([ht (make-hash)]) - (for-each (lambda (pr) - (hash-set! ht (car pr) - (append (cdr pr) - (hash-ref ht (car pr) (lambda () '()))))) - l) - (hash-map ht cons))) - - ;; like find-roll-coordinates, but only for the main track of the board - (define (find-home-roll-coordinates board roll color) - (find-move-coordinates board-home-row-size - (lambda (i) (board-home-row-i board color i)) - roll - color - (lambda (num) (make-home-row-c num color)) - make-move-piece-home - home-row-add)) - - ;; like find-roll-coordinates, but only for the main track of the board - (define (find-main-roll-coordinates board roll color) - (find-move-coordinates board-main-size - (lambda (i) (board-main-i board i)) - roll - color - make-main-c - make-move-piece-main - main-ring-add)) - - ;; find-move-coordinates : number - ;; (number -> (listof pawn)) - ;; number color - ;; (number -> coordinate) - ;; (pawn number number -> move) - ;; (color number number -> (union #f number)) - (define (find-move-coordinates len ref roll color make-coordinate make-move-piece find-end-spot) - (let loop ([i len] - [coords null] - [move-candidates null]) - (cond - [(= i 0) (values coords move-candidates)] - [else (let* ([pos (- i 1)] - [ent (ref pos)]) - (if (and (pair? ent) - (eq? (pawn-color (car ent)) color)) - (let* ([build-list - (lambda (f) - (foldl - (lambda (die sofar) - (let ([final-spot (find-end-spot color pos die)]) - (if final-spot - (cons (f die final-spot) sofar) - sofar))) - '() - roll))] - - [new-coord (cons (make-coordinate pos) - (build-list (lambda (die final-spot) final-spot)))] - [new-moves - (build-list (lambda (die final-spot) - (cons final-spot - (map (lambda (pawn) - (make-move-candidate (make-move-piece pawn pos die) - (list die))) - ent))))]) - (loop (- i 1) - (cons new-coord coords) - (append new-moves move-candidates))) - (loop (- i 1) coords move-candidates)))]))) - - (define (main-ring-add color start dist) - (let ([landed (find-end-spot color start dist)]) - (cond - [(eq? landed 'too-far) #f] - [(eq? landed 'home) (make-home-c color)] - [(eq? (car landed) 'home-row) - (make-home-row-c (cdr landed) color)] - [(eq? (car landed) 'main) - (make-main-c (cdr landed))]))) - - (define (home-row-add color pos die) - (let ([final-spot (+ pos die)]) - (cond - [(< final-spot board-home-row-size) - (make-home-row-c final-spot color)] - [(= final-spot board-home-row-size) - (make-home-c color)] - [else #f]))) - - ;; like find-roll-coordinates, but only for the start position of the board - (define (find-start-roll-coordinates board roll color) - (let ([available-pawns (filter (lambda (pawn) (eq? (pawn-color pawn) color)) (board-start board))] - [ent (board-main-i board (get-enter-pos color))]) - (cond - [(and (has-entering-roll? roll) - (not (null? available-pawns)) - (or (null? ent) - (null? (cdr ent)))) - (let ([entry-coord (make-main-c (get-enter-pos color))]) - (values - (list (list (make-start-c color) entry-coord)) - (list - (cons entry-coord - (map - (lambda (pawn) - (make-move-candidate (make-enter-piece pawn) - (if (memq 5 roll) '(5) roll))) - available-pawns)))))] - [else (values null null)])))) diff --git a/pkgs/games/parcheesi/admin.rkt b/pkgs/games/parcheesi/admin.rkt deleted file mode 100644 index 84e2b286ae..0000000000 --- a/pkgs/games/parcheesi/admin.rkt +++ /dev/null @@ -1,172 +0,0 @@ -(module admin racket - (require "board.rkt" - "moves.rkt" - "interfaces.rkt" - racket/class) - - (provide game% - game-observer<%>) - - (define all-colors '(green red blue yellow)) - - (define game-observer<%> - (interface () - introduce ;; color string -> void - taking-turn ;; color dice -> void - took-turn ;; color board -> void - game-over)) ;; (union string #f) (union color #f) -> void - - (define game% - (class* object% (game<%>) - (define die (new die%)) - (define players '()) - (define colors all-colors) - (define board (new-board)) - - (define observer #f) - (define/public (set-observer wf) - (unless (is-a? wf game-observer<%>) - (error 'set-observer "expected a game-observer<%> object, got ~e" wf)) - (set! observer wf)) - - (define/public (register player) - (when (null? colors) - (error 'add-player "cannot add more than four players")) - (set! players (append players (list (new splayer% (player player) (color (car colors)))))) - (set! colors (cdr colors))) - - ;; -> (union player #f) - ;; #f indicates that everyone cheated - (define/public (start) - (unless (= 4 (length players)) - (error 'start "expected 4 players to be registered, but there are ~a" (length players))) - - (for-each (lambda (player) (send player start-game observer)) players) - - (let loop () - (for-each (lambda (player) - (unless (winner) - (take-player-turn player))) - players) - (unless (winner) - (loop))) - - (let ([winner (winner)]) - (when observer - (if (object? winner) - (send observer game-over (send winner get-name) (send winner get-color)) - (send observer game-over #f #f))) - (list (if (object? winner) - (send winner get-name) - #f) - (map (lambda (x) (send x get-name)) - (filter (lambda (x) (send x get-cheated?)) players))))) - - (define/private (take-player-turn player) - (let doubles-loop ([count 1]) - (let-values ([(doubles? roll) (send die roll board (send player get-color))]) - (when observer - (send observer taking-turn (send player get-color) roll)) - (cond - [(and doubles? (= count 3)) - (set! board (send player doubles-penalty board)) - (when observer - (send observer took-turn (send player get-color) board))] - [else - (set! board (send player do-move board roll)) - (when observer - (send observer took-turn (send player get-color) board)) - (when doubles? - (doubles-loop (+ count 1)))])))) - - (define/private (winner) - (cond - [(ormap (lambda (player) (and (send player won? board) player)) - players) - => - (lambda (x) x)] - [(andmap (lambda (player) (send player get-cheated?)) - players) - 'everyone-cheated] - [else #f])) - - (super-new))) - - (define splayer% - (class object% - (init-field [player player] - [color color]) - (define name #f) - (define cheated? #f) - (define/public (get-cheated?) cheated?) - (define/public (get-color) color) - (define/public (get-name) name) - (define/public (won? board) - (equal? 4 (length (filter (lambda (x) (eq? (pawn-color x) color)) (board-home board))))) - - (define/private (cheated . args) - (display (string-append (format "~s cheated! " color) - (apply format args) - "\n")) - (set! cheated? #t)) - - (define/public (start-game observer) - (unless cheated? - (with-handlers ([exn? (lambda (x) (cheated "start-game error ~a" (exn-message x)))]) - (let ([res-name (send player start-game color)]) - (cond - [(string? res-name) - (set! name res-name) - (when observer - (send observer introduce color name)) - name] - [else (cheated "expected a string for the name, got ~s" name)]))))) - - (define/public (do-move board dice) - (cond - [cheated? board] - [else - (with-handlers ([exn:bad-move? - (lambda (x) - (cheated "~s" (exn-message x)) - (remove-player board))]) - (let ([moves (with-handlers ([exn? (lambda (x) (list 'error (exn-message x)))]) - (send player do-move board dice))]) - (cond - [(and (list? moves) (andmap move? moves)) - (take-turn color board dice moves)] - [else - (cheated "wrong result ~s" moves) - (remove-player board)])))])) - - (define/private (remove-player board) - (board-doubles-penalty - (board-doubles-penalty - (board-doubles-penalty - (board-doubles-penalty board color) - color) - color) - color)) - - (define/public (doubles-penalty board) - (cond - [cheated? board] - [else - (with-handlers ([exn? (lambda (x) - (cheated "doubles-penalty: ~a\n" (exn-message x)) - (void))]) - (send player doubles-penalty)) - (board-doubles-penalty board color)])) - - (super-new))) - - (define die% - (class object% - (define/public (roll board color) - (let* ([die1 (+ 1 (random 6))] - [die2 (+ 1 (random 6))] - [doubles? (= die1 die2)]) - (if (and doubles? (board-all-in? board color)) - (values doubles? (list die1 die2 (- 7 die1) (- 7 die2))) - (values doubles? (list die1 die2))))) - (super-new)))) diff --git a/pkgs/games/parcheesi/best-players.rkt b/pkgs/games/parcheesi/best-players.rkt deleted file mode 100644 index d5bd36b1ae..0000000000 --- a/pkgs/games/parcheesi/best-players.rkt +++ /dev/null @@ -1,765 +0,0 @@ -#| - -player characteristics - - all things being equal, prefer to bop opponents (even if no bonus comes from it) - - player that prefers to set himself up to bop opponents - -agressive annie -balanced bob -careful charlie -(random ron) -|# - -(module best-players racket - (require "board.rkt" - "moves.rkt" - "interfaces.rkt" - "test.rkt" - racket/class - racket/pretty) - - (provide random-player% - agressive-player% - careful-player% - best-player% - polite-player% - reckless-player% - - search - (struct-out state)) - - (define candidates-record '()) - (provide average-move-count) - (define (average-move-count) - (if (null? candidates-record) - 'no-games-played - (list (/ (apply + candidates-record) (length candidates-record) 1.0) - (length candidates-record)))) - - ;; moves : (listof move) -- what got us here - ;; dice : (listof dice) -- what we have left to use - ;; board : board -- the state of the board after taking the moves - (define-struct state (moves dice board) #:inspector (make-inspector)) - - (define base-player% - (class* object% (player<%>) - (init-field name) - (define/public (score board) (error 'score "abstract method")) - - (field [color #f]) - (define/public (start-game _color) - (set! color _color) - name) - (define/public (doubles-penalty) (void)) - - (define/public (do-move orig-board unsorted-dice) - (let ([dice (sort unsorted-dice <)]) - (let* ([before (current-process-milliseconds)] - [candidates (search orig-board color dice)] - [ms (- (current-process-milliseconds) before)]) - (set! candidates-record (cons (length candidates) candidates-record)) - (when (ms . > . 4000) - (printf "\nmsec ~s\n" ms) - (printf "candidates ~s (avg moves ~s)\n" - (length candidates) - (let ([nums (map (lambda (x) (length (state-moves x))) candidates)]) - (/ (apply + nums) - (length nums) - 1.0))) - (print-struct #t) - (printf "color ~s dice ~s\n" color dice) - (pretty-print orig-board)) - (find-best candidates)))) - - (define/private (find-best moves) - (cond - [(null? moves) '()] - [else - (let loop ([states (cdr moves)] - [best (list (car moves))] - [best-score (score (state-board (car moves)))]) - (cond - [(null? states) (state-moves (list-ref best (random (length best))))] - [else (let* ([state (car states)] - [this-score (score (state-board state))]) - (cond - [(= this-score best-score) - (loop (cdr states) - (cons state best) - best-score)] - [(< this-score best-score) - (loop (cdr states) - best - best-score)] - [else (loop (cdr states) - (list state) - this-score)]))]))])) - - (super-new))) - - (define random-player% - (class base-player% - (init [name "Random Ron"]) - (define/override (score board) (random 10000)) - (super-new [name name]))) - - (define agressive-player% - (class base-player% - (inherit-field color) - (define/override (score board) (- 500 (find-distance board color))) - (super-new [name "Agressive Annie"]))) - - (define polite-player% - (class base-player% - (inherit-field color) - (define/override (score board) (find-distance board color)) - (super-new [name "Polite Polly"]))) - - (define best-player% - (class base-player% - (inherit-field color) - (define/override (score board) - (let ([dist (- 500 (find-distance board color))] - [bop-chance (- 36 (find-bop-chance board color))]) - (+ (* dist 100) bop-chance))) - (super-new [name "Amazing Grace"]))) - - (define reckless-player% - (class base-player% - (inherit-field color) - (define/override (score board) (find-bop-chance board color)) - (super-new [name "Reckless Renee"]))) - - (define careful-player% - (class base-player% - (inherit-field color) - (define/override (score board) (- 36 (find-bop-chance board color))) - (super-new [name "Careful Charlie"]))) - - ;; search : board color (listof number) -> (listof state) - (define (search orig-board color dice) - (define candidate-ht (make-hash)) - (define (move-candidate candidate) - (hash-set! candidate-ht (state-board candidate) candidate)) - (define (get-candidates) (hash-map candidate-ht (lambda (x y) y))) - - ;; main : -> void - (define (main) - ;; ht : board -o> true - (let ([ht (make-hash)]) - (let loop ([state (make-state '() dice orig-board)]) - (let* ([board (state-board state)] - [dice (state-dice state)] - [key (cons dice board)]) - (cond - [(hash-ref ht key (lambda () #f)) - (void)] - [else - (hash-set! ht key #t) - (let* ([possible-moves (find-moves board dice)] - [valid-next-states (find-valid-states state orig-board board possible-moves)]) - (cond - [(null? valid-next-states) (move-candidate state)] - [else (for-each loop valid-next-states)]))]))))) - - (define (find-valid-states state orig-board board moves) - (let loop ([moves moves]) - (cond - [(null? moves) null] - [else (let ([move (car moves)]) - (with-handlers ([exn:bad-move? (lambda (x) (loop (cdr moves)))]) - (let-values ([(new-board bonus) (make-one-move board move)]) - (if (blockade-moved? orig-board new-board color) - (loop (cdr moves)) - (let ([removed-dice (remove-used-rolls move (state-dice state))]) - (if removed-dice - (cons (make-state (append (state-moves state) (list move)) - (if bonus (insert bonus removed-dice) removed-dice) - new-board) - (loop (cdr moves))) - (loop (cdr moves))))))))]))) - - (define (remove-used-rolls move dice) - (cond - [(move-piece-main? move) (mem/rem (move-piece-main-distance move) dice)] - [(move-piece-home? move) (mem/rem (move-piece-home-distance move) dice)] - [(enter-piece? move) - (or (mem/rem 5 dice) - (and (memq 3 dice) - (memq 2 dice) - (remq 3 (remq 2 dice))) - (and (memq 1 dice) - (memq 4 dice) - (remq 1 (remq 4 dice))))])) - - (define (mem/rem x ls) (and (memq x ls) (remq x ls))) - - (define (find-moves board dice) - (let ([moves '()]) - (for-each-pawn/loc - board - (lambda (pawn loc) - (when (eq? (pawn-color pawn) color) - (cond - [(eq? loc 'start) (set! moves (cons (make-enter-piece pawn) moves))] - [(number? loc) - (set! moves (append (map (lambda (die) (make-move-piece-main pawn loc die)) - dice) - moves))] - [(home-row-loc? loc) - (set! moves (append (map (lambda (die) (make-move-piece-home pawn (home-row-loc-num loc) die)) - dice) - moves))] - [(eq? loc 'home) (void)])))) - moves)) - - (define (extend vec i make-move-piece dice) - (let ([ent (vector-ref vec i)]) - (cond - [(and (pair? ent) - (eq? (pawn-color (car ent)) color)) - (all-moves make-move-piece ent i dice)] - [else '()]))) - - (define (all-moves make-move-piece ent i dice) - (let d-loop ([dice dice]) - (cond - [(null? dice) '()] - [else - (append - (let loop ([ent ent]) - (cond - [(null? ent) null] - [else (cons (make-move-piece (car ent) i (car dice)) - (loop (cdr ent)))])) - (d-loop (cdr dice)))]))) - - (main) - (get-candidates)) - - ;; find-bop-chance : board color -> number[0-36] - (define (find-bop-chance board color) - - ;; add-chances : number[distance] -> void - (define (add-chances i) - (case i - [(1) - (add-single-roll-chances 1)] - [(2) - (add-single-roll-chances 1) - (add-chance 1 1)] - [(3) - (add-single-roll-chances 1) - (add-chance 1 2)] - [(4) - (add-single-roll-chances 1) - (add-chance 1 3) - (add-chance 2 2)] - [(5) - (add-single-roll-chances 1) - (add-chance 1 4) - (add-chance 2 3)] - [(6) - (add-single-roll-chances 1) - (add-chance 1 5) - (add-chance 2 4) - (add-chance 3 3)] - [(7) - (add-chance 1 6) - (add-chance 2 5) - (add-chance 3 4)] - [(8) - (add-chance 2 6) - (add-chance 3 5) - (add-chance 4 4)] - [(9) - (add-chance 3 6) - (add-chance 4 5)] - [(10) - (add-chance 4 6) - (add-chance 5 5)] - [(11) - (add-chance 5 6)] - [(12) - (add-chance 6 6)] - [else (void)])) - - (define (add-single-roll-chances i) - (add-chance i 1) - (add-chance i 2) - (add-chance i 3) - (add-chance i 4) - (add-chance i 5) - (add-chance i 6)) - - (define chances (build-vector - 6 - (lambda (i) (make-vector 6 #f)))) - (define (add-chance d1 d2) - (vector-set! (vector-ref chances (- d1 1)) (- d2 1) #t) - (vector-set! (vector-ref chances (- d2 1)) (- d1 1) #t)) - - (let ([my-blockades (map blockade-loc (find-blockades/color board color))]) - (for-each-pawn/loc - board - (lambda (pawn my-loc) - (when (and (eq? (pawn-color pawn) color) - (number? my-loc)) - (unless (member my-loc my-blockades) - (for-each-pawn/loc - board - (lambda (pawn their-loc) - (unless (eq? (pawn-color pawn) color) - (cond - [(eq? their-loc 'start) - (let ([their-enter-spot (get-enter-pos (pawn-color pawn))]) - ;; this code assumes that the enter-pos's are not within 6 of - ;; where the board indices wrap around. - (cond - [(= my-loc their-enter-spot) - (add-single-roll-chances 5) - (add-chance 2 3) - (add-chance 1 4)] - [(= my-loc (+ their-enter-spot 1)) - (add-chance 5 1)] - [(= my-loc (+ their-enter-spot 2)) - (add-chance 5 2)] - [(= my-loc (+ their-enter-spot 3)) - (add-chance 5 3)] - [(= my-loc (+ their-enter-spot 4)) - (add-chance 5 4)] - [(= my-loc (+ their-enter-spot 5)) - (add-chance 5 5)] - [(= my-loc (+ their-enter-spot 6)) - (add-chance 5 6)]))] - [(number? their-loc) - (unless (safety? my-loc) - (unless (find-blockade/between board their-loc my-loc) - (add-chances (dist-from their-loc my-loc))))]))))))))) - - (length (filter values (apply append (map vector->list (vector->list chances)))))) - - (define (dist-from them me) - (cond - [(< them me) (- me them)] - [else (- (+ me board-main-size) them)])) - - ;; find-distance : board color -> number - ;; finds the cumulative distance that the pawns have - ;; to travel before they can make it home. - (define (find-distance board color) - (define distance 0) - - (for-each-pawn/loc - board - (lambda (pawn loc) - (when (eq? (pawn-color pawn) color) - (set! distance (+ (find-loc-distance loc color) distance))))) - distance) - - ;; find-loc-distance : loc color -> number - (define (find-loc-distance loc color) - (cond - [(eq? loc 'start) 100] - [(eq? loc 'home) 0] - [(number? loc) - (let* ([entry (get-enter-pos color)] - [exit (get-exit-pos color)] - [sub-from 73] - [dist-to-entry - (cond - [(<= entry loc) (- loc entry)] - [else (- (+ loc board-main-size) entry)])]) - (- sub-from dist-to-entry))] - [else (- board-home-row-size (home-row-loc-num loc))])) - - (define (insert x l) - (cond - [(empty? l) (list x)] - [(<= x (first l)) (cons x l)] - [else (cons (first l) (insert x (rest l)))])) - - (define everywhere-board - (make-board (list (make-pawn 'red 2) - (make-pawn 'blue 0) - (make-pawn 'green 1) - (make-pawn 'yellow 3)) - `#68(() () () () () (,(make-pawn 'green 0)) () () - () () () () () () () () - () - () () () () () (,(make-pawn 'red 1)) () () - () () () () () () () () - () - () () () () () (,(make-pawn 'blue 3)) () () - () () () () () () () () - () - () () () () () (,(make-pawn 'yellow 2)) () () - () () () () () () () ()) - (list (cons 'green `#7((,(make-pawn 'green 2)) ())) - (cons 'red `#7(() (,(make-pawn 'red 3)) ())) - (cons 'blue `#7(() () (,(make-pawn 'blue 1)) ())) - (cons 'yellow `#7(() () () (,(make-pawn 'yellow 0)) ()))) - (list (make-pawn 'red 0) - (make-pawn 'blue 2) - (make-pawn 'green 3) - (make-pawn 'yellow 1)))) - - (define (run-test) - (define (build-state moves dice board) - (make-state moves - dice - (let loop ([moves moves] - [board board]) - (cond - [(null? moves) board] - [else - (let-values ([(new-board bonus) (make-one-move board (car moves))]) - (loop (cdr moves) new-board))])))) - - (test-list (search (new-board) 'green (list 2 3)) - (list (build-state (list (make-enter-piece (make-pawn 'green 0))) - '() - (new-board)) - (build-state (list (make-enter-piece (make-pawn 'green 1))) - '() - (new-board)) - (build-state (list (make-enter-piece (make-pawn 'green 2))) - '() - (new-board)) - (build-state (list (make-enter-piece (make-pawn 'green 3))) - '() - (new-board)))) - - (test-list (search (new-board) 'green (list 5 2)) - (list (build-state (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 2)) - '() - (new-board)) - (build-state (list (make-enter-piece (make-pawn 'green 1)) - (make-move-piece-main (make-pawn 'green 1) 5 2)) - '() - (new-board)) - (build-state (list (make-enter-piece (make-pawn 'green 2)) - (make-move-piece-main (make-pawn 'green 2) 5 2)) - '() - (new-board)) - (build-state (list (make-enter-piece (make-pawn 'green 3)) - (make-move-piece-main (make-pawn 'green 3) 5 2)) - '() - (new-board)))) - - (test (find-loc-distance 'start 'red) 100) - (test (find-loc-distance 'home 'red) 0) - (test (find-loc-distance (make-home-row-loc 1 'red) 'red) 6) - (test (find-loc-distance (get-enter-pos 'red) 'red) 73) - (test (find-loc-distance (get-exit-pos 'red) 'red) (- 73 - board-main-size - (- (get-exit-pos 'red) - (get-enter-pos 'red)))) - - (test (find-distance (new-board) 'green) - (* 4 100)) - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'green 0))]) - (find-distance board 'green)) - (+ (* 3 100) 73)) - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'red 0))]) - (find-distance board 'red)) - (+ (* 3 100) 73)) - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'yellow 0))]) - (find-distance board 'yellow)) - (+ (* 3 100) 73)) - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'blue 0))]) - (find-distance board 'blue)) - (+ (* 3 100) 73)) - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'yellow 0))]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'yellow 0) 56 60)]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'yellow 0) 48 3)]) - (find-distance board 'yellow)))) - (+ (* 3 100) 10)) - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'yellow 0))]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'yellow 0) 56 60)]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'yellow 0) 48 4)]) - (find-distance board 'yellow)))) - (+ (* 3 100) 7)) - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'yellow 0))]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'yellow 0) 56 60)]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'yellow 0) 48 11)]) - (find-distance board 'yellow)))) - 300) - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'yellow 0))]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'yellow 0) 56 60)]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'yellow 0) 48 10)]) - (find-distance board 'yellow)))) - 301) - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'yellow 0))]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'yellow 0) 56 40)]) - (find-distance board 'yellow))) - 333) - - (test (let-values ([(board bonus) (board-enter-piece (new-board) (make-pawn 'blue 0))]) - (let-values ([(board bonus) (board-enter-piece board (make-pawn 'blue 1))]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'blue 0) 39 1)]) - (let-values ([(board bonus) (board-move-piece-main board (make-pawn 'blue 1) 39 1)]) - (let-values ([(board bonus) (board-enter-piece board (make-pawn 'blue 2))]) - (let-values ([(board bonus) (board-enter-piece board (make-pawn 'blue 3))]) - (find-distance board 'blue))))))) - (+ 73 73 72 72)) - - (test (find-bop-chance (mb) 'green) 0) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'red 0)) - (make-move-piece-main (make-pawn 'green 0) 5 16)) - 'green) - 0) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'green 1)) - (make-move-piece-main (make-pawn 'green 0) 5 1)) - 'green) - 0) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) - 5 - 17)) - 'green) - 15) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) - 5 - 18)) - 'green) - 2) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) - 5 - 19)) - 'green) - 2) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) - 5 - 20)) - 'green) - 2) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) - 5 - 21)) - 'green) - 2) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) - 5 - 22)) - 'green) - 1) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) - 5 - 23)) - 'green) - 2) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) - 5 - 27)) - 'green) - 0) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'red 0)) - (make-move-piece-main (make-pawn 'green 0) 5 16)) - 'red) - 0) - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'red 0)) - (make-move-piece-main (make-pawn 'green 0) 5 16) - (make-move-piece-main (make-pawn 'red 0) 22 1)) - 'red) - 11) - - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'red 0)) - (make-enter-piece (make-pawn 'red 1)) - (make-move-piece-main (make-pawn 'green 0) 5 16) - (make-move-piece-main (make-pawn 'red 0) 22 1)) - 'red) - 11) - - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'red 0)) - (make-enter-piece (make-pawn 'red 1)) - (make-move-piece-main (make-pawn 'green 0) 5 16) - (make-move-piece-main (make-pawn 'red 0) 22 1) - (make-move-piece-main (make-pawn 'red 1) 22 1)) - 'red) - 0) - - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'red 0)) - (make-enter-piece (make-pawn 'red 1)) - (make-move-piece-main (make-pawn 'green 0) 5 16) - (make-move-piece-main (make-pawn 'red 0) 22 1) - (make-move-piece-main (make-pawn 'red 1) 22 1) - (make-enter-piece (make-pawn 'red 2))) - 'red) - 0) - - (test (find-bop-chance (mb (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'red 0)) - (make-enter-piece (make-pawn 'red 1)) - (make-move-piece-main (make-pawn 'green 0) 5 16) - (make-move-piece-main (make-pawn 'red 0) 22 1) - (make-move-piece-main (make-pawn 'red 1) 22 2) - (make-enter-piece (make-pawn 'red 2)) - (make-move-piece-main (make-pawn 'red 2) 22 1)) - 'red) - 0) - - (test-results)) - - (define (mb . moves) - (let-values ([(board bonus) (make-moves (new-board) moves)]) - board)) - - #; - (begin - (define problem-board - (make-board (list (make-pawn 'yellow 0) - (make-pawn 'blue 2) - (make-pawn 'blue 3) - (make-pawn 'red 3) - (make-pawn 'yellow 3)) - `#68(() () () () () () () () () () () () - (,(make-pawn 'green 2)) () () () () () - (,(make-pawn 'blue 1)) () - (,(make-pawn 'green 1)) () () () () () - (,(make-pawn 'red 2)) () () () () () - (,(make-pawn 'green 0)) () () () () () - (,(make-pawn 'green 3)) () () () () () () - (,(make-pawn 'blue 0)) () () () () () - (,(make-pawn 'yellow 1)) () - (,(make-pawn 'red 0)) () () () () - (,(make-pawn 'red 1)) - (,(make-pawn 'yellow 2)) ()) - '((blue . #7(())) (green . #7(())) (red . #7(())) (yellow . #7(()))) - '())) - - #| -first cut in new board representation - cpu time: 42710 real time: 47086 gc time: 1400 - 1353 candidates - -blockade move checking optimized: - cpu time: 5580 real time: 5828 gc time: 0 - 1353 candidates - -use move-piece instead of removing and adding: - cpu time: 4700 real time: 4939 gc time: 0 - 1353 candidates - -optimize blockade-in-the-way checking and macro-inline matching-pawns - cpu time: 2600 real time: 2779 gc time: 0 - 1353 candidates - -another new board representation (vector of loc's) - cpu time: 1710 real time: 1799 gc time: 0 - 1353 candidates -|# - - (let ([candidates (time (search problem-board 'green (list 1 1 6 6)))]) - (printf "~s candidates\n" (length candidates)))) - - - ;color green dice (2 2 5 5) - ;candidates 2893 (avg moves 6.952298651918424) - #; - (begin - (define problem-board2 - (let loop ([board (new-board)] - [ents (list - (list (make-pawn 'blue 1) 'start) - (list (make-pawn 'red 2) 'start) - (list (make-pawn 'yellow 0) 'start) - (list (make-pawn 'yellow 1) 'start) - (list (make-pawn 'yellow 3) 'start) - (list (make-pawn 'green 1) 5) - (list (make-pawn 'green 3) 5) - (list (make-pawn 'blue 0) 17) - (list (make-pawn 'green 0) 21) - (list (make-pawn 'red 1) 23) - (list (make-pawn 'red 0) 25) - (list (make-pawn 'red 3) 26) - (list (make-pawn 'green 2) 27) - (list (make-pawn 'blue 3) 45) - (list (make-pawn 'blue 2) 47) - (list (make-pawn 'yellow 2) 63))]) - (cond - [(null? ents) board] - [else (loop (move-piece board (car (car ents)) (cadr (car ents))) - (cdr ents))]))) - - #; - (require xml - "parse.rkt") - #; - (define (dump-out-candidates candidates) - (let loop ([i 0] - [candidates candidates]) - (unless (null? candidates) - (let ([candidate (car candidates)]) - (call-with-output-file (build-path "problem-board-nexts" - (format "board~a.xml" i)) - (lambda (port) - (write-xml/content (xexpr->xml (unparse-board (state-board candidate))) port)) - 'truncate - 'text)) - (loop (+ i 1) (cdr candidates))))) - - (define candidates2 (time (search problem-board2 'green (list 2 2 5 5)))) - ;(dump-out-candidates candidates2) - (printf "~s candidates\n" (length candidates2))) - - - ;(require "gui.rkt") (show-board problem-board) - #| -cpu time: 12680 real time: 13855 gc time: 380 -candidates 2797 (avg moves 6.9878441186986056) -board #5(struct:board (#3(struct:pawn yellow 0) #3(struct:pawn blue 2) #3(struct:pawn blue 3) #3(struct:pawn red 3) #3(struct:pawn yellow 3)) #68(() () () () () () () () () () () () (#3(struct:pawn green 2)) () () () () () (#3(struct:pawn blue 1)) () (#3(struct:pawn green 1)) () () () () () (#3(struct:pawn red 2)) () () () () () (#3(struct:pawn green 0)) () () () () () (#3(struct:pawn green 3)) () () () () () () (#3(struct:pawn blue 0)) () () () () () (#3(struct:pawn yellow 1)) () (#3(struct:pawn red 0)) () () () () (#3(struct:pawn red 1)) (#3(struct:pawn yellow 2)) ()) ((blue . #7(())) (green . #7(())) (red . #7(())) (yellow . #7(()))) ()) -|# - - #| more problem boards: - -msec 5280 -candidates 2441 (avg moves 6.699303564113069) -color blue dice (1 1 6 6) -#(struct:board - #16(54 63 39 54 start start start 40 start start 14 start 60 15 6 0)) - -msec 4750 -candidates 2709 (avg moves 6.959025470653378) -color blue dice (1 1 6 6) -#(struct:board - #16(42 39 53 41 11 25 27 35 start start 40 start start 61 59 60)) - -msec 4100 -candidates 1492 (avg moves 7.138739946380697) -color red dice (3 3 4 4) -#(struct:board - #16(39 - 61 - start - 58 - 20 - 0 - 62 - start - 37 - 37 - 42 - #(struct:home-row-loc 4 red) - 57 - start - start - 41)) -|# - ) - diff --git a/pkgs/games/parcheesi/board.rkt b/pkgs/games/parcheesi/board.rkt deleted file mode 100644 index 733d646ae5..0000000000 --- a/pkgs/games/parcheesi/board.rkt +++ /dev/null @@ -1,345 +0,0 @@ - -(module board racket - - ;; color = (symbols 'blue 'green 'red 'yellow) - ;; color : color - ;; id : (union 0 1 2 3) - (define-struct pawn (color id index) #:inspector (make-inspector)) - - ;; v : (vectorof loc) length is always 16 - (define-struct board (v) #:inspector (make-inspector)) - - ;; loc = (union 'start 'home number[main-loc] home-row-loc) - (define-struct home-row-loc (num color) #:inspector (make-inspector)) - - (define color (symbols 'red 'green 'blue 'yellow)) - - (provide/contract - (get-enter-pos (color . -> . number?)) - (get-exit-pos (color . -> . number?)) - (pawn-id (pawn? . -> . (integer-in 0 4))) - (pawn-color (pawn? . -> . color))) - - (provide (rename-out [build-pawn make-pawn]) - pawn? - new-board - for-each-pawn/loc - - (rename-out [make-old-style-board make-board]) - - board-start - - board-main-i - board-main-size - - board-home-row-i - board-home-row-size - - board-home - - move-piece - move-piece2 - - safety? - - find-blockades/color - make-blockade - blockade-loc - blockade-p1 - blockade-p2 - find-blockade/between - - make-home-row-loc - home-row-loc-num - home-row-loc-color - home-row-loc?) - - ;; inline with a macro? - (define (for-each-pawn/loc/proc board f) - (let ([v (board-v board)]) - (let loop ([i 16]) - (unless (zero? i) - (f (vector-ref all-pawns (- i 1)) (vector-ref v (- i 1))) - (loop (- i 1)))))) - - (define-syntax (for-each-pawn/loc stx) - (syntax-case stx () - [(_ board (lambda (pawn loc) lam-body)) - (let loop ([i 0] - [lst '()]) - (cond - [(= i 16) (with-syntax ([(bodies ...) lst]) - (syntax - (let ([v (board-v board)]) - bodies ... - (void))))] - [else (loop (+ i 1) - (cons (with-syntax ([i i]) - (syntax (let ([loc (vector-ref v i)] - [pawn (vector-ref all-pawns i)]) - lam-body))) - lst))]))] - [(_ board f) (syntax (for-each-pawn/loc/proc board f))])) - - (define (make-old-style-board start main home-rows home) - (let* ([board (new-board)] - [v (board-v board)]) - ;; can ignore start pawns - - ;; main pawns - (let loop ([i 0]) - (cond - [(= i (vector-length main)) '()] - [else (for-each (lambda (pawn) (vector-set! v (pawn-index pawn) i)) - (vector-ref main i)) - (loop (+ i 1))])) - - ;; home row pawns - (for-each - (lambda (hr) - (let ([vec (cdr hr)]) - (let loop ([i 0]) - (cond - [(= i (vector-length vec)) (void)] - [else - (for-each (lambda (pawn) - (vector-set! v - (pawn-index pawn) - (make-home-row-loc i (pawn-color pawn)))) - (vector-ref vec i)) - (loop (+ i 1))])))) - home-rows) - - ;; home pawns - (for-each (lambda (home-pawn) (vector-set! v (pawn-index home-pawn) 'home)) home) - board)) - - (define (new-board) (make-board (make-vector 16 'start))) - (define board-home-row-size 7) - (define board-main-size 68) - - ; (matching-pawns ) - (define-syntax (matching-pawns stx) - (syntax-case stx () - [(_ board pawn loc test) - (and (identifier? (syntax pawn)) - (identifier? (syntax loc))) - (let loop ([i 16] - [sofar '()]) - (cond - [(zero? i) (with-syntax ([(body ...) sofar]) - (syntax - (let ([result '()] - [v (board-v board)]) - body ... - result)))] - [else (loop (- i 1) - (cons - (with-syntax ([i (- i 1)]) - (syntax - (let ([loc (vector-ref v i)] - [pawn (vector-ref all-pawns i)]) - (when test - (set! result (cons pawn result)))))) - sofar))]))])) - - (define (board-main-i board i) (matching-pawns board pawn loc (equal? i loc))) - (define (board-home-row-i board color i) - (matching-pawns board - pawn - loc - (and (home-row-loc? loc) - (= (home-row-loc-num loc) i) - (eq? (home-row-loc-color loc) color)))) - (define (board-start board) (matching-pawns board pawn loc (eq? loc 'start))) - (define (board-home board) (matching-pawns board pawn loc (eq? loc 'home))) - - ;; move-piece : board pawn loc -> board - (define (move-piece board pawn to) - (let ([new-board (copy-board board)]) - (vector-set! (board-v new-board) (pawn-index pawn) to) - new-board)) - - ;; move-piece2 : board pawn loc pawn loc -> board - (define (move-piece2 board pawn to pawn2 to2) - (let ([new-board (copy-board board)]) - (vector-set! (board-v new-board) (pawn-index pawn) to) - (vector-set! (board-v new-board) (pawn-index pawn2) to2) - new-board)) - - ;; copy-board : board -> board - (define (copy-board board) - (let ([v (board-v board)]) - (make-board (build-vector 16 (lambda (i) (vector-ref v i)))))) - - ;; entry points for the four colors - (define enters '((green . 5) - (red . 22) - (blue . 39) - (yellow . 56))) - (define (get-enter-pos color) (cdr (assq color enters))) - - ;; the points where the four colors go off into their - ;; own sections of the board. - (define exits '((green . 0) - (red . 17) - (blue . 34) - (yellow . 51))) - (define (get-exit-pos color) (cdr (assq color exits))) - - (define safeties (append (map cdr enters) - (map cdr exits) - (list 12 - (+ 12 17) - (+ 12 17 17) - (+ 12 17 17 17)))) - (define (safety? i) (memq i safeties)) - - ;; find-blockade/between : board loc loc -> (union loc #f) - (define (find-blockade/between board start end) - (find-blockade/cases (find-blockades board) start end)) - - ;; find-blockades : board -> (listof loc) - (define (find-blockades board) - (let ([ht (make-hash)] - [blockades '()]) - (for-each-pawn/loc - board - (lambda (pawn loc) - (when (hash-ref ht - loc - (lambda () - (hash-set! ht loc #t) - #f)) - (set! blockades (cons loc blockades))))) - blockades)) - - ;; find-blockade/cases : (listof loc) loc loc -> (union loc #f) - (define (find-blockade/cases blockades start end) - (cond - [(and (number? start) (number? end)) - (if (<= start end) - (find-blockade/between-main blockades start end) - (or (find-blockade/between-main blockades start (- board-main-size 1)) - (find-blockade/between-main blockades 0 end)))] - [(and (number? start) (home-row-loc? end)) - (or (find-blockade/cases blockades start (get-exit-pos (home-row-loc-color end))) - (find-blockade/between-home-row blockades - (home-row-loc-color end) - 0 - (home-row-loc-num end)))] - [(and (home-row-loc? start) (home-row-loc? end)) - (find-blockade/between-home-row blockades - (home-row-loc-color start) - (home-row-loc-num start) - (home-row-loc-num end))] - [(not (loc<=? start end)) - (error 'find-blockade/between "expected locs in order, got ~e and ~e" start end)] - [(or (eq? start 'home) (eq? end 'home)) - (error 'find-blockade/between "cannot accept 'home as argument, got ~e and ~e" start end)] - [(or (eq? start 'start) (eq? end 'start)) - (error 'find-blockade/between "cannot accept 'start as argument, got ~e and ~e" start end)] - [else - (error 'find-blockade/between "unknown arguments ~e and ~e" start end)])) - - (define (find-blockade/between-main blockades start end) - (ormap (lambda (blockade) (and (number? blockade) - (<= start blockade end) - blockade)) - blockades)) - - (define (find-blockade/between-home-row blockades color start end) - (ormap (lambda (blockade) (and (home-row-loc? blockade) - (eq? color (home-row-loc-color blockade)) - (<= start (home-row-loc-num blockade) end) - blockade)) - blockades)) - - ;; loc : loc - ;; p1 : pawn - ;; p2 : pawn - ;; (pawn<=? p1 p2) is true - (define-struct blockade (loc p1 p2) #:inspector (make-inspector)) - - ;; find-blockades/color : board color -> (listof blockade) - (define (find-blockades/color board color) - (let ([ht (make-hash)] - [v (board-v board)] - [offset (find-pawn-index color 0)]) - (let loop ([i 0] - [blockades null]) - (cond - [(= i 4) blockades] - [else - (let ([loc (vector-ref v (+ offset i))]) - (cond - [(eq? loc 'start) (loop (+ i 1) blockades)] - [(eq? loc 'home) (loop (+ i 1) blockades)] - [(hash-ref ht loc (lambda () - (hash-set! ht loc i) - #f)) - => - (lambda (old-i) - (loop (+ i 1) - (cons (make-blockade loc - (vector-ref all-pawns (+ offset old-i)) - (vector-ref all-pawns (+ offset i))) - blockades)))] - [else (loop (+ i 1) blockades)]))])))) - - (define (loc<=? l1 l2) (<= (loc->id l1) (loc->id l2))) - - (define (loc->id loc) - (cond - [(eq? loc 'start) 0] - [(number? loc) (+ loc 1)] - [(eq? loc 'home) 1000] - [(home-row-loc? loc) (+ 100 - (* (color->int (home-row-loc-color loc)) - 100) - (home-row-loc-num loc))] - [else (error 'loc->id "expected a loc, got ~e" loc)])) - - (define (build-pawn color id) (make-pawn color id (find-pawn-index color id))) - (define (find-pawn-index color id) (+ (* (color->int color) 4) id)) - - (define (pawn<=? p1 p2) - (if (eq? (pawn-color p1) (pawn-color p2)) - (<= (pawn-id p1) (pawn-id p2)) - (color<= (pawn-color p1) (pawn-color p2)))) - - (define (color<= c1 c2) - (<= (color->int c1) (color->int c2))) - - (define (color->int c) - (case c - [(blue) 0] - [(green) 1] - [(red) 2] - [(yellow) 3] - [else (error 'color->int "unknown color ~e" c)])) - - - (define all-pawns - (vector (build-pawn 'blue 0) - (build-pawn 'blue 1) - (build-pawn 'blue 2) - (build-pawn 'blue 3) - (build-pawn 'green 0) - (build-pawn 'green 1) - (build-pawn 'green 2) - (build-pawn 'green 3) - (build-pawn 'red 0) - (build-pawn 'red 1) - (build-pawn 'red 2) - (build-pawn 'red 3) - (build-pawn 'yellow 0) - (build-pawn 'yellow 1) - (build-pawn 'yellow 2) - (build-pawn 'yellow 3))) - - (let loop ([i 0]) - (unless (= i 16) - (unless (= i (pawn-index (vector-ref all-pawns i))) - (error 'mismatch "~s ~s" i (vector-ref all-pawns i))) - (loop (+ i 1))))) diff --git a/pkgs/games/parcheesi/die.rkt b/pkgs/games/parcheesi/die.rkt deleted file mode 100644 index a397c35fa0..0000000000 --- a/pkgs/games/parcheesi/die.rkt +++ /dev/null @@ -1,74 +0,0 @@ -(module die racket - (require racket/gui - racket/class) - - (provide die%) - - (define die% - (class canvas% - (inherit get-dc get-client-size refresh) - (init-field [digit #f]) - (define/public (set-digit d) - (unless (equal? digit d) - (set! digit d) - (refresh))) - (init-field [dim? #f]) - (define/public (set-dim d) - (unless (equal? dim? d) - (set! dim? d) - (refresh))) - (define/override (on-paint) - (let ([dc (get-dc)]) - (let-values ([(w h) (get-client-size)]) - (when digit - (send dc set-pen (send the-pen-list find-or-create-pen (if dim? "dark gray" "black") 1 'solid)) - (send dc set-brush (send the-brush-list find-or-create-brush "white" 'solid)) - (send dc draw-rounded-rectangle 0 0 w h) - (send dc set-brush (send the-brush-list find-or-create-brush (if dim? "dark gray" "black") 'solid)) - (let ([draw-circle - (lambda (mx my) - (send dc draw-ellipse - (- (* mx w) (/ w 12)) - (- (* my h) (/ h 12)) - (/ w 6) - (/ h 6)))] - [in (- 1/3 1/24)] - [out (+ 2/3 1/24)] - [draw-text - (lambda (str) - (let-values ([(tw th _1 _2) (send dc get-text-extent str)]) - (send dc draw-text - str - (- (/ w 2) (/ tw 2)) - (- (/ h 2) (/ th 2)))))]) - (case digit - [(1) (draw-circle 1/2 1/2)] - [(2) (draw-circle in in) - (draw-circle out out)] - [(3) (draw-circle in in) - (draw-circle 1/2 1/2) - (draw-circle out out)] - [(4) (draw-circle in in) - (draw-circle in out) - (draw-circle out in) - (draw-circle out out)] - [(5) (draw-circle in in) - (draw-circle in out) - (draw-circle 1/2 1/2) - (draw-circle out in) - (draw-circle out out)] - [(6) (draw-circle in in) - (draw-circle in 1/2) - (draw-circle in out) - (draw-circle out in) - (draw-circle out 1/2) - (draw-circle out out)] - [(10) (draw-text "10")] - [(20) (draw-text "20")])))))) - (super-new (style '(transparent))) - (send (get-dc) set-smoothing 'aligned) - (inherit min-width min-height stretchable-width stretchable-height) - (min-width 48) - (min-height 48) - (stretchable-width #f) - (stretchable-height #f)))) diff --git a/pkgs/games/parcheesi/gui.rkt b/pkgs/games/parcheesi/gui.rkt deleted file mode 100644 index 7a39756fc9..0000000000 --- a/pkgs/games/parcheesi/gui.rkt +++ /dev/null @@ -1,590 +0,0 @@ -(module gui racket - (require "board.rkt" - racket/gui - racket/class) - - (provide show-board - board-canvas% - draw-board - for-each-piece/position - find-main-coordinates - find-home-row-coordinates - get-cell-size - get-piece-size - pawn-drawn-color - - (struct-out home-row-c ) - (struct-out main-c ) - (struct-out start-c) - (struct-out home-c)) - - ;; a coordinate is either - ;; - (make-home-row-c number color) - ;; - (make-main-c number) - ;; - (make-start-c color) - ;; - (make-home-c color) - ;; inspectors are to allow comparison with equal? - (define-struct home-row-c (count color) #:inspector (make-inspector)) - (define-struct main-c (count) #:inspector (make-inspector)) - (define-struct start-c (color) #:inspector (make-inspector)) - (define-struct home-c (color) #:inspector (make-inspector)) - - (define (get-cell-size horizontal? w h) - (if horizontal? - (values (* w 1/9) (* h 1/24)) - (values (* w 1/24) (* h 1/9)))) - - (define colors - '((green . "limegreen") - (red . "red") - (yellow . "gold") - (blue . "blue") - (black . "black") - (safety . "purple") - (track-background . "light blue"))) - - (define (pawn-drawn-color c) - (let* ([clr-str (assq c colors)] - [color-obj (make-object color% (cdr clr-str))] - [move-up (lambda (x) (+ x (quotient (- 255 x) 3)))] - [red (move-up (send color-obj red))] - [green (move-up (send color-obj green))] - [blue (move-up (send color-obj blue))]) - (send color-obj set red green blue) - color-obj)) - - (define circle-gap 1/20) - - (define (set-color dc color) - (send dc set-pen (send the-pen-list find-or-create-pen (cdr (assq color colors)) 1 'solid)) - (send dc set-brush (send the-brush-list find-or-create-brush (cdr (assq color colors)) 'solid))) - - (define draw-board - (lambda (board dc w h dx dy draw-pieces?) - (let ([smoothing (send dc get-smoothing)]) - (send dc set-smoothing 'aligned) - (set-color dc 'track-background) - (send dc draw-rectangle (+ dx 0) (+ dy (* h 1/3)) w (* h 1/3)) - (send dc draw-rectangle (+ dx (* w 1/3)) (+ dy 0) (* w 1/3) h) - - (set-color dc 'blue) - (send dc draw-ellipse - (+ dx (* w circle-gap)) (+ dy (* h circle-gap 1/2)) - (- (/ w 3) (* w circle-gap)) (- (/ h 3) (* h circle-gap))) - (send dc draw-rectangle (+ dx (* w (- 1/2 1/18))) (+ dy 0) (* w 1/9) (/ h 3)) - (send dc draw-polygon - (list (make-object point% (* w 1/3) (* h 1/3)) - (make-object point% (* w 2/3) (* h 1/3)) - (make-object point% (* w 1/2) (* h 1/2))) - dx - dy) - - (set-color dc 'red) - (send dc draw-ellipse - (+ dx (* w 2/3) (* h circle-gap 1/2)) - (+ dy (* h circle-gap)) - (- (/ w 3) (* w circle-gap)) - (- (/ h 3) (* h circle-gap))) - (send dc draw-rectangle (+ dx (* w 2/3)) (+ dy (* h (- 1/2 1/18))) (/ w 3) (* h 1/9)) - (send dc draw-polygon - (list (make-object point% (* w 2/3) (* h 1/3)) - (make-object point% (* w 2/3) (* h 2/3)) - (make-object point% (* w 1/2) (* h 1/2))) - dx - dy) - - (set-color dc 'yellow) - (send dc draw-ellipse - (+ dx (* w circle-gap 1/2)) (+ dy (* h 2/3)) - (- (/ w 3) (* w circle-gap)) (- (/ h 3) (* h circle-gap))) - (send dc draw-rectangle (+ dx 0) (+ dy (* h (- 1/2 1/18))) (/ w 3) (* h 1/9)) - (send dc draw-polygon - (list (make-object point% (* w 1/3) (* h 1/3)) - (make-object point% (* w 1/3) (* h 2/3)) - (make-object point% (* w 1/2) (* h 1/2))) - dx - dy) - - (set-color dc 'green) - (send dc draw-ellipse - (+ dx (* w 2/3)) (+ dy (* h 2/3) (* h circle-gap 1/2)) - (- (/ w 3) (* w circle-gap)) (- (/ h 3) (* h circle-gap))) - (send dc draw-rectangle (+ dx (* w (- 1/2 1/18))) (+ dy (* h 2/3)) (* w 1/9) (/ h 3)) - (send dc draw-polygon - (list (make-object point% (* w 1/3) (* h 2/3)) - (make-object point% (* w 2/3) (* h 2/3)) - (make-object point% (* w 1/2) (* h 1/2))) - dx - dy) - - (set-color dc 'safety) - - (send dc draw-rectangle - (+ dx (* w 4/9)) - (+ dy 0) - (* w 1/9) - (* h 1/3 1/8)) - (send dc draw-rectangle - (+ dx (* w 4/9)) - (+ dy (* h (- 1 (* 1/3 1/8)))) - (* w 1/9) - (* h 1/3 1/8)) - (send dc draw-rectangle - (+ dx (* w 5/9)) - (+ dy (* h 1/3 4/8)) - (* w 1/9) - (* h 1/3 1/8)) - (send dc draw-rectangle - (+ dx (* w 3/9)) - (+ dy (* h 19/24)) - (* w 1/9) - (* h 1/3 1/8)) - - (send dc draw-rectangle - (+ dx (* w (- 1 (* 1/3 1/8)))) - (+ dy (* h 4/9)) - (* w 1/3 1/8) - (* h 1/9)) - (send dc draw-rectangle - (+ dx 0) - (+ dy (* h 4/9)) - (* w 1/3 1/8) - (* h 1/9)) - (send dc draw-rectangle - (+ dx (* w 4/24)) - (+ dy (* h 1/3)) - (* w 1/3 1/8) - (* h 1/3 1/3)) - (send dc draw-rectangle - (+ dx (* w 19/24)) - (+ dy (* h 5/9)) - (* w 1/3 1/8) - (* h 1/3 1/3)) - - ;; blue entry - (send dc draw-rectangle - (+ dx (* w 3/9)) - (+ dy (* h 1/3 4/8)) - (* w 1/9) - (* h 1/3 1/8)) - - ;; green entry - (send dc draw-rectangle - (+ dx (* w 5/9)) - (+ dy (* h 19/24)) - (* w 1/9) - (* h 1/24)) - - ;; yellow entry - (send dc draw-rectangle - (+ dx (* w 4/24)) - (+ dy (* h 5/9)) - (* w 1/24) - (* h 1/9)) - - ;; red entry - (send dc draw-rectangle - (+ dx (* w 19/24)) - (+ dy (* h 1/3)) - (* w 1/24) - (* h 1/9)) - - (set-color dc 'blue) - (send dc draw-polygon - (list (make-object point% (* w 3/9) (* h 4/24)) - (make-object point% (* w 2/9) (* h 5/24)) - (make-object point% (* w 4/9) (* h 5/24))) - dx - dy) - - (set-color dc 'green) - (send dc draw-polygon - (list (make-object point% (* w 5/9) (* h 19/24)) - (make-object point% (* w 6/9) (* h 20/24)) - (make-object point% (* w 7/9) (* h 19/24))) - dx - dy) - - - (set-color dc 'yellow) - (send dc draw-polygon - (list (make-object point% (* w 4/24) (* h 6/9)) - (make-object point% (* w 5/24) (* h 5/9)) - (make-object point% (* w 5/24) (* h 7/9))) - dx - dy) - - - (set-color dc 'red) - (send dc draw-polygon - (list (make-object point% (* w 20/24) (* h 3/9)) - (make-object point% (* w 19/24) (* h 4/9)) - (make-object point% (* w 19/24) (* h 2/9))) - dx - dy) - - (set-color dc 'black) - - (let loop ([i 7]) - (unless (zero? i) - (send dc draw-line - (+ dx (* w 1/3)) - (+ dy (+ (* h 2/3) (* (* h 1/3) (/ i 8)))) - (+ dx (* w 2/3)) - (+ dy (+ (* h 2/3) (* (* h 1/3) (/ i 8))))) - (send dc draw-line - (+ dx (* w 1/3)) - (+ dy (* (* h 1/3) (/ i 8))) - (+ dx (* w 2/3)) - (+ dy (* (* h 1/3) (/ i 8)))) - (send dc draw-line - (+ dx (+ (* w 2/3) (* (* w 1/3) (/ i 8)))) - (+ dy (* h 1/3)) - (+ dx (+ (* w 2/3) (* (* w 1/3) (/ i 8)))) - (+ dy (* h 2/3))) - (send dc draw-line - (+ dx (* (* w 1/3) (/ i 8))) - (+ dy (* h 1/3)) - (+ dx (* (* w 1/3) (/ i 8))) - (+ dy (* h 2/3))) - (loop (- i 1)))) - - (when draw-pieces? - (draw-pieces board dc w h dx dy)) - - (send dc set-smoothing smoothing)))) - - ;; piece : color left top coordinate -> void - (define (for-each-piece/position board w h piece) - (let* ([piece-size (get-piece-size w h)] - [call-out - (lambda (ent x y horizontal? coordinate) - (let* ([pawn (car ent)]) - (cond - [(null? (cdr ent)) - (piece pawn (- x (/ piece-size 2)) (- y (/ piece-size 2)) coordinate)] - [else - (let ([pawn2 (cadr ent)]) - (cond - [horizontal? - (piece pawn (- x piece-size) (- y (/ piece-size 2)) coordinate) - (piece pawn2 x (- y (/ piece-size 2)) coordinate)] - [else - (piece pawn (- x (/ piece-size 2)) (- y piece-size) coordinate) - (piece pawn2 (- x (/ piece-size 2)) y coordinate)]))])))]) - - ;; main board - (let loop ([i board-main-size]) - (unless (zero? i) - (let ([ent (board-main-i board (- i 1))]) - (unless (null? ent) - (let-values ([(x y horizontal?) (find-main-coordinates (- i 1) w h)]) - (call-out ent x y horizontal? (make-main-c (- i 1))))) - (loop (- i 1))))) - - ;; home row - (let ([handle-home-row - (lambda (color) - (let loop ([i board-home-row-size]) - (unless (zero? i) - (let ([ent (board-home-row-i board color (- i 1))]) - (unless (null? ent) - (let-values ([(x y horizontal?) (find-home-row-coordinates color (- i 1) w h)]) - (call-out ent x y horizontal? (make-home-row-c (- i 1) color))))) - (loop (- i 1)))))]) - (handle-home-row 'red) - (handle-home-row 'green) - (handle-home-row 'blue) - (handle-home-row 'yellow)) - - ;; home and start - (let ([handle-home/start - (lambda (color select coordinates coord horiz?) - (let* ([pawns (filter (lambda (x) (eq? (pawn-color x) color)) (select board))] - [num (length pawns)]) - (let-values ([(mx my) (apply values (cdr (assoc color (coordinates w h piece-size))))]) - (let ([do (lambda (pawn fx fy) - (piece pawn - (+ mx (* piece-size fx)) - (+ my (* piece-size fy)) - coord))]) - (cond - [(= num 4) - (do (list-ref pawns 3) 0 0) - (do (list-ref pawns 2) -1 0) - (do (list-ref pawns 1) 0 -1) - (do (list-ref pawns 0) -1 -1)] - [(and horiz? (= num 3)) - (do (list-ref pawns 2) 0 -1/2) - (do (list-ref pawns 1) -1 0) - (do (list-ref pawns 0) -1 -1)] - [(= num 3) - (do (list-ref pawns 2) -1/2 0) - (do (list-ref pawns 1) 0 -1) - (do (list-ref pawns 0) -1 -1)] - [(and horiz? (= num 2)) - (do (list-ref pawns 1) -1/2 -1) - (do (list-ref pawns 0) -1/2 0)] - [(= num 2) - (do (list-ref pawns 1) -1 -1/2) - (do (list-ref pawns 0) 0 -1/2)] - [(= num 1) - (do (list-ref pawns 0) -1/2 -1/2)])))))]) - (handle-home/start 'red board-home at-home-coordinates (make-home-c 'red) #t) - (handle-home/start 'green board-home at-home-coordinates (make-home-c 'green) #f) - (handle-home/start 'blue board-home at-home-coordinates (make-home-c 'blue) #f) - (handle-home/start 'yellow board-home at-home-coordinates (make-home-c 'yellow) #t) - (handle-home/start 'red board-start at-start-coordinates (make-start-c 'red) #t) - (handle-home/start 'green board-start at-start-coordinates (make-start-c 'green) #t) - (handle-home/start 'blue board-start at-start-coordinates (make-start-c 'blue) #t) - (handle-home/start 'yellow board-start at-start-coordinates (make-start-c 'yellow) #t)))) - - (define (draw-pieces board dc w h dx dy) - (for-each-piece/position - board w h - (lambda (pawn x y coord) - (let ([font (get-number-font (pawn-color pawn) w h)] - [str (number->string (pawn-id pawn))] - [old-font (send dc get-font)] - [old-fore (send dc get-text-foreground)] - [size (get-piece-size w h)] - [old-pen (send dc get-pen)] - [old-brush (send dc get-brush)]) - (send dc set-pen (send the-pen-list find-or-create-pen "black" 1 'solid)) - (send dc set-brush (send the-brush-list find-or-create-brush (pawn-drawn-color (pawn-color pawn)) 'solid)) - (send dc draw-ellipse (+ dx x) (+ dy y) size size) - (send dc set-font font) - (send dc set-text-foreground (get-number-color (pawn-color pawn))) - (send dc set-pen old-pen) - (send dc set-brush old-brush) - (send dc set-font old-font))))) - - (define home-row-coordinates - (list (list 'red - #f - (vector (cons (+ 22/24 1/48) 1/2) - (cons (+ 21/24 1/48) 1/2) - (cons (+ 20/24 1/48) 1/2) - (cons (+ 19/24 1/48) 1/2) - (cons (+ 18/24 1/48) 1/2) - (cons (+ 17/24 1/48) 1/2) - (cons (+ 16/24 1/48) 1/2))) - (list 'yellow - #f - (vector (cons (+ 1/24 1/48) 1/2) - (cons (+ 2/24 1/48) 1/2) - (cons (+ 3/24 1/48) 1/2) - (cons (+ 4/24 1/48) 1/2) - (cons (+ 5/24 1/48) 1/2) - (cons (+ 6/24 1/48) 1/2) - (cons (+ 7/24 1/48) 1/2))) - (list 'blue - #t - (vector (cons 1/2 (+ 1/24 1/48)) - (cons 1/2 (+ 2/24 1/48)) - (cons 1/2 (+ 3/24 1/48)) - (cons 1/2 (+ 4/24 1/48)) - (cons 1/2 (+ 5/24 1/48)) - (cons 1/2 (+ 6/24 1/48)) - (cons 1/2 (+ 7/24 1/48)))) - (list 'green - #t - (vector (cons 1/2 (+ 22/24 1/48)) - (cons 1/2 (+ 21/24 1/48)) - (cons 1/2 (+ 20/24 1/48)) - (cons 1/2 (+ 19/24 1/48)) - (cons 1/2 (+ 18/24 1/48)) - (cons 1/2 (+ 17/24 1/48)) - (cons 1/2 (+ 16/24 1/48)))))) - - (define (find-home-row-coordinates color index w h) - (let ([ent (assq color home-row-coordinates)]) - (if ent - (let ([v (caddr ent)]) - (if (< index (vector-length v)) - (let ([crds (vector-ref v index)]) - (values (* w (car crds)) (* h (cdr crds)) (cadr ent))) - (values 0 0 #f))) - (values 0 0 #f)))) - - (define main-coordinates - (vector - ;; safety between yellow and green - (list 1/2 (+ 23/24 1/48) #t) - - ;; row to the left of green, going up - (list (+ 5/9 1/18) (+ 23/24 1/48) #t) - (list (+ 5/9 1/18) (+ 22/24 1/48) #t) - (list (+ 5/9 1/18) (+ 21/24 1/48) #t) - (list (+ 5/9 1/18) (+ 20/24 1/48) #t) - (list (+ 5/9 1/18) (+ 19/24 1/48) #t) - (list (+ 5/9 1/18) (+ 18/24 1/48) #t) - (list (+ 5/9 1/18) (+ 17/24 1/48) #t) - (list (+ 5/9 1/18) (+ 16/24 1/48) #t) - - ;; row above green, going right - (list (+ 16/24 1/48) (+ 5/9 1/18) #f) - (list (+ 17/24 1/48) (+ 5/9 1/18) #f) - (list (+ 18/24 1/48) (+ 5/9 1/18) #f) - (list (+ 19/24 1/48) (+ 5/9 1/18) #f) - (list (+ 20/24 1/48) (+ 5/9 1/18) #f) - (list (+ 21/24 1/48) (+ 5/9 1/18) #f) - (list (+ 22/24 1/48) (+ 5/9 1/18) #f) - (list (+ 23/24 1/48) (+ 5/9 1/18) #f) - - ;; safety between green and red - (list (+ 23/24 1/48) 1/2 #f) - - ;; row below red, going left - (list (+ 23/24 1/48) (+ 3/9 1/18) #f) - (list (+ 22/24 1/48) (+ 3/9 1/18) #f) - (list (+ 21/24 1/48) (+ 3/9 1/18) #f) - (list (+ 20/24 1/48) (+ 3/9 1/18) #f) - (list (+ 19/24 1/48) (+ 3/9 1/18) #f) - (list (+ 18/24 1/48) (+ 3/9 1/18) #f) - (list (+ 17/24 1/48) (+ 3/9 1/18) #f) - (list (+ 16/24 1/48) (+ 3/9 1/18) #f) - - ;; row to the left of red, going up - (list (+ 5/9 1/18) (+ 7/24 1/48) #t) - (list (+ 5/9 1/18) (+ 6/24 1/48) #t) - (list (+ 5/9 1/18) (+ 5/24 1/48) #t) - (list (+ 5/9 1/18) (+ 4/24 1/48) #t) - (list (+ 5/9 1/18) (+ 3/24 1/48) #t) - (list (+ 5/9 1/18) (+ 2/24 1/48) #t) - (list (+ 5/9 1/18) (+ 1/24 1/48) #t) - (list (+ 5/9 1/18) (+ 0/24 1/48) #t) - - ;; safety between red and blue - (list 1/2 (+ 0/24 1/48) #t) - - ;; row to the right of blue, going down - (list (+ 3/9 1/18) (+ 0/24 1/48) #t) - (list (+ 3/9 1/18) (+ 1/24 1/48) #t) - (list (+ 3/9 1/18) (+ 2/24 1/48) #t) - (list (+ 3/9 1/18) (+ 3/24 1/48) #t) - (list (+ 3/9 1/18) (+ 4/24 1/48) #t) - (list (+ 3/9 1/18) (+ 5/24 1/48) #t) - (list (+ 3/9 1/18) (+ 6/24 1/48) #t) - (list (+ 3/9 1/18) (+ 7/24 1/48) #t) - - ;; row below blue, going left - (list (+ 7/24 1/48) (+ 3/9 1/18) #f) - (list (+ 6/24 1/48) (+ 3/9 1/18) #f) - (list (+ 5/24 1/48) (+ 3/9 1/18) #f) - (list (+ 4/24 1/48) (+ 3/9 1/18) #f) - (list (+ 3/24 1/48) (+ 3/9 1/18) #f) - (list (+ 2/24 1/48) (+ 3/9 1/18) #f) - (list (+ 1/24 1/48) (+ 3/9 1/18) #f) - (list (+ 0/24 1/48) (+ 3/9 1/18) #f) - - ;; safety between blue and yellow - (list (+ 0/24 1/48) 1/2 #f) - - ;; row above yellow to the right - (list (+ 0/24 1/48) (+ 5/9 1/18) #f) - (list (+ 1/24 1/48) (+ 5/9 1/18) #f) - (list (+ 2/24 1/48) (+ 5/9 1/18) #f) - (list (+ 3/24 1/48) (+ 5/9 1/18) #f) - (list (+ 4/24 1/48) (+ 5/9 1/18) #f) - (list (+ 5/24 1/48) (+ 5/9 1/18) #f) - (list (+ 6/24 1/48) (+ 5/9 1/18) #f) - (list (+ 7/24 1/48) (+ 5/9 1/18) #f) - - ;; row to the right of yellow, going down - (list (+ 3/9 1/18) (+ 16/24 1/48) #t) - (list (+ 3/9 1/18) (+ 17/24 1/48) #t) - (list (+ 3/9 1/18) (+ 18/24 1/48) #t) - (list (+ 3/9 1/18) (+ 19/24 1/48) #t) - (list (+ 3/9 1/18) (+ 20/24 1/48) #t) - (list (+ 3/9 1/18) (+ 21/24 1/48) #t) - (list (+ 3/9 1/18) (+ 22/24 1/48) #t) - (list (+ 3/9 1/18) (+ 23/24 1/48) #t) - )) - - - (define (find-main-coordinates index w h) - (let ([e (vector-ref main-coordinates index)]) - (values (* w (car e)) (* h (cadr e)) (caddr e)))) - - (define (at-start-coordinates w h piece-size) - `((blue ,(* w (+ 1/6 (* circle-gap 1/2))) ,(* h 1/6)) - (red ,(* w 5/6) ,(* h (+ 1/6 (* circle-gap 1/2)))) - (green ,(* w (- 5/6 (* circle-gap 1/2))) ,(* h 5/6)) - (yellow ,(* w 1/6) ,(* h (- 5/6 (* circle-gap 1/2)))))) - - (define (at-home-coordinates w h piece-size) - `((blue ,(* w 1/2) ,(+ (* h 1/3) piece-size)) - (red ,(- (* w 2/3) piece-size) ,(* h 1/2)) - (green ,(* w 1/2) ,(- (* h 2/3) piece-size)) - (yellow ,(+ (* w 1/3) piece-size) ,(* h 1/2)))) - - (define (get-number-font color w h) - (send the-font-list find-or-create-font - (cond - [(or (<= (* w 1/3 1/8) 10) - (<= (* h 1/3 1/8) 10)) - 8] - [(or (<= (* w 1/3 1/8) 15) - (<= (* h 1/3 1/8) 15)) - 9] - [else - 12]) - 'default - 'normal - 'normal)) - - (define (get-number-color color) - (send the-color-database find-color - (case color - [(red) "white"] - [else "black"]))) - - (define (get-piece-size w h) - (min (* w 1/3 1/8) - (* h 1/3 1/8))) - - (define black (make-object color% "black")) - - (define board-canvas% - (class canvas% - (init-field [board (new-board)]) - (inherit get-dc get-client-size) - (define/public (set-board b) - (set! board b) - (unless buffer (resize-bitmap)) - (redraw-bitmap) - (on-paint)) - - (define buffer #f) - (define bdc (make-object bitmap-dc%)) - - (define/override (on-paint) - (unless buffer - (resize-bitmap)) - (send (get-dc) draw-bitmap buffer 0 0)) - - (define/override (on-size w h) - (resize-bitmap)) - - (define/private (resize-bitmap) - (let-values ([(w h) (get-client-size)]) - (set! buffer (make-object bitmap% w h)) - (redraw-bitmap))) - - (define/private (redraw-bitmap) - (let-values ([(w h) (get-client-size)]) - (send bdc set-bitmap buffer) - (draw-board board bdc w h 0 0 #t) - (send bdc set-bitmap #f))) - - (super-new) - - (inherit min-client-width min-client-height) - (min-client-height 350) - (min-client-width 350))) - - (define (show-board board) - (define f (new frame% (label "") (width 600) (height 600))) - (define c (new board-canvas% (parent f) (board board))) - (send f show #t))) diff --git a/pkgs/games/parcheesi/info.rkt b/pkgs/games/parcheesi/info.rkt deleted file mode 100644 index d9a1611371..0000000000 --- a/pkgs/games/parcheesi/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game "parcheesi.rkt") -(define game-set "Board Games") diff --git a/pkgs/games/parcheesi/interfaces.rkt b/pkgs/games/parcheesi/interfaces.rkt deleted file mode 100644 index fd44e807cd..0000000000 --- a/pkgs/games/parcheesi/interfaces.rkt +++ /dev/null @@ -1,20 +0,0 @@ -(module interfaces racket - (provide player<%> - game<%>) - - ;; in Java, lists become arrays. - - ;; the do-move method gets two numbers if no doubles were rolled - ;; and gets four numbers if doubles were rolled (and the player has - ;; all of the pieces in). - (define player<%> - (interface () - start-game ;; player-color -> string - do-move ;; board (listof number[1-6]) -> move - doubles-penalty ;; : -> void - )) - - (define game<%> - (interface () - register ;; player<%> -> void - start #| -> void |#))) diff --git a/pkgs/games/parcheesi/make-bitmap.rkt b/pkgs/games/parcheesi/make-bitmap.rkt deleted file mode 100644 index 24f8b6f63f..0000000000 --- a/pkgs/games/parcheesi/make-bitmap.rkt +++ /dev/null @@ -1,595 +0,0 @@ -(module make-bitmap racket - (require "board.rkt" - racket/gui - racket/class) - - (module test racket/base) - - (provide show-board - board-canvas% - draw-board - for-each-piece/position - find-main-coordinates - find-home-row-coordinates - get-cell-size - get-piece-size - - (struct-out home-row-c) - (struct-out main-c) - (struct-out start-c) - (struct-out home-c)) - - ;; a coordinate is either - ;; - (make-home-row-c number color) - ;; - (make-main-c number) - ;; - (make-start-c color) - ;; - (make-home-c color) - ;; inspectors are to allow comparison with equal? - (define-struct home-row-c (count color) #:inspector (make-inspector)) - (define-struct main-c (count) #:inspector (make-inspector)) - (define-struct start-c (color) #:inspector (make-inspector)) - (define-struct home-c (color) #:inspector (make-inspector)) - - (define (get-cell-size horizontal? w h) - (if horizontal? - (values (* w 1/9) (* h 1/24)) - (values (* w 1/24) (* h 1/9)))) - - (define colors - '((green . "green") - (red . "red") - (yellow . "gold") - (blue . "blue") - (black . "black") - (safety . "purple") - (track-background . "light blue"))) - - (define circle-gap 1/20) - - (define (set-color dc color) - (send dc set-pen (send the-pen-list find-or-create-pen (cdr (assq color colors)) 1 'solid)) - (send dc set-brush (send the-brush-list find-or-create-brush (cdr (assq color colors)) 'solid))) - - (define draw-board - (lambda (board dc w h dx dy draw-pieces?) - (set-color dc 'track-background) - (send dc draw-rectangle (+ dx 0) (+ dy (* h 1/3)) w (* h 1/3)) - (send dc draw-rectangle (+ dx (* w 1/3)) (+ dy 0) (* w 1/3) h) - - (set-color dc 'blue) - (send dc draw-ellipse - (+ dx (* w circle-gap)) (+ dy (* h circle-gap 1/2)) - (- (/ w 3) (* w circle-gap)) (- (/ h 3) (* h circle-gap))) - (send dc draw-rectangle (+ dx (* w (- 1/2 1/18))) (+ dy 0) (* w 1/9) (/ h 3)) - (send dc draw-polygon - (list (make-object point% (* w 1/3) (* h 1/3)) - (make-object point% (* w 2/3) (* h 1/3)) - (make-object point% (* w 1/2) (* h 1/2))) - dx - dy) - - (set-color dc 'red) - (send dc draw-ellipse - (+ dx (* w 2/3) (* h circle-gap 1/2)) - (+ dy (* h circle-gap)) - (- (/ w 3) (* w circle-gap)) - (- (/ h 3) (* h circle-gap))) - (send dc draw-rectangle (+ dx (* w 2/3)) (+ dy (* h (- 1/2 1/18))) (/ w 3) (* h 1/9)) - (send dc draw-polygon - (list (make-object point% (* w 2/3) (* h 1/3)) - (make-object point% (* w 2/3) (* h 2/3)) - (make-object point% (* w 1/2) (* h 1/2))) - dx - dy) - - (set-color dc 'yellow) - (send dc draw-ellipse - (+ dx (* w circle-gap 1/2)) (+ dy (* h 2/3)) - (- (/ w 3) (* w circle-gap)) (- (/ h 3) (* h circle-gap))) - (send dc draw-rectangle (+ dx 0) (+ dy (* h (- 1/2 1/18))) (/ w 3) (* h 1/9)) - (send dc draw-polygon - (list (make-object point% (* w 1/3) (* h 1/3)) - (make-object point% (* w 1/3) (* h 2/3)) - (make-object point% (* w 1/2) (* h 1/2))) - dx - dy) - - (set-color dc 'green) - (send dc draw-ellipse - (+ dx (* w 2/3)) (+ dy (* h 2/3) (* h circle-gap 1/2)) - (- (/ w 3) (* w circle-gap)) (- (/ h 3) (* h circle-gap))) - (send dc draw-rectangle (+ dx (* w (- 1/2 1/18))) (+ dy (* h 2/3)) (* w 1/9) (/ h 3)) - (send dc draw-polygon - (list (make-object point% (* w 1/3) (* h 2/3)) - (make-object point% (* w 2/3) (* h 2/3)) - (make-object point% (* w 1/2) (* h 1/2))) - dx - dy) - - (set-color dc 'safety) - - (send dc draw-rectangle - (+ dx (* w 4/9)) - (+ dy 0) - (* w 1/9) - (* h 1/3 1/8)) - (send dc draw-rectangle - (+ dx (* w 4/9)) - (+ dy (* h (- 1 (* 1/3 1/8)))) - (* w 1/9) - (* h 1/3 1/8)) - (send dc draw-rectangle - (+ dx (* w 5/9)) - (+ dy (* h 1/3 4/8)) - (* w 1/9) - (* h 1/3 1/8)) - (send dc draw-rectangle - (+ dx (* w 3/9)) - (+ dy (* h 19/24)) - (* w 1/9) - (* h 1/3 1/8)) - - (send dc draw-rectangle - (+ dx (* w (- 1 (* 1/3 1/8)))) - (+ dy (* h 4/9)) - (* w 1/3 1/8) - (* h 1/9)) - (send dc draw-rectangle - (+ dx 0) - (+ dy (* h 4/9)) - (* w 1/3 1/8) - (* h 1/9)) - (send dc draw-rectangle - (+ dx (* w 4/24)) - (+ dy (* h 1/3)) - (* w 1/3 1/8) - (* h 1/3 1/3)) - (send dc draw-rectangle - (+ dx (* w 19/24)) - (+ dy (* h 5/9)) - (* w 1/3 1/8) - (* h 1/3 1/3)) - - ;; blue entry - (send dc draw-rectangle - (+ dx (* w 3/9)) - (+ dy (* h 1/3 4/8)) - (* w 1/9) - (* h 1/3 1/8)) - - ;; green entry - (send dc draw-rectangle - (+ dx (* w 5/9)) - (+ dy (* h 19/24)) - (* w 1/9) - (* h 1/24)) - - ;; yellow entry - (send dc draw-rectangle - (+ dx (* w 4/24)) - (+ dy (* h 5/9)) - (* w 1/24) - (* h 1/9)) - - ;; red entry - (send dc draw-rectangle - (+ dx (* w 19/24)) - (+ dy (* h 1/3)) - (* w 1/24) - (* h 1/9)) - -#| - (set-color dc 'blue) - (send dc draw-polygon - (list (make-object point% (* w 3/9) (* h 4/24)) - (make-object point% (* w 2/9) (* h 5/24)) - (make-object point% (* w 4/9) (* h 5/24))) - dx - dy) - - (set-color dc 'green) - (send dc draw-polygon - (list (make-object point% (* w 5/9) (* h 19/24)) - (make-object point% (* w 6/9) (* h 20/24)) - (make-object point% (* w 7/9) (* h 19/24))) - dx - dy) - - - (set-color dc 'yellow) - (send dc draw-polygon - (list (make-object point% (* w 4/24) (* h 6/9)) - (make-object point% (* w 5/24) (* h 5/9)) - (make-object point% (* w 5/24) (* h 7/9))) - dx - dy) - - - (set-color dc 'red) - (send dc draw-polygon - (list (make-object point% (* w 20/24) (* h 3/9)) - (make-object point% (* w 19/24) (* h 4/9)) - (make-object point% (* w 19/24) (* h 2/9))) - dx - dy) -|# - (set-color dc 'black) - - #; - (let loop ([i 7]) - (unless (zero? i) - (send dc draw-line - (+ dx (* w 1/3)) - (+ dy (+ (* h 2/3) (* (* h 1/3) (/ i 8)))) - (+ dx (* w 2/3)) - (+ dy (+ (* h 2/3) (* (* h 1/3) (/ i 8))))) - (send dc draw-line - (+ dx (* w 1/3)) - (+ dy (* (* h 1/3) (/ i 8))) - (+ dx (* w 2/3)) - (+ dy (* (* h 1/3) (/ i 8)))) - (send dc draw-line - (+ dx (+ (* w 2/3) (* (* w 1/3) (/ i 8)))) - (+ dy (* h 1/3)) - (+ dx (+ (* w 2/3) (* (* w 1/3) (/ i 8)))) - (+ dy (* h 2/3))) - (send dc draw-line - (+ dx (* (* w 1/3) (/ i 8))) - (+ dy (* h 1/3)) - (+ dx (* (* w 1/3) (/ i 8))) - (+ dy (* h 2/3))) - (loop (- i 1)))) - - (when draw-pieces? - (draw-pieces board dc w h dx dy)))) - - ;; piece : color left top coordinate -> void - (define (for-each-piece/position board w h piece) - (void) - #; -(let* ([piece-size (get-piece-size w h)] - [call-out - (lambda (ent x y horizontal? coordinate) - (let* ([pawn (car ent)]) - (cond - [(null? (cdr ent)) - (piece pawn (- x (/ piece-size 2)) (- y (/ piece-size 2)) coordinate)] - [else - (let ([pawn2 (cadr ent)]) - (cond - [horizontal? - (piece pawn (- x piece-size) (- y (/ piece-size 2)) coordinate) - (piece pawn2 x (- y (/ piece-size 2)) coordinate)] - [else - (piece pawn (- x (/ piece-size 2)) (- y piece-size) coordinate) - (piece pawn2 (- x (/ piece-size 2)) y coordinate)]))])))]) - - ;; main board - (let loop ([i board-main-size]) - (unless (zero? i) - (let ([ent (board-main-i board (- i 1))]) - (unless (null? ent) - (let-values ([(x y horizontal?) (find-main-coordinates (- i 1) w h)]) - (call-out ent x y horizontal? (make-main-c (- i 1))))) - (loop (- i 1))))) - - ;; home row - (let ([handle-home-row - (lambda (color) - (let loop ([i board-home-row-size]) - (unless (zero? i) - (let ([ent (board-home-row-i board color (- i 1))]) - (unless (null? ent) - (let-values ([(x y horizontal?) (find-home-row-coordinates color (- i 1) w h)]) - (call-out ent x y horizontal? (make-home-row-c (- i 1) color))))) - (loop (- i 1)))))]) - (handle-home-row 'red) - (handle-home-row 'green) - (handle-home-row 'blue) - (handle-home-row 'yellow)) - - ;; home and start - (let ([handle-home/start - (lambda (color select coordinates coord horiz?) - (let* ([pawns (filter (lambda (x) (eq? (pawn-color x) color)) (select board))] - [num (length pawns)]) - (let-values ([(mx my) (apply values (cdr (assoc color (coordinates w h piece-size))))]) - (let ([do (lambda (pawn fx fy) - (piece pawn - (+ mx (* piece-size fx)) - (+ my (* piece-size fy)) - coord))]) - (cond - [(= num 4) - (do (list-ref pawns 3) 0 0) - (do (list-ref pawns 2) -1 0) - (do (list-ref pawns 1) 0 -1) - (do (list-ref pawns 0) -1 -1)] - [(and horiz? (= num 3)) - (do (list-ref pawns 2) 0 -1/2) - (do (list-ref pawns 1) -1 0) - (do (list-ref pawns 0) -1 -1)] - [(= num 3) - (do (list-ref pawns 2) -1/2 0) - (do (list-ref pawns 1) 0 -1) - (do (list-ref pawns 0) -1 -1)] - [(and horiz? (= num 2)) - (do (list-ref pawns 1) -1/2 -1) - (do (list-ref pawns 0) -1/2 0)] - [(= num 2) - (do (list-ref pawns 1) -1 -1/2) - (do (list-ref pawns 0) 0 -1/2)] - [(= num 1) - (do (list-ref pawns 0) -1/2 -1/2)])))))]) - (handle-home/start 'red board-home at-home-coordinates (make-home-c 'red) #t) - (handle-home/start 'green board-home at-home-coordinates (make-home-c 'green) #f) - (handle-home/start 'blue board-home at-home-coordinates (make-home-c 'blue) #f) - (handle-home/start 'yellow board-home at-home-coordinates (make-home-c 'yellow) #t) - (handle-home/start 'red board-start at-start-coordinates (make-start-c 'red) #t) - (handle-home/start 'green board-start at-start-coordinates (make-start-c 'green) #t) - (handle-home/start 'blue board-start at-start-coordinates (make-start-c 'blue) #t) - (handle-home/start 'yellow board-start at-start-coordinates (make-start-c 'yellow) #t)))) - - (define (draw-pieces board dc w h dx dy) - (for-each-piece/position - board w h - (lambda (pawn x y coord) - (let ([font (get-number-font (pawn-color pawn) w h)] - [str (number->string (pawn-id pawn))] - [old-font (send dc get-font)] - [old-fore (send dc get-text-foreground)] - [size (get-piece-size w h)]) - (send dc draw-ellipse (+ dx x) (+ dy y) size size) - (send dc set-font font) - (send dc set-text-foreground (get-number-color (pawn-color pawn))) - (send dc set-font old-font))))) - - (define home-row-coordinates - (list (list 'red - #f - (vector (cons (+ 22/24 1/48) 1/2) - (cons (+ 21/24 1/48) 1/2) - (cons (+ 20/24 1/48) 1/2) - (cons (+ 19/24 1/48) 1/2) - (cons (+ 18/24 1/48) 1/2) - (cons (+ 17/24 1/48) 1/2) - (cons (+ 16/24 1/48) 1/2))) - (list 'yellow - #f - (vector (cons (+ 1/24 1/48) 1/2) - (cons (+ 2/24 1/48) 1/2) - (cons (+ 3/24 1/48) 1/2) - (cons (+ 4/24 1/48) 1/2) - (cons (+ 5/24 1/48) 1/2) - (cons (+ 6/24 1/48) 1/2) - (cons (+ 7/24 1/48) 1/2))) - (list 'blue - #t - (vector (cons 1/2 (+ 1/24 1/48)) - (cons 1/2 (+ 2/24 1/48)) - (cons 1/2 (+ 3/24 1/48)) - (cons 1/2 (+ 4/24 1/48)) - (cons 1/2 (+ 5/24 1/48)) - (cons 1/2 (+ 6/24 1/48)) - (cons 1/2 (+ 7/24 1/48)))) - (list 'green - #t - (vector (cons 1/2 (+ 22/24 1/48)) - (cons 1/2 (+ 21/24 1/48)) - (cons 1/2 (+ 20/24 1/48)) - (cons 1/2 (+ 19/24 1/48)) - (cons 1/2 (+ 18/24 1/48)) - (cons 1/2 (+ 17/24 1/48)) - (cons 1/2 (+ 16/24 1/48)))))) - - (define (find-home-row-coordinates color index w h) - (let ([ent (assq color home-row-coordinates)]) - (if ent - (let ([v (caddr ent)]) - (if (< index (vector-length v)) - (let ([crds (vector-ref v index)]) - (values (* w (car crds)) (* h (cdr crds)) (cadr ent))) - (values 0 0 #f))) - (values 0 0 #f)))) - - (define main-coordinates - (vector - ;; safety between yellow and green - (list 1/2 (+ 23/24 1/48) #t) - - ;; row to the left of green, going up - (list (+ 5/9 1/18) (+ 23/24 1/48) #t) - (list (+ 5/9 1/18) (+ 22/24 1/48) #t) - (list (+ 5/9 1/18) (+ 21/24 1/48) #t) - (list (+ 5/9 1/18) (+ 20/24 1/48) #t) - (list (+ 5/9 1/18) (+ 19/24 1/48) #t) - (list (+ 5/9 1/18) (+ 18/24 1/48) #t) - (list (+ 5/9 1/18) (+ 17/24 1/48) #t) - (list (+ 5/9 1/18) (+ 16/24 1/48) #t) - - ;; row above green, going right - (list (+ 16/24 1/48) (+ 5/9 1/18) #f) - (list (+ 17/24 1/48) (+ 5/9 1/18) #f) - (list (+ 18/24 1/48) (+ 5/9 1/18) #f) - (list (+ 19/24 1/48) (+ 5/9 1/18) #f) - (list (+ 20/24 1/48) (+ 5/9 1/18) #f) - (list (+ 21/24 1/48) (+ 5/9 1/18) #f) - (list (+ 22/24 1/48) (+ 5/9 1/18) #f) - (list (+ 23/24 1/48) (+ 5/9 1/18) #f) - - ;; safety between green and red - (list (+ 23/24 1/48) 1/2 #f) - - ;; row below red, going left - (list (+ 23/24 1/48) (+ 3/9 1/18) #f) - (list (+ 22/24 1/48) (+ 3/9 1/18) #f) - (list (+ 21/24 1/48) (+ 3/9 1/18) #f) - (list (+ 20/24 1/48) (+ 3/9 1/18) #f) - (list (+ 19/24 1/48) (+ 3/9 1/18) #f) - (list (+ 18/24 1/48) (+ 3/9 1/18) #f) - (list (+ 17/24 1/48) (+ 3/9 1/18) #f) - (list (+ 16/24 1/48) (+ 3/9 1/18) #f) - - ;; row to the left of red, going up - (list (+ 5/9 1/18) (+ 7/24 1/48) #t) - (list (+ 5/9 1/18) (+ 6/24 1/48) #t) - (list (+ 5/9 1/18) (+ 5/24 1/48) #t) - (list (+ 5/9 1/18) (+ 4/24 1/48) #t) - (list (+ 5/9 1/18) (+ 3/24 1/48) #t) - (list (+ 5/9 1/18) (+ 2/24 1/48) #t) - (list (+ 5/9 1/18) (+ 1/24 1/48) #t) - (list (+ 5/9 1/18) (+ 0/24 1/48) #t) - - ;; safety between red and blue - (list 1/2 (+ 0/24 1/48) #t) - - ;; row to the right of blue, going down - (list (+ 3/9 1/18) (+ 0/24 1/48) #t) - (list (+ 3/9 1/18) (+ 1/24 1/48) #t) - (list (+ 3/9 1/18) (+ 2/24 1/48) #t) - (list (+ 3/9 1/18) (+ 3/24 1/48) #t) - (list (+ 3/9 1/18) (+ 4/24 1/48) #t) - (list (+ 3/9 1/18) (+ 5/24 1/48) #t) - (list (+ 3/9 1/18) (+ 6/24 1/48) #t) - (list (+ 3/9 1/18) (+ 7/24 1/48) #t) - - ;; row below blue, going left - (list (+ 7/24 1/48) (+ 3/9 1/18) #f) - (list (+ 6/24 1/48) (+ 3/9 1/18) #f) - (list (+ 5/24 1/48) (+ 3/9 1/18) #f) - (list (+ 4/24 1/48) (+ 3/9 1/18) #f) - (list (+ 3/24 1/48) (+ 3/9 1/18) #f) - (list (+ 2/24 1/48) (+ 3/9 1/18) #f) - (list (+ 1/24 1/48) (+ 3/9 1/18) #f) - (list (+ 0/24 1/48) (+ 3/9 1/18) #f) - - ;; safety between blue and yellow - (list (+ 0/24 1/48) 1/2 #f) - - ;; row above yellow to the right - (list (+ 0/24 1/48) (+ 5/9 1/18) #f) - (list (+ 1/24 1/48) (+ 5/9 1/18) #f) - (list (+ 2/24 1/48) (+ 5/9 1/18) #f) - (list (+ 3/24 1/48) (+ 5/9 1/18) #f) - (list (+ 4/24 1/48) (+ 5/9 1/18) #f) - (list (+ 5/24 1/48) (+ 5/9 1/18) #f) - (list (+ 6/24 1/48) (+ 5/9 1/18) #f) - (list (+ 7/24 1/48) (+ 5/9 1/18) #f) - - ;; row to the right of yellow, going down - (list (+ 3/9 1/18) (+ 16/24 1/48) #t) - (list (+ 3/9 1/18) (+ 17/24 1/48) #t) - (list (+ 3/9 1/18) (+ 18/24 1/48) #t) - (list (+ 3/9 1/18) (+ 19/24 1/48) #t) - (list (+ 3/9 1/18) (+ 20/24 1/48) #t) - (list (+ 3/9 1/18) (+ 21/24 1/48) #t) - (list (+ 3/9 1/18) (+ 22/24 1/48) #t) - (list (+ 3/9 1/18) (+ 23/24 1/48) #t) - )) - - - (define (find-main-coordinates index w h) - (let ([e (vector-ref main-coordinates index)]) - (values (* w (car e)) (* h (cadr e)) (caddr e)))) - - (define (at-start-coordinates w h piece-size) - `((blue ,(* w (+ 1/6 (* circle-gap 1/2))) ,(* h 1/6)) - (red ,(* w 5/6) ,(* h (+ 1/6 (* circle-gap 1/2)))) - (green ,(* w (- 5/6 (* circle-gap 1/2))) ,(* h 5/6)) - (yellow ,(* w 1/6) ,(* h (- 5/6 (* circle-gap 1/2)))))) - - (define (at-home-coordinates w h piece-size) - `((blue ,(* w 1/2) ,(+ (* h 1/3) piece-size)) - (red ,(- (* w 2/3) piece-size) ,(* h 1/2)) - (green ,(* w 1/2) ,(- (* h 2/3) piece-size)) - (yellow ,(+ (* w 1/3) piece-size) ,(* h 1/2)))) - - (define (get-number-font color w h) - (send the-font-list find-or-create-font - (cond - [(or (<= (* w 1/3 1/8) 10) - (<= (* h 1/3 1/8) 10)) - 8] - [(or (<= (* w 1/3 1/8) 15) - (<= (* h 1/3 1/8) 15)) - 9] - [else - 12]) - 'default - 'normal - 'normal)) - - (define (get-number-color color) - (send the-color-database find-color - (case color - [(red) "white"] - [else "black"]))) - - (define (get-piece-size w h) - (min (* w 1/3 1/8) - (* h 1/3 1/8))) - - (define black (make-object color% "black")) - - (define board-canvas% - (class canvas% - (init-field [board (new-board)]) - (inherit get-dc get-client-size) - (define/public (set-board b) - (set! board b) - (unless buffer (resize-bitmap)) - (redraw-bitmap) - (on-paint)) - - (define buffer #f) - (define bdc (make-object bitmap-dc%)) - - (define/override (on-paint) - (unless buffer - (resize-bitmap)) - ;(send (get-dc) draw-bitmap buffer 0 0) - (let ([dc (get-dc)]) - (send dc set-smoothing 'smoothed) - (draw-board board dc 32 32 0 0 #t))) - - (define/override (on-size w h) - (resize-bitmap)) - - (define/private (resize-bitmap) - (let-values ([(w h) (get-client-size)]) - (set! buffer (make-object bitmap% w h)) - (redraw-bitmap))) - - (define/private (redraw-bitmap) - (let-values ([(w h) (get-client-size)]) - (send bdc set-bitmap buffer) - (draw-board board bdc w h 0 0 #t) - (send bdc set-bitmap #f))) - - (super-new) - - (inherit min-client-width min-client-height) - (min-client-height 32) - (min-client-width 32))) - - (let () - (define board (new-board)) - (define bm (make-object bitmap% 32 32)) - (define mask-bm (make-object bitmap% 32 32 #t)) - (define bdc (make-object bitmap-dc% mask-bm)) - (send bdc clear) - (send bdc set-bitmap bm) - (send bm set-loaded-mask mask-bm) - ;(send bdc set-anti-alias #t) - (draw-board board bdc 32 32 0 0 #f) - (send bdc set-bitmap mask-bm) - (draw-board board bdc 32 32 0 0 #f) - (send bdc set-bitmap #f) - (send bm save-file "parcheesi.png" 'png)) - - (define (show-board board) - (define f (new frame% (label ""))) - (define c (new board-canvas% (parent f) (board board))) - (send f show #t)) - - (show-board (new-board))) diff --git a/pkgs/games/parcheesi/moves.rkt b/pkgs/games/parcheesi/moves.rkt deleted file mode 100644 index 1239beb92f..0000000000 --- a/pkgs/games/parcheesi/moves.rkt +++ /dev/null @@ -1,448 +0,0 @@ -(module moves racket - (require "board.rkt") - - ;; a move is either: - ;; - (make-enter-piece pawn) - ;; - (make-move-piece-main pawn start distance) - ;; - (make-move-piece-home pawn start distance) - (define-struct move () #:inspector (make-inspector)) - (define-struct (enter-piece move) (pawn) #:inspector (make-inspector)) - (define-struct (move-piece-main move) (pawn start distance) #:inspector (make-inspector)) - (define-struct (move-piece-home move) (pawn start distance) #:inspector (make-inspector)) - - (provide/contract - (struct enter-piece ((pawn pawn?))) - (struct move-piece-main ([pawn pawn?] [start number?] [distance number?])) - (struct move-piece-home ([pawn pawn?] [start number?] [distance number?]))) - - (provide take-turn - bad-move - make-moves - move? - - board-enter-piece - board-move-piece-main - board-move-piece-home - - blockade-moved? - find-end-spot - board-doubles-penalty - - make-one-move - - get-move-id - get-move-color - - has-entering-roll? - entering-blockade? - exn:bad-move? - - board-all-in? - <=/m - possible-to-move) - - (define bop-bonus 20) - (define home-bonus 10) - - ;; moves-dice : moves -> (listof number) - ;; does not return the die moves that correspond to entering pawns - (define (moves-dice moves) - (let loop ([moves moves] - [dice null]) - (cond - [(null? moves) dice] - [else - (let ([move (car moves)]) - (cond - [(move-piece-main? move) - (loop (cdr moves) (cons (move-piece-main-distance move) dice))] - [(move-piece-home? move) - (loop (cdr moves) (cons (move-piece-home-distance move) dice))] - [else (loop (cdr moves) dice)]))]))) - - ;; board-doubles-penalty : board color -> board - (define (board-doubles-penalty board color) - (let home-row-loop ([i board-home-row-size]) - (cond - [(zero? i) - (let main-board-loop ([i (get-enter-pos color)] - [first-time? #t]) - (cond - [(and (not first-time?) (= i (get-enter-pos color))) - board] - [else - (let* ([next-i (modulo (- i 1) board-main-size)] - [ent (board-main-i board next-i)]) - (if (and (pair? ent) - (eq? (pawn-color (car ent)) color)) - (move-piece board (car ent) 'start) - (main-board-loop next-i #f)))]))] - [else - (let ([ent (board-home-row-i board color (- i 1))]) - (if (null? ent) - (home-row-loop (- i 1)) - (move-piece board (car ent) 'start)))]))) - - ;; take-turn : color board (listof number) (listof move) -> board - ;; raises an exception if the turn is illegal - (define (take-turn color original-board original-dice original-moves) - (unless (andmap (lambda (x) (eq? color (get-move-color x))) original-moves) - (bad-move "attempted to move two different colors")) - (let loop ([moves original-moves] - [board original-board] - [dice original-dice]) - (cond - [(null? moves) - - (when (and (has-entering-roll? dice) - (memf (lambda (pawn) (eq? (pawn-color pawn) color)) - (board-start board)) ;; has pieces in start - (not (entering-blockade? board color))) - (bad-move "can still enter a pawn")) - - (let ([used-dice (moves-dice original-moves)]) - (for-each (lambda (die) - (let ([potential-board (possible-to-move color board die)]) - (when potential-board - (unless (blockade-moved? original-board potential-board color) - (bad-move "die roll ~a can still be used" die))))) - dice) - - (when (blockade-moved? original-board board color) - (bad-move "cannot move blockade together"))) - - board] - [else - (let ([move (car moves)]) - (let-values ([(new-board bonus new-dice) - (make-move/dice board move dice)]) - (let ([new-new-dice (if bonus - (cons bonus new-dice) - new-dice)]) - (loop (cdr moves) - new-board - new-new-dice))))]))) - - ;; get-move-color : move -> symbol - ;; extracts the moved color from the move - (define (get-move-color move) (pawn-color (get-move-pawn move))) - - ;; get-move-id : move -> number - (define (get-move-id move) (pawn-id (get-move-pawn move))) - - (define (get-move-pawn move) - (cond - [(enter-piece? move) (enter-piece-pawn move)] - [(move-piece-main? move) (move-piece-main-pawn move)] - [(move-piece-home? move) (move-piece-home-pawn move)])) - - ;; blocakde-moved? : board board color -> boolean - (define (blockade-moved? original-board new-board color) - (let ([original-blockades (find-blockades/color original-board color)] - [new-blockades (find-blockades/color new-board color)]) - (ormap (lambda (new-blockade) (memf (same-blockade-different-place? new-blockade) original-blockades)) - new-blockades))) - - (define ((same-blockade-different-place? b1) b2) - (and (equal? (blockade-p1 b1) (blockade-p1 b2)) - (equal? (blockade-p2 b1) (blockade-p2 b2)) - (not (equal? (blockade-loc b1) (blockade-loc b2))))) - - ;; make-move/dice : board move (listof number) number -> (values board bonus (listof number)) - ;; makes the given move, removing the used dice from the dice list. - ;; raises an error if the move isn't legal. - ;; check for: using a five to move when there are pieces to come in - ;; moving without the matching roll - (define (make-move/dice board move dice) - (cond - [(enter-piece? move) - (let ([new-dice (cond - [(memq 5 dice) (remq 5 dice)] - [(and (memq 1 dice) (memq 4 dice)) - (remq 1 (remq 4 dice))] - [(and (memq 2 dice) (memq 3 dice)) - (remq 2 (remq 3 dice))] - [else (bad-move "entered without having a 5")])]) - (let-values ([(board bonus) (board-enter-piece board (enter-piece-pawn move))]) - (values board bonus new-dice)))] - [(move-piece-main? move) - (do-move/dice/moving board dice - (move-piece-main-distance move) - (move-piece-main-pawn move) - (move-piece-main-start move) - board-move-piece-main)] - [(move-piece-home? move) - (do-move/dice/moving board dice - (move-piece-home-distance move) - (move-piece-home-pawn move) - (move-piece-home-start move) - board-move-piece-home)])) - - ;; helper function to collapse last two cases of make-move/dice - (define (do-move/dice/moving board dice die pawn start board-move-piece) - (let ([new-dice (remq die dice)]) - (unless (memq die dice) - (bad-move "tried to move ~a squares but dice read ~a" die dice)) - (let-values ([(new-board bonus) - (board-move-piece board pawn start die)]) - (values new-board bonus new-dice)))) - - ;; entering-blocade? : board symbol -> boolean - (define (entering-blockade? board color) - (let ([ent (board-main-i board (get-enter-pos color))]) - (and (pair? ent) (pair? (cdr ent))))) - - (define (no-blockades board start end) - (let ([ind (find-blockade/between board start end)]) - (cond - [(not ind) (void)] - [(number? ind) - (bad-move "there is a blockade at ~a in the main ring" ind)] - [(home-row-loc? ind) - (bad-move "there is a blockade at ~a in the ~a home row" - (home-row-loc-num ind) - (home-row-loc-color ind))] - [else (bad-move "blockade in the way")]))) - - ;; has-entering-roll? : (listof number) -> boolean - (define (has-entering-roll? dice) - (or (memq 5 dice) - (and (memq 1 dice) (memq 4 dice)) - (and (memq 2 dice) (memq 3 dice)))) - - ;; possible-to-move : symbol board number -> (union #f board) - ;; indicates if there are any moves that could happen with the - ;; given die, for the given color in the given board. - ;; doesn't consider entering moves - (define (possible-to-move color board die) - (let/ec k - (for-each-pawn/loc - board - (lambda (pawn loc) - (when (and (eq? color (pawn-color pawn)) - (not (symbol? loc))) - (with-handlers ([exn:bad-move? (lambda (x) #f)]) - (cond - [(number? loc) - (let-values ([(board bonus) (board-move-piece-main board pawn loc die)]) - (k board))] - [(home-row-loc? loc) - (let-values ([(board bonus) (board-move-piece-home board pawn (home-row-loc-num loc) die)]) - (k board))]))))) - #f)) - - ;; make-moves : board (listof move) -> board (listof number) - ;; only checks that each move, in isloation, would be possible - (define (make-moves board moves) - (let loop ([board board] - [bonus '()] - [moves moves]) - (cond - [(null? moves) (values board bonus)] - [else - (let-values ([(new-board new-bonus) (make-one-move board (car moves))]) - (loop new-board - (if new-bonus (cons new-bonus bonus) bonus) - (cdr moves)))]))) - - ;; make-one-move : board move -> board - (define (make-one-move board move) - (cond - [(enter-piece? move) (board-enter-piece board (enter-piece-pawn move))] - [(move-piece-main? move) (board-move-piece-main board - (move-piece-main-pawn move) - (move-piece-main-start move) - (move-piece-main-distance move))] - [(move-piece-home? move) (board-move-piece-home board - (move-piece-home-pawn move) - (move-piece-home-start move) - (move-piece-home-distance move))])) - - - - (define (board-all-in? board color) - (not (memf (lambda (pawn) (eq? (pawn-color pawn) color)) - (board-start board)))) - - ;; enter-piece : board pawn -> (values board (union #f number)) - (define (board-enter-piece orig-board pawn) - (unless (member pawn (board-start orig-board)) - (bad-move "~a's pawn ~a is already on the board" (pawn-color pawn) (pawn-id pawn))) - ;; move the color out of the starting area - (let* ([pos (get-enter-pos (pawn-color pawn))] - [old-ent (board-main-i orig-board pos)]) - (when (= 2 (length old-ent)) - (bad-move "cannot move out into a blockade")) - (cond - ;; no bop - [(or (null? old-ent) - (eq? (pawn-color (car old-ent)) (pawn-color pawn))) - (values (move-piece orig-board pawn pos) - #f)] - ;; bop - [else - (values (move-piece2 - orig-board - pawn - pos - (car old-ent) - 'start) - bop-bonus)]))) - - ;; board-move-piece-home : board pawn number number -> (values board (union #f number)) - ;; result of #f indicates no bop; result of a color indicates who got bopped - (define (board-move-piece-home board pawn start distance) - (let* ([color (pawn-color pawn)] - [old (board-home-row-i board color start)]) - (unless (member pawn old) - (bad-move "color ~a is not in the home row on ~a" (pawn-color pawn) start)) - (unless (and (<= 0 start) (< start board-home-row-size)) - (error 'boad-move-piece-home "bad start argument ~e" start)) - (unless (<= 0 start (+ start distance) (+ board-home-row-size 1)) - (bad-move "moved too far, off the end of the board")) - - (let ([finish (+ start distance)]) - (cond - [(= finish board-home-row-size) - (when (< start (- finish 1)) - ;; if only moving one square, then we don't need to check blockades - ;; this lets us satisfy the inputs to no-blockades - (no-blockades board - (make-home-row-loc (+ start 1) color) - (make-home-row-loc (- finish 1) color))) - (values (move-piece board pawn 'home) - home-bonus)] - [(< finish board-home-row-size) - (no-blockades board - (make-home-row-loc (+ start 1) color) - (make-home-row-loc finish color)) - - (let ([old-ent (board-home-row-i board color finish)]) - (cond - [(or (null? old-ent) - (null? (cdr old-ent))) - (values (move-piece board - pawn - (make-home-row-loc finish color)) - #f)] - [else - (bad-move "moved onto a blockade in the home row")]))] - [else - (bad-move "moved off of the end of the board")])))) - - ;; board-move-piece-main : board pawn number number -> (values board (union #f number)) - ;; result of #f indicates no bop; result of a color indicates who got bopped - (define (board-move-piece-main board pawn start distance) - (unless (member pawn (board-main-i board start)) - (bad-move "color ~a (piece #~a) is not on square ~a" - (pawn-color pawn) - (pawn-id pawn) - start)) - (let* ([color (pawn-color pawn)] - [landed (find-end-spot color start distance)] - [exit (get-exit-pos color)]) - (cond - [(eq? landed 'too-far) (bad-move "moved off of the board")] - [(eq? landed 'home) - (no-blockades board - (modulo (+ start 1) board-main-size) - (make-home-row-loc (- board-home-row-size 1) color)) - (values (move-piece board - pawn - 'home) - 10)] - [(eq? (car landed) 'home-row) - ;; turned onto the exit ramp - - (let* ([final-spot (cdr landed)]) - (no-blockades board - (next-pos color start) - (make-home-row-loc final-spot color)) - - (let ([old (board-home-row-i board color final-spot)]) - (when (and (pair? old) - (pair? (cdr old))) - (bad-move "cannot move onto a blockade")) - (values (move-piece board pawn (make-home-row-loc final-spot color)) - #f)))] - [else - ;; stayed on the main board - (let ([end (cdr landed)]) - (let ([start+1 (modulo (+ start 1) board-main-size)]) - (unless (= start+1 end) - (no-blockades board start+1 end))) - (let ([old-contents (board-main-i board end)]) - - (cond - ;; no one there - [(null? old-contents) - (values (move-piece board pawn end) - #f)] - - [(and (pair? old-contents) - (pair? (cdr old-contents))) - (bad-move "cannot move directly onto a blockade")] - - ;; already one of the same color on that spot - [(eq? (pawn-color (car old-contents)) color) - (values (move-piece board - pawn - end) - #f)] - - ;; attempt to bop on a safety -- illegal - [(safety? end) - (bad-move "cannot move onto a safety if someone else is already there")] - - ;; successful bop - [else - (values - (move-piece2 board - pawn - end - (car old-contents) - 'start) - bop-bonus)])))]))) - - ;; next-pos : color number -> (union number home-row-loc) - ;; given a position on the main ring, it finds the next position - ;; for the given color on the board. - (define (next-pos color pos) - (cond - [(= pos (get-exit-pos color)) - (make-home-row-loc color 0)] - [else - (modulo (+ pos 1) board-main-size)])) - - ;; find-end-spot : color number number -> (union 'too-far 'home (cons 'home-row number) (cons 'main number))) - (define (find-end-spot color start distance) - (let ([exit (get-exit-pos color)] - [end (modulo (+ start distance) board-main-size)]) - (cond - [(and (<=/m start exit end) - (not (= exit end))) - (let* ([distance-to-exit (modulo (- exit start) board-main-size)] - [final-spot (- distance distance-to-exit 1)]) - (cond - [(final-spot . = . board-home-row-size) - 'home] - [(final-spot . < . board-home-row-size) - (cons 'home-row final-spot)] - [else - 'too-far]))] - [else - (cons 'main end)]))) - - - (define (<=/m one two three) - (or (<= one two three) - (<= two three one) - (<= three one two))) - - (define-struct (exn:bad-move exn) ()) - - (define bad-move - (case-lambda - [(str) (raise (make-exn:bad-move str (current-continuation-marks)))] - [args (raise (make-exn:bad-move (apply format args) - (current-continuation-marks)))]))) diff --git a/pkgs/games/parcheesi/parcheesi.png b/pkgs/games/parcheesi/parcheesi.png deleted file mode 100644 index c67afcddd1cabd993a3db27e18f619ec30dc632a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmVwPpHEOz^B0ng!b-F2o+S&Mna<9E5M2E__5g>(v5@&UT0^t z>shRb2pUSE`|$)36aegxS1Wc~POW`!Klk>zT+Ec4Cxl6iT(4^pCN}4H>vx5_yG1AH z=Ot?MWij%UxFme!&Uz+FJcitfvjwb**+@lxOwwCAxCbv7JMnYAt_4g?fQQvm2d%2F z_CjI1z_cM?$6{zJ;IkSh7KC9nmVgkEh@2zh8BF+a&?iEARMd9f(E9sB_Oj8Ap#paE z2EfQcq$@GTDB~v~&+e}gpo-_W;Lmz}eze^?2YfaxDen=xFpFXOJ!ES@P=OFRAgjb6 z0Wor^2-RLnYtO4iS5!4HH8D@;Lx7Lm5#ip7SBu=*Rvo*Z>szr;v@0x&k^^yZ5rit{ zuJg{oKoO~SnQ{4@@WhYB@IUT^T=)hFCl*6yS}h399wD+Mfq*) - (init-field eventspace) - (super-new) - (define boards (list (new-board))) - (define dice '()) - (define colors '()) - (define index 0) - (define main-hp (new horizontal-panel% (parent this))) - (define left-vp (new vertical-panel% (parent main-hp) (stretchable-width #f))) - (define blue-name (new name-message% (parent left-vp) (up? #f))) - (define unused1 (new vertical-panel% (parent left-vp))) - (define yellow-name (new name-message% (parent left-vp) (up? #t))) - (define canvas (new board-canvas% (parent main-hp))) - (define right-vp (new vertical-panel% (parent main-hp) (stretchable-width #f))) - (define red-name (new name-message% (parent right-vp) (up? #f))) - (define unused2 (new vertical-panel% (parent right-vp))) - (define green-name (new name-message% (parent right-vp) (up? #t))) - - (define info-panel (new horizontal-panel% - (parent this) - (alignment '(center center)) - (stretchable-height #f))) - (define dice-msg (new message% (parent info-panel) (label ""))) - (define die1 (new die% (parent info-panel))) - (define die2 (new die% (parent info-panel))) - (send dice-msg stretchable-width #t) - (define bp (new horizontal-panel% - (parent this) - (stretchable-height #f))) - (define next (new button% - (label "next") - (callback - (lambda (x y) - (set! index (modulo (+ index 1) (length boards))) - (update))) - (parent bp))) - (define prev (new button% - (label "prev") - (callback - (lambda (x y) - (set! index (modulo (- index 1) (length boards))) - (update))) - (parent bp))) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; - ;; observer methods (not called on the eventspace main thread) - ;; - - (define/public (introduce color name) - (queue-callback/sync - (lambda () - (case color - [(red) (send red-name set-text name)] - [(blue) (send blue-name set-text name)] - [(green) (send green-name set-text name)] - [(yellow) (send yellow-name set-text name)])))) - (define/public (game-over winner color) - (queue-callback/sync - (lambda () - (new message% - (parent this) - (label (format "Winner ~a (~a)" winner color)))))) - (define/public (taking-turn color roll) - (queue-callback/sync - (lambda () - (set! colors (append colors (list color))) - (set! dice (append dice (list roll)))))) - (define/public (took-turn color board) - (queue-callback/sync - (lambda () - (set! boards (append boards (list board))) - (when (= index (- (length boards) 2)) - (set! index (+ index 1)) - (update))))) - - (define/private (update) - (send canvas set-board (list-ref boards index)) - (cond - [(< index (length dice)) - (send dice-msg set-label (format "Turn ~a (~a)" index (list-ref colors index))) - (send die1 set-digit (car (list-ref dice index))) - (send die2 set-digit (cadr (list-ref dice index)))] - [else - (send dice-msg set-label (format "Turn ~a" index)) - (send die1 set-digit #f) - (send die2 set-digit #f)])) - - (define/private (queue-callback/sync t) - (parameterize ([current-eventspace eventspace]) - (let ([s (make-semaphore 0)]) - (queue-callback - (lambda () - (t) - (semaphore-post s))) - (semaphore-wait s)))))) - - (define name-message% - (class canvas% - (init-field up?) - (inherit min-width min-height get-dc) - (define txt "") - (define/public (set-text l) - (set! txt l) - (update-min-size) - (on-paint)) - (define/override (on-paint) - (let ([dc (get-dc)]) - (let-values ([(w h _1 _2) (send dc get-text-extent txt)]) - (if up? - (send dc draw-text txt 0 w #f 0 (/ pi 2)) - (send dc draw-text txt h 0 #f 0 (- (/ pi 2))))))) - (define/private (update-min-size) - (let ([dc (get-dc)]) - (let-values ([(w h _1 _2) (send dc get-text-extent txt)]) - (min-width (ceiling (inexact->exact h))) - (min-height (ceiling (inexact->exact w)))))) - (super-new - (stretchable-width #f) - (stretchable-height #f)))) - - (define (play-game players) - (define game (new game%)) - (define esp (make-eventspace)) - (define af (parameterize ([current-eventspace esp]) - (new animation-frame% (label "Parcheesi") (eventspace esp)))) - (send game set-observer af) - (for-each (lambda (player) (send game register player)) players) - (send af show #t) - (send game start)) - - #; - (begin - (require "best-player.rkt") - (play-game (list (new first-player%) - (new last-player%) - (new first-player%) - (new last-player%))))) diff --git a/pkgs/games/parcheesi/rules.rkt b/pkgs/games/parcheesi/rules.rkt deleted file mode 100644 index f67a0bef28..0000000000 --- a/pkgs/games/parcheesi/rules.rkt +++ /dev/null @@ -1,269 +0,0 @@ -(module rules racket - (provide show-rules) - - (require "board.rkt" - "moves.rkt" - "gui.rkt" - xml - browser/htmltext - racket/gui) - - (define board-size 250) - - (define (show-rules) - (let* ([f (new frame% (label "Parcheesi Rules") (width 600) (height 600))] - [t (new (html-text-mixin text%))] - [ec (new editor-canvas% (parent f) (editor t) (style '(no-hscroll resize-corner)))]) - (send f show #t) - (send t begin-edit-sequence) - (let-values ([(in out) (make-pipe)]) - (thread - (lambda () - (display-xml/content (xexpr->xml (parcheesi-rules)) out) - (close-output-port out))) - (render-html-to-text in t #t #f)) - (replace-!!s t) - (send t auto-wrap #t) - (send t lock #t) - (send t hide-caret #t) - (send t end-edit-sequence) - (send ec focus))) - - (define (parcheesi-rules) - `(div - (p "Parcheesi is a race between four players. Each player moves four pawns " - "from their starting point, around the board and then into the center. " - "The first player to get all four pawns into the center wins. ") - - (p "Initially, the board looks like this, with each player's pawns " - "in their home circle." - (center ,(moves-make-image/link '() "initial"))) - - (p "On each turn, a player rolls two dice and moves their pawns according to these rules: " - (ul - (li ,(heading "Entering") - "If one of the dice has a five, or both dice together sum to five, one of the pieces " - "may be moved out of the start area into the main board (moving out consumes the five). " - "The entering positions are the positions on the board that are half purple and half " - "the color of the player. " - "For example, if green rolls 1 and a 4 on the first turn, the board looks like this: " - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0))) - "enter"))) - (li ,(heading "Normal Move") - "With the exception of doubles, when a player rolls the dice, the player moves " - "their pieces by the numbers indicated by the pips. Pieces move in the " - "counter-clockwise direction around the board, on the purple and light blue squares. " - "If, for example, green rolls " - "a 5 and a 3 on the first move, the board looks like this:" - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 3)) - "simple-move")) - "then, if green rolls a 4 and a 6 on their next move (and the other players don't enter) " - "green might first move the 4, resulting in the board on the left " - "and then move the 6, resulting in the board on the right." - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 3) - (make-move-piece-main (make-pawn 'green 0) 8 4)) - "simple-move2") - nbsp nbsp nbsp nbsp - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 3) - (make-move-piece-main (make-pawn 'green 0) 8 4) - (make-move-piece-main (make-pawn 'green 0) 12 6)) - "simple-move3"))) - (li ,(heading "Double Bonus") - "When a player rolls doubles and all of their pieces are out of the starting area, " - "the player moves by the tops and bottoms of the dice. That is, if the player " - "rolls double 1s, the player moves two pieces 1 square and two pieces 6 squares " - "(of course, this can be all the same piece). The opposite sides of the die always " - "sum to seven, so the total number of spaces moved is always 14.") - (li ,(heading "Double Repeats") - "When a player rolls doubles (no matter if all of the pieces are out or not) " - "they take another turn. If they roll doubles a second time, they take a third turn. " - "On the third turn, if they roll doubles, their turn is forfeit and the most pawn that is " - "furthest along must be moved back to the starting circle. " - "If they do not roll doubles on the third turn, " - "they take the third turn as normal.") - (li ,(heading "Blockades") - "Two pawns of the same color on a space form a blockade. " - "A blockade cannot be passed by any other pawn (even one of the same color). " - "A blockade cannot be moved together (this rule only affects doubles). " - "As a simple example, if red were to roll a 2 and a 1 in the following board, " - "only the freshly entered pawn could advance. " - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'green 1)) - (make-move-piece-main (make-pawn 'green 0) 5 22) - (make-move-piece-main (make-pawn 'green 1) 5 22) - (make-enter-piece (make-pawn 'red 0)) - (make-enter-piece (make-pawn 'red 1)) - (make-move-piece-main (make-pawn 'red 0) 22 4)) - "blockade"))) - - (li ,(heading "Individual Die Rolls") - "Each die roll should be thought of as an individual \"mini-move\". " - "That is, when a player rolls a 1 and a 6, for example, the player may move " - "one pawn 1 squares and another pawn 6 squares. This may be the same pawn, but " - "this is not the same as moving that pawn 7 squares directly. " - "For example, in the following board, if red has a 1 and a 6, red cannot move, " - "even though the spot seven spaces away is safe to land on. " - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'green 1)) - (make-move-piece-main (make-pawn 'green 0) 5 24) - (make-move-piece-main (make-pawn 'green 1) 5 29) - (make-enter-piece (make-pawn 'red 0)) - (make-move-piece-main (make-pawn 'red 0) 22 6)) - "individual-die-rolls"))) - - (li ,(heading "Bop") - "If a pawn is by itself on a light blue square " - "and a pawn of a different color lands on the square it occupies " - "(by an exact count of the dice) the original pawn is bopped, " - "which means it is sent back to the " - "starting square. The player that bopped now may move any one of its pawns by 20. " - "This bonus acts just like an extra \"mini-move\" as described above. " - "For example, if red rolls a 1 and a 2 in the board on the left, after moving the board " - "looks like on the right." - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 20) - (make-enter-piece (make-pawn 'red 0))) - "bop-before") - nbsp nbsp nbsp nbsp - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'red 0)) - (make-move-piece-main (make-pawn 'red 0) 22 3) - (make-move-piece-main (make-pawn 'red 0) 25 20)) - "bop-after"))) - - - (li ,(heading "Safety") - "Purple squares are safety squares. The only way a pawn can be bopped on a purple " - "square is if the bopping pawn is entering from the start. A safety square cannot be " - "occupied by two different colored pawns. One pawn on a safety does not constitute a " - "blockade, however, so other colors can pass by. " - "For example, if red rolls a 2 and a 3 in the situation below, it can take " - "the 2 and then the 3, but not the 3 and then the 2." - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 24) - (make-enter-piece (make-pawn 'red 0)) - (make-move-piece-main (make-pawn 'red 0) 22 4)) - "no-bop")) - "If, however, red rolls a 1 and a 4, in the picture on the left, red bops " - "green and we get the picture on the right." - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 17)) - "bop-enter-before") - nbsp nbsp nbsp nbsp - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'red 0)) - (make-move-piece-main (make-pawn 'red 0) 22 20)) - "bop-enter-after"))) - (li ,(heading "Home Row") - "When a pawn makes a nearly complete circuit, it turns off into its " - "correspondingly colored home row. For example, if " - "green, after travelling all the way around the board to " - "the bottom left, rolls a 4 and a 3, it moves into the green " - "section of the board:" - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 60)) - "enter-home-before") - nbsp nbsp nbsp nbsp - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 60) - (make-move-piece-main (make-pawn 'green 0) 65 7)) - "enter-home-after"))) - - (li ,(heading "Home") - "Pawns must enter home by an exact count. " - "For example, in the board below, green must roll a 1 " - "in order to move the piece home." - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-move-piece-main (make-pawn 'green 0) 5 60) - (make-move-piece-main (make-pawn 'green 0) 65 10)) - "going-home"))) - - (li ,(heading "Home Bonus") - "When a piece moves home, the player whose piece moved home gets a bonus " - "of 10. " - "This bonus acts just like an extra \"mini-move\" as described above. " - "For example, if green rolls a 1 and a 2 in the board on the left " - "the move results in the board on the right." - (center - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'green 1)) - (make-move-piece-main (make-pawn 'green 0) 5 60) - (make-move-piece-main (make-pawn 'green 0) 65 10)) - "home-bonus-before") - nbsp nbsp nbsp - ,(moves-make-image/link (list (make-enter-piece (make-pawn 'green 0)) - (make-enter-piece (make-pawn 'green 1)) - (make-move-piece-main (make-pawn 'green 0) 5 60) - (make-move-piece-main (make-pawn 'green 0) 65 10) - (make-move-piece-home (make-pawn 'green 0) 6 1) - (make-move-piece-main (make-pawn 'green 1) 5 10) - (make-move-piece-main (make-pawn 'green 1) 15 2)) - "home-bonus-after"))) - - (li ,(heading "Cell Occupancy") - "Each square in the main ring and in the home rows can only have zero, one or two pawns on it. " - "If it contains two pawns, those pawns must be the same color (and would form a blockade, as above)") - - (li ,(heading "Use all Dice") - "A player must play as many dice as possible. More precisely, if a player makes a move and " - "then finishes their turn, there must not be any further moves possible. " - "Parcheesi typically requires a player to enter the board, if possible. That is not required " - "here however." ))))) - - (define table (make-hash)) - - (define (replace-!!s t) - (let loop ([starts (reverse (send t find-string-all "!!"))] - [ends (reverse (send t find-string-all "::"))]) - (cond - [(null? starts) (void)] - [else (let* ([start (car starts)] - [end (car ends)] - [name (send t get-text (+ start 2) end)]) - (send t delete start (+ end 2) #f) - (send t insert (new board-snip% (board (hash-ref table name))) start start #f) - (loop (cdr starts) (cdr ends)))]))) - - (define scroll-step-pixels 12) - - (define board-snip% - (class snip% - (init-field board) - (define/override (find-scroll-step y) (inexact->exact (round (/ y scroll-step-pixels)))) - (define/override (get-num-scroll-steps) (quotient board-size scroll-step-pixels)) - (define/override (get-scroll-step-offset step) (* step scroll-step-pixels)) - (define/override (get-extent dc x y w h descent space lspace rspace) - (set-box/f! w board-size) - (set-box/f! h board-size) - (set-box/f! descent 0) - (set-box/f! space 0) - (set-box/f! lspace 0) - (set-box/f! rspace 0)) - (define/override (draw dc x y left top right bottom dx dy draw-caret) - (draw-board board dc board-size board-size x y #t)) - (super-new) - (inherit set-snipclass) - (set-snipclass dummy-snipclass))) - - (define (set-box/f! b v) (when (box? b) (set-box! b v))) - - (define dummy-snipclass (new snip-class%)) - - (define (heading name) - `(font ((color "forestgreen") (size "+2")) (b ,name))) - - (define (moves-make-image/link moves name) - (let-values ([(board bonuses) (make-moves (new-board) moves)]) - (hash-set! table name board) - (format " !!~a:: " name)))) diff --git a/pkgs/games/parcheesi/test.rkt b/pkgs/games/parcheesi/test.rkt deleted file mode 100644 index e4207d9ad0..0000000000 --- a/pkgs/games/parcheesi/test.rkt +++ /dev/null @@ -1,89 +0,0 @@ -(module test racket - (require racket/pretty) - (provide test test-list test-err test-results) - - (define show-tests? #t) - - (define test-count (box 0)) - (define failure-count (box 0)) - (define (test-results) - (cond - [(= 0 (unbox failure-count)) - (eprintf "All ~a tests passed." (unbox test-count))] - [else - (eprintf "~a tests failed, ~a tests total" - (unbox failure-count) - (unbox test-count))])) - - (define-syntax (test-err stx) - (syntax-case stx () - [(_ actual pred) - (with-syntax ([line (syntax-line (syntax actual))]) - (syntax - (with-handlers ([pred (lambda (x) (void))]) - (when show-tests? (printf "> running test ~s\n" line)) - (set-box! test-count (+ (unbox test-count) 1)) - (eprintf "test ~a ~s:\n expected error, got ~a\n\n" - line - 'actual - (flatten-list (call-with-values (lambda () actual) list))) - (set-box! failure-count (+ (unbox failure-count) 1)))))])) - - (define-syntax (test stx) - (syntax-case stx () - [(_ actual expecteds ...) (syntax (test/pred equal? actual expecteds ...))])) - - (define-syntax (test/pred stx) - (syntax-case stx () - [(_ equal? actual expecteds ...) - (with-syntax ([line (syntax-line (syntax actual))]) - (syntax - (begin - (when show-tests? (printf "> running test ~s\n" line)) - (let ([actual-xs (call-with-values (lambda () actual) list)] - [expect-xs (list expecteds ...)]) - (set-box! test-count (+ (unbox test-count) 1)) - (unless (equal? actual-xs expect-xs) - (set-box! failure-count (+ (unbox failure-count) 1)) - (eprintf "test ~a ~s:\ngot:\n" line 'actual) - (for-each (lambda (x) (pretty-print x (current-error-port))) actual-xs) - (eprintf "expected:\n") - (for-each (lambda (x) (pretty-print x (current-error-port))) expect-xs))))))])) - - (define-syntax (test-list stx) - (syntax-case stx () - [(_ actual expected) - (with-syntax ([line (syntax-line (syntax actual))]) - (syntax - (begin - (when show-tests? (printf "> running test ~s\n" line)) - (let ([actual-x actual] - [expect-x expected] - [show-err - (lambda (in not-in val) - (set-box! failure-count (+ (unbox failure-count) 1)) - (eprintf "test ~a ~s found in ~a but not in ~a:\n" - line 'actual in not-in) - (pretty-print val (current-error-port)))]) - (set-box! test-count (+ (unbox test-count) 1)) - (for-each (lambda (one-actual) - (unless (member one-actual expect-x) - (show-err "actual" "expected" one-actual))) - actual-x) - (for-each (lambda (one-expected) - (unless (member one-expected actual-x) - (show-err "expected" "actual" one-expected))) - expect-x)))))])) - - (define (flatten-list lst) - (cond - [(null? lst) ""] - [else - (let loop ([lst (cdr lst)] - [ss (list (format "~e" (car lst)))]) - (cond - [(null? lst) (apply string-append (reverse ss))] - [else (loop (cdr lst) - (list* (format "~e" (car lst)) - " " - ss))]))]))) diff --git a/pkgs/games/pousse/board-size.rkt b/pkgs/games/pousse/board-size.rkt deleted file mode 100644 index 5fa5726d65..0000000000 --- a/pkgs/games/pousse/board-size.rkt +++ /dev/null @@ -1,3 +0,0 @@ -#lang racket -(define current-board-size (make-parameter 4)) -(provide current-board-size) diff --git a/pkgs/games/pousse/board.rkt b/pkgs/games/pousse/board.rkt deleted file mode 100644 index 751631b757..0000000000 --- a/pkgs/games/pousse/board.rkt +++ /dev/null @@ -1,106 +0,0 @@ -#lang racket -(require "board-size.rkt") ; for n - -(provide x o none ; cell values - new-board ; n => board - ; where n is the board size - ; the board is empty - board-cell ; board col row => cell-value - ; cols/rows are numbered from 0 - push ; board side index value => board - ; where side is one of - ; 'top 'bottom 'left 'right - ; index is a number in [0, n-1] - ; values is x or o - rotate-cw ; board turns => board - ; rotates 90 degrees x turns - ; rotation affects board-cell and - ; push, but not find-board-in-history - - new-history ; => history - ; the history is empty - find-board-in-history ; board history => board or #f - extend-history ; board history => history - extend-history! ; board history => history - ; maybe mutates the input history - ) - -(define x #\x) -(define o #\o) -(define none #\space) - -(define-struct board (str n rotation) #:mutable) - -(define (new-board n) - (make-board (make-string (add1 (* n n)) #\space) n 0)) - -(define (dup b) - (make-board (string-copy (board-str b)) (board-n b) (board-rotation b))) - -(define (unrotate-indices board row col) - (let ([n (current-board-size)]) - (case (board-rotation board) - [(0) (values row col)] - [(1) (values (- (sub1 n) col) row)] - [(2) (values (- (sub1 n) row) (- (sub1 n) col))] - [(3) (values col (- (sub1 n) row))]))) - -(define (board-cell board col row) - (let-values ([(row col) (unrotate-indices board row col)] - [(n) (current-board-size)]) - (string-ref (board-str board) (+ col (* row n))))) - -(define (set-cell! board col row v) - (let-values ([(row col) (unrotate-indices board row col)] - [(n) (current-board-size)]) - (string-set! (board-str board) (+ col (* row n)) v))) - -(define (xpush board c r inc-c inc-r piece) - (let ([board (dup board)] - [n (current-board-size)]) - (let loop ([c c][r r][old piece]) - (when (and (< -1 c n) (< -1 r n)) - (let ([v (board-cell board c r)]) - (set-cell! board c r old) - (unless (eq? v none) - (loop (inc-c c) (inc-r r) v))))) - (string-set! (board-str board) (* n n) piece) ; last move indicator - board)) - -(define identity (lambda (x) x)) - -(define push - (lambda (board dir i piece) - (let ([n (current-board-size)]) - (case dir - [(left) (xpush board 0 i add1 identity piece)] - [(right) (xpush board (sub1 n) i sub1 identity piece)] - [(top) (xpush board i 0 identity add1 piece)] - [(bottom) (xpush board i (sub1 n) identity sub1 piece)] - [else (error 'push "bad directrion ~a" dir)])))) - -(define (rotate-cw board amt) - (let* ([b (dup board)] - [r (modulo (+ (board-rotation board) amt) 4)] - [r2 (if (negative? r) - (+ r 4) - r)]) - (set-board-rotation! b r2) - b)) - - -;; In board.c, history is implemented with hash tables and fast -;; compying. Here we just use an assoc list. - -(define (new-history) - null) - -(define (find-board-in-history board h) - (let ([v (assoc (string->symbol (board-str board)) h)]) - (and v (cdr v)))) - - -(define (extend-history board h) - (cons (cons (string->symbol (board-str board)) board) h)) - -(define extend-history! extend-history) diff --git a/pkgs/games/pousse/counter.rkt b/pkgs/games/pousse/counter.rkt deleted file mode 100644 index a31901bb68..0000000000 --- a/pkgs/games/pousse/counter.rkt +++ /dev/null @@ -1,127 +0,0 @@ -#lang racket -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Rate a move by a combination of counting strategies -;; -;; This code benefits greatly from racket compilation. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require "board.rkt" - "utils.rkt") - -(provide params^ - counter@) - -(define-signature params^ - (US-PIECE-WEIGHT - US-MIDDLE-PIECE-WEIGHT - US-LINE-PIECE-WEIGHT - US-CONNECT-PIECE-WEIGHT - - THEM-PIECE-WEIGHT - THEM-MIDDLE-PIECE-WEIGHT - THEM-LINE-PIECE-WEIGHT - THEM-CONNECT-PIECE-WEIGHT - - turn-number)) - -(define-signature up-to^ - (n)) - -(define counter@ - (unit - (import up-to^ params^ ) - (export) - (define (counter-based-goodness board orig-board as-player depth) - (let ([usses 0] - [thems 0] - [middle-usses 0] - [middle-thems 0] - [us-in-line 0] - [them-in-line 0] - [us-connect 0] - [them-connect 0]) - (let ([traverse - (lambda (board-cell) - (n-times n (lambda (i) - (let ([start-usses usses] - [start-thems thems] - [prev #f]) - (n-times n (lambda (j) - (let ([v (board-cell board i j)]) - (cond - [(eq? v as-player) (set! usses (add1 usses)) - (set! middle-usses (+ (min i (- (sub1 n) i)) middle-usses)) - (when (eq? v prev) - (set! us-connect (add1 us-connect)))] - [(eq? v none) 'nothing] - [else (set! thems (add1 thems)) - (set! middle-thems (+ (min i (- (sub1 n) i)) middle-thems)) - (when (eq? v prev) - (set! them-connect (add1 them-connect)))]) - (set! prev v)))) - (set! us-in-line (+ us-in-line (* (- usses start-usses) (- usses start-usses)))) - (set! them-in-line (+ them-in-line (* (- thems start-thems) (- thems start-thems))))))))]) - ;; Go down columns - (traverse board-cell) - ;; Go across rows - (traverse (lambda (b x y) (board-cell b y x))) - ;; Counted usses and thems twice - (set! usses (/ usses 2)) - (set! thems (/ thems 2))) - - '(when (= depth 2) - (eprintf "us: ~a them: ~a u-m:~a t-m: ~a u-l: ~a t-l: ~a u-c: ~a t-c: ~a\n" - usses thems - middle-usses middle-thems - us-in-line them-in-line - us-connect them-connect)) - - (+ 0 - - ;; If it's early in the game, bias towards the middle - (* middle-usses US-MIDDLE-PIECE-WEIGHT) - (* middle-thems THEM-MIDDLE-PIECE-WEIGHT) - - ;; We'd prefer to get rid of thems and not get rid of usses - (* usses US-PIECE-WEIGHT) - (* thems THEM-PIECE-WEIGHT) - - ;; Working towards a line is good - (* us-in-line US-LINE-PIECE-WEIGHT) - (* them-in-line THEM-LINE-PIECE-WEIGHT) - - ;; Working towards connected parts is good - (* us-connect US-CONNECT-PIECE-WEIGHT) - (* them-connect THEM-CONNECT-PIECE-WEIGHT) - - - ;;;;;;;;;;;;; High-level strategy ;;;;;;;;;;;;;;;;; - - ;; o: don't start on the same or opposite edge unless X is immediately - ;; pushed. - (if (and (= turn-number 1) (= usses 1) (= thems 1) - (ormap (lambda (x) x) - (n-map n (lambda (i) (or (eq? (board-cell board i 0) x) - (eq? (board-cell board i (sub1 n)) x)))))) - -500 - 0) - - ;; x, first reply: always meddle with o's move if it's not in a corner - (if (and (= turn-number 2) (= usses 2) (= thems 1) - (not (or (eq? (board-cell orig-board 0 0) o) - (eq? (board-cell orig-board 0 (sub1 n)) o) - (eq? (board-cell orig-board (sub1 n) 0) o) - (eq? (board-cell orig-board (sub1 n) 0) o)))) - - (if (ormap (lambda (x) x) (n-map (- n 2) (lambda (i) (eq? (board-cell board (add1 i) 1) o)))) - ;; We pushed it - 500 - - ;; Do a push, instead - -500) - - 0) - - 0))) - - counter-based-goodness)) diff --git a/pkgs/games/pousse/help.txt b/pkgs/games/pousse/help.txt deleted file mode 100644 index dc239abea1..0000000000 --- a/pkgs/games/pousse/help.txt +++ /dev/null @@ -1,37 +0,0 @@ -The pousse GUI can - - * play a person against another person, - * play a person against a program, - * play a program against another program, or - -The "Setup..." button opens a dialog for selecting one of the above -modes, and for adding new program players to the system. Use -"Setup..." to reset a game or to cancel a game where two programs are -playing each other. - -Person Players --------------- -Watch the status line above the board for information. When it's your -turn, click on one of the numbers surrounding the board to move. - -The left and right arrows above the board undo and redo moves, -respectively. The right side of the window shows the game played so -far, including undone moves that have not yet been replaced. The most -recent move is highlighted in blue. - -When a player loses by repeating a previous board configuration, the -player's pieces turn red and no further moves are allowed (although -moves can be undone). When a player wins, the player's pieces that -form straights are turned green. - -Players are encouraged to move within 30 or 60 seconds. A beep is -sounded at 30 and 60 seconds from the start of player's turn. - -Program Players ---------------- -While a program player is ``thinking,'' the cursor changes to a watch -over the board. When a person plays a program, clicking the left arrow -while a program is thinking cancels the program and undoes the -person's most recent move. Clicking the left arrow during the person's -turn undoes the program's last move, plus the person's previous move -(i.e., it undoes two moves). diff --git a/pkgs/games/pousse/info.rkt b/pkgs/games/pousse/info.rkt deleted file mode 100644 index 78e2ec58e1..0000000000 --- a/pkgs/games/pousse/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game "pousse.rkt") -(define game-set "Board Games") diff --git a/pkgs/games/pousse/left.gif b/pkgs/games/pousse/left.gif deleted file mode 100644 index 6f6a5b8a8b8b6105f58cf3e393f5bd8276314fd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmZ?wbhEHblx2`(IK;s4|Nnmm28M=)hJXM5?ccv2$c6yLpDc_ZmJWyjsbyd;=Gb-T z--lL#)go821dg1DzEYX+qUT6@9Mi;U+Ui@@NolY6?N?*(Xn8lsL*-D4$=srqTXdVw ztT@*>C2G0C3)8I2c{A_c{Ql}oU$*M!8Bw<8{r4Jc{N~Hwj+h^(a_ru`TK)P4lN@u6 TwszyruAZ*)X8Y#JoD9|gUsOmO diff --git a/pkgs/games/pousse/pousse.png b/pkgs/games/pousse/pousse.png deleted file mode 100644 index 39158dba02f6cc8a48c829a635a900de3a1e5bee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmV;d15^BoP)+7~{`+PnJw{5##uWOp-;Fe`6isJEj9K2GgkjZ4~u3A}HnVFe!^L##^ z%jMiWm&@hzc{k5wGAixW)2B>L;q`Ls7NJlJVOKldzklb>9mdBwa)i5gTWi}gFbtwm z6oq)4<>d|-BoY*hveOW%j5BgNKI;4$%@Da`LI{^ zMx)VCC?q1YGP^~#?3A6l=pqt{M8e^4T;k8=`5xI*mU2l-A`%XVBaui+;5&R$J{>lEwQw~LNkBJ!yDXq%wrq7nZM?Biqt1QH7yr_&wM_^nd@9%VyR5I zF+9c8FvDYvJ>yve)~KzqHpt)r18;cK;3Z0LdHaMXi!5fzZa`&naFIIsVzF4QRuhSYgBJ<~zuzB?Mjd>5dRnz@yHF@N2CCI+sZ?_FQmIs{)o_(*nyRW+ zt5pZLZCmyEe7(KBjse3k3Wb83&(F_SDwSk1>EODq2LgeO@6yqyt*rw1`jz2f9zCL7 zZ!K)gz_K`Zj)4Id7a1S#fWfzK?Ak>v#)%Wm&UV0H_imP#snz)Mh5h?GU=Ro}GQ!{> z3kzJj)LPr_KRJ~mmHHQ<^4}j@+Reeoj|>g*;>BNuZ5gbta`h@#uJH0DuU>V)Ae-gz zVRq~wmFi3my1SX113H$2c$~9mxp0AP+c|1ZLh=imop)&7e$uTcg7 O0000symbol (string (char-downcase (string-ref s 0)))) - (string->number (substring s 1 (string-length s))))) - - ;;; More Utilities ;;; - - (define (get-state) - (list board moves current-player history winner loser)) - - - ;; The move functions - (define (mk-push! side side-char) - (lambda (i) - (send canvas animate-push side i current-player) - (set! future-state null) - (set! past-state (cons (get-state) past-state)) - (set! board (push board side i current-player)) - (set! moves (append moves (list (format "~a~a" side-char (add1 i))))) - (set! current-player (other-player current-player)) - (send clock-timer reset) - (send canvas repaint))) - (define push-left! (mk-push! 'left #\L)) - (define push-right! (mk-push! 'right #\R)) - (define push-top! (mk-push! 'top #\T)) - (define push-bottom! (mk-push! 'bottom #\B)) - - (define (check-winner) - (let ([v (find-winner board)]) - (when v - (set! winner v)))) - - (define (check-loser) - (when (find-board-in-history board history) - (set! loser (other-player current-player)))) - - (define (in-straight? board v i j) - (let ([n (current-board-size)]) - (or (andmap (lambda (x) x) - (n-map n (lambda (j) (eq? (board-cell board i j) v)))) - (andmap (lambda (x) x) - (n-map n (lambda (i) (eq? (board-cell board i j) v))))))) - - ;; past! and future! rewind or un-rewind the game: - (define-values (past! future!) - (let ([set-past (lambda (x) (set! past-state x))] - [set-future (lambda (x) (set! future-state x))]) - (values - (lambda () (time-travel! (lambda () past-state) (lambda () future-state) - set-past set-future)) - (lambda () - (time-travel! (lambda () future-state) (lambda () past-state) - set-future set-past))))) - - (define (time-travel! get-src get-dest set-src! set-dest!) - ;; If it's a person versus a robot, and it's the person's turn, then - ;; skip past the robot's turn. Cancel a running robot. If the game - ;; is over because a person lost (by repeating a board position) - ;; back up just once. - (define skip-robot (and (or x-player o-player) - ; Robot running? - (not (send canvas kill-robot)) - ; Person lost? - (not (and loser - (eq? loser (if x-player o x)))))) - (set-dest! (cons (get-state) (get-dest))) - (when skip-robot - (set-dest! (cons (car (get-src)) (get-dest)))) - (let ([a ((if skip-robot cadr car) (get-src))]) - (set-src! ((if skip-robot cddr cdr) (get-src))) - (set! board (car a)) - (set! moves (cadr a)) - (set! current-player (caddr a)) - (set! history (cadddr a)) - (set! winner (list-ref a 4)) - (set! loser (list-ref a 5))) - (send canvas repaint) - (send canvas refresh-controls)) - - ;; Used to reset a game (via the "Setup..." dialog) - (define (init-game size) - (current-board-size size) - (set! board (new-board size)) - (set! history (new-history)) - (set! past-state null) - (set! current-player x) - (set! winner #f) - (set! loser #f) - (set! moves null) - (set! future-state null) - (set-canvas-size)) - - ;; Restart for regular playing mode - (define (reset-game size) - (init-game size) - (send canvas repaint) - (send clock-timer reset) - (send canvas do-next-action)) - - ;;; GUI ;;; - - (define animate-step 2/10) - (define animate-delay 0.05) - - (define red (make-object color% "RED")) - (define green (make-object color% "GREEN")) - (define black (make-object color% "BLACK")) - (define gray (make-object color% "GRAY")) - (define white (make-object color% "WHITE")) - - (define the-font (make-object font% font-size 'decorative 'normal 'bold)) - (define the-pen (send the-pen-list find-or-create-pen "GRAY" 1 'solid)) - - (define transparent-brush (send the-brush-list find-or-create-brush "WHITE" 'transparent)) - (define solid-brush (send the-brush-list find-or-create-brush "GRAY" 'solid)) - - (define watch-cursor (make-object cursor% 'watch)) - - ; The canvas (drawing/event area) class - (define pousse-canvas% - (class canvas% - (init-rest args) - (inherit get-dc) - (define dc #f) - (define do-kill-robot (lambda () #f)) ; installed by refresh-controls - (public* - [kill-robot (lambda () (do-kill-robot))] - [draw-box - ; Draw a string in a box - (lambda (i j str) - (when str - (let-values ([(w h d s) (send dc get-text-extent str)]) - (send dc draw-text str - (+ (* i cell-size) (/ (- cell-size w) 2)) - (+ (* j cell-size) (/ (- cell-size h) 2))))))] - [do-next-action - (lambda () - ;; See if anything interesting happened, then call refresh-controls (below) - (check-loser) - (check-winner) - (set! history (extend-history board history)) - (refresh-controls))] - [refresh-controls - ;; Update the GUI to reflect the current game state, and run - ;; aa program player if it's time. - (lambda () - (send history-text show-moves) - (send clock show (not (or winner loser))) - (if (or loser winner) - (begin - ;; Game over - (enable-arrows) - (repaint) - (send status set-label - (format "Game over: ~a ~a!" - (if (equal? (or winner loser) x) "X" "O") - (if winner "wins" "loses"))) - (send clock show #f)) - ;; Check for automated player - (let* ([killed? 'not-yet] - [action void] - [lock (make-semaphore 1)] - [run-player-in-background - ;; Lots of messy stuff for calling the OS to run a player. The - ;; kill-robot method is installed for killing of the player process. - (lambda (player) - (let ([result #f] - [done (make-semaphore)] - [player-custodian (make-custodian)]) - (parameterize ([current-eventspace - (parameterize ([current-custodian player-custodian]) - (make-eventspace))]) - (queue-callback - (lambda () - (let ([move (player - ;; board size - (current-board-size) - ;; change move representation: - (map convert-move moves))]) - (semaphore-wait lock) - (set! result move) - (set! killed? #f) - (semaphore-post lock) - (semaphore-post done))))) - ;; Install the process killer. Must return #f - ;; if the robot is already done. - (set! do-kill-robot (lambda () - (semaphore-wait lock) - (begin0 - (if (eq? killed? 'not-yet) - (begin - (custodian-shutdown-all player-custodian) - (set! killed? #t) - (set! result #f) - (semaphore-post done)) - #f) - (semaphore-post lock)))) - - ;; Wait for a response (or kill)... - (send canvas set-cursor watch-cursor) - (semaphore-wait done) - (custodian-shutdown-all player-custodian) ;; just in case - (send canvas set-cursor #f) - (when result - (unless (and (list? result) - (= 2 (length result)) - (symbol? (car result)) - (regexp-match "^[tblrTBLR]$" (symbol->string (car result))) - (number? (cadr result)) - (<= 1 (cadr result) (current-board-size))) - (error 'play "unacceptable reply: ~a" result)) - (let* ([d (char-upcase (string-ref (symbol->string (car result)) 0))] - [p (cadr result)]) - (set! action - (lambda () - (case d - [(#\T) (push-top! (sub1 p))] - [(#\B) (push-bottom! (sub1 p))] - [(#\L) (push-left! (sub1 p))] - [(#\R) (push-right! (sub1 p))])))))))] - [run-player - ;; A wrapper for monitoring the program player in a GRacket thread. - ;; Also handle the possibility that something goes wrong. - (lambda (robot who) - (send status set-label (format "~a: running ~a" - who - (robot-name robot))) - (let ([s (make-semaphore)]) - (thread (lambda () - (with-handlers ([void (lambda (exn) - (message-box - "Error" - (format - (string-append - "There was an error running the " - "program player for ~a.\n" - "We'll assume a default move, T1.\n" - "Here is the error message:\n~a") - who - (if (exn? exn) - (exn-message exn) - exn)) - #f '(ok)) - (set! action (lambda () (push-top! 0))))]) - (run-player-in-background (robot-player robot))) - (semaphore-post s))) - (set! playing? #t) - (enable-arrows) - ;; Handle GUI events while we wait... - (yield s) - (set! playing? #f)) - (unless killed? - (send status set-label "") - (action) - (do-next-action)))]) - ;; Run a program? Let a person play? - (cond - [(and (eq? current-player x) x-player) (run-player x-player "X")] - [(and (eq? current-player o) o-player) (run-player o-player "O")] - [else (send status set-label (format "~a's turn (click a number)" - (if (eq? current-player x) "X" "O"))) - (enable-arrows)]))))]) - ;; Animation state - (define tracking-i 0) ;; for tracking mouse clicks - (define tracking-j 0) - (define tracking-highlight? #f) - - (define pushpiece #f) ;; piece being pushed onto board, #f for none - (define pushrow -1) ;; row being pushed, -1 for none - (define pushcol -1) ;; col being pushed, -1 for none - (define pushdown? #t) ;; left or top push? - (define amt 0) ;; displacement for push, between -1 and 1 - - (public* - [do-draw - ;;;;;;;;;;;;;;;;;;;; Draw the Board ;;;;;;;;;;;;;;;;;;;;;;; - (lambda () - (let ([n (current-board-size)]) - (send dc clear) - (send dc set-pen the-pen) - (send dc set-font the-font) - (send dc set-text-foreground gray) - (n-times (+ n 2) - (lambda (i) - (when (<= 1 i (add1 n)) - (send dc draw-line cell-size (* i cell-size) - (* (+ n 1) cell-size) (* i cell-size)) - (send dc draw-line (* i cell-size) cell-size - (* i cell-size) (* (+ n 1) cell-size))) - (when (<= 1 i n) - (let ([draw-box - (lambda (i j s) - (if (and tracking-highlight? - (= i tracking-i) - (= j tracking-j)) - (begin - (send dc set-text-foreground white) - (send dc set-brush solid-brush) - (send dc draw-ellipse - (+ 2 (* i cell-size)) - (+ 2 (* j cell-size)) - (- cell-size 4) - (- cell-size 4)) - (draw-box i j s) - (send dc set-brush transparent-brush) - (send dc set-text-foreground gray)) - (draw-box i j s)))]) - (draw-box i 0 (number->string i)) - (draw-box 0 i (number->string i)) - (draw-box i (add1 n) (number->string i)) - (draw-box (add1 n) i (number->string i)))))) - (send dc set-text-foreground black) - (n-times n - (lambda (i) - (n-times n (lambda (j) - (let ([v (board-cell board i j)]) - (when (and (eq? winner v) - (in-straight? board v i j)) - (send dc set-text-foreground green)) - (when (eq? loser v) - (send dc set-text-foreground red)) - (draw-box (+ i 1 - ;; Need to offset for animation? - (if (= j pushrow) - (if (let ([step (if pushdown? -1 1)]) - (let loop ([i i]) - (cond - [(or (= i -1) (= i n)) #t] - [(eq? (board-cell board i j) none) #f] - [else (loop (+ i step))]))) - amt - 0) - 0)) - (+ j 1 - ;; Need to offset for animation? - (if (= i pushcol) - (if (let ([step (if pushdown? -1 1)]) - (let loop ([j j]) - (cond - [(or (= j -1) (= j n)) #t] - [(eq? (board-cell board i j) none) #f] - [else (loop (+ j step))]))) - amt - 0) - 0)) - (cond - [(eq? v none) #f] - [(eq? v x) "x"] - [(eq? v o) "o"])) - (when (or (eq? winner v) (eq? loser v)) - (send dc set-text-foreground black))))))) - (when pushpiece - (draw-box (if (>= pushrow 0) - (if pushdown? - amt - (+ n 1 amt)) - (+ 1 pushcol)) - (if (>= pushcol 0) - (if pushdown? - amt - (+ n 1 amt)) - (+ 1 pushrow)) - (cond - [(eq? pushpiece x) "x"] - [(eq? pushpiece o) "o"])))))]) - (define bitmap #f) - (public* - [repaint (lambda () - (set! pushpiece #f) - (set! pushcol -1) - (set! pushrow -1) - (unless dc - (set! bitmap (make-object bitmap% - (* (+ (current-board-size) 2) cell-size) - (* (+ (current-board-size) 2) cell-size))) - (set! dc (make-object bitmap-dc% bitmap))) - (do-draw) - (on-paint))] - - [new-bitmap (lambda () - (set! bitmap #f) - (set! dc #f))] - - [animate-push (lambda (side pos player) - (let ([n (current-board-size)]) - (set! pushpiece player) - (set! pushrow (if (memq side '(right left)) - pos - -1)) - (set! pushcol (if (memq side '(top bottom)) - pos - -1)) - (set! pushdown? (memq side '(left top))) - (set! tracking-i (if (memq side '(top bottom)) - (add1 pushcol) - (if pushdown? 0 (add1 n)))) - (set! tracking-j (if (memq side '(right left)) - (add1 pushrow) - (if pushdown? 0 (add1 n)))) - (set! tracking-highlight? #t) - (let loop ([a 0]) - (set! amt ((if pushdown? + -) a)) - (do-draw) - (send (get-dc) draw-bitmap bitmap 0 0) - (sleep animate-delay) - (if (= a 1) - (set! tracking-highlight? #f) ;; expects redraw triggered afterwards... - (loop (+ a animate-step))))))]) - - (override* - [on-paint (lambda () - (when bitmap - (send (get-dc) draw-bitmap bitmap 0 0)))] - - ;;;;;;;;;;;;;;;;;;;; Handle Clicks ;;;;;;;;;;;;;;;;;;;;;;; - [on-event (lambda (e) - ;; There are a lot of reasons why you might not be allowed to click... - (cond - [(and (not winner) (not loser) - (or (send e button-down?) - (send e dragging?) - (send e button-up?)) - (not playing?) - (not (if (eq? current-player x) x-player o-player))) - (let ([i (inexact->exact (floor (/ (send e get-x) cell-size)))] - [j (inexact->exact (floor (/ (send e get-y) cell-size)))]) - (cond - [(send e button-down?) - (set! tracking-i i) - (set! tracking-j j) - (set! tracking-highlight? #t) - (repaint)] - [(send e moving?) - (let ([th? tracking-highlight?]) - (set! tracking-highlight? (and - (= tracking-i i) - (= tracking-j j))) - (unless (eq? th? tracking-highlight?) - (repaint)))] - [(send e button-up?) - (if (and (= tracking-i i) - (= tracking-j j)) - (let ([n (current-board-size)]) - (when (cond - [(and (= j 0) (<= 1 i n)) (push-top! (sub1 i)) #t] - [(and (= j (add1 n)) (<= 1 i n)) (push-bottom! (sub1 i)) #t] - [(and (= i 0) (<= 1 j n)) (push-left! (sub1 j)) #t] - [(and (= i (add1 n)) (<= 1 j n)) (push-right! (sub1 j)) #t] - [else #f]) ; not on a number - ; Check for win/loss, run automated player - (do-next-action))) - (when tracking-highlight? - (set! tracking-highlight? #f) - (repaint)))]))] - [else - (when tracking-highlight? - (set! tracking-highlight? #f) - (repaint))]))]) - (apply super-make-object args))) - - ;; Create the GUI interface with the above pieces ;; - - ; Instantiate the canvas in a frame (= a top-level window) - (define frame (new (class frame% - (augment* - [can-close? (lambda () (inner #t can-close?))] - ;; Close the frame => exit the program - ;; No fancy "Quit" menus here! - [on-close (lambda () (inner (void) on-close) (exit))]) - (super-new)) - [label "Pousse"] [style '(metal no-resize-border)])) - - ;; Panels are for GUI item layout (auto geometry management) - (define h-layout-panel (make-object horizontal-panel% frame)) - (send h-layout-panel spacing 5) - (define game-panel (make-object vertical-panel% h-layout-panel)) - (send game-panel stretchable-width #f) - (define history-panel (make-object vertical-panel% h-layout-panel)) - - ;; Make the left and right arrow buttons - (define button-panel (make-object horizontal-panel% game-panel)) - (send button-panel stretchable-height #f) - (define left-panel (make-object vertical-panel% button-panel)) - (define past-button (make-object button% (make-object bitmap% (local-file "left.gif")) - button-panel (lambda (b e) (past!)))) - (define future-button (make-object button% (make-object bitmap% (local-file "right.gif")) - button-panel (lambda (b e) (future!)))) - (define right-panel (make-object vertical-panel% button-panel)) - (define clock (make-object message% "00:00" right-panel)) - (send left-panel min-width (send clock min-width)) ; layout trick - (send right-panel set-alignment 'right 'bottom) - - (define clock-timer (make-object - (class timer% - (define init 0) - (define dinged 0) - (rename-super [super-start start]) - (public* [reset (lambda () - (send clock set-label "00:00") - (set! dinged 0) - (set! init (current-seconds)))]) - (override* - [notify - (lambda () - (let* ([v (- (current-seconds) init)]) - ;; Ring bell once at 30 seconds, twice at 60 seconds - (when (send clock is-shown?) - (when (>= v 30) - (unless (> dinged 0) (bell) (set! dinged 1)) - (when (>= v 60) - (unless (> dinged 1) (bell) (bell) (set! dinged 2))))) - (let ([v (if (>= v 3600) ; more than an hour - (quotient v 3600) - v)]) - (send clock set-label - (format "~a~a:~a~a" - (quotient v 600) - (modulo (quotient v 60) 10) - (quotient (modulo v 60) 10) - (modulo v 10))))))] - [start (lambda () - (set! init (current-seconds)) - (super-start 1000 #f))]) - (super-make-object)))) - (send clock-timer start) - - ;; This procedure is called to enable/disable the arrow buttons - (define (enable-arrows) - (let ([ok? (lambda (state) - (and ;; Something to rewind to? - (pair? state) - ;; Is it program vs. program? - (not (and x-player o-player)) - ;; If we're playing a program, can we rewind twice? - (or (not (or x-player o-player)) - (pair? (cdr state)))))]) - (send past-button enable (ok? past-state)) - (send future-button enable (ok? future-state)))) - - ;; Make the status line - (define status (make-object message% "Pousse" game-panel)) - (send status stretchable-width #t) - - ;; Make the canvas for drawing the game board - (define canvas (make-object pousse-canvas% game-panel)) - - ; The canvas should stretch/shrink to fit the board - (define (set-canvas-size) - (let ([n (current-board-size)]) - (send canvas min-client-width (* (+ n 2) cell-size)) - (send canvas min-client-height (* (+ n 2) cell-size)) - (send canvas new-bitmap))) - (set-canvas-size) - (send canvas focus) - - ; Make a text window for showing the board history to the right. - ; Uses the built-in text editor in GRacket, adding a show-moves - ; method to refresh the window after a move or rewind. - (make-object message% "Moves" history-panel) - (define history-canvas (make-object editor-canvas% history-panel #f '(no-hscroll))) - (define history-text (make-object (class text% - (inherit begin-edit-sequence end-edit-sequence - erase insert delete change-style hide-caret - set-position line-start-position line-end-position) - ; Ignore all user actions: - (override* [on-char (lambda (e) (void))] [on-event (lambda (e) (void))]) - (public* - [show-moves - (lambda () - (begin-edit-sequence) - (erase) - (change-style (make-object style-delta% 'change-normal)) - (change-style (make-object style-delta% 'change-family 'swiss)) - (for-each - (lambda (m) (insert m) (insert #\newline)) - (if (null? future-state) - moves - (cadr (list-ref future-state (sub1 (length future-state)))))) - (delete) ; delete that last newline - (if (null? moves) - (set-position 0) - (let* ([past-move (sub1 (length moves))] - [start (line-start-position past-move)]) - (change-style (send - (make-object style-delta% 'change-bold) - set-delta-foreground "BLUE") - start - (line-end-position past-move)) - (set-position start))) - (end-edit-sequence))]) - (super-make-object) - (hide-caret #t)))) - (send history-canvas set-editor history-text) - (send history-canvas min-client-width 30) - - ;; Setup and miscellaneous buttons at the bottom - - (define misc-panel (make-object horizontal-panel% frame)) - (send misc-panel stretchable-height #f) - - (make-object button% "Help" misc-panel (lambda (b e) (help))) - (make-object button% "Setup..." misc-panel (lambda (b e) (setup))) - (make-object vertical-pane% misc-panel) ; spacer - - ;; Makes the setup dialog. Options dialogs are always a pain. - (define (make-setup-dialog) - (define d (make-object dialog% "Pousse Setup" frame 300 200)) - (define config-panel (make-object vertical-panel% d)) - (define game-panel (make-object vertical-panel% config-panel)) - (define (make-player name) - (letrec ([p (make-object vertical-panel% game-panel '(border))] - [m (make-object choice% (format "~a Player:" name) '("Person" "Program") p - (lambda (m e) - (send l enable (positive? (send m get-selection))) - (enable-ok)))] - [l (make-object list-box% "Programs:" (map robot-name robots) p - (lambda (l e) (enable-ok)))]) - (send l enable #f) - (values m l))) - (define board-size (make-object slider% "Board Size:" 3 20 game-panel void (current-board-size))) - (define-values (x-kind x-robot) (make-player "X")) - (define-values (o-kind o-robot) (make-player "O")) - - (define button-panel (make-object horizontal-pane% d)) - (define load-button (make-object button% "Add a Player Program..." button-panel - (lambda (b e) - (with-handlers ([void - (lambda (exn) - (message-box "Error" - (format "There was an error:\n~a" - (if (exn? exn) - (exn-message exn) - exn))))]) - (let ([f (get-file "Get Player Program" d)]) - (when f - (let ([player (dynamic-require f 'robot)]) - (let ([name (get-text-from-user "Player Name" - "Player Program Name:" - d - (let-values ([(base name dir?) - (split-path f)]) - (path->string name)))]) - (when name - (set! robots (append robots - (list (make-robot name player)))) - (send x-robot set (map robot-name robots)) - (send o-robot set (map robot-name robots))))))))))) - (define spacer (make-object vertical-pane% button-panel)) - (define cancel-button (make-object button% "Cancel" button-panel - (lambda (b e) (send d show #f)))) - (define ok-button (make-object button% "Start" button-panel - ;; Callback procedure invoked when the button is hit: - (lambda (b e) - (send d show #f) - (send canvas kill-robot) ; in case a robot was running - (queue-callback - (lambda () - (let ([get-robot - (lambda (l) - (list-ref robots - (send l get-selection)))] - [size (send board-size get-value)]) - (if (zero? (send x-kind get-selection)) - (set! x-player #f) ; person player - (set! x-player (get-robot x-robot))) - (if (zero? (send o-kind get-selection)) - (set! o-player #f) ; person player - (set! o-player (get-robot o-robot))) - (reset-game size))))) - '(border))) - - (define enable-ok (lambda () (send ok-button enable (and - (or (zero? (send x-kind get-selection)) - (send x-robot get-selection)) - (or (zero? (send o-kind get-selection)) - (send o-robot get-selection)))))) - - (send button-panel set-alignment 'right 'center) - (send button-panel stretchable-height #f) - - d) - - (define setup-dialog (make-setup-dialog)) - (define setup-once? #f) - - (define (setup) - (unless setup-once? - (send setup-dialog center) - (set! setup-once? #t)) - (send setup-dialog show #t)) - - ;; Help or source code window: - (define help - (show-scribbling - '(lib "games/scribblings/games.scrbl") - "pousse")) - - - ; Draw initial board - (send canvas repaint) - - ; Arrow buttons initially enabled? - (enable-arrows) - - ; Don't allowing resizing the frame. Everything fits just right. - (send frame stretchable-width #f) - (send frame stretchable-height #f) - - ; Show the frame - we're off and running, now! - (send frame show #t) - - ; Take the first action. - (send canvas do-next-action) - - ; Loop forever (handling events). Frame's on-close callback method will exit. - (yield (make-semaphore 0)))) diff --git a/pkgs/games/pousse/right.gif b/pkgs/games/pousse/right.gif deleted file mode 100644 index 0b2cf3002a380b57e5177c03115bc23069e89218..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmZ?wbhEHblx2`(IK;s4|Nnmm28M=)hJXM5?ccv2$c6yLpDc_ZmJWyjsbyd;=h$`U z--T8IZJwrEYY&~c^Nce=qLO9h%u5bSR8KEhALU!ow_AUYnZ%?5jW<`5jOP`e{IYdc zz+zp=wN~OL+9g~kvStUrFP9AKTWa`m=55pU6W=!0_)Ryy88P=>FMs9lI (cons )) - - ;; Filter the set of futures to choose a plausible set under the lookahead - ;; threshold: - [local-good-futures good-futures] - - [good-so-far LOSER-GOODNESS] - - ;; If we're not at depth 0, do a recursive lookahead - [good-futures - (if (positive? depth) - (map (lambda (gf) - (cons (if (>= good-so-far min-needed) - ;; We've got something good enough, so just return LOSER - IMMEDIATE-LOSER-GOODNESS - - (let ([move (search-space (cadr gf) - (extend-history (cadr gf) history) - (make-get-best-move (sub1 depth)) - (other-player as-player) - ;; Need something better than what we have... - (- (car gf) good-so-far))]) - - '(when (and (= depth RECURSION-DEPTH)) - (eprintf "Returned goodness: ~a\n" (car move)) - (print-board (cadr gf) (current-error-port))) - - (let ([g (car move)]) - (let* ([new-goodness - (if (number? g) - ; normal future - (- (car gf) g) - - ; win/lose - try to delay a loss - (cons (- (car g)) (+ 10000 (car gf) (cdr g))))] - [new-goodness-val (if (pair? new-goodness) - (car new-goodness) - new-goodness)]) - - ;; New best goodness? - (when (> new-goodness-val good-so-far) - (set! good-so-far new-goodness-val)) - - new-goodness)))) - (cdr gf))) - local-good-futures) - - ; Use what we have - local-good-futures)]) - - '(when (and (= depth RECURSION-DEPTH)) - (for-each (lambda (gf) - (eprintf "Goodness: ~a\n" (car gf)) - (print-board (cadr gf) (current-error-port))) - good-futures)) - - - (let ([r (if (andmap (lambda (x) (and (pair? (car x)) (= (caar x) LOSER-GOODNESS))) good-futures) - ;; All losers; pick to delay the inevitable - (let ([m (pick-best (map (lambda (x) (cons (cdar x) (cdr x))) good-futures))]) - (cons (cons LOSER-GOODNESS (car m)) (cdr m))) - - ;; Weighted non-losses. Pick one now: - (pick-best good-futures))]) - - ;; Strip the board out, getting just the index - (cons (car r) (cddr r))))))))))) - - - ;; Symmetry ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; search-space is a symmetry helper. Lets you write a move chooser, - ;; get-best-move, that only needs to consider top pushes; the results - ;; from calling get-best-move four times are filtered down to a single - ;; choice. Also uses threads in the hope of exploiting extra - ;; processors. - - (define (search-space board history get-best-move as-player min-needed) - ;; get-best-move is called with: - ;; board history as-player skip-right? - ;; It is actually called four times, once for each rotation of the board, so - ;; get-best-move should only contemplate the space derived from pushing - ;; at the top on the next move. If skip-right is #t, it shouldn't - ;; contemplate pushing into the leftmost column because nothing's there; - ;; a different rotation will catch the possibility. - ;; The return value of get-best-move should be - ;; (cons ) - ;; where is a number or - ;; (box ) - ;; the box means loser; if all moves lose, the best - ;; is picked. - ;; The return values of `search-space' is - ;; (cons (cons )) - ;; where is in '(#\T #\B #\R #\L) - - (let* ([top-board board] - [right-board (rotate-cw top-board 1)] - [bottom-board (rotate-cw right-board 1)] - [left-board (rotate-cw bottom-board 1)] - [moves (make-vector 4)] - [win-move #f] - [s (make-semaphore 0)] - [go (lambda (parallel? board pos transform) - (let ([f (lambda () - (let ([v (transform - (get-best-move board history as-player - min-needed - (eq? none (board-cell board (sub1 n) 0))))]) - (vector-set! moves pos v) - (let ([value (if (pair? (car v)) - (caar v) - (car v))]) - (when (>= value min-needed) - ; Exceeded minimum necessary weight - short-circuit the rest - (set! win-move v) - (semaphore-post s) - (semaphore-post s) - (semaphore-post s)) - (semaphore-post s))))]) - (unless win-move - (if (and parallel? (< thread-count THREAD-LIMIT)) - (thread (lambda () - ;; No locking on thread-count. It will be a little - ;; inaccurate, but who cares? - (set! thread-count (add1 thread-count)) - (f) - (set! thread-count (sub1 thread-count)))) - (f)))))]) - (go #t top-board 0 (lambda (x) (cons (car x) (cons #\T (cdr x))))) - (go #t bottom-board 1 (lambda (x) (cons (car x) (cons #\B (- n 1 (cdr x)))))) - (go #t left-board 2 (lambda (x) (cons (car x) (cons #\R (cdr x))))) - (go #f right-board 3 (lambda (x) (cons (car x) (cons #\L (- n 1 (cdr x)))))) - (semaphore-wait s) - (semaphore-wait s) - (semaphore-wait s) - (semaphore-wait s) - (if win-move - win-move - (let ([l (vector->list moves)]) - (if (andmap (lambda (x) (and (pair? (car x)) (= (caar x) LOSER-GOODNESS))) l) - ;; All losers; pick to delay the inevitable - (let ([m (pick-best (map (lambda (x) (cons (cdar x) (cdr x))) l))]) - (cons (cons LOSER-GOODNESS (car m)) (cdr m))) - - ;; Pick a non-losing move - (pick-best l)))))) - - ;; Using up our time ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; Loop, choosing a deeper level of dept-first searching - ;; each time. Kill everything an use the most-recently - ;; computed value if we run out of time. The goodness - ;; cache is reset each time; presumably, each iteration - ;; calculates more precise values, overriding the old ones. - - (define (use-up-time f) - (let ([result (cons (list-ref '(#\T #\B #\L #\R) (random 4)) (random n))] ; worst-case default - [c (make-custodian)]) - (parameterize ([current-custodian c]) - (thread - (lambda () - (let loop ([iteration 0]) - ; (eprintf "Starting iteration ~a\n" iteration) - (set! result (f iteration)) - '(eprintf " [finished iteration depth ~a: ~a~a]\n" - iteration (cadr result) (add1 (cddr result))) - (unless (or (pair? (car result))) - (loop (add1 iteration))))))) - (let loop () - (let ([sleep-time (- RUN-TIME (- (current-seconds) start-time))]) - (when (> sleep-time 1) - (sleep 1) - (unless (pair? (car result)) ; pair indicates win/lose - (loop))))) - result)) - - - ;; Result ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - (define (go) - '(begin - (eprintf "Start:\n") - (print-board board (current-error-port))) - (let* ([go (lambda (i) - (set! RECURSION-DEPTH i) - (search-space board history (make-get-best-move i) as-player WINNER-GOODNESS))] - [depth RECURSION-DEPTH] - [result (if depth - (go depth) - (use-up-time go))]) - '(when (pair? (car result)) - (eprintf "we ~a\n" - (if (= (caar result) LOSER-GOODNESS) "lose" "win"))) - (output-move (cdr result)))) - - ;; Given (cons ), returns the move - ;; is in '(#\T #\B #\R #\L) - (define (output-move move) - (list (case (car move) - [(#\T) 't] - [(#\B) 'b] - [(#\R) 'r] - [(#\L) 'l]) - (add1 (cdr move)))) - - (go))) diff --git a/pkgs/games/pousse/robots.txt b/pkgs/games/pousse/robots.txt deleted file mode 100644 index 89eff72ac1..0000000000 --- a/pkgs/games/pousse/robots.txt +++ /dev/null @@ -1,40 +0,0 @@ -A player program for Pousse is a module that exports a `robot' -function. The `robot' function takes two arguments: - - * The first argument is a number for the board size. - - * The second argument is the history of moves as a list (with the - first move of the game at the beginning of the list). Each move is - a list of two values: a symbol --- 't, 'l, 'b, or 'r --- and a - number. - -The result should be a move (a list containing a symbol and a number). - -The player program is not given the current board state, but it can be -derived from the move history. The history is more useful than the -board state, because a move that repeats a board state is a losing -move. - -The following example player program always mimics the other player, -choosing T1 if it has to go first: - - ;; In the file my-robot.rkt - (module my-robot mzscheme - (provide robot) - - (define robot - (lambda (n moves) - (if (null? moves) - ;; first move - '(t 1) - ;; otherwise, mimic previous move - (let loop ([moves moves]) - (if (null? (cdr moves)) - (car moves) - (loop (cdr moves)))))))) - -A robot should take 30 seconds or less to select a move. - -A program player is loaded into the game via the "Setup..." dialog, -which has an "Add a Program Player..." button for selecting a file -containing a module. diff --git a/pkgs/games/pousse/utils.rkt b/pkgs/games/pousse/utils.rkt deleted file mode 100644 index 8e764dc266..0000000000 --- a/pkgs/games/pousse/utils.rkt +++ /dev/null @@ -1,106 +0,0 @@ -#lang racket -; See boardsig.rkt for the core utilities. -(require "board-size.rkt" - "board.rkt") - -(provide - n-times ; call a procedure with each number in [0, n] - n-map ; call a procedure with each number in [0, n] to make a list - print-board ; pretty-prints a board - find-winner ; checks a board to see if there's a winner - other-player ; x -> o or o -> x - - pick-best ; takes a list of (cons ) and returns pair - ; with the biggest , randomly chossing among - ; equals - ) - -; Call f with each number in [0, n] -(define (n-times n f) - (let loop ([i 0]) - (unless (= i n) - (f i) - (loop (add1 i))))) - -; Call f with each number in [0, n] to make a list -(define (n-map n f) - (let loop ([i 0]) - (if (= i n) - null - (cons (f i) - (loop (add1 i)))))) - - -; Pretty-prints the board -(define print-board - (case-lambda - [(b) (print-board b (current-output-port))] - [(b port) - (let ([n (current-board-size)]) - (n-times n (lambda (j) - (n-times n (lambda (i) - (fprintf port "~a " (let ([v (board-cell b i j)]) - (cond - [(eq? v none) '-] - [(eq? v x) 'x] - [(eq? v o) 'o]))))) - (newline port))))])) - -; Given a player (board cell value), get the other one -(define (other-player as-player) - (if (eq? as-player x) - o - x)) - -; See if the board has a winner; returns o, x, or #f -(define (find-winner board) - (let ([n (current-board-size)]) - (let ([row-wins-x (make-vector n 1)] - [row-wins-o (make-vector n 1)] - [col-wins-x (make-vector n 1)] - [col-wins-o (make-vector n 1)]) - (n-map n (lambda (i) - (n-map n (lambda (j) - (let ([v (board-cell board i j)]) - (cond - [(eq? v x) (vector-set! col-wins-o i 0) - (vector-set! row-wins-o j 0)] - [(eq? v o) (vector-set! col-wins-x i 0) - (vector-set! row-wins-x j 0)] - [else (vector-set! col-wins-o i 0) - (vector-set! row-wins-o j 0) - (vector-set! col-wins-x i 0) - (vector-set! row-wins-x j 0)])))))) - (let ([o-wins (+ (apply + (vector->list row-wins-o)) - (apply + (vector->list col-wins-o)))] - [x-wins (+ (apply + (vector->list row-wins-x)) - (apply + (vector->list col-wins-x)))]) - (cond - [(= o-wins x-wins) #f] - [(> o-wins x-wins) o] - [else x]))))) - -; Compare the values in goodness and pick the biggest element. -; Takes a non-empty list of (cons ) -; If is a pair, look at the car. -; Return (cons ). -(define (pick-best choices) - (let loop ([l (cdr choices)] - [goodness (let ([g (caar choices)]) - (if (pair? g) - (car g) - g))] - [result (car choices)]) - (if (null? l) - result - (let ([v (let ([v (caar l)]) - (if (pair? v) - (car v) - v))]) - (cond - [(> v goodness) (loop (cdr l) v (car l))] - [(and (= v goodness) - ; pick randomly - (zero? (random 2))) - (loop (cdr l) v (car l))] - [else (loop (cdr l) goodness result)]))))) diff --git a/pkgs/games/same/info.rkt b/pkgs/games/same/info.rkt deleted file mode 100644 index 8827998f6b..0000000000 --- a/pkgs/games/same/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game-set "Puzzle Games") -(define game "same.rkt") diff --git a/pkgs/games/same/same-lib.rkt b/pkgs/games/same/same-lib.rkt deleted file mode 100644 index bee9ee8121..0000000000 --- a/pkgs/games/same/same-lib.rkt +++ /dev/null @@ -1,226 +0,0 @@ -#lang racket/base -(require racket/class - racket/draw) - -(provide make-a-move - - draw-board - update-pen/draw-blob - update-dc-scale - - colors - board-ref - cell-w - cell-h - find-same-colors) - -;; these are the sizes that the on-paint callback draws at; -;; a scaling factor is applied to make the board fit the window -(define cell-w 11) -(define cell-h 11) -(define pen-size 10) - -(define colors (map (lambda (x) (make-object color% x)) - (list "blue" "red" "brown" "forestgreen" "purple"))) -(define pale-colors - (for/list ([x (in-list colors)]) - (define (paleize x) (- 255 (floor (* (- 255 x) 2/3)))) - (make-object color% - (paleize (send x red)) - (paleize (send x green)) - (paleize (send x blue))))) - -(define (draw-board dc board-width board-height board cw ch - mouse-current-x mouse-current-y mouse-clicked-x mouse-clicked-y) - (send dc erase) - (send dc set-smoothing 'smoothed) - (update-dc-scale dc cw ch board-width board-height) - (define painted (make-hash)) - (for* ([i (in-range 0 board-width)] - [j (in-range 0 board-height)]) - (unless (hash-ref painted (xy->key board-width i j) #f) - (define color (vector-ref (board-ref board i j) 0)) - (when color - (define blob (find-same-colors board board-width board-height i j)) - (for ([x (in-list blob)]) - (hash-set! painted (xy->key board-width (blob-sel-x x) (blob-sel-y x)) #t)) - (update-pen/draw-blob - blob dc color - mouse-current-x mouse-current-y mouse-clicked-x mouse-clicked-y))))) - -(define (update-dc-scale dc cw ch board-width board-height) - (send dc set-scale - (/ cw (* board-width cell-w)) - (/ ch (* board-height cell-h)))) - -(define (update-pen/draw-blob - blob dc color - mouse-current-x mouse-current-y mouse-clicked-x mouse-clicked-y) - (define mouse-over? #f) - (define mouse-clicked-over? #f) - (define multiple-cells? (not (or (null? blob) (null? (cdr blob))))) - - (when (or (number? mouse-current-x) - (number? mouse-clicked-x)) - (for ([obj (in-list blob)]) - (define x (blob-sel-x obj)) - (define y (blob-sel-y obj)) - (when (and (equal? x mouse-current-x) - (equal? y mouse-current-y)) - (set! mouse-over? #t)) - (when (and (equal? x mouse-clicked-x) - (equal? y mouse-clicked-y)) - (set! mouse-clicked-over? #t)))) - - (cond - [mouse-clicked-x ;; has the mouse been clicked in a clickable place? - (cond - [(and mouse-over? mouse-clicked-over? multiple-cells?) - (send dc set-pen (list-ref pale-colors color) (* pen-size 2/3) 'solid) - (draw-blob dc blob)] - [else - (send dc set-pen - (list-ref colors color) - pen-size - 'solid) - (draw-blob dc blob)])] - [else - (cond - [mouse-over? - (send dc set-pen (list-ref pale-colors color) pen-size 'solid) - (draw-blob dc blob)] - [else - (send dc set-pen (list-ref colors color) pen-size 'solid) - (draw-blob dc blob)])])) - -(define (draw-blob dc blob) - (define (connect x1 y1 x2 y2) - (send dc draw-line - (+ (/ cell-w 2) (* x1 cell-w)) - (+ (/ cell-h 2) (* y1 cell-h)) - (+ (/ cell-w 2) (* x2 cell-w)) - (+ (/ cell-h 2) (* y2 cell-h)))) - (cond - [(null? (cdr blob)) - (define pt (car blob)) - (connect (blob-sel-x pt) (blob-sel-y pt) (blob-sel-x pt) (blob-sel-y pt))] - [else - (for* ([b1 (in-list blob)] - [b2 (in-list blob)]) - (when (= (+ (abs (- (blob-sel-x b1) (blob-sel-x b2))) - (abs (- (blob-sel-y b1) (blob-sel-y b2)))) - 1) - (connect (blob-sel-x b1) (blob-sel-y b1) (blob-sel-x b2) (blob-sel-y b2))))])) - -(define (xy->key board-width x y) (+ (* board-width y) x)) - -(define (make-same-bitmap pth) - (define bw 32) - (define bh 32) - (define bitmap (make-bitmap bw bh)) - (define bdc (make-object bitmap-dc% bitmap)) - (define board-width 3) - (define board-height 3) - (define board - (vector (vector (vector 0 #f) (vector 1 #f) (vector 4 #f)) - (vector (vector 0 #f) (vector 1 #f) (vector 1 #f)) - (vector (vector 3 #f) (vector 3 #f) (vector 2 #f)))) - (draw-board bdc board-width board-height board bw bh - #f #f #f #f) - (send bdc set-bitmap #f) - (send bitmap save-file pth 'png)) - -; (make-same-bitmap "same.png") - -;; make-a-move : num num board num num -> num or #f -;; mutates 'board' to reflect removing the blob at (i,j) -;; result is the size of the removed blob, or #f if nothing got removed -(define (make-a-move i j board board-width board-height) - (let ([same-colors (find-same-colors board board-width board-height i j)]) - (cond - [(< (length same-colors) 2) - #f] - [else - - ;; slide down empty pieces - (let ([is null]) - (for-each - (lambda (p) - (let ([i (blob-sel-x p)] - [j (blob-sel-y p)]) - (unless (member i is) - (set! is (cons i is))) - (let loop ([x j]) - (cond - [(<= 1 x) - (let ([next (board-ref board i (- x 1))] - [this (board-ref board i x)]) - (vector-set! this 0 (vector-ref next 0)) - (loop (- x 1)))] - [else - (vector-set! (board-ref board i x) 0 #f)])))) - (sort same-colors - (lambda (x y) (<= (blob-sel-y x) (blob-sel-y y))))) - - ;; slide empty over empty rows - (set! is (sort is >)) - (let ([empty-is - (filter (lambda (i) - (not (vector-ref - (board-ref board i (- board-height 1)) - 0))) - is)]) - (let ([is (if (null? empty-is) - is - (filter (lambda (x) (< x (car empty-is))) - is))]) - (for-each (lambda (empty-i) - (let loop ([i empty-i]) - (cond - [(<= i (- board-width 2)) - (vector-set! board i (vector-ref board (+ i 1))) - (loop (+ i 1))] - [(= i (- board-width 1)) - (vector-set! - board - i - (build-vector board-height - (λ (i) (vector #f #f))))]))) - empty-is)))) - - (length same-colors)]))) - -(define (blob-sel-x b) (vector-ref b 1)) -(define (blob-sel-y b) (vector-ref b 2)) -(define (board-ref b x y) (vector-ref (vector-ref b x) y)) - -(define (find-same-colors board board-width board-height i j) - (let* ([index (vector-ref (board-ref board i j) 0)] - [ans - (let loop ([i i] - [j j] - [ps null]) - (cond - [(not (and (<= 0 i) (< i board-width) - (<= 0 j) (< j board-height))) - ps] - [else - (let ([v (board-ref board i j)]) - (cond - [(vector-ref v 1) ps] - [(not (vector-ref v 0)) ps] - [(= index (vector-ref v 0)) - (vector-set! v 1 #t) - (loop (+ i 1) - j - (loop (- i 1) - j - (loop i - (- j 1) - (loop i - (+ j 1) - (cons (vector v i j) - ps)))))] - [else ps]))]))]) - (for-each (lambda (p) (vector-set! (vector-ref p 0) 1 #f)) ans) - ans)) diff --git a/pkgs/games/same/same.png b/pkgs/games/same/same.png deleted file mode 100644 index b763da119020a19c78b82c16356a5fafdcb4841c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1014 zcmVA0v7MD7Y9(Zv~I$mE*96(jO4Uh=fz}9eWxZMj;Ra*>jK41fXSYfNi6H^EqU@ z!VVRwP$$??Ep{n4fgXX84H-~)49Ea?`EB5ss0BV#cukf&Ujusr6bJiV@?{`!M6AdqPef(P0A~Z%*W97pxFA*2RV+Dcus@xd01XrY zRP^(TEM+GDW`4v7SU@LG2*`j1knhdEg7AyGwiY5L(urUh0D&>=@Hquc1IxgQ%i#<8 z-uy06=|dPtSX6Y{U{1yAV%u`PxiQzG;kZVRCgz(IElWa$f`V2#%4SkQ-bp2z(jD=# zcwZAamY8n|sreYyR)jF{m%@ozNt{qiKfa?b9MJ((y0KSCMMcjm zp@VOKKmOC2f#JlTPmA&m5OHxhxl)uz4_w_k=f}W6+XHv6n9`3ZJ6t%+BC_{L=C^On zmpgB45#^|xxHIaeaLD?oif9>%QXKprae#=bHT2%@#s;&vxM?@gSh1T(*QfVSdrmk7 zQKYLfOYXBI@|+QLmxrFA=%(6cuLk;4iAKDvijfwhDp$QUEtPZ@nDaoLD@OD>-qx8j zrev%v_IFgRIem%BiCJ(sh!lIM zFfc{FIGmZt8i1yF-MgX;qGi)|Q$!B#n{4 (vectorof (vectorof (vector (union num #f) boolean)))) - ; this represents the board. Each entry is the color index of - ; the piece and a node to mark for the depth-first traversal. - ; #f for the color index indicates an eliminated piece. - (define (build-board) - (define board - (build-vector - board-width - (lambda (i) - (build-vector - board-height - (lambda (j) - (vector - (random (length colors)) - #f)))))) - (for* ([x (in-range 1 board-width)] - [y (in-range 1 board-height)]) - (when (zero? (random 5)) - (define-values (prev-x prev-y) - (if (zero? (random 2)) - (values x (- y 1)) - (values (- x 1) y))) - (define this-vector (board-ref board x y)) - (define prev-vector (board-ref board prev-x prev-y)) - (vector-set! this-vector 0 (vector-ref prev-vector 0)))) - board) - - (define board (build-board)) - - (define game-over? #f) - - ;; adds up as the user clicks - (define clicked-score 0) - (define (calc-score n) (* n n)) - (define (reset-score) - (set! clicked-score 0) - (set-score-label)) - (define (update-score balls-going-away) - (set! clicked-score (+ clicked-score (calc-score balls-going-away))) - (set-score-label)) - (define (set-score-label) - (define cells-filled-in 0) - (for ([v (in-vector board)]) - (for ([v (in-vector v)]) - (when (vector-ref v 0) - (set! cells-filled-in (+ cells-filled-in 1))))) - (define bonus-start 50) ;; bonus for getting down to 49 (or fewer) balls - (define bonus-per-ball 100) ;; number of points for clearing each of those last 'bonus-start' balls - (define bonus (if (<= cells-filled-in bonus-start) - (* bonus-per-ball (- bonus-start cells-filled-in)) - 0)) - (send score-message set-label - (format "~a + ~a = ~a" - clicked-score - bonus - (+ clicked-score bonus)))) - - (define same-canvas% - (class canvas% - (inherit get-dc get-client-size make-bitmap) - (define/private (get-width) (let-values ([(w h) (get-client-size)]) w)) - (define/private (get-height) (let-values ([(w h) (get-client-size)]) h)) - (define/private (get-x-step) (/ (get-width) board-width)) - (define/private (get-y-step) (/ (get-height) board-height)) - - (define mouse-current-x #f) - (define mouse-current-y #f) - (define mouse-clicked-x #f) - (define mouse-clicked-y #f) - - (define background-valid? #f) - (define background #f) - - (define/public (invalidate-board-bitmap) - (set! background-valid? #f)) - - (define/override (on-size w h) - (define-values (cw ch) (get-client-size)) - (when background - (unless (and (= cw (send background get-width)) - (= ch (send background get-height))) - (set! background #f) - (set! background-valid? #f)))) - - (define/override (on-paint) - (define-values (cw ch) (get-client-size)) - (define dc (get-dc)) - (send dc set-smoothing 'smoothed) - (build-background) - (send dc set-scale 1 1) - (send dc draw-bitmap background 0 0) - - (define current-blob - (and mouse-current-x - (find-same-colors board board-width board-height - mouse-current-x - mouse-current-y))) - (cond - [(and mouse-clicked-x - mouse-current-x - (equal? mouse-clicked-x mouse-current-x) - (equal? mouse-clicked-y mouse-current-y)) - - ;; don't know what to do here - - (define blob - (find-same-colors board board-width board-height - mouse-current-x - mouse-current-y)) - (unless (null? blob) - (define color - (vector-ref (board-ref board mouse-current-x mouse-current-y) - 0)) - (define-values (cw ch) (get-client-size)) - (update-dc-scale dc cw ch board-width board-height) - (update-pen/draw-blob - blob dc color - mouse-current-x mouse-current-y - mouse-clicked-x mouse-clicked-y))] - [mouse-current-x - (define blob - (find-same-colors board board-width board-height - mouse-current-x - mouse-current-y)) - (unless (null? blob) - (define color - (vector-ref (board-ref board mouse-current-x mouse-current-y) - 0)) - (define-values (cw ch) (get-client-size)) - (update-dc-scale dc cw ch board-width board-height) - (update-pen/draw-blob - blob dc color - mouse-current-x mouse-current-y - mouse-clicked-x mouse-clicked-y))]) - - (when game-over? - (update-dc-scale dc cw ch board-width board-height) - (paint-game-over))) - - (define/private (build-background) - (unless background-valid? - (define-values (cw ch) (get-client-size)) - (unless background - (set! background (make-bitmap cw ch))) - (define bdc (make-object bitmap-dc% background)) - (draw-board bdc board-width board-height board cw ch #f #f #f #f) - (send bdc set-bitmap #f) - (set! background-valid? #t))) - - (define/private (paint-game-over) - (define dc (get-dc)) - (define game-over "Game Over") - (send dc set-font - (send the-font-list find-or-create-font - 24 'decorative 'normal 'normal #f)) - (define border 5) - (define-values (text-width text-height d l) - (send dc get-text-extent game-over)) - (define x (- (/ (* cell-w board-width) 2) (/ text-width 2))) - (define y (- (/ (* cell-h board-height) 2) (/ text-height 2))) - (send dc set-pen "white" 1' transparent) - (send dc set-brush "white" 'solid) - (send dc set-alpha .8) - (send dc draw-rectangle - (- x border border) (- y border) - (+ text-width border border border border) - (+ text-height border border)) - (send dc set-alpha 1) - (send dc draw-text game-over x y)) - - (inherit refresh) - (define/override (on-event evt) - (define x (send evt get-x)) - (define y (send evt get-y)) - (define-values (cw ch) (get-client-size)) - (define bx (floor (* (/ x cw) board-width))) - (define by (floor (* (/ y ch) board-height))) - (unless (<= 0 bx (- board-width 1)) (set! bx #f)) - (unless (<= 0 by (- board-height 1)) (set! by #f)) - (when (send evt leaving?) - (set! bx #f) - (set! by #f)) - - (when (send evt button-up?) - (when (and (equal? mouse-clicked-x bx) - (equal? mouse-clicked-y by)) - (define removed-ball-count - (make-a-move mouse-clicked-x mouse-clicked-y - board board-width board-height)) - (when removed-ball-count - (update-score removed-ball-count) - (invalidate-board-bitmap) - (update-game-over) - (refresh)))) - - (define-values (new-mouse-clicked-x new-mouse-clicked-y) - (cond - [(send evt button-down?) (values bx by)] - [(send evt button-up?) (values #f #f)] - [else (values mouse-clicked-x mouse-clicked-y)])) - - (define this-score-needs-update? #f) - - (unless (and (equal? mouse-clicked-x new-mouse-clicked-x) - (equal? mouse-clicked-y new-mouse-clicked-y)) - (set! mouse-clicked-x new-mouse-clicked-x) - (set! mouse-clicked-y new-mouse-clicked-y) - (set! this-score-needs-update? #t) - (refresh)) - - (unless (and (equal? bx mouse-current-x) - (equal? by mouse-current-y)) - (set! mouse-current-x bx) - (set! mouse-current-y by) - (set! this-score-needs-update? #t) - (refresh)) - - (when this-score-needs-update? - (update-this-score (if mouse-clicked-x - mouse-clicked-x - mouse-current-x) - (if mouse-clicked-y - mouse-clicked-y - mouse-current-y)))) - - (define/private (update-this-score x y) - (send this-score-message set-label - (cond - [(and x y) - (define num (length (find-same-colors board - board-width - board-height - x y))) - (if (= num 1) - "" - (format "~a" (calc-score num)))] - [else ""]))) - - (define/public-final (update-game-over) - (set! game-over? - (not - (let loop ([i board-width] - [continue? #f]) - (cond - [(zero? i) continue?] - [else - (or continue? - (loop - (sub1 i) - (let loop ([j board-height] - [continue? continue?]) - (cond - [(zero? j) continue?] - [else - (or continue? - (loop - (sub1 j) - (> (length (find-same-colors board - board-width - board-height - (sub1 i) - (sub1 j))) - 1)))]))))]))))) - - - - (super-new))) - - (define semaphore (make-semaphore 0)) - (define same-frame% - (class frame% - [define/augment on-close - (lambda () - (semaphore-post semaphore) - (inner (void) on-close))] - (super-new [style '(metal)]))) - - (define (new-game-callback redraw?) - (set! game-over? #f) - (set! board (build-board)) - (reset-score) - (send canvas invalidate-board-bitmap) - (send canvas update-game-over) - (when redraw? - (send canvas refresh))) - - (define frame (make-object same-frame% "Same")) - (define panel (make-object vertical-panel% frame)) - (define canvas (make-object same-canvas% panel)) - (define hp (new horizontal-panel% [parent panel] [stretchable-height #f])) - (new message% [label "Total Score: "] [parent hp]) - (define score-message (new message% - [label "10000 + 10000 = 20000"] ;; get a reasonable min size - [parent hp] [stretchable-width #t])) - (new message% [label "This Score: "] [parent hp]) - (define this-score-message (new message% - [label "10000"] ;; get a reasonable min size - [parent hp] - [stretchable-width #t])) - (define button (make-object button% "New Game" hp (lambda x (new-game-callback #t)))) - - (define help-button (make-object button% "Help" - hp - (let ([show-help - (show-scribbling - '(lib "games/scribblings/games.scrbl") - "same")]) - (lambda (_1 _2) - (show-help))))) - - (send canvas update-game-over) - (reset-score) - (send canvas min-width (ceiling (* board-width cell-w #e2.5))) - (send canvas min-height (ceiling (* board-height cell-h #e2.5))) - (send frame show #t) - (void (yield semaphore)))) - -; (make-same-bitmap "same.png") - diff --git a/pkgs/games/scribblings/aces.scrbl b/pkgs/games/scribblings/aces.scrbl deleted file mode 100644 index b89daee9b3..0000000000 --- a/pkgs/games/scribblings/aces.scrbl +++ /dev/null @@ -1,20 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Aces" "aces" "Solitaire Card Game"] - -Aces is a solitaire card game. The object is to remove all of the -cards from the board, except the four Aces. - -Remove a card by clicking it. You may remove a card when two -conditions are true. First, it must be at the bottom of one of the -four stacks of cards. Second, either the ace of the same suit, or a -higher card of the same suit must also be at the bottom of one of the -four stacks of cards. - -You may also move any card from the bottom of one of the stacks to an -empty stack by clicking it. If there are still cards in the deck on -the left, you may click the deck to deal four new cards, one onto the -bottom of each stack. - -Good Luck! diff --git a/pkgs/games/scribblings/blackjack.scrbl b/pkgs/games/scribblings/blackjack.scrbl deleted file mode 100644 index 4c732d943d..0000000000 --- a/pkgs/games/scribblings/blackjack.scrbl +++ /dev/null @@ -1,33 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Blackjack" "blackjack" "21 Card Game"] - -Standard Blackjack rules with the following specifics: - -@itemize[ - - @item{1 player (not counting the dealer).} - - @item{4 decks, reshuffled after 3/4 of the cards are used.} - - @item{Dealer stands on soft 17s.} - - @item{Splitting is allowed only on the first two cards, and only if - they are equal. 10 and the face cards are all considered equal - for splitting.} - - @item{Doubling is allowed on all unsplit hands, not on split hands.} - - @item{No blackjacks after splitting.} - - @item{No surrender.} - - @item{No insurance.} - - @item{No maximum under-21 hand size.} - - @item{Dealer's second card is not revealed if the player busts (or - both halves of a split hand bust).} - -] diff --git a/pkgs/games/scribblings/chat-noir.scrbl b/pkgs/games/scribblings/chat-noir.scrbl deleted file mode 100644 index 829e9546a0..0000000000 --- a/pkgs/games/scribblings/chat-noir.scrbl +++ /dev/null @@ -1,3 +0,0 @@ -#lang scribble/doc -@(require scribble/lp-include) -@(lp-include "../chat-noir/chat-noir-literate.rkt") diff --git a/pkgs/games/scribblings/checkers.scrbl b/pkgs/games/scribblings/checkers.scrbl deleted file mode 100644 index b8e9cf1fa2..0000000000 --- a/pkgs/games/scribblings/checkers.scrbl +++ /dev/null @@ -1,7 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Checkers" "checkers" "Board Game"] - -This simple checkers game (with no AI player) is intended as a -demonstration use of the @racketmodname[games/gl-board-game] library. diff --git a/pkgs/games/scribblings/common.rkt b/pkgs/games/scribblings/common.rkt deleted file mode 100644 index f461bb125e..0000000000 --- a/pkgs/games/scribblings/common.rkt +++ /dev/null @@ -1,41 +0,0 @@ -#lang racket/base - -(require scribble/manual - scribble/decode - scribble/struct - setup/collects) -(provide (all-from-out scribble/manual) - selflink - gametitle gametitle* play-margin-note - game) - -(define (selflink str) (link str (tt str))) - -(define game onscreen) - -(define (gametitle name subcol subtitle - #:style [style #f]) - (make-splice - (list - (gametitle* name subcol subtitle #:style style) - (play-margin-note name)))) - -(define (gametitle* name subcol subtitle - #:style [style #f]) - (title #:tag subcol - #:style style - (make-element - "noborder" - (list - (image (path->collects-relative - (build-path (collection-path "games" subcol) - (format "~a.png" subcol)))))) - " " (onscreen name) " --- " subtitle)) - -(define (play-margin-note name) - (margin-note "To play " - (onscreen name) - ", run the " - (exec "PLT Games") " program." - " (Under Unix, it's called " (exec "plt-games") ").")) - diff --git a/pkgs/games/scribblings/crazy8s.scrbl b/pkgs/games/scribblings/crazy8s.scrbl deleted file mode 100644 index dc3762ba5a..0000000000 --- a/pkgs/games/scribblings/crazy8s.scrbl +++ /dev/null @@ -1,28 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Crazy 8s" "crazy8s" "Card Game"] - -Try to get rid of all you cards by matching the value or suit of the -top card in the discard pile. In the default mode, click a card to -discard it; you can adjust the options so that you discard by dragging -a card from your hand to the discard pile. - -An @onscreen{8} can be discarded at any time, and in that case, the -player who discarded the @onscreen{8} gets to pick any suit for it -(hence the craziness of @onscreen{8}s). When you discard an -@onscreen{8}, a panel of buttons appears to the right of the discard -pile, so you can pick the suit. - -A player can choose to draw a card instead of discarding, as long as -cards are left in the draw pile. A player's turn continues after -drawing, so a player can continue drawing to find something to -discard. In the default mode, click the face-down draw pile in the -middle of the table; you can adjust the options to that you draw by -dragging it from the draw pile to your hand. - -If no cards are left in the deck, a player may pass instead of -discarding. To pass, click the @onscreen{Pass} button. - -The status line at the bottom of the window provides instructions as -you go. diff --git a/pkgs/games/scribblings/games.scrbl b/pkgs/games/scribblings/games.scrbl deleted file mode 100644 index 710884de44..0000000000 --- a/pkgs/games/scribblings/games.scrbl +++ /dev/null @@ -1,103 +0,0 @@ -#lang scribble/doc -@(require "common.rkt" - (for-label racket/base racket/contract - games/show-help games/show-scribbling)) - -@title{Games: Fun Examples} - -The @exec{PLT Games} executable (or @exec{plt-games} on Unix) lets -you select one of the games distributed by PLT or other games -installed as sub-collections of the @filepath{games} collection (see -@secref["new-games"]). - -@table-of-contents[] - -@; ---------------------------------------------------------------------- - -@include-section["std-games.scrbl"] - -@; ---------------------------------------------------------------------- - -@section[#:tag "new-games"]{Implementing New Games} - -The game-starting console inspects the sub-collections of the -@filepath{games} collection. If a sub-collection has an -@filepath{info.rkt} module (see @racketmodname[info]), the -following fields of the collection's @filepath{info.rkt} file are used: - -@itemize[ - - @item{@racketidfont{game} [required] : used as a module name in the - sub-collection to load for the game; the module must provide a - @racketidfont["game@"] unit (see @racketmodname[racket/unit]) with - no particular exports; the unit is invoked with no imports to - start the game.} - - @item{@racketidfont{name} [defaults to the collection name] : used to - label the game-starting button in the game console.} - - @item{@racketidfont{game-icon} [defaults to collection name with - @filepath{.png}] : used as a path to a bitmap file that is used for - the game button's label; this image should be 32 by 32 pixels and - have a mask.} - - @item{@racketidfont{game-set} [defaults to @racket["Other Games"]] : - a label used to group games that declare themselves to be in the - same set.} - -] - -To implement card games, see @racketmodname[games/cards]. Card games -typically belong in the @racket["Cards"] game set. - - -@; ---------------------------------------------------------------------- - -@section{Showing Scribbled Help} - -@defmodule[games/show-scribbling] - -@defproc[(show-scribbling [mod-path module-path?] - [section-tag string?]) - (-> void?)]{ - -Returns a thunk for opening a Scribbled section in the user's HTML -browser. The @racket[mod-path] is the document's main source module, -and @racket[section-tag] specifies the section in the document.} - -@; ---------------------------------------------------------------------- - -@section{Showing Text Help} - -@defmodule[games/show-help] - -@defproc[(show-help [coll-path (listof string?)] - [frame-title string?] - [verbatim? any/c #f]) - (-> any)]{ - -Returns a thunk for showing a help window based on plain -text. Multiple invocations of the thunk bring the same window to the -foreground (until the user closes the window). - -The help window displays @filepath{doc.txt} from the collection -specified by @racket[coll-path]. - -The @racket[frame-title] argument is used for the help window title. - -If @racket[verbatim?] is true, then @filepath{doc.txt} is displayed -verbatim, otherwise it is formatted as follows: - -@itemize[ - - @item{Any line of the form @litchar{**}....@litchar{**} is omitted.} - - @item{Any line that starts with @litchar{*} after whitespace is indented - as a bullet point.} - - @item{Any line that contains only @litchar{-}s and is as long as the previous - line causes the previous line to be formatted as a title.} - - @item{Other lines are paragraph-flowed to fit the window.} - -]} diff --git a/pkgs/games/scribblings/gcalc.scrbl b/pkgs/games/scribblings/gcalc.scrbl deleted file mode 100644 index 232e1ad59a..0000000000 --- a/pkgs/games/scribblings/gcalc.scrbl +++ /dev/null @@ -1,88 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["GCalc" "gcalc" "Visual λ-Calculus"] - -@onscreen{GCalc} is a system for visually demonstrating the -λ-Calculus (not really a game). - -See the following for the principles: - -@centerline{@selflink{http://www.grame.fr/Research/GCalcul/Graphic_Calculus.html}} -@centerline{@selflink{ftp://ftp.grame.fr/pub/Documents/ICMC94LambdaCalc.pdf}} - - -@section{The Window Layout} - -The window is divided into three working areas, each made of cells. -Cells hold cube objects, which can be dragged between cells (with a -few exceptions that are listed below). The working areas are as -follows: - -@itemize[ - -@item{The right side is the storage area. This is used for saving - objects -- drag any cube to/from here. Note that cubes can be - named for convenience.} - -@item{The left side is a panel of basic color cubes. These cells - always contain a set of basic cubes that are used as the primitive - building blocks all other values are made of. They cannot be - overwritten. (Note that this includes a transparent cell.)} - -@item{The center part is the working panel. This is the main panel where - new cubes are constructed. The center cell is similar to a storage - cell, and the surrounding eight cells all perform some operation on - this cell.} - -] - -@section{User Interaction} - -Right-click any cell except for the basic colors on the left panel, or -hit escape or F10 for a menu of operations. The menu also includes -the keyboard shortcuts for these operations. - - -@section{Cube operations} - -There are six simple operations that are considered part of the simple -graphic cube world. The operations correspond to six of the operation -cells: a left-right composition is built using the left and the right -cells, a top-bottom using the top and the bottom, and a front-back -using the top-left and bottom-right. Dragging a cube to one of these -cells will use the corresponding operator to combine it with the main -cell's cube. Using a right mouse click on one of these cells can be -used to cancel dragging an object to that cell, this is not really an -undo feature: a right-click on the right cell always splits the main -cube to two halves and throws the right side. - -The colored cubes and the six basic operators make this simple domain, -which is extended to form a λ-Calculus-like language by adding -abstractions and applications. Right-clicking on a basic cube on the -left panel creates an abstraction which is actually a lambda -expression except that colors are used instead of syntactic variables. -For example, if the main cell contains @onscreen{R|G} (red-green on -the left and right), then right-clicking the green cube on the left -panel leaves us with @onscreen{λ G . R|G}, which is visualized -as @onscreen{R|G} with a green circle. The last two operator cells -are used for application of these abstractions: drag a function to the -top-right to have it applied on the main cube, or to the bottom-left -to have the main cube applied to it. As in the λ-Calculus, -all abstractions have exactly one variable, use currying for multiple -variables. - -So far the result is a domain of colored cubes that can be used in the -same way as the simple λ-Calculus. There is one last -extension that goes one step further: function cubes can themselves be -combined with other functions using the simple operations. This -results in a form of "spatial functions" that behave differently in -different parts of the cube according to the construction. For -example, a left-right construction of two functions @onscreen{f|g} -operates on a given cube by applying @onscreen{f} on its left part and -@onscreen{g} on its right part. You can use the preferences dialog to -change a few aspects of the computation. - -Use the @onscreen{Open Example} menu entry to open a sample file that -contains lots of useful objects: Church numerals, booleans, lists, -Y-combinator, etc. diff --git a/pkgs/games/scribblings/ginrummy.scrbl b/pkgs/games/scribblings/ginrummy.scrbl deleted file mode 100644 index a25ea70a20..0000000000 --- a/pkgs/games/scribblings/ginrummy.scrbl +++ /dev/null @@ -1,22 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Rummy" "ginrummy" "Card Game"] - -This is a simple variant of Rummy. - -Put all cards in your hand into straights (3 or more cards in the same -suit) and 3- or 4-of-a-kind sets to win. Each card counts for only -one set. Aces can be used in both A-2-3 sequences and Q-K-A -sequences. - -When all of your cards fit into sets (the game detects this -automatically), you win. - -On each turn, you can either draw from the deck or from the top of the -discard pile (drag from either to your hand), then you must discard -one of your own cards (by dragging from your hand to the discard -pile). - -The status line at the bottom of the window provides instructions as -you go. The computer player is fairly smart. diff --git a/pkgs/games/scribblings/gobblet.scrbl b/pkgs/games/scribblings/gobblet.scrbl deleted file mode 100644 index ba9deaf92a..0000000000 --- a/pkgs/games/scribblings/gobblet.scrbl +++ /dev/null @@ -1,121 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Gobblet" "gobblet" "Strategy Game"] - -@bold{Gobblet!} is a board game from Blue Orange Games: - -@centerline{@selflink{http://www.blueorangegames.com/}} - -Our 3x3 version actually corresponds to @bold{Gobblet! Jr.}, while -the 4x4 version matches @onscreen{Gobblet!}. - -The Blue Orange web site provides rules for @bold{Gobblet! Jr.} and -@bold{Gobblet!}. The rules below are in our own words; see also the -Blue Orange version. - -@section{Game Rules} - -The 3x3 game is a generalization of tic-tac-toe: - -@itemize[ - - @item{The object of the game is to get three in a row of your color, - vertically, horizontally, or diagonally. Size doesn't matter for - determining a winner.} - - @item{Each player (red or yellow) starts with 6 pieces: two large, - two medium, and two small.} - - @item{On each turn, a player can either place a new piece on the - board, or move a piece already on the board---from anywhere to - anywhere, as long as the ``from'' and ``to'' are different.} - - @item{A piece can be placed (or moved to) an empty space, or it can - be placed/moved on top of a smaller piece already on the board, - ``gobbling'' the smaller piece. The smaller piece does not have to - be an opponent's piece, and the smaller piece may itself have - gobbled another piece previously.} - - @item{Only visible pieces can be moved, and only visible pieces count - toward winning. Gobbled pieces stay on the board, however, and - when a piece is moved, any piece that it gobbled stays put and - becomes visible.} - - @item{If moving a piece exposes a winning sequence for the opponent, and - if the destination for the move does not cover up one of the other - pieces in the sequence, then the opponent wins---even if the move - makes a winning sequence for the moving player.} - - @item{Technically, if a player touches a piece, then the piece must - be moved on that turn. In other words, you're not allowed to peek - under a piece to remind yourself whether it gobbled anything. If - the piece can't be moved, the player forfeits. This particular - rule is not enforced by our version --- in part because our version - supports a rewind button, which is also not in the official game.} - -] - -The 4x4 game has a few changes: - -@itemize[ - - @item{The object of the game is to get four in a row of your color.} - - @item{Each player (red or yellow) starts with 12 pieces: three large, - three medium-large, three medium-small, and three small.} - - @item{Each player's pieces are initially arranged into three stacks - off the board, and only visible pieces can be moved onto the board. - The initial stacks prevent playing a smaller piece before a - corresponding larger piece.} - - @item{When a piece is moved from off-board onto the board, it must be - moved to either (1) an empty space, or (2) a space to gobble an - opponent's piece that is part of three in a row (for the opponent). - In other words, a new piece can gobble only an opponent's piece, - and only to prevent an immediate win on the opponent's next turn. - These restrictions do not apply when a piece that is already on the - board is moved.} - -] - -@section{Controls} - -Click and drag pieces in the obvious way to take a turn. The shadow -under a piece shows where it will land when you drop it. - -Use the arrow keys on your keyboard to rotate the board. Use the -@onscreen{-} and @onscreen{=} keys to zoom in and out. Use -@onscreen{_} and @onscreen{+} to make the game smaller and larger. -(Changing the size adjusts perspective in a slightly different way -than zooming.) Depending on how keyboard focus works on your machine, -you may have to click the board area to make these controls work. - -The button labeled @onscreen{<} at the bottom of the window rewinds -the game by one turn. The button labeled @onscreen{>} re-plays one -turn in a rewound game. An alternate move can be made at any point in -a rewound game, replacing the old game from that point on. - -@section{Auto-Play} - -Turn on a computer player at any time by checking the -@onscreen{Auto-Play Red} or @onscreen{Auto-Play Yellow} checkbox. If -you rewind the game, you can choose an alternate move for yourself or -for the auto-player to find out what would have happened. The -auto-player is not always deterministic, so replying the same move -might lead to a different result. You can disable an auto-player at -any point by unchecking the corresponding -@onscreen{Auto-Play"}checkbox. - -Important: In the 3x3 game, you @emph{cannot} win as yellow against -the smart auto-player (if the auto-player is allowed to play red from -the start of the game). In other words, red has a forced win in the -3x3 game, and the smart auto-player knows the path to victory. You -might have a chance to beat the red player in the default mode, -though, which is represented by the @onscreen{Ok} choice (instead of -@onscreen{Smart}) in the @onscreen{Auto-Play Options} dialog. - -Configure the auto-player by clicking the @onscreen{Auto-Play Options} -button. Currently, there's no difference between @onscreen{Smart} and -@onscreen{Ok} in the 4x4 game. diff --git a/pkgs/games/scribblings/gofish.scrbl b/pkgs/games/scribblings/gofish.scrbl deleted file mode 100644 index 030bd6fec6..0000000000 --- a/pkgs/games/scribblings/gofish.scrbl +++ /dev/null @@ -1,36 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Go Fish" "gofish" "Kid's Card Game"] - -@game{Go Fish} is the children's card game where you try to get rid of -all you cards by forming pairs. You play against two computer -players. - -On each turn, if you have a match in your hand, drag one of the -matching cards to your numbered box, and the match will move into the -box. - -After forming matches from your own hand, drag one of your cards to an -opponent's area to ask the opponent for a matching card: - -@itemize[ - - @item{If the opponent has a card with the same value as the card that you - drag, the opponent will give you the card, and they'll go into your - match area. Drag another card to an opponent.} - - @item{If the opponent has no matching card, the top card on draw pile - will move, indicating that you must ``Go Fish!'' Draw a card by - dragging it from the draw pile to your hand. If the drawn card - gives you a match, then the match will automatically move into your - match area, and it's still your turn (so drag another card to one - of the opponents).} - -] - -The game is over when one player runs out of cards. The winner is the -one with the most matches. - -The status line at the bottom of the window provides instructions as -you go. The computer players are not particularly smart. diff --git a/pkgs/games/scribblings/jewel.scrbl b/pkgs/games/scribblings/jewel.scrbl deleted file mode 100644 index 4941155ee3..0000000000 --- a/pkgs/games/scribblings/jewel.scrbl +++ /dev/null @@ -1,38 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Jewel" "jewel" "3-D Skill Game"] - -@author["Peter Ivanyi"] - -The board is an 8 by 8 array of jewels of 7 types. You need to get 3 -or more in a row horizontally or vertically in order to score points. -You can swap any two jewels that are next to each other up and down or -left and right. The mechanic is to either: - -@itemize[ - - @item{Click the mouse on the first one, then drag in the direction for - the swap.} - - @item{Move a bubble using the arrow keys, lock the bubble to a jewel with - the space bar, and the swap the locked jewel with another by using - the arrow keys. Space unlocks a locked bubble without swapping.} - -] - -Jewels can only be swapped if after the swap there are at least 3 or -more same shape or color in a row or column. Otherwise the jewels -return to their original position. There is a clock shown on the -left. When it counts down to 0 the game is over. Getting 3 in a row -adds time to the clock. - -Hit spacebar to start a new game then select the difficulty number by -pressing @onscreen{0}, @onscreen{1}, @onscreen{2}, @onscreen{3}, or -@onscreen{0}. You can always press ESC to exit. During playing press -@onscreen{P} to pause the game. - -The code is released under the LGPL. The code is a conversion of Dave -Ashley's C program to Racket with some modifications and enhancements. - -Enjoy. diff --git a/pkgs/games/scribblings/lights-out.scrbl b/pkgs/games/scribblings/lights-out.scrbl deleted file mode 100644 index 1372b5c18b..0000000000 --- a/pkgs/games/scribblings/lights-out.scrbl +++ /dev/null @@ -1,10 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Lights Out" "lights-out" "Logic Game"] - -The object of this game is to turn all of the lights off. Click on a -button to turn that light off, but beware it will also toggle the -lights above, below to the left and to the right of that button. - -Good luck. diff --git a/pkgs/games/scribblings/memory.scrbl b/pkgs/games/scribblings/memory.scrbl deleted file mode 100644 index 0f12a48fa9..0000000000 --- a/pkgs/games/scribblings/memory.scrbl +++ /dev/null @@ -1,9 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Memory" "memory" "Kid's Game"] - -Flip two cards in a row that have the same picture, and the cards are -removed. If the two cards don't match, they are flipped back over, and -you try again. Each card has a single match on the board. The game is -over and the clock stops when all cards are removed. diff --git a/pkgs/games/scribblings/mines.scrbl b/pkgs/games/scribblings/mines.scrbl deleted file mode 100644 index 74389dd370..0000000000 --- a/pkgs/games/scribblings/mines.scrbl +++ /dev/null @@ -1,17 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Minesweeper" "mines" "Logic Game"] - -Remove all the tiles that have no bomb underneath. When you remove -such a tile, a number appears that indicates how many of the -surrounding squares (up to 8) have a bomb; a blank means zero bombs, -and the game automatically uncovers all surrounding tiles in that -case. - -Right- or Control-click to flag a tile that you think has a bomb, so -that you cannot accidentally uncover it. Right- or Control-click again -to remove the flag. - -You don't have to use flags. When all of the non-bomb tiles are -removed, the game is over, and the clock stops. diff --git a/pkgs/games/scribblings/paint-by-numbers.scrbl b/pkgs/games/scribblings/paint-by-numbers.scrbl deleted file mode 100644 index a1266b4289..0000000000 --- a/pkgs/games/scribblings/paint-by-numbers.scrbl +++ /dev/null @@ -1,102 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Paint By Numbers" "paint-by-numbers" "Logic Game"] - -The object of @game{Paint By Numbers} is to discover which cells -should be colored blue and which should be colored white. Initially, -all squares are grey, indicating that the correct colors are not -known. The lists of numbers to the left and above the grid are your -clues to the correct color of each square. Each list of numbers -specifies the pattern of blue squares in the row beside it or the -column below it. Each number indicates the length of a group of blue -squares. For example, if the list of numbers beside the first row is -@onscreen{2 3} then you know that there is a contiguous block of two -blue squares followed by a contiguous block of three blue squares with -at least one white square between them. The label does not tell you -where the blue squares are, only their shapes. The trick is to gather -as much information as you can about each row, and then use that -information to determine more about each column. Eventually you -should be able to fill in the entire puzzle. - -Click on a square to toggle it between blue and gray. Hold down a -modifier key (shift, command, meta, or alt depending on the platform) -to toggle a square between white and gray. The third button under -unix and the right button under windows also toggles between white and -gray. - -For some puzzles, hints are available. Choose the @menuitem["Nongram" -"Show Mistakes"] menu item to receive the hints. This will turn all -incorrectly colored squares red. - -Thanks to Shoichiro Hattori for his puzzles! Visit him on the web at: - -@centerline{@selflink["http://hattori.m78.com/puzzle/"]} - -Thanks also to many of the contributors to the Kajitani web site for -permission to re-distribute their puzzles. Visit them online at: - -@centerline{@selflink[;"http://www02.so-net.ne.jp/~kajitani/index.html" - "http://nonogram.freehostia.com/pbn/index.html"]} - -The specific contributors who have permitted their puzzles to be -redistributed are: - -@verbatim[#:indent 2]{ - snordmey /at/ dayton net - jtraub /at/ dragoncat net - e0gb258s /at/ mail erin utoronto ca - mattingly /at/ bigfoot com - jennifer forman /at/ umb edu - karen hoover /at/ bigfoot com - sssstree /at/ ix netcom com - we_bakers_3 /at/ earthlink net - bbart /at/ cs sfu ca - jonesjk /at/ thegrid net - rrichard /at/ lexitech ca - helena montauban /at/ auroraenergy com au - barblane /at/ ionsys com - m5rammy /at/ maale5 com - nmbauer /at/ sprynet com - ncfrench /at/ aol com - km29 /at/ drexel edu - jjl /at/ stanford edu - disneyfan13 /at/ hotmail com - richard /at/ condor-post com - lady_tabitha /at/ yahoo com - vaa /at/ psulias psu edu - kimbhall /at/ yahoo com - kcottam /at/ cusa com - karganov /at/ hotmail com - jdmaynard /at/ excite com - mnemoy /at/ gameworks com - arrelless /at/ jayco net - azisi /at/ skiathos physics auth gr - whoaleo /at/ hotmail com - tucker1999 /at/ earthlink net - bergles /at/ yahoo com - elisabeth springfelter /at/ lanab amv se - ewhaynes /at/ mit edu - mjcarroll /at/ ccnmail com - dahu /at/ netcourrier com - joy /at/ dcs gla ac uk - piobst /at/ wam umd edu - dani681 /at/ aol com - Talzhemir net> - hkittredge /at/ hotmail com - allraft /at/ sccoast net - karlvonl /at/ geocities com - ailsa /at/ worldonline nl - Carey Willis com> - citragreen /at/ hotmail com - dhalayko /at/ cgocable net - jontive1 /at/ elp rr com - hublan /at/ rocketmail com - barbridgway /at/ compuserve com - mijoy /at/ mailcity com - joostdh /at/ sci kun nl - gossamer_kwaj /at/ hotmail com - williamson /at/ proaxis com - vacko_6 /at/ hotmail com - jojess /at/ earthlink net -} diff --git a/pkgs/games/scribblings/parcheesi.scrbl b/pkgs/games/scribblings/parcheesi.scrbl deleted file mode 100644 index 6e95541048..0000000000 --- a/pkgs/games/scribblings/parcheesi.scrbl +++ /dev/null @@ -1,60 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Parcheesi" "parcheesi" "Board Game"] - -@onscreen{Parcheesi} is a race game for four players. The goal is for -each player to move their pieces from the starting position (the -circles in the corners) to the home square (in the center of the -board), passing a nearly complete loop around the board in the -counter-clockwise direction and then heads up towards the main row. -For example, the green player enters from the bottom right, travels -around the board on the light blue squares, passing each of the -corners, until it reaches the middle of the bottom of the board, where -it turns off the light blue squares and heads into the central region. - -On each turn, the player rolls two dice and advances the pawn, based -on the die rolls. Typically the players may move a pawn for each die. -The pawn moves by the number of pips showing on the die and all of the -dice must be used to complete a turn. - -There are some exceptions, however: - -@itemize[ - - @item{You must roll a 5 (either directly or via summing) to enter from - the start area to the main ring.} - - @item{If two pieces of the same color occupy a square, no pieces may - pass that square.} - - @item{If an opponent's piece lands on your piece, you piece is - returned to the starting area and the opponent receives a bonus of - 20 (which is treated just as if they had rolled a 20 on the - dice).} - - @item{If your piece makes it home (and it must do so by exact count) you - get a bonus of 10, to be used as an additional die roll.} - -] - -These rules induce a number of unexpected corner cases, but the GUI -only lets you make legal moves. Watch the space along the bottom of -the board for reasons why a move is illegal or why you have not used -all of your die rolls. - -The automated players are: - -@itemize[ - - @item{@onscreen{Reckless Renee}, who tries to maximize the chances - that someone else bops her.} - - @item{@onscreen{Polite Polly}, who tries to minimize the distance her - pawns move. (``No, after @emph{you}. I insist.'')} - - @item{@onscreen{Amazing Grace}, who tries to minimize the chance she - gets bopped while moving as far as possible.} - -] - diff --git a/pkgs/games/scribblings/pousse.scrbl b/pkgs/games/scribblings/pousse.scrbl deleted file mode 100644 index 24a9b209ef..0000000000 --- a/pkgs/games/scribblings/pousse.scrbl +++ /dev/null @@ -1,62 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Pousse" "pousse" "Tic-Tac-Toe-like Game"] - -@onscreen{Pousse} (French for ``push,'' pronounced ``poo-ss'') is a 2 -person game, played on an @math{N} by @math{N} board (usually 4 by 4). -Initially the board is empty, and the players take turns inserting one -marker of their color (@onscreen{X} or @onscreen{O}) on the board. -The color @onscreen{X} always goes first. The columns and rows are -numbered from 1 to @math{N}, starting from the top left, as in: - -@verbatim[#:indent 3]{ - 1 2 3 4 - +-+-+-+-+ - 1 | | | | | - +-+-+-+-+ - 2 | | | | | - +-+-+-+-+ - 3 | | | | | - +-+-+-+-+ - 4 | | | | | - +-+-+-+-+ -} - -A marker can only be inserted on the board by sliding it onto a -particular row from the left or from the right, or onto a particular -column from the top or from the bottom. So there are @math{4*N} -possible ``moves'' (ways to insert a marker). They are named -L@math{i}, R@math{i}, T@math{i}, and B@math{i} respectively, where -@math{i} is the number of the row or column where the insertion takes -place. - -When a marker is inserted, there may be a marker on the square where -the insertion takes place. In this case, all markers on the insertion -row or column from the insertion square up to the first empty square -are moved one square further to make room for the inserted marker. -Note that the last marker of the row or column will be pushed off the -board (and must be removed from play) if there are no empty squares on -the insertion row or column. - -A row or a column is a @defterm{straight} of a given color if it -contains @math{N} markers of the given color. - -The game ends either when an insertion - -@itemize[ - -@item{repeats a previous configuration of the board; in this case the - player who inserted the marker LOSES.} - -@item{creates a configuration with more straights of one color than - straights of the other color; the player whose color is dominant - (in number of straights) WINS.} - -] - -A game always leads to a win by one of the two players. Draws are -impossible. - -This game is from the 1998 ICFP programming contest. - diff --git a/pkgs/games/scribblings/same.scrbl b/pkgs/games/scribblings/same.scrbl deleted file mode 100644 index 6ddbad89e6..0000000000 --- a/pkgs/games/scribblings/same.scrbl +++ /dev/null @@ -1,127 +0,0 @@ -#lang scribble/doc -@(require "common.rkt" racket/class racket/draw (only-in pict dc) - "../same/same-lib.rkt") - -@(define board-width 6) -@(define board-height 6) -@(define scale-factor 24) -@(define (render-board board) - (define w (ceiling (* board-width scale-factor))) - (define h (ceiling (* board-height scale-factor))) - (dc - (λ (dc dx dy) - (define-values (ox oy) (send dc get-origin)) - (define pen (send dc get-pen)) - (define brush (send dc get-brush)) - (define-values (scale-x scale-y) (send dc get-scale)) - (send dc set-origin (+ ox dx) (+ oy dy)) - (draw-board dc board-width board-height board w h - #f #f #f #f) - (send dc set-origin ox oy) - (send dc set-pen pen) - (send dc set-brush brush) - (send dc set-scale scale-x scale-y)) - w h)) - -@(define (copy-board board) - (let loop ([board board]) - (cond - [(vector? board) - (list->vector (map loop (vector->list board)))] - [else board]))) - - - -@gametitle["Same" "same" "Dot-Removing Game"] - -The object of @game{Same} is to score points by removing blobs from the -board. - -@section{The Rules} - -To remove a blob, click on it. As long the blob is not just -a simple circle, it will disappear. After the blob disappears, -the remaining pieces of the board shift around, breaking up blobs into -new blobs as pieces of the old blobs fall down to fill in the empty space. -If an entire column is wiped out, all of the blobs from the -right will slide left to take up the empty column's space. - -As an example, imagine a board looked like this: -@(define board1 - (build-vector - board-width - (lambda (i) - (build-vector - board-height - (lambda (j) - (vector - (cond - [(and (= i 4) (member j '(3 4 5))) - 3] - [(and (= i 4) (member j '(1 2))) - 4] - [(and (member i '(3 5)) (= j 5)) - 2] - [else - (modulo (+ i j) 2)]) - #f)))))) - -@(render-board board1) - -There are two places where we can click, on the green blob or on the purple one. -Clicking on the green one results in this board: - -@(define board2 - (let ([b (copy-board board1)]) - (make-a-move 4 3 b board-width board-height) - b)) - -@(render-board board2) - -Notice the new horizontal blue blob that has appeared. That appears because -the blue ball falls down into the vacated space and joins into the two adjacent -blue balls. - -Next, if we ignore that new blue blob and click the purple one, we get this board: - -@(define board3 - (let ([b (copy-board board2)]) - (make-a-move 4 5 b board-width board-height) - b)) - -@(render-board board3) - -The blue circle has continued falling, which breaks up our blue blob and no new -one appears because the blue circle is now next to brown circles. - -If, however, we had clicked on blue blob before clicking on the purple one, we would get this board: - -@(define board4 - (let ([b (copy-board board2)]) - (make-a-move 4 3 b board-width board-height) - b)) - -@(render-board board4) - -and then clicking the purple one would produce this board: - -@(define board5 - (let ([b (copy-board board4)]) - (make-a-move 4 5 b board-width board-height) - b)) -@(render-board board5) - -Note that the purple blob was the only blob in its column, so clicking on it shifts -all of the columns to the right over to eliminate the empty space. - -@section{Scoring} -Your score increases for each ball removed from the board, in two ways. -First, when you remove a blob, you get as many points as the square of the number -of cells the blob occupied, so removing bigger blobs is better. Second, if there -are fewer than 50 cells occupied on the board, you get a bonus. -Specifically if you have 49 cells left, you -get a 100 point bonus, 48 cells left yields a 200 point bonus, -47 cells a 200 point bonus etc., and if there -are no cells left, you get a 5000 point bonus. - -Click the @onscreen{New Game} button to play again. diff --git a/pkgs/games/scribblings/slidey.scrbl b/pkgs/games/scribblings/slidey.scrbl deleted file mode 100644 index e5dc527897..0000000000 --- a/pkgs/games/scribblings/slidey.scrbl +++ /dev/null @@ -1,7 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Slidey" "slidey" "Picture Puzzle"] - -Click a tile to slide it into the adjacent space, and keep shifting -tiles that way to repair the picture. diff --git a/pkgs/games/scribblings/spider.scrbl b/pkgs/games/scribblings/spider.scrbl deleted file mode 100644 index 956c854bee..0000000000 --- a/pkgs/games/scribblings/spider.scrbl +++ /dev/null @@ -1,62 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@gametitle["Spider" "spider" "Solitaire Card Game"] - -Spider is a solitaire card game played with 104 cards. The cards can -include either a single suit, two suits, or four suites. (Choose your -variant through the @onscreen{Options} item in the @onscreen{Edit} -menu.) - -Terminology: - -@itemize[ - - @item{@deftech{Tableau}: one of the ten stacks of cards in the play - area. The game starts with six cards in the first four - @tech{tableau}s, and five cards in the rest; only the topmost card - is face up, and others are revealed when they become the topmost - card of the @tech{tableau}.} - - @item{@deftech{Sequence}: a group of cards on the top of a - @tech{tableau} that are in the same suit, and that are in - @tech{sequence}, with the lowest numbered card topmost (i.e., - closer to the bottom of the screen). King is high and ace is low.} - -] - -The object of the game is to create a @tech{sequence} with ace through -king, at which point the @tech{sequence} is removed from play. Create -eight such @tech{sequence}s to win the game. - -On each move, you can take one of the following actions: - -@itemize[ - - @item{Move a @tech{sequence} from any @tech{tableau} to one whose - topmost card (i.e., closest to the bottom of the screen) has a - value that's one more than the @tech{sequence}'s value. Note that - if the top card of the target @tech{tableau} has the same suit as - the @tech{sequence}, a larger @tech{sequence} is formed, but the - target @tech{tableau}'s card is not required to have the same suit.} - - @item{Move a @tech{sequence} to an empty @tech{tableau}.} - - @item{Deal ten cards from the deck (in the upper left corder), one to - each @tech{tableau}. This move is allowed only if no - @tech{tableau} is empty.} - -] - -To move a @tech{sequence}, either drag it to the target -@tech{tableau}, or click the @tech{sequence} and then click the top -card of the target @tech{tableau} (or the place where a single card -would be for an empty @tech{tableau}). Click a select card to -de-select it. Clicking a card that is not a valid target for the -currently selected @tech{sequence} causes the clicked card's -@tech{sequence} to be selected (if the card is face up in a -@tech{sequence}). - -To deal, click the deck. - -To undo a move, use @onscreen{Undo} from the @onscreen{Edit} menu. diff --git a/pkgs/games/scribblings/std-games.scrbl b/pkgs/games/scribblings/std-games.scrbl deleted file mode 100644 index 59f052c3be..0000000000 --- a/pkgs/games/scribblings/std-games.scrbl +++ /dev/null @@ -1,27 +0,0 @@ -#lang scribble/doc -@(require "common.rkt") - -@title[#:style 'toc #:tag "bundled"]{Bundled Games} - -@local-table-of-contents[] - -@include-section["aces.scrbl"] -@include-section["gofish.scrbl"] -@include-section["crazy8s.scrbl"] -@include-section["blackjack.scrbl"] -@include-section["ginrummy.scrbl"] -@include-section["spider.scrbl"] -@include-section["memory.scrbl"] -@include-section["slidey.scrbl"] -@include-section["same.scrbl"] -@include-section["mines.scrbl"] -@include-section["paint-by-numbers.scrbl"] -@include-section["lights-out.scrbl"] -@include-section["pousse.scrbl"] -@include-section["gobblet.scrbl"] -@include-section["jewel.scrbl"] -@include-section["parcheesi.scrbl"] -@include-section["checkers.scrbl"] -@include-section["chat-noir.scrbl"] -@include-section["tally-maze.scrbl"] -@include-section["gcalc.scrbl"] diff --git a/pkgs/games/scribblings/tally-maze.scrbl b/pkgs/games/scribblings/tally-maze.scrbl deleted file mode 100644 index 79a155ae1a..0000000000 --- a/pkgs/games/scribblings/tally-maze.scrbl +++ /dev/null @@ -1,50 +0,0 @@ -#lang scribble/doc -@(require "common.rkt" racket/class racket/draw (only-in pict dc)) - -@(define (add-commas n) - (define s (number->string n)) - (apply string-append - (reverse - (let loop ([digits (reverse (string->list s))]) - (cond - [(null? digits) '()] - [(<= (length digits) 3) (list (apply string (reverse digits)))] - [else (list* (format ",~a~a~a" - (list-ref digits 2) - (list-ref digits 1) - (list-ref digits 0)) - (loop (cdddr digits)))]))))) - -@gametitle["Tally Maze" "tally-maze" "Maze Enumeration Game"] - -The object of @game{Tally Maze} is to help the blue ball -reach the exit of the maze without being caught by the pumpkins. - -Control the blue ball with the keyboard: -@itemlist[@item{the arrow keys move one step in each direction;} - @item{space and @litchar{.} let the pumpkins move without moving the blue ball;} - @item{@litchar{z} undoes the most recent move; and} - @item{@litchar{n} changes the maze.}] - -As you can quickly discover, simply moving around in the maze -is a recipe for failure. The pumpkins know the best route -in the maze to reach your blue ball and they take it. - -The @litchar{n} key, however, adjusts the maze. More precisely, -it moves forward to the next maze in an enumeration of all -@(add-commas 254377512893447941210664002794210519990861507330048) -of the mazes that the game -supports. Each maze is only a little bit different from -the one before, so you have to plan ahead in order to understand -how the current maze differs from the next one. (Use the -undo key to help you plan.) - -Beware, however, that planning ahead one maze is not enough; -although one pumpkin just chases you in the current maze, -the other pumpkin tries to track where you might go if -you advance to the next maze and to wait for you there. -Not all games are winnable (although I hope most are). - -Thanks to Lazy Crazy (@url{http://lazycrazy.deviantart.com}) for -the blue ball icons and to YOOtheme (@url{http://www.yootheme.com/icons}) -for the pumpkin icon. diff --git a/pkgs/games/show-help.rkt b/pkgs/games/show-help.rkt deleted file mode 100644 index 5d1cbec7e8..0000000000 --- a/pkgs/games/show-help.rkt +++ /dev/null @@ -1,72 +0,0 @@ -#lang racket -(require racket/gui) - -(provide show-help) - -(define show-help - (lambda (collections frame-title [verbatim? #f]) - (let* ([f #f] - [f% - (class frame% - (define/augment (on-close) - (set! f #f)) - (super-instantiate () (label frame-title)))]) - (lambda () - (if f - (send f show #t) - (let* ([frame (make-object f%)] - [t (make-object text%)] - [c (new editor-canvas% [parent frame] [editor t] [style '(auto-hscroll)])]) - (send c min-width 500) - (send c min-height 300) - (send t auto-wrap (not verbatim?)) - (call-with-input-file (build-path - (apply collection-path collections) - "doc.txt") - (lambda (p) - (let loop () - (let ([l (read-line p)]) - (unless (eof-object? l) - (cond - [verbatim? - (send t insert l) - (send t insert #\newline)] - [(regexp-match #rx"^[*][*].*[*][*]$" l) - ;; Skip - (void)] - [(string=? l "") - (unless (zero? (send t last-position)) - (send t insert #\newline) - (send t insert #\newline))] - [(and (regexp-match #rx"^-+$" l) - (= (string-length l) - (- (send t last-position) - (send t paragraph-start-position (send t last-paragraph)) - 1))) - ;; Change previous line style to title - (let ([end (send t last-position)]) - (send t change-style - (send (make-object style-delta% 'change-weight 'bold) - set-delta-foreground - "blue") - (- end 1 (string-length l)) (- end 1)))] - [else - (let ([l (regexp-replace #rx" +$" - (regexp-replace #rx"^ +" l "") - "")]) - (send t insert l) - (when (regexp-match #rx"^[*]" l) - (send t set-paragraph-margins - (send t position-paragraph (send t last-position)) - 16 32 0)) - (send t insert #\space))]) - (loop))))) - #:mode 'text) - (when verbatim? - (send t change-style - (make-object style-delta% 'change-family 'modern) - 0 (send t last-position))) - (send t lock #t) - (send t set-position 0 0) - (send frame show #t) - (set! f frame))))))) diff --git a/pkgs/games/show-scribbling.rkt b/pkgs/games/show-scribbling.rkt deleted file mode 100644 index 762c3967be..0000000000 --- a/pkgs/games/show-scribbling.rkt +++ /dev/null @@ -1,21 +0,0 @@ -#lang racket/base - -(require setup/xref - scribble/xref - scribble/tag - net/url - net/sendurl) - -(provide show-scribbling) - -(define (show-scribbling mod-path tag) - (define xref (load-collections-xref)) - (λ () - (define-values (path anchor) - (xref-tag->path+anchor - xref - (make-section-tag tag #:doc mod-path))) - (if path - (let ([u (path->url path)]) - (send-url (url->string u))) - (error 'show-scribbling "cannot find docs for: ~.s ~.s" mod-path tag)))) diff --git a/pkgs/games/slidey/11.jpg b/pkgs/games/slidey/11.jpg deleted file mode 100644 index 4e764c5d2c8c1848367d5cf3980602f5259b7c6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22128 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 diff --git a/pkgs/games/slidey/info.rkt b/pkgs/games/slidey/info.rkt deleted file mode 100644 index 742deeff59..0000000000 --- a/pkgs/games/slidey/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game-set "Puzzle Games") -(define game "slidey-main.rkt") diff --git a/pkgs/games/slidey/slidey-main.rkt b/pkgs/games/slidey/slidey-main.rkt deleted file mode 100644 index 96fd04de49..0000000000 --- a/pkgs/games/slidey/slidey-main.rkt +++ /dev/null @@ -1,6 +0,0 @@ -#lang racket -(require "slidey.rkt") - -(provide game@) - -(define game@ (unit (import) (export) (start-game))) diff --git a/pkgs/games/slidey/slidey.png b/pkgs/games/slidey/slidey.png deleted file mode 100644 index c04c2fe2ff622be093731ff598176f8a6aed7c8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 507 zcmVrDK;K0B*tsa*5oaQpf>VSSyi%UZ7*9R_YB} zy$+_S^T&25_$LcRkN10@<@h;PB0@-w2juKw2PM40Cjb+e!2+J((c>1YGLgB6h~OL| zG8f5gReAwOk;L$O0s0{kISv8jB2k~;3qT|i$=!h5>GuNk$ZddQbMF5JMCMwVfMl3| zNJ7#DWas#YBxEhX+~!YHfHZByji3#nx40;gu$?>tU=PYNh-0OcisMGy2x9l{Yrrnd z>~}SwbYyKdf4}ZvMiDNz3v4p_}xVTW$ommP)fP?4}fwCa2N?qv_OzA9!55 zR8=gO{nhpS%y;krFWpIa7YR5VsH#SEwK~~Nz$@H$T6z$`E-^d#4xWAG&R1tuyVn-C xJRj8F60M8Z^#NM-)$t<0<(=%g8V5fregJo%2y_FULH+;$002ovPDHLkV1gv<)#d;I diff --git a/pkgs/games/slidey/slidey.rkt b/pkgs/games/slidey/slidey.rkt deleted file mode 100644 index 7d870034ae..0000000000 --- a/pkgs/games/slidey/slidey.rkt +++ /dev/null @@ -1,357 +0,0 @@ -#lang typed/racket -(require typed/racket/gui) -(provide start-game) - -(: get-bitmap ((Instance Bitmap%) -> (Values (U (Instance Bitmap%) #f) - (U Nonnegative-Integer #f) - (U Nonnegative-Integer #f)))) -(define (get-bitmap bitmap) - (define f (make-object dialog% "Choose Size" #f #f #f #f #f '(resize-border))) - (define bm-panel (make-object vertical-panel% f)) - (define bm-message (make-object message% bitmap bm-panel)) - (define size-message - (make-object message% (format "Image size: ~a x ~a pixels" - (send bitmap get-width) - (send bitmap get-height)) - bm-panel)) - (define wide-panel (make-object vertical-panel% f '(border))) - (: sw (Instance Slider%)) - (define sw (make-object slider% "Tiles (width)" 2 30 wide-panel - (lambda (_1 _2) (update-horizontal-cutoff)))) - (define tall-panel (make-object vertical-panel% f '(border))) - (: sh (Instance Slider%)) - (define sh (make-object slider% "Tiles (height)" 2 30 tall-panel - (lambda (_1 _2) (update-vertical-cutoff)))) - (define button-panel (make-object horizontal-panel% f)) - - (define cancelled? #t) - - (define cancel (make-object button% "Cancel" button-panel - (lambda (_1 _2) (send f show #f)))) - (define ok (make-object button% "OK" button-panel - (lambda (_1 _2) - (set! cancelled? #f) - (send f show #f)) '(border))) - - (define vertical-cutoff 0) - (define vertical-cutoff-message (make-object message% "" tall-panel)) - - (define horizontal-cutoff 0) - (define horizontal-cutoff-message (make-object message% "" wide-panel)) - - (: update-vertical-cutoff (-> Void)) - (define (update-vertical-cutoff) - (set! vertical-cutoff (modulo (send bitmap get-height) (send sh get-value))) - (send vertical-cutoff-message set-label - (if (= 0 vertical-cutoff) - "" - (format "Vertical cutoff ~a pixels" vertical-cutoff)))) - (: update-horizontal-cutoff (-> Void)) - (define (update-horizontal-cutoff) - (set! horizontal-cutoff (modulo (send bitmap get-width) (send sw get-value))) - (send horizontal-cutoff-message set-label - (if (= 0 horizontal-cutoff) - "" - (format "Horizontal cutoff ~a pixels" horizontal-cutoff)))) - - (send horizontal-cutoff-message stretchable-width #t) - (send vertical-cutoff-message stretchable-width #t) - (update-vertical-cutoff) - (update-horizontal-cutoff) - (send button-panel set-alignment 'right 'center) - (send button-panel stretchable-height #f) - (send bm-panel set-alignment 'center 'center) - (send wide-panel stretchable-height #f) - (send tall-panel stretchable-height #f) - (make-object grow-box-spacer-pane% button-panel) - (send f show #t) - - (if cancelled? - (values #f #f #f) - (let* ([nb (make-object bitmap% - (- (send bitmap get-width) horizontal-cutoff) - (- (send bitmap get-height) vertical-cutoff))] - [bdc (make-object bitmap-dc% nb)]) - (send bdc draw-bitmap-section bitmap 0 0 0 0 - (assert (- (send bitmap get-width) horizontal-cutoff) positive?) - (assert (- (send bitmap get-height) vertical-cutoff) positive?)) - (send bdc set-bitmap #f) - (values nb (send sw get-value) (send sh get-value))))) - -(define-struct: loc ([x : Integer] [y : Integer])) - -;; board = (vector-of (vector-of (union #f (make-loc n1 n2)))) -(define-type Board (Vectorof (Vectorof (U #f loc)))) - -(: board-for-each (Board (Integer Integer loc -> Void) -> Void)) -(define (board-for-each board f) - (let loop ([i (vector-length board)]) - (unless (zero? i) - (let ([row (vector-ref board (- i 1))]) - (let loop ([j (vector-length row)]) - (unless (zero? j) - (f (- i 1) (- j 1) (vector-ref row (- j 1))) - (loop (- j 1))))) - (loop (- i 1))))) - -(: move-one (Board Integer Integer Integer Integer -> Void)) -(define (move-one board from-i from-j to-i to-j) - (let ([from-save (board-ref board from-i from-j)] - [to-save (board-ref board to-i to-j)]) - (board-set! board from-i from-j to-save) - (board-set! board to-i to-j from-save))) - -(: board-set! (Board Integer Integer (U #f loc) -> Void)) -(define (board-set! board i j v) - (vector-set! (vector-ref board i) j v)) -(: board-ref (Board Integer Integer -> (U #f loc))) -(define (board-ref board i j) - (vector-ref (vector-ref board i) j)) - -(: get-board-width (Board -> Nonnegative-Integer)) -(define (get-board-width board) - (vector-length board)) -(: get-board-height (Board -> Nonnegative-Integer)) -(define (get-board-height board) - (vector-length (vector-ref board 0))) - -(: randomize-board (Board Integer Integer -> Void)) -(define (randomize-board board hole-i hole-j) - (let ([board-width (get-board-width board)] - [board-height (get-board-height board)]) - (let loop ([no-good : (U #f Real) #f] - [i (* 10 board-width board-height)] - [m-hole-i hole-i] - [m-hole-j hole-j]) - (cond - [(zero? i) ;; move hole back to last spot - (let ([i-diff (abs (- m-hole-i hole-i))]) - (let loop ([i 0]) - (unless (= i i-diff) - (move-one board (+ m-hole-i i) - m-hole-j (+ m-hole-i i (if (< m-hole-i hole-i) +1 -1)) - m-hole-j) - (loop (+ i 1))))) - (let ([j-diff (abs (- m-hole-j hole-j))]) - (let loop ([j 0]) - (unless (= j j-diff) - (move-one board hole-i (+ m-hole-j j) - hole-i (+ m-hole-j j (if (< m-hole-j hole-j) +1 -1))) - (loop (+ j 1)))))] - [else - (let ([this-dir (get-random-number 4 no-good)]) - (let-values ([(new-i new-j) - (case this-dir - ;; up - [(0) (values (- m-hole-i 1) m-hole-j)] - [(1) (values (+ m-hole-i 1) m-hole-j)] - [(2) (values m-hole-i (- m-hole-j 1))] - [(3) (values m-hole-i (+ m-hole-j 1))] - ;; NOTE: change - [else (error "better message needed")])]) - (if (and (<= 0 new-i) - (< new-i board-width) - (<= 0 new-j) - (< new-j board-height)) - (let ([next-no-good - (case this-dir [(0) 1] [(1) 0] [(2) 3] [(3) 2] - ;; NOTE: change - [else (error "better message needed")])]) - (move-one board new-i new-j m-hole-i m-hole-j) - (loop next-no-good (- i 1) new-i new-j)) - (loop no-good (- i 1) m-hole-i m-hole-j))))])))) - -(: get-random-number (Integer (U #f Real) -> Real)) -(define (get-random-number bound no-good) - (let ([raw (random (- bound 1))]) - (cond [(not no-good) raw] - [(< raw no-good) raw] - [else (+ raw 1)]))) - -(define line-brush - (assert (send the-brush-list find-or-create-brush "black" 'transparent))) -(define line-pen (assert (send the-pen-list find-or-create-pen "white" 1 'solid))) -(define mistake-brush - (assert (send the-brush-list find-or-create-brush "black" 'transparent))) -(define mistake-pen (send the-pen-list find-or-create-pen "red" 1 'solid)) -(define pict-brush (assert (send the-brush-list find-or-create-brush "black" 'solid))) -(define pict-pen (send the-pen-list find-or-create-pen "black" 1 'solid)) -(define white-brush (assert (send the-brush-list find-or-create-brush "white" 'solid))) -(define white-pen (send the-pen-list find-or-create-pen "white" 1 'solid)) - -(define-type Slidey-Canvas% - (Class #:implements/inits Canvas% - (init-field [bitmap (Instance Bitmap%)] - [board-width Nonnegative-Integer] - [board-height Nonnegative-Integer]) - [show-mistakes (Boolean -> Void)])) - -(: slidey-canvas% Slidey-Canvas%) -(define slidey-canvas% - (class canvas% - (init-field bitmap board-width board-height) - - (: show-mistakes? Boolean) - (define show-mistakes? #f) - (define/public (show-mistakes nv) - (set! show-mistakes? nv) - (unless solved? (on-paint))) - - (: solved? Boolean) - (define solved? #f) - - (: board Board) - (define board - (build-vector - board-width - (lambda: ([i : Integer]) - (build-vector board-height (lambda: ([j : Integer]) : (U #f loc) (make-loc i j)))))) - - (: hole-i Integer) - (define hole-i (- board-width 1)) - (: hole-j Integer) - (define hole-j (- board-height 1)) - (board-set! board hole-i hole-j #f) - - (define/override (on-paint) - (if solved? - (void (send (get-dc) draw-bitmap bitmap 0 0)) - (board-for-each board (lambda (i j v) (draw-cell i j))))) - - (define/override (on-event evt) - (unless solved? - (when (send evt button-down? 'left) - (let-values ([(i j) (xy->ij (send evt get-x) (send evt get-y))]) - (slide i j))))) - (inherit get-client-size get-dc) - - (: check-end-condition (-> Void)) - (define/private (check-end-condition) - (let ([answer #t]) - (board-for-each - board - (lambda (i j v) - (when v - (unless (and (= i (loc-x v)) (= j (loc-y v))) - (set! answer #f))))) - (when answer (set! solved? #t)))) - - (: slide (Integer Integer -> Void)) - (define/private (slide i j) - (cond - [(= j hole-j) - (let loop ([new-hole-i hole-i]) - (unless (= new-hole-i i) - (let ([next (if (< i hole-i) sub1 add1)]) - (move-one board (next new-hole-i) hole-j new-hole-i hole-j) - (draw-cell new-hole-i hole-j) - (draw-cell (next new-hole-i) hole-j) - (loop (next new-hole-i))))) - (set! hole-i i) - (check-end-condition) - (when solved? (on-paint))] - [(= i hole-i) - (let loop ([new-hole-j hole-j]) - (unless (= new-hole-j j) - (let ([next (if (< j hole-j) - sub1 - add1)]) - (move-one board hole-i (next new-hole-j) hole-i new-hole-j) - (draw-cell hole-i new-hole-j) - (draw-cell hole-i (next new-hole-j)) - (loop (next new-hole-j))))) - (set! hole-j j) - (check-end-condition) - (when solved? - (on-paint))] - [else (void)])) - - (: xy->ij (Integer Integer -> (Values Integer Integer))) - (define/private (xy->ij x y) - (let-values ([(w h) (get-client-size)]) - (values (inexact->exact (floor (* board-width (/ x w)))) - (inexact->exact (floor (* board-height (/ y h))))))) - - (: ij->xywh (Real Real -> (Values Real Real Nonnegative-Real Nonnegative-Real))) - (define/private (ij->xywh i j) - (let-values ([(w h) (get-client-size)]) - (let ([cell-w (/ w board-width)] - [cell-h (/ h board-height)]) - (values (* i cell-w) (* j cell-h) cell-w cell-h)))) - - (: draw-cell (Integer Integer -> Void)) - (define/private (draw-cell draw-i draw-j) - (let-values ([(xd yd wd hd) (ij->xywh draw-i draw-j)]) - (let* ([dc (get-dc)] - [indices (board-ref board draw-i draw-j)]) - (if indices - (let ([bm-i (loc-x indices)] - [bm-j (loc-y indices)]) - (let-values ([(xs ys ws hs) (ij->xywh bm-i bm-j)]) - (send dc set-pen pict-pen) - (send dc set-brush pict-brush) - (send dc draw-bitmap-section bitmap xd yd xs ys wd hd) - (if (and show-mistakes? - (or (not (= draw-i bm-i)) - (not (= draw-j bm-j)))) - (begin (send dc set-pen mistake-pen) - (send dc set-brush mistake-brush)) - (begin (send dc set-pen line-pen) - (send dc set-brush line-brush))) - (send dc draw-rectangle xd yd wd hd))) - (begin (send dc set-pen white-pen) - (send dc set-brush white-brush) - (send dc draw-rectangle xd yd wd hd)))))) - - (inherit stretchable-width stretchable-height - min-client-width min-client-height) - (super-instantiate ()) - (randomize-board board hole-i hole-j) - (stretchable-width #f) - (stretchable-height #f) - (min-client-width (send bitmap get-width)) - (min-client-height (send bitmap get-height)))) - - -(define (start-game) - (define f (make-object frame% "Slidey")) - - (define p (make-object horizontal-panel% f)) - (send p set-alignment 'center 'center) - - (define slidey-canvas - (make-object slidey-canvas% - (make-object bitmap% - (build-path (collection-file-path "11.jpg" "games" "slidey"))) - 6 6 p)) - - (define bp (make-object horizontal-panel% f)) - (send bp stretchable-height #f) - - (: show-mistakes (Instance Check-Box%)) - (define show-mistakes - (make-object check-box% "Show misplaced pieces" bp - (lambda ___ (send slidey-canvas show-mistakes (send show-mistakes get-value))))) - - (make-object grow-box-spacer-pane% bp) - - (define (change-bitmap) - (let ([fn (get-file)]) - (when fn - (let ([bm (make-object bitmap% fn)]) - (cond - [(send bm ok?) - (let-values ([(bitmap w h) (get-bitmap bm)]) - (when bitmap - (send p change-children (lambda (l) null)) - (set! slidey-canvas - (make-object slidey-canvas% bitmap (assert w) (assert h) p))))] - [else (message-box "Slidey" (format "Unrecognized image format: ~a" fn))]))))) - - (define mb (make-object menu-bar% f)) - - (define file-menu (make-object menu% "File" mb)) - (make-object menu-item% "Open Image" file-menu (lambda (_1 _2) (change-bitmap)) #\o) - (make-object menu-item% "Close Window" file-menu (lambda (_1 _2) (send f show #f)) #\w) - - (send f show #t)) diff --git a/pkgs/games/spider/info.rkt b/pkgs/games/spider/info.rkt deleted file mode 100644 index 2b08189ae1..0000000000 --- a/pkgs/games/spider/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game "spider.rkt") -(define game-set "Card Games") diff --git a/pkgs/games/spider/spider.png b/pkgs/games/spider/spider.png deleted file mode 100644 index 609e5c7672323b859fb081d6f030b06b790cdd8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1687 zcmV;I259+-P)+ga`|83*8x=}SECzQm{) zkxepsq6ZmF)+b!ozm7>ZAswZJGQ@9uF0Nl>OK%I=IAeNoil6)RM32?=RW@(iOffB} zDOqL-3m{sE7_E%x4!X43Es9xzF@`9Kn2lz%qc%Y|pvo&`EeYe0DzESYk1!6YtC}(| z3AzEQQP_@6cMt*01yrN3Y>RA?;dl8$?Ks5@jG{zXxQHl_P z;SEDnqcGZ_wPv<4!x(*8AfM(4A?OS`hlZ;|kpp>G@Dr6&x zH^t=Boay=$Ap~_%Qx`SK)`WakToyQgY>o8(l-1p|eP3HoyymEn4-#LTxRfpi40oD^1GTVVeuD>tc}-b{kBE*(+aa@Km#_AfcFUxcb`i! zD&X_5@YDk9#X4@w#SeXU{qt6ifA%!?fdls+p50!t(iN$muHDW9XKN^ybQie-IWG%TRx|yBzHhA&HpP8LsdWR8-FxJpA&ZiyY z9CVC`g?YW)6<^U8Mm#7?_*iJHTP!0&VVt)+X3vk7&9P&T8Cz>}_~Z*`Fy9uq_qoWY zB;xM^{i?pYg;PSS-=h3^iF?4M_q85XRB_?aHI^2Kh=qmNEI)k*ziFQ&?1!wJUV#U} z6xXo-+7LbwQVa^hI3(3meT~bt0(-lS)|x7> z5SE~`6tHK{9ax7BeH^&#=3deRb#3)g;I>>k{SHmlP|ONk-{awj_u-s9yUL00{h8); zL*3Na@3iOszRDH=V8QrXW6TQ%kqM^Zlv5u(L%RP?#BkU*TlWt+`@lMrwF&x&#{9%U za}5FkwC`(E-c#b<=;Cd7EIt`ipDeK-dE}Fa^@jzk!!goG>YHnVw*<&%}z$N(DJOFInzLnX=jM>Hv(G_SH74Vcu+}mr#Z$LI&lZL z<)XDlD@|S1XswBoXkJKbnzETE3Z?09?!Rf!{-2Akn2Q{McZYAovs)Nr$dZg?F(LI* zs=T7z4R9Qn>0ruWbDumdC|f11c8eeg8287-n_}vsBDV_MmP6Ey*ddmn0CDu_H;AI> hzaHO>fsKuG;$LDe))GI+>U01A002ovPDHLkV1i2DF1G*x diff --git a/pkgs/games/spider/spider.rkt b/pkgs/games/spider/spider.rkt deleted file mode 100644 index 3af63d0330..0000000000 --- a/pkgs/games/spider/spider.rkt +++ /dev/null @@ -1,407 +0,0 @@ -#lang racket - -(require games/cards racket/gui racket/class racket/unit - "../show-scribbling.rkt") - -(define (list-first-n l n) - (if (zero? n) - null - (cons (car l) (list-first-n (cdr l) (sub1 n))))) - -(provide game@) -(define game@ (unit (import) (export) - -(define t (make-table "Spider" 11 6)) - -(define num-suits (get-preference 'spider:num-suits (lambda () 2))) - -(define (make-spider-deck) - (let-values ([(suits copies) - (case num-suits - [(1) (values '(spades) 4)] - [(2) (values '(spades hearts) 2)] - [(4) (values '(spades hearts clubs diamonds) 1)])]) - (let ([l (filter (lambda (c) (memq (send c get-suit) suits)) (make-deck))]) - (let loop ([n (* 2 copies)]) - (if (zero? n) - null - (append (map (lambda (c) (send c copy)) l) (loop (sub1 n)))))))) - -(define deck (make-spider-deck)) - -(define draw-pile deck) - -(define CARD-WIDTH (send (car deck) card-width)) -(define CARD-HEIGHT (send (car deck) card-height)) - -(define dx (quotient CARD-WIDTH 11)) -(define dy dx) - -(define stacks (make-vector 10 null)) -(define dones (make-vector 8 null)) - -(define done-count 0) - -(define old-states null) - -(define-struct state (draw-pile stacks dones done-count face-down?s)) - -(define mb (make-object menu-bar% t)) - -(define file-menu (make-object menu% "&File" mb)) - -(new menu-item% - [label "&Reset Game..."] - [parent file-menu] - [callback - (lambda (i e) - (when (eq? 'yes (message-box "Reset Game" - "Are you sure you want to reset the game?" - t - '(yes-no))) - (reset-game!)))]) - -(new separator-menu-item% [parent file-menu]) - -(new menu-item% - [label "&Close"] - [parent file-menu] - [shortcut #\W] - [callback (lambda (i e) (send t show #f))]) - -(define edit-menu (make-object menu% "&Edit" mb)) - -(define undo - (new menu-item% - [label "&Undo"] - [parent edit-menu] - [shortcut #\Z] - [callback (lambda (i e) (pop-state!))])) - -(new separator-menu-item% [parent edit-menu]) - -(new menu-item% - [label "&Options..."] - [parent edit-menu] - [callback (lambda (i e) - (define d - (new dialog% - [label "Spider Options"] - [parent t] - [stretchable-width #f] - [stretchable-height #f])) - (define suits - (new radio-box% - [label #f] - [parent (new group-box-panel% - [parent d] - [label "Number of Suits"] - [stretchable-width #f] - [stretchable-height #f])] - [choices '("1 (easiest)" "2" "4 (hardest)")])) - (define bottom-panel - (new horizontal-panel% - [parent d] - [alignment '(right center)] - [stretchable-height #f])) - (new button% - [parent bottom-panel] - [label "&Cancel"] - [callback (lambda (b e) (send d show #f))]) - (new button% - [parent bottom-panel] - [label "&Ok"] - [style '(border)] - [callback (lambda (b e) - (let ([n (expt 2 (send suits get-selection))]) - (if (not (= n num-suits)) - (when (eq? 'yes - (message-box "Warning" - "Reset the game for new suit count?" - d - '(yes-no))) - (set! num-suits n) - (put-preferences '(spider:num-suits) (list n)) - (send d show #f) - (reset-game!)) - (send d show #f))))]) - (send suits set-selection (case num-suits [(1) 0][(2) 1][(4) 2])) - (send d center) - (send d show #t))]) - - (define help (show-scribbling '(lib "games/scribblings/games.scrbl") - "spider")) - (new menu-item% - [label "&Rules"] - [parent (make-object menu% "&Help" mb)] - [callback (lambda (i e) (help))]) - -(define (push-state!) - (when (null? old-states) - (send undo enable #t)) - (set! old-states - (cons (make-state draw-pile - (vector-copy stacks) - (vector-copy dones) - done-count - (map (lambda (c) (send c face-down?)) deck)) - old-states))) - -(define (pop-state!) - (let ([state (car old-states)]) - (send t begin-card-sequence) - (set! old-states (cdr old-states)) - (set! draw-pile (state-draw-pile state)) - (set! stacks (state-stacks state)) - (set! dones (state-dones state)) - (set! done-count (state-done-count state)) - (for-each (lambda (c fd?) - (send c user-can-move #f) - (unless (eq? (send c face-down?) fd?) (send c flip))) - deck (state-face-down?s state)) - (send t move-cards draw-pile dx dy) - (send t stack-cards draw-pile) - (let loop ([i 0]) - (unless (= i (vector-length stacks)) - (send t stack-cards (vector-ref stacks i)) - (loop (add1 i)))) - (let loop ([i 0]) - (unless (= i (vector-length dones)) (move-dones i) (loop (add1 i)))) - (shift-stacks) - (when (null? old-states) (send undo enable #f)) - (send t end-card-sequence))) - -(define (find-stack find) - (let loop ([i 0]) - (if (= i (vector-length stacks)) - #f - (let ([l (vector-ref stacks i)]) - (if (and (pair? l) (memq find l)) - i - (loop (add1 i))))))) - -(define (remove-from-stack! cards) - (let* ([i (find-stack (car cards))] - [l (vector-ref stacks i)]) - (vector-set! stacks i (list-tail l (length cards))))) - -(define (stacked-cards card) - (let ([i (find-stack card)]) - (if i - (reverse (let loop ([l (vector-ref stacks i)]) - (cond [(not (send (car l) user-can-move)) null] - [(eq? (car l) card) (list card)] - [else (cons (car l) (loop (cdr l)))]))) - #f))) - -(define (drag-ok? cards i) - (and (pair? cards) - (let ([c (car cards)] - [l (vector-ref stacks i)]) - (and l - (or (null? l) - (= (send (car l) get-value) - (add1 (send c get-value)))))))) - -(let loop ([i 0]) - (unless (= i (vector-length stacks)) - null - (let ([r (make-region (+ dx (* i (+ CARD-WIDTH dx))) - (+ dy CARD-HEIGHT dy) - CARD-WIDTH - (- (* CARD-HEIGHT 5) dy dy) - #f - (lambda (cards) - (when (drag-ok? cards i) - (move-to-stack cards i))))]) - (set-region-interactive-callback! - r - (lambda (on? cards) - (let ([ok? (and on? (drag-ok? cards i))]) - (for-each (lambda (c) (send c snap-back-after-move (not ok?))) - cards) - (let ([l (vector-ref stacks i)]) - (unless (null? l) (send (car l) dim ok?)))))) - (send t add-region r) - (loop (add1 i))))) - - -(define (move-to-stack cards i) - (unselect) - (let ([l (vector-ref stacks i)]) - (unless (null? l) (send (car l) dim #f))) - (push-state!) - (remove-from-stack! cards) - (vector-set! stacks i (append (reverse cards) (vector-ref stacks i))) - (for-each (lambda (c) (send c snap-back-after-move #t)) cards) - (shift-stacks)) - -(define selected null) - -(define (select cards) - (unselect) - (set! selected cards) - (for-each (lambda (c) (send c dim #t)) selected)) - -(define (unselect) - (for-each (lambda (c) (send c dim #f)) selected) - (set! selected null)) - -(define (move-dones i) - (send t move-cards (vector-ref dones i) - (- (* 10 CARD-WIDTH) dx (* i (+ CARD-WIDTH dx))) - dy)) - -(define (draw push?) - (when push? (push-state!)) - (let ([drawn-cards - (let loop ([i 0]) - (if (or (= i (vector-length stacks)) (null? draw-pile)) - null - (if (vector-ref stacks i) - (let ([a (car draw-pile)]) - (vector-set! stacks i (cons a (vector-ref stacks i))) - (send a flip) - (set! draw-pile (cdr draw-pile)) - (cons a (loop (add1 i)))) - (loop (add1 i)))))]) - (send t card-to-front (car drawn-cards)) - (send t stack-cards drawn-cards)) - (shift-stacks)) - -(define (check-complete) - (let loop ([i 0]) - (unless (= i (vector-length stacks)) - (let ([l (vector-ref stacks i)]) - (when (and (pair? l) (= 1 (send (car l) get-value))) - (let ([suit (send (car l) get-suit)]) - (let loop ([j 2][a (list (car l))][l (cdr l)]) - (cond - [(= j 14) - ;; Complete set - move 13 cards to a done pile - (vector-set! dones done-count a) - (move-dones done-count) - (set! done-count (add1 done-count)) - (for-each (lambda (c) (send c user-can-move #f)) a) - (vector-set! stacks i l)] - [(and (pair? l) - (= j (send (car l) get-value)) - (equal? suit (send (car l) get-suit))) - (loop (add1 j) (cons (car l) a) (cdr l))] - [else (void)]))))) - (loop (add1 i))))) - -(define (shift-stacks) - (unselect) - (check-complete) - (let ([cards (apply append (map reverse (vector->list stacks)))] - [deltas (list->vector - (let loop ([i 0]) - (if (= i (vector-length stacks)) - null - (append - (let* ([l (vector-ref stacks i)] - [ddy (min (quotient CARD-HEIGHT 3) - (quotient (- (* CARD-HEIGHT 4) - dy dy dy) - (max 1 (sub1 (length l)))))]) - (let loop ([l l][dy 0]) - (if (null? l) - null - (cons (list (* i (+ CARD-WIDTH dx)) dy) - (loop (cdr l) (+ dy ddy)))))) - (loop (add1 i))))))]) - (send t move-cards cards dx (+ CARD-HEIGHT dy dy) - (lambda (i) (apply values (vector-ref deltas i)))) - - (let loop ([i 0]) - (unless (= i (vector-length stacks)) - (let ([l (vector-ref stacks i)]) - (when (pair? l) - (when (send (car l) face-down?) (send t flip-card (car l))) - (send (car l) user-can-move #t) - (let loop ([l (cdr l)][prev (car l)]) - (unless (null? l) - (if (and (not (send (car l) face-down?)) - (equal? (send prev get-suit) - (send (car l) get-suit)) - (= (add1 (send prev get-value)) - (send (car l) get-value))) - (begin (send (car l) user-can-move #t) - (loop (cdr l) (car l))) - (for-each (lambda (c) (send c user-can-move #f)) - l)))))) - (loop (add1 i)))))) - -(send t set-double-click-action void) - -(send t set-single-click-action - (lambda (c) - (cond - [(and (pair? draw-pile) - (eq? c (car draw-pile))) - (if (ormap null? (vector->list stacks)) (bell) (draw #t))] - [(and (pair? selected) (eq? c (car selected))) - (unselect)] - [(and (pair? selected) - (let ([i (find-stack c)]) - (and i - (not (equal? i (find-stack (car selected)))) - (drag-ok? selected i) - i))) - => (lambda (i) - (send t card-to-front (car (last-pair selected))) - (send t stack-cards (reverse selected)) - (move-to-stack selected i))] - [(stacked-cards c) => (lambda (cards) (select cards))]))) - -;; Add a region for each stack to receive clicks when -;; the stack is empty: -(let loop ([i 0]) - (unless (= i (vector-length stacks)) - (send t add-region (make-button-region - (+ dx (* i (+ CARD-WIDTH dx))) - (+ dy CARD-HEIGHT dy) - CARD-WIDTH CARD-HEIGHT - #f - (lambda () - (when (and (null? (vector-ref stacks i)) - (pair? selected)) - (move-to-stack selected i))))) - (loop (add1 i)))) - -(send t set-button-action 'left 'drag-raise/above) -(send t set-button-action 'middle 'drag-raise/above) -(send t set-button-action 'right 'drag-raise/above) - -(define (reset-game!) - (send t remove-cards deck) - (set! deck (make-spider-deck)) - (send t add-cards deck dx dy) - (send t begin-card-sequence) - (unselect) - (send undo enable #f) - (set! draw-pile (shuffle-list deck 7)) - (for-each (lambda (c) - (unless (send c face-down?) (send c flip)) - (send c user-can-flip #f) - (send c user-can-move #f) - (send c snap-back-after-move #t)) - draw-pile) - (set! stacks (make-vector 10 null)) - (set! dones (make-vector 8 null)) - (set! done-count 0) - (set! old-states null) - (send t stack-cards draw-pile) - (let loop ([i 0]) - (unless (= i (vector-length stacks)) - (let ([n (if (< i 4) 5 4)]) - (vector-set! stacks i (list-first-n draw-pile n)) - (set! draw-pile (list-tail draw-pile n))) - (loop (add1 i)))) - (draw #f) - (send t end-card-sequence)) -(reset-game!) -(send t show #t) - -)) diff --git a/pkgs/games/tally-maze/game.rkt b/pkgs/games/tally-maze/game.rkt deleted file mode 100644 index 37d8d79366..0000000000 --- a/pkgs/games/tally-maze/game.rkt +++ /dev/null @@ -1,296 +0,0 @@ -#lang racket/base -(require "maze.rkt" - "../show-scribbling.rkt" - racket/gui/base - racket/class - racket/set - racket/list - racket/path - racket/runtime-path - racket/unit) - -(provide game@) - -(define-runtime-path bmps "images") -(define big-pumpkin (read-bitmap (build-path bmps "pumpkin" "pumpkin-64x64.png"))) -(define two-pumpkins (make-bitmap (send big-pumpkin get-width) (send big-pumpkin get-height))) -(let ([small-pumpkin (read-bitmap (build-path bmps "pumpkin" "pumpkin-48x48.png"))] - [bdc (make-object bitmap-dc% two-pumpkins)]) - (send bdc draw-bitmap small-pumpkin 0 0) - (send bdc draw-bitmap small-pumpkin - (- (send big-pumpkin get-width) - (send small-pumpkin get-width)) - (- (send big-pumpkin get-height) - (send small-pumpkin get-height))) - (send bdc set-bitmap #f)) - -(define small-icon-size 4) -(define (mk-small color) - (define bmp (make-bitmap small-icon-size small-icon-size)) - (define bdc (make-object bitmap-dc% bmp)) - (send bdc set-brush color 'solid) - (send bdc set-pen "black" 1 'transparent) - (send bdc draw-ellipse 0 0 small-icon-size small-icon-size) - (send bdc set-bitmap #f) - bmp) - -(define small-pumpkin (mk-small "orange")) -(define small-player (mk-small "blue")) - -(define game@ - (unit (import) - (export) -(define maze-w 12) -(define maze-h 12) - -(struct state - (maze-index maze edges - player - computer1 - computer2 - player-icon) - #:transparent) - -(define the-maze-count (maze-count maze-w maze-h)) - -(define (state-next-edges the-state) - (build-walls - (decode-maze maze-w maze-h - (modulo (+ (state-maze-index the-state) 1) - the-maze-count)) - maze-w - maze-h)) - -(define (fill-in-maze the-state new-val) - (define current-maze (decode-maze maze-w maze-h new-val)) - (struct-copy state the-state - [maze-index new-val] - [maze current-maze] - [edges (build-walls current-maze maze-w maze-h)])) - -(define initial-number (pick-a-maze maze-w maze-h)) -(define the-states - (list (fill-in-maze (state #f #f #f - (cons 0 0) - (cons (- maze-w 1) (- maze-h 1)) - (cons (- maze-w 1) (- maze-h 1)) - 21) - initial-number))) -(define (current-state) (car the-states)) -(define (set-the-states! new-states) - (set! the-states new-states) - (send game-number-canvas refresh) - (send game-canvas refresh)) - -(define (next-state! state) - (set-the-states! (cons state the-states))) - -(define (get-player-icon the-state) - (cond - [(and (= (car (state-player the-state)) (- maze-w 1)) - (= (cdr (state-player the-state)) (- maze-h 1))) - ;; winner - (pick '(1))] - [(edge-connecting? (state-edges the-state) - (state-player the-state) - (cons (- maze-w 1) (- maze-h 1))) - ;; about to win - (pick '(19))] - [(or (edge-connecting? (state-edges the-state) - (state-computer1 the-state) - (state-player the-state)) - (edge-connecting? (state-edges the-state) - (state-computer2 the-state) - (state-player the-state))) - ;; about to lose - (pick '(20 35))] - [else - ;; nothing much going on - (pick '(21 36 37))])) - -(define (edge-connecting? edges a b) (set-member? (hash-ref edges a) b)) - -(define (pick args) - (define pr (state-player (current-state))) - (list-ref args (modulo (+ (car pr) (cdr pr)) - (length args)))) - -(define players (make-hash)) -(for ([file (directory-list (build-path bmps "very-emotional") #:build? #t)]) - (define m (regexp-match #rx"([0-9]+)[.]png$" file)) - (when m - (hash-set! players (string->number (cadr m)) (read-bitmap file)))) - -(define (move dx dy) - (unless (game-over?) - (define new-x (+ dx (car (state-player (current-state))))) - (define new-y (+ dy (cdr (state-player (current-state))))) - (define new-pr (cons new-x new-y)) - (when (and (<= 0 new-x (- maze-w 1)) - (<= 0 new-y (- maze-w 1)) - (edge-connecting? (state-edges (current-state)) - (state-player (current-state)) - new-pr)) - (next-state! - (struct-copy state (move-computer (current-state)) - [player new-pr]))))) - -(define (stay-put) - (next-state! (move-computer (current-state)))) - -(define (next-maze) - (define next-maze-state - (fill-in-maze (current-state) - (modulo (+ (state-maze-index (current-state)) 1) the-maze-count))) - (next-state! - (if (game-over?) - next-maze-state - (move-computer next-maze-state)))) - -(define (undo-maze) - (unless (null? (cdr the-states)) - (set-the-states! (cdr the-states)))) - -(define (move-computer the-state) - (cond - [(or (equal? (state-player (current-state)) - (state-computer1 (current-state))) - (equal? (state-player (current-state)) - (state-computer2 (current-state)))) - the-state] - [else - (define end (state-player the-state)) - (define this-edges (state-edges the-state)) - (define next-edges (state-next-edges the-state)) - - (define-values (this-maze-c1 this-maze-c1-dist) - (preferred-direction this-edges (state-computer1 the-state) end)) - (define-values (this-maze-c2 this-maze-c2-dist) - (preferred-direction this-edges (state-computer2 the-state) end)) - - (define-values (next-maze-c1 next-maze-c1-dist) - (preferred-direction next-edges (state-computer1 the-state) end)) - (define-values (next-maze-c2 next-maze-c2-dist) - (preferred-direction next-edges (state-computer2 the-state) end)) - (cond - [(<= this-maze-c1-dist this-maze-c2-dist) - (struct-copy state the-state - [computer1 this-maze-c1] - [computer2 (if (edge-connecting? this-edges - (state-computer2 the-state) - next-maze-c2) - next-maze-c2 - (state-computer2 the-state))])] - [else - (struct-copy state the-state - [computer1 (if (edge-connecting? this-edges - (state-computer1 the-state) - next-maze-c1) - next-maze-c1 - (state-computer1 the-state))] - [computer2 this-maze-c2])])])) - -(define (preferred-direction edges start end) - (define visited (make-hash)) - (define dir - (let loop ([node start] - [dist 0]) - (cond - [(hash-ref visited node #f) #f] - [else - (hash-set! visited node dist) - (cond - [(equal? node end) - node] - [else - (for/or ([neighbor (in-set (hash-ref edges node))]) - (and (loop neighbor (+ dist 1)) - neighbor))])]))) - (values dir (hash-ref visited end))) - -(define (add1/f n) (and n (+ n 1))) - -(define game-number-canvas% - (class canvas% - (inherit get-dc get-client-size) - (define/override (on-paint) - (define-values (w h) (get-client-size)) - (define dc (get-dc)) - (define s (str (state-maze-index (current-state)))) - (define-values (tw _1 _2 _3) (send dc get-text-extent s)) - (send dc draw-text s (/ (- w tw) 2) 0)) - (define/private (str n) (format "Board #~a" n)) - (super-new [style '(transparent)]) - (inherit min-height) - (let () - (define-values (_ h _2 _3) (send (get-dc) get-text-extent (str 0))) - (min-height (inexact->exact (ceiling h)))))) - -(define game-canvas% - (class canvas% - (inherit get-dc get-client-size) - (define/override (on-paint) - (define dc (get-dc)) - (send dc set-smoothing 'smoothed) - (define-values (w h) (get-client-size)) - (draw-a-state dc 0 0 w h (current-state) #f)) - (define/override (on-char evt) - (case (send evt get-key-code) - [(left) (move -1 0)] - [(up) (move 0 -1)] - [(right) (move 1 0)] - [(down) (move 0 1)] - [(#\space #\.) (stay-put)] - [(#\n) (next-maze)] - [(#\z) (undo-maze)])) - (super-new))) - -(define (draw-a-state dc dx dy w h the-state small?) - (draw-maze dc dx dy - w h (state-edges the-state) - maze-w maze-h - #:images - (cons (list (if small? - (list small-player) - (list (hash-ref players (get-player-icon the-state)))) - (car (state-player the-state)) - (cdr (state-player the-state))) - (if (equal? (state-computer1 the-state) - (state-computer2 the-state)) - (list (list (if small? (list small-pumpkin) (list two-pumpkins)) - (car (state-computer1 the-state)) - (cdr (state-computer1 the-state)))) - (list (list (if small? (list small-pumpkin) (list big-pumpkin)) - (car (state-computer1 the-state)) - (cdr (state-computer1 the-state))) - (list (if small? (list small-pumpkin) (list big-pumpkin)) - (car (state-computer2 the-state)) - (cdr (state-computer2 the-state)))))))) - -(define (game-over?) - (or (equal? (state-player (current-state)) - (state-computer1 (current-state))) - (equal? (state-player (current-state)) - (state-computer2 (current-state))) - (and (= (car (state-player (current-state))) (- maze-w 1)) - (= (cdr (state-player (current-state))) (- maze-h 1))))) - -(define min-cell-size 55) -(define f (new frame% [label "Tally Maze"] [width 600] [height 600])) -(define game-canvas (new game-canvas% - [parent f] - [min-width (* maze-w min-cell-size)] - [min-height (* maze-h min-cell-size)])) -(define hp (new horizontal-panel% [parent f] [alignment '(right center)] [stretchable-height #f])) -(define game-number-canvas (new game-number-canvas% [parent hp] [stretchable-height #f])) -(void (new vertical-panel% [parent hp] [stretchable-width #f])) -(define show-help (show-scribbling - '(lib "games/scribblings/games.scrbl") - "tally-maze")) -(define help-button (new button% - [label "Help"] - [parent hp] - [callback (lambda (_1 _2) (show-help))])) -(send f show #t))) - -(module+ main (invoke-unit game@)) diff --git a/pkgs/games/tally-maze/images/pumpkin/pumpkin-48x48.png b/pkgs/games/tally-maze/images/pumpkin/pumpkin-48x48.png deleted file mode 100644 index 97e5f153f88d7f21724211d87c2fd95863ddb6fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3961 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 T1$y$X00000NkvXXu0mjfm~Nks diff --git a/pkgs/games/tally-maze/images/pumpkin/pumpkin-64x64.png b/pkgs/games/tally-maze/images/pumpkin/pumpkin-64x64.png deleted file mode 100644 index 1dd1ff09991ee01bbb1e69d5c01889be6794d665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6631 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 aLjX84%jdF0Hje-K^`fb&tMUP26Z~I-G)zzc diff --git a/pkgs/games/tally-maze/images/very-emotional/01.png b/pkgs/games/tally-maze/images/very-emotional/01.png deleted file mode 100644 index b697711a3ac756c4c86403c7d962a25468c09d73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9503 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 diff --git a/pkgs/games/tally-maze/images/very-emotional/19.png b/pkgs/games/tally-maze/images/very-emotional/19.png deleted file mode 100644 index 6892fe9dfb3d6a2992e5d2acfa4d96ba5b4ee66c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9172 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 diff --git a/pkgs/games/tally-maze/images/very-emotional/35.png b/pkgs/games/tally-maze/images/very-emotional/35.png deleted file mode 100644 index 507fdb572e504417b6efb8861b58ba125e97377c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8705 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 FV1k_AFYo{W diff --git a/pkgs/games/tally-maze/info.rkt b/pkgs/games/tally-maze/info.rkt deleted file mode 100644 index 0d89be8e19..0000000000 --- a/pkgs/games/tally-maze/info.rkt +++ /dev/null @@ -1,4 +0,0 @@ -#lang info - -(define game-set "Puzzle Games") -(define game "game.rkt") diff --git a/pkgs/games/tally-maze/maze.rkt b/pkgs/games/tally-maze/maze.rkt deleted file mode 100644 index 29896b3162..0000000000 --- a/pkgs/games/tally-maze/maze.rkt +++ /dev/null @@ -1,539 +0,0 @@ -#lang racket/base -(require data/enumerate - racket/gui/base - racket/class - racket/set - racket/list - math/base) -(module+ test (require rackunit)) - -(provide pick-a-maze - draw-maze - build-walls - decode-maze - maze-count) - -(define (maze-count w h) - (size (maze/e w h))) - -(define (decode-maze maze-w maze-h n) - (define mazes (maze/e maze-w maze-h)) - (unless (and (exact-nonnegative-integer? n) - (< n (size mazes))) - (raise-argument-error 'decode-maze - (format "number less than ~a" (size mazes)) - n)) - (from-nat mazes n)) - -(define (memoize f) - (define ht (make-hash)) - (λ args - (hash-ref - ht args - (λ () - (hash-set! ht args (apply f args)) - (hash-ref ht args))))) - -(define maze/e - (memoize - (λ (width height) - (cond - [(or (= 1 height) (= 1 width)) (const/e #f)] - [else - (dep/e - (map/e reverse reverse - (fixed-length-list/e - (fin/e 'l 't 'r 'b) - (map/e add1 sub1 (below/e (- height 1))) - (map/e add1 sub1 (below/e (- width 1))))) - (λ (ul-w/h-and-break) - (define ul-w (list-ref ul-w/h-and-break 0)) - (define ul-h (list-ref ul-w/h-and-break 1)) - (define missing (list-ref ul-w/h-and-break 2)) - (define lr-w (- width ul-w)) - (define lr-h (- height ul-h)) - (fixed-length-list/e - - (case missing - [(l) - (fixed-length-list/e (const/e #f) - (below/e ul-h) - (below/e lr-w) - (below/e lr-h))] - [(t) - (fixed-length-list/e (below/e ul-w) - (const/e #f) - (below/e lr-w) - (below/e lr-h))] - [(r) - (fixed-length-list/e (below/e ul-w) - (below/e ul-h) - (const/e #f) - (below/e lr-h))] - [(b) - (fixed-length-list/e (below/e ul-w) - (below/e ul-h) - (below/e lr-w) - (const/e #f))]) - - (maze/e ul-w ul-h) - (maze/e lr-w ul-h) - (maze/e ul-w lr-h) - (maze/e lr-w lr-h))))])))) - -(define (fixed-length-list/e . args) - (let loop ([args args]) - (cond - [(null? args) (const/e '())] - [else (cons/e (car args) (loop (cdr args)))]))) - -(define (pick-a-maze maze-w maze-h) - (define maze-count (size (maze/e maze-w maze-h))) - (+ (if (zero? (random 2)) - (/ maze-count 2) - 0) - (random-natural (/ maze-count 4)) - (random-natural (/ maze-count 4)))) - -(define (draw-maze dc dx dy w h edges maze-w maze-h - #:next-edges [next-edges #f] - #:solution [solution #f] - #:images [images '()]) - (define cell-size (min (/ w (+ maze-w 1/2)) (/ h (+ maze-h 1/2)))) - (define wall-pen-size (max 2 (ceiling (/ cell-size 6)))) - (define tot-maze-w (* cell-size maze-w)) - (define tot-maze-h (* cell-size maze-h)) - (define x-margin (/ (- w tot-maze-w) 2)) - (define y-margin (/ (- h tot-maze-h) 2)) - (define (mx->dcx mx) (+ (* mx cell-size) x-margin)) - (define (my->dcy my) (+ (* my cell-size) y-margin)) - - #; - (begin - (define start-distances (find-distances (cons 0 0) edges)) - (define end-distances (find-distances (cons (- maze-w 1) (- maze-h 1)) edges)) - (for* ([x (in-range maze-w)] - [y (in-range maze-h)]) - (define k (cons x y)) - (define ds (hash-ref start-distances k)) - (define de (hash-ref end-distances k)) - (define color (cond - [(= ds de) "white"] - [(< ds de) "Khaki"] - [(> ds de) "Lavender"])) - (define dx (mx->dcx x)) - (define dy (my->dcy y)) - (send dc set-pen color 1 'transparent) - (send dc set-brush color 'solid) - (send dc draw-rectangle dx dy cell-size cell-size))) - - (send dc set-pen "lightblue" 1 'solid) - (for ([x (in-range 1 maze-w)]) - (define e (mx->dcx x)) - (send dc draw-line (+ dx e) (+ dy y-margin) (+ dx e) (+ dy y-margin tot-maze-h))) - (for ([y (in-range 1 maze-h)]) - (define e (my->dcy y)) - (send dc draw-line (+ dx x-margin) (+ dy e) (+ dx x-margin tot-maze-w) (+ dy e))) - - (send dc set-pen "black" wall-pen-size 'solid) - (send dc draw-line - (+ dx x-margin) (+ dy y-margin cell-size) - (+ dx x-margin) (+ dy y-margin tot-maze-h)) - (send dc draw-line - (+ dx x-margin cell-size) (+ dy y-margin) - (+ dx x-margin tot-maze-w) (+ dy y-margin)) - (send dc draw-line - (+ dx x-margin) (+ dy y-margin tot-maze-h) - (+ dx x-margin tot-maze-w (- cell-size)) (+ dy y-margin tot-maze-h)) - (send dc draw-line - (+ dx x-margin tot-maze-w) (+ dy y-margin) - (+ dx x-margin tot-maze-w) (+ dy y-margin tot-maze-h (- cell-size))) - - (define (connect x1 y1 x2 y2) - (unless (and (= x1 x2) - (= y1 y2)) - (send dc draw-line - (+ dx (mx->dcx x1)) - (+ dy (my->dcy y1)) - (+ dx (mx->dcx x2)) - (+ dy (my->dcy y2))))) - - (for ([(from neighbors) (in-hash edges)]) - (define from-x (car from)) - (define from-y (cdr from)) - (define (try to-x to-y) - (when (<= 0 to-x (- maze-w 1)) - (when (<= 0 to-y (- maze-h 1)) - (define k (cons to-x to-y)) - (unless (set-member? neighbors k) - (send dc set-pen "black" - wall-pen-size - 'solid) - (cond - [(= from-x to-x) - (connect from-x - to-y - (+ from-x 1) - to-y)] - [(= from-y to-y) - (connect to-x - to-y - to-x - (+ to-y 1))]))))) - (try (+ from-x 1) from-y) - (try from-x (+ from-y 1))) - - (when solution - (send dc set-pen "red" wall-pen-size 'solid) - (for ([solution1 (in-list solution)] - [solution2 (in-list (cdr solution))]) - (connect (+ (car solution1) 1/2) - (+ (cdr solution1) 1/2) - (+ (car solution2) 1/2) - (+ (cdr solution2) 1/2)))) - - (for ([image (in-list images)]) - (define-values (icons x y) (apply values image)) - (define icon (or (for/or ([icon (in-list icons)]) - (and (<= (send icon get-width) cell-size) - (<= (send icon get-height) cell-size) - icon)) - (last icons))) - (send dc draw-bitmap - icon - (+ dx (mx->dcx x) (/ (- cell-size (send icon get-width)) 2)) - (+ dy (my->dcy y) (/ (- cell-size (send icon get-height)) 2))))) - -(define (find-solution edges maze-w maze-h) - (define start (cons 0 0)) - (define end (cons (- maze-w 1) (- maze-h 1))) - (define visited (make-hash)) - (let loop ([node start]) - (cond - [(equal? node end) (list end)] - [(hash-ref visited node #f) #f] - [else - (hash-set! visited node #t) - (define neighbor-ans - (for/or ([neighbor (in-set (hash-ref edges node))]) - (loop neighbor))) - (and neighbor-ans - (cons node neighbor-ans))]))) - -(define (find-distances end edges) - (define distances (make-hash)) - (let loop ([node end] - [distance 0]) - (cond - [(hash-ref distances node #f) (void)] - [else - (hash-set! distances node distance) - (for ([neighbor (in-set (hash-ref edges node))]) - (loop neighbor - (+ distance 1)))])) - distances) - -(define (build-walls maze-spec maze-w maze-h) - (define edges (make-hash)) - - (define (add-edge! x1 y1 x2 y2) - (add->edge! x1 y1 x2 y2) - (add->edge! x2 y2 x1 y1)) - (define (add->edge! x1 y1 x2 y2) - (define k (cons x1 y1)) - (hash-set! edges k (set-add (hash-ref edges k (set)) (cons x2 y2)))) - - - (define (remove-edge! x1 y1 x2 y2) - (remove->edge! x1 y1 x2 y2) - (remove->edge! x2 y2 x1 y1)) - (define (remove->edge! x1 y1 x2 y2) - (define k (cons x1 y1)) - (define new-edges (set-remove (hash-ref edges k) (cons x2 y2))) - (hash-set! edges k new-edges)) - - (for* ([x (in-range 0 maze-w)] - [y (in-range 0 maze-h)]) - (unless (zero? x) - (add-edge! x y (- x 1) y)) - (unless (zero? y) - (add-edge! x y x (- y 1)))) - - ;; draws a line between (x1,y1) and (x2,y2) - ;; which removes some edges - (define (connect x1 y1 x2 y2) - (let loop ([x1 (min x1 x2)] - [y1 (min y1 y2)] - [x2 (max x1 x2)] - [y2 (max y1 y2)]) - (cond - [(and (= x1 x2) (= y1 y2)) - (void)] - [(= x1 x2) - (remove-edge! (- x1 1) y1 x1 y1) - (loop x1 (+ y1 1) x1 y2)] - [(= y1 y2) - (remove-edge! x1 (- y1 1) x1 y1) - (loop (+ x1 1) y1 x2 y2)] - [else - (error 'connect "ack ~s => ~s\n" (cons x1 y1) (cons x2 y2))]))) - - (define (draw-horizontal-line line-break width x-start y-start) - (cond - [line-break - (connect x-start y-start (+ x-start line-break) y-start) - (connect (+ x-start line-break 1) y-start (+ x-start width) y-start)] - [else - (connect x-start y-start (+ x-start width) y-start)])) - - (define (draw-vertical-line line-break height x-start y-start) - (cond - [line-break - (connect x-start y-start x-start (+ y-start line-break)) - (connect x-start (+ y-start line-break 1) x-start (+ y-start height))] - [else - (connect x-start y-start x-start (+ y-start height))])) - - (let loop ([maze maze-spec] - [x 0] - [y 0] - [maze-w maze-w] - [maze-h maze-h]) - (when maze - (define sub-maze-info (list-ref maze 0)) - (define ul-w (list-ref sub-maze-info 0)) - (define ul-h (list-ref sub-maze-info 1)) - (define lr-w (- maze-w ul-w)) - (define lr-h (- maze-h ul-h)) - - (define line-break-info (list-ref maze 1)) - (define-values (lb-left lb-top lb-right lb-bottom) (apply values line-break-info)) - (draw-horizontal-line lb-left ul-w x (+ y ul-h)) - (draw-vertical-line lb-top ul-h (+ x ul-w) y) - (draw-horizontal-line lb-right lr-w (+ x ul-w) (+ y ul-h)) - (draw-vertical-line lb-bottom lr-h (+ x ul-w) (+ y ul-h)) - (define ul-submaze (list-ref maze 2)) - (define ur-submaze (list-ref maze 3)) - (define ll-submaze (list-ref maze 4)) - (define lr-submaze (list-ref maze 5)) - - (loop ul-submaze x y ul-w ul-h) - (loop ur-submaze (+ x ul-w) y lr-w ul-h) - (loop ll-submaze x (+ y ul-h) ul-w lr-h) - (loop lr-submaze (+ x ul-w) (+ y ul-h) lr-w lr-h))) - edges) - -(module+ test - - (check-equal? - (build-walls '((1 1 t) (0 #f 0 0) #f #f #f #f) 2 2) - (make-hash - (list (cons '(0 . 0) (set '(0 . 1))) - (cons '(0 . 1) (set '(0 . 0) '(1 . 1))) - (cons '(1 . 0) (set '(1 . 1))) - (cons '(1 . 1) (set '(0 . 1) '(1 . 0)))))) - - (check-equal? - (build-walls - '((1 2 b) (0 1 1 #f) #f ((1 1 l) (#f 0 0 0) #f #f #f #f) #f #f) - 3 - 3) - (make-hash - (list (cons '(0 . 0) (set '(0 . 1))) - (cons '(0 . 1) (set '(0 . 0) '(1 . 1) '(0 . 2))) - (cons '(0 . 2) (set '(0 . 1))) - (cons '(1 . 0) (set '(2 . 0))) - (cons '(1 . 1) (set '(0 . 1) '(2 . 1))) - (cons '(1 . 2) (set '(2 . 2))) - (cons '(2 . 0) (set '(1 . 0) '(2 . 1))) - (cons '(2 . 1) (set '(2 . 0) '(2 . 2) '(1 . 1))) - (cons '(2 . 2) (set '(2 . 1) '(1 . 2)))))) - - (check-equal? - (build-walls '((2 2 l) (#f 0 0 0) ((1 1 l) (#f 0 0 0) #f #f #f #f) #f #f #f) - 3 3) - (make-hash - (list (cons '(0 . 0) (set '(1 . 0))) - (cons '(0 . 1) (set '(1 . 1))) - (cons '(0 . 2) (set '(1 . 2))) - (cons '(1 . 0) (set '(0 . 0) '(1 . 1) '(2 . 0))) - (cons '(1 . 1) (set '(0 . 1) '(1 . 0))) - (cons '(1 . 2) (set '(0 . 2) '(2 . 2))) - (cons '(2 . 0) (set '(1 . 0) '(2 . 1))) - (cons '(2 . 1) (set '(2 . 0) '(2 . 2))) - (cons '(2 . 2) (set '(2 . 1) '(1 . 2))))))) - -(module+ test - (check-equal? (for/list ([i (in-range 1 10)]) - (for/list ([j (in-range 1 10)]) - (size (maze/e i j)))) - '((1 1 1 1 1 1 1 1 1) - (1 4 14 32 60 100 154 224 312) - (1 14 192 1592 9088 40200 144640 442024 1187712) - (1 32 1592 48576 966432 14277056 162024480 1483461856 11380684512) - (1 60 9088 966432 64276480 3107936000 108447726080 2888781507968 63634822939136) - (1 100 40200 14277056 3107936000 505206939648 57343330411904 4517833584448000 265075058064153216) - (1 154 144640 162024480 108447726080 57343330411904 22277369393520640 5823531873245840896 1048876337051644747776) - (1 224 442024 1483461856 2888781507968 4517833584448000 5823531873245840896 5198113431992927961088 3121738536955876740462592) - (1 312 1187712 11380684512 63634822939136 265075058064153216 1048876337051644747776 3121738536955876740462592 6287843749463133375691948032))) - (check-equal? - (for/list ([i (in-range 50)]) (decode-maze 6 6 i)) - '(((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 0 1) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 1) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 1) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 1) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 1) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 0 2) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 2) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 2) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 2) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 2) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 0 3) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 3) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 3) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 3) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 3) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 0 4) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 4) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 4) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 4) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 4) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 0) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 0) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 0) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 0 1) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 1) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 1) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 1) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 1) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 0 2) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 2) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 2) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 2) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 2) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 0 3) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 3) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 3) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 3) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 3) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 0 4) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 1 4) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 2 4) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 3 4) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f))))) - ((1 1 l) (#f 0 4 4) #f #f #f ((1 1 l) (#f 0 1 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f ((1 1 l) (#f 0 0 0) #f #f #f #f)))))))) - - -(define (show-mazes) - - ;(define maze-w 34) (define maze-h 44) - (define maze-w 12) (define maze-h 12) - ;(define maze-w 2) (define maze-h 3) - ;(define maze-w 16) (define maze-h 16) - ;(define maze-w 8) (define maze-h 8) - - (define mazes (time (maze/e maze-w maze-h))) - (define maze-count (size mazes)) - (printf "~a mazes\n" maze-count) - - (define slider-max-value (min maze-count 10000)) - (define max-starting-point (- maze-count slider-max-value)) - (define starting-point (pick-a-maze maze-w maze-h)) - (define f (new frame% [label ""] [width 400] [height 400])) - - (define current-solution #f) - (define current-edges #f) - (define next-edges #f) - (define which 0) - - (define c (new canvas% [parent f] - [paint-callback - (λ (c dc) - (send dc set-smoothing 'smoothed) - (define-values (w h) (send c get-client-size)) - (draw-maze dc 0 0 w h current-edges maze-w maze-h - #:next-edges next-edges - #:solution current-solution))])) - (define bp (new horizontal-panel% [parent f] [stretchable-height #f])) - (define (move-to n) - (set! which (modulo n maze-count)) - (set! current-edges (build-walls (from-nat mazes which) maze-w maze-h)) - (set! current-solution (find-solution current-edges maze-w maze-h)) - (set! next-edges (build-walls (from-nat mazes (modulo (+ which 1) maze-count)) - maze-w maze-h)) - (send slider set-value (- which starting-point)) - (send c refresh)) - - (define slider - (new slider% - [label #f] - [min-value 0] - [max-value slider-max-value] - [parent bp] - [callback - (λ args - (move-to (+ starting-point (send slider get-value))))])) - (define tf (new text-field% - [label "Starting point"] - [parent f] - [stretchable-width #t] - [init-value ""] - [callback - (λ args - (define n (string->number (send tf get-value))) - (define n-ok? (and n (<= n max-starting-point))) - (send tf set-field-background - (send the-color-database find-color - (if n-ok? "white" "pink"))) - (when n-ok? - (set! starting-point n) - (move-to starting-point)))])) - - (send tf set-value (format "~a" starting-point)) - (define (mk-b lab adj) - (new button% - [parent bp] - [label lab] - [callback - (λ args - (move-to (adj which)))])) - (mk-b "Next" add1) - (mk-b "Previous" sub1) - (new button% - [parent bp] - [label "Random"] - [callback - (λ args - (set! starting-point (pick-a-maze maze-w maze-h)) - (send tf set-value (format "~a" starting-point)) - (move-to starting-point))]) - - (define run? #f) - (define timer - (new timer% - [notify-callback - (λ () (move-to (+ which 1)))])) - - (define run/stop-button - (new button% - [label "Run"] - [parent f] - [stretchable-width #t] - [callback - (λ args - (send run/stop-button set-label - (if run? "Run" "Stop")) - (set! run? (not run?)) - (if run? - (send timer start 100) - (send timer stop)))])) - (move-to starting-point) - (send f show #t)) - -(module+ main (show-mazes)) diff --git a/pkgs/games/tally-maze/tally-maze.png b/pkgs/games/tally-maze/tally-maze.png deleted file mode 100644 index f0d8d75bee07075a5f2014c42ce244f4ccb71054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5089 zcmV<76CUh|P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000RLNklN2}nJ!RlDWS4P5JaoNEx`{&2tklY z)hLlwLQ&%qqnHT#K?Q>`MkQj5BB8Ao3oX*p(&^qpTiVi&cbU1%d+)oS>zKHK3n-=7s$2 zciy|kOl5B{B{zl(m)BF7ES_tjhHpTd9f(#7+Aeqw_-%C1LMxL6=4-TfKE-IIah7qd z^%(#mKxok7^t=HWQ55U1Jo1ZgZ2a$z&)xU++qVAa;HhtH(fy7vR3YIvvc8qjBrQis z*(5SFu>@^^mJ>@v29{|erFd@zY%_ytN~Az4t+W(U0|_q(b8Bw8ZsTK*-1YeDp;g?u z)mhVBRnM5d>h&DoG8#U@34G;*CzN5YLwdgjc1$XF`sd!)1(ibwD9-5@QL!imk+w`T z7E;>Tbn^U;3zjThdnA5pQ`KE^!m#kOP}3pG29W>)VTriD*cg9vah#a*Rc)j;N!n{P zjDVhWqJD3Hxr@)oP9!mfsZ2wFBnezuj``^km-(r@!NDlSc#8>NNegs<4g~}T#1Z>OAAsk6_!FX= zZ`W5|`w^8j6WP}eAAjt*=bshpXoRQ6pv{QI1zrc~_p5|m*(GFrN~*MnId&z(auDuT7|w$ zlE%ef;wRnTM~{Zk_V}A|E7lcFGOs>C&FDgj93@9%>of^z(};ZxX<-*;)s8ouv2wKn z!Z=$2;g%qF^7{PMNpa#ODlJg$0--2CGDT;?Wia_BwRtNzeAQa0nMkJ&et-&N{AD+x zst3uOc!hTNQbN0nfE*qfdIs~%5u=nBelB_Gr7hd`#!!=6(`f))2iz8_Fr>X@w~;^o zJk$@7ON11RB)ASobE_Czb_;|yqFzNu5kxM+_dth)EAPa~_LCdkMoPwHI{TT`*+j*$O3#H&$54MK$=KuNUA_FRCcsD#7qVP3AU9s#-$5&qr%&rM0C7Au_6M}M z14D7#@8PJI;<819th{&`mH`>5Df=3wpxYMs8bU1)5;`rYgb*q?y6*%p9D@HvozR^o zU(80=vG>`+u_`G{wAQeqe_9q8sfi;t_WrGP^peo(N-b^H?e^&_?4@s3FWtp%8exbV zX&}bY8nh;eG=Wl7O^vT4UYz3hueRyPY~lXfS7RrWXgyKQMjC7}AzTO~B-EUM z=MT2{^RYR!lU;Q6+bmpSH*^2_&7;5D@gh1F;3!b>*{7kHs+)v_^ep7i%@3*mE5C<~ zz%(gl8{Box04s(DP%1(p36+5tX`Db%_cRU1=k1dx*;Y;PhP8;Hp&VTc(&RQjeaH46 z-2LmSvyPTAGNmw$2+I~=X7N0OCS+Khb^d-&zGtYtW#H<2s*W<$_(`+@ zkur!Jg$fl?8(C6f~k9eoXidz zuzI_4M(?UmeZslsYxkb)zG$g89>Dk*1R7Klus|kA=1o=(XBeIx>HXW*ZQ1|iBR^{H z*}5s3STC6D@g&4VnL5J-?*xzrastvl9l5!km#@CwTmG?+=)slqNDX8YIxVsSiqcU% z-jPOS@4xqN|L339SNFZPakBh!f#&2h0HSFCXsz{3fT`=+bchs?1#*_4P)M3RW;)X+ zvmM=bI+HdL+O3tF

u`(Z{XlwQL9?KW5SM>#oNPoOd7MHkF(epg%Q+jk~mi9K8oQst~eHeERbaDDV; zGeF%Bts2RG1y-+?cAe_rZ*KJq{XPh#hRNPf>sM&ny-hC3$K{QVR#H9$UL6SzThjGL z(q|V!z7NLb0fY-+S!U>Z2$6 zeAqxX&DvQ+T#sV$eS-CSedh#Yn4ysYnlM^>mN@_Rp9-o6}nz+EIpE;Tfvf2W)pfZuh z-vy|hLIbv5)L(fe*Ox|vLj4X&{Gl_G(Asm8!>n>wbZSawx6(ec_F~Ed0B7e3Qz&N7 zD`-Mm^vTK0??dxF-8|fTXAr%tL95G!CKeVpPhn(tPT`P6?YqDCRWfqDKF`ZgRj~~L z`ihFM@up~F+^UfRM@+Q55Y>@QvleQ?Y2|x+8>&IUgwFo4z=a+&5GX{fUP^aZCflmL z+HLlTwAf0gr|hdTB>7%h>r)u7h{(4yV{ddi4?^3ti-swQE{clf9wYI5X+D)sUwbN+ zWwVuk6zGlaflLbJgWGId8GPNKa?CIv3=g}I<;$ffjo%*wkW!3iMPBYD4Bb*v`sQ%J Zo4jIh@95F^Sk8wCU}=VczcO{b`!^P*hqV9z diff --git a/pkgs/games/cards/hicolor/card-4-0@2x.png b/pkgs/games/cards/hicolor/card-4-0@2x.png deleted file mode 100644 index 42ab3efe5668e0a7e4245a3b6c8c39cf06bdc2e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5397 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 diff --git a/pkgs/games/cards/hicolor/card-4-1.png b/pkgs/games/cards/hicolor/card-4-1.png deleted file mode 100644 index 165d896c054bde623bdb6fb0e2ef0ffa6bfba7ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1724 zcmV;t21EIYP) zdu$X%9LGObTHErdL>oX0O+mndC{P}uQUNuDs-Q%an1ThNAXP!JDlJgjAa5EFkOGPX zYY`eB5CI_s6CMUguqRbw3j}!yRsvYSLTPEwKPKdQ-P`Tm?cVG)x1Z#4H?x!Z{_@Q} zW_Nx&XLC3ltXVV3fki#+q^B3#Z29?V4uF)DG_xZL2+GQ?V7G4r?1X@2Onu_xqe(~@ z2_Vd|aF1n<2B9vco%>xT3rLRb^7`U04?|CYz4+a?2Mil%Y{U|^T=$%(`@_#)LFsnbk_X{oaQK+mi#*}i zQpi~1EKkmbbC-;ZRMk+uFU{t%Wyc!Nq@++e%KrM|nPmXRem3ISz;G??cDL@7~?Dd&yl52aDCW z7yJO5cK8^gd0MU~jL+;634t2u@6D}cDjO*vDg z_gxRm`ZSM(f<@4>xsPF*poLL)_ zx;1Q^5BG%`6smkJYe0>>3go z0kQfARZR`$Ba0k2htG;E-9z!Fh;lcXHWprb##x^DGK?N3F{Hpjd9||HAU_*UoDoCu z1=CFkD==_B`_Lj1HZ2k3hHyWPQj6%gTycb6KgtH1Iru@EORul%+bIyM+3_o z4J>msu*}gQaLkdJw&EdyV~)(U6%SFreUORFv=uKff6tMbw&Eq`nj$8@d0zqk(svQ1LlvAWu~ooNnqSt$xK`Eg1|5bfn|;c zmN^<&=4fDknKNu4OixwTzxEuYjdH2-k2(8~dbT)-Sz5E+gro##`H8OZNv2|w z(fCXGrOPlO8>;R=*Eo1I&Tt9cTA|J0i;rROIFW8wxELbB70ry@bE<1#+)TJy0hPDK zi?lZ@4V5rVtL=kg8fe2jF(>Z^W6jB42}h4R%csu4l)1hwZ6!l%Ku;LbPj$0#=6t&c z)_tR_-?<-_6&NNXQ_C20%Fe*Fh3ebquYNh986XbmeQx|Brn>q%D4>4aWceOBPa6j0*)H$~C+l}YzFN%*EgZe^_#?n?Y zwd|$h`^jFegFZJ|X2xBumS%{NW6cSU%K3=jB(~fghRnX*F?zh zFeqFk@@|YokJi0xj-p*+eGawdtuT5J7#9QUa-8L5GoW`jLnU-;&6_3$e^u4uiq&ld zJe8_=Tmk;Lw@OZe55~j4H(<B diff --git a/pkgs/games/cards/hicolor/card-4-1@2x.png b/pkgs/games/cards/hicolor/card-4-1@2x.png deleted file mode 100644 index 6ec4b2ec9eea0cf4e874830787c8a56225297599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4443 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 NYGh$pp?^E-KLCh8BgFs! diff --git a/pkgs/games/cards/hicolor/card-4-3.png b/pkgs/games/cards/hicolor/card-4-3.png deleted file mode 100644 index bc37ac5e676a85d6f94d72fb57facccd38289201..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2158 zcmV-!2$A=RP) zeNYtV9mhY%NO%z&1}UN#suClRs0C{|BO1l3XBd&H5CfB!xdD_LNgSuCh5`bDrlVsT zgGbcFI@JLjW2T8!8QNH10j*rIMvw6|)|W`sDMO+j*l_)W;o^DA;@vH~*SY=tb-T~A zzwd9pvoFu?{_a_g)oP`(GTVyEBbdm|ZPI9r#w;s9Mn;y>8F>UPEq5@P{tTG#0o9mC ziH;5>K0Xzo+Z+{PRC7ca@aV$6eTT`+Tp`%8t*ud(ggl7>LMy|=LkSN4iQKt(9D?SQ zm%q(|1v6a^+R^b4KR;iWxAzn+!E?^QfdMWDv{*WrGiNbo^Cg#Kc#4*wIYwg*1qB({Z7)ohv zz3YCa3TTNA0*4PD0>J(I4@84hR_@~9!4raQckZ-dFsyd^+~o;ccIH^ER=eNz_00gp z#l`j-;OyCpl$01nMZWy9k*!Nl$01bdbEj|Gbd47 zy9KRwyx_)-ji)(r;>;5X-M{~Uk3as@cP&OjErQOoA+?{ZavqpA7uCL_n9!E z_e1LN;ZshD9Xj+6*RqsZs|Q){%B4C{%B9t-ITtVfyU&f2lc(b2V;^Ge+GPN|`))Qt zL4kH{^X4VFlB4WeJqVg}?%XA&OnIH-$Nwq1@z}A?v3+|vv9VD^L=2&zUmpd^439 zGqeN+1u|yL2nEwr2D@=iWaLmHBZp!(Um`Oznah{2^?K9k4G6xPiHV6~-8#ohy0@Xe z4i-T*M+DUz5ma+TP|XoRHAe*191%RmoQ{sZU%AMQN0=jL*@`oGggJ7StvG|?=EzyL z;w*}qBWKx)D=21;oTVhLqL?{ymXf%NBId|lO5!TAo8xRLiIRtx?B*y@O5!TAo1;W2 ziK{3+&gly!Ps*~JqeLl*tH^GS5~U=rBKY>9zmdC?#8o`voFix1iZdv(=RD5p)p@L5 zou_mf4tT_#gs(C{oFQ3Y*6($TJ1Oz62>X2)!29%oi2yEx_Ty0j-#+}2?+_~xpm92 zg3RsL!QtVdtXh@paLhl>Q&0J_VZ#cy4h<=^ii7|KOSFf}65t@=hl5tK> zP8vx`38H<9iw(ra3SSlE)H0dO0KE9(&+W_;GEx$Ae0+Q`8VeabI9RYfDJg*^OJ0#e z%5ANl!}3X{pO9>X93CEu(OBrPJ~T9#%E}^#YA&U;=FXi4z^+{fsH>|No#92&+lSe+ zCzF$tX18wBrb4%8U6WF)tn4kc+VNN{ousEPCnjbtQ>MHwSePmKy;W)HQrn1g@!~XQ z&z>x`gj-s{!GqYpzml4o^%xAVGJ5pSICJJa_wLF!%L#& za}0LRCdM0L~-E2W?3eTc311(z22u5?YFWwxn|OKR!ghRuv>0x zYwxwMN7Mw$NzZ&_PlDH(}D$6JnF>&FkvzQq$-w>r(rS`0ifyr kgwq7|6Hbqjo7<%MAK>Ar3hXM7+5i9m07*qoM6N<$f>usY8~^|S diff --git a/pkgs/games/cards/hicolor/card-4-3@2x.png b/pkgs/games/cards/hicolor/card-4-3@2x.png deleted file mode 100644 index 8728b316a918e76ecc1a07c2d353f89becb7d24a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5001 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 diff --git a/pkgs/games/cards/hicolor/card-5-0@2x.png b/pkgs/games/cards/hicolor/card-5-0@2x.png deleted file mode 100644 index 7e52b2c8cfb34c0612687ffc3e7813c99e5b1237..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6062 zcma)Aby!qiw;s9#0R^O_yFp>-ZUh181}Vu=hYm^UkS+y>P#985Kx$x6q;o`i=AWGyEuFJ}@K6UA$)D{snEE<9D5W=d~Xu2E;2HIOfo zJ~7o~Xy)x!N0d-MLD6j7@X?9h%sj@WiZg~+BT3l=2RocpICzir>vYZ%JL}SlUr=yz z%B#VvSt$W;@!uRzxzoi9Ly%brTtC)1GTXrarz<7wX@gtdr-O~^JjP?H>)3^egy+-DxbO}@nLOGbAQhvA(@C=7@DpFWghZ%%yo zju3{eKL7AVd`fC+r&Bfr{k|vr@l9xKEX#Itj@a(v_hb=pz*(FPjMbAw1Bq>Jk0)~}NTX3SQk6^&#(_ad=q19AjwDlS*~TC!9TlQ|Rb5t>fgkMh^A^HgCYBaS#)F*qWW*^?m~ zGBQ%*oW{(8hZxZ-X;r`+EcnVKuq#vkuDSWk#_r{%ty)n7Q zj9bWSD7VZ(PnX>B|_!uoUO5U6TJ zt~s|EKT^$fSHS*-+&>2fdP)r>t6hJ&vV?2RW2TxJOjeM*;Hj{n)f6EH^<{}X)Guk( z;<;JL!IB`3t6APh`xO@1v&gog;Ql537I@1s=%wd(X=z=?#>RBHaq#}wE_N-vpv{sz zg>KCT-g)vwCkPbrk${?7Sn4qDgFI&cpaAlt^1hmehP)jN6J+f;Nj*Glw>KE9{hUq` z%^WZ+?+-pXDIP2!AXtZ0lSLOwN=cbJFR!nA|0bKdmq7pL-ok1h+ibNg5e5toW0vt~%gaYkL`rzqe@r{x*)DQ4)-i56YWoBaD6E@>sX|dr$JWh* zj=X0dVK~_kz!gThXTF)`*D+giRmh&4QQV_{>XsD0?j!z1K(wC7~x`S>yP`=Ee>#fKj)=5GWfOc9MzD`9tw zb!B(}=d6qICFBCRPNn8=FuE@Ei>ZFj+v}!GR>RlSWZJy&@)F&a_)t9`n=m0r<2d$- z37_PoD3u=UNmE_DIXtx2#i&t4PAj&9IN5&71!a4;V_dVe?S;od>D~DTBYSSm)Go@A z+pe98zFb$*$QF(C_1Uh&0qkjz#>Sf4H4JkU^0c->p^TXxKfb4|JT~hPBKKxc_5*Oz z2)J_aLPSWTk5Hb$jFDBm;CJzO3_#(0FSgY;7=e3;yB~)AQW&I56<^le?@72)7m06f z7CG6u!XA{piR-}3mGmYr)9zwY3>CCP^59BV7A(XjP(I?vAR#7})97u;6m_dbVrT;E zt*r@xgM%bh67IMd$-VSt8OT*v*3%;dK#CDiLr1p!qjXgRJLe~=lWjAMf+0-3bvHVh z09-NmrTo^`0*mTeyw9M+((xcqS%fke~H4l9Q8T7Z(ZfBPiE?PvTu) z%K*0?##f$RyD|yTO)q_1GejrmK9ZJ2=;iYVmO;J`4-OsF znO2gtu2~apIwjJH$J!uP=I1+}PdA@}fS9cc{9_XyInW+`kLrk|9f_nNBV&SZT%0ws zNchFQc+fR7gJXx3>e(;`GEU2pUgIp}MVNpDs&l%T_DlV^nOvl8$7GmRX~mky16PvibY;r;F`Di zDDE-_1WH5p=1swp-Zq!B9UYXimwQ|)@id_^G28~e%F2&f$;EQP`w>%Q_L`bxD+7V_ z03;nHB=X&w+)!*84wov2#>6tz^CS%ofy}=(-IKiupefO|P?47x0zjj4Zy`+3rqff6 zbp``uZ?6-yx3v`z9)Z)@(?jn#cuf@@y}CcDa}%azh;8F4!b8}8TWMpX`SEEyt$1mhGBeZ1kC9B=y+^;R_mtnV z8_$$Rl5AH(M6F7+)A0#6?5px0B_}iKUj<%CoEl+$LQF$}Nk4oLGlWO!{<(@IK9qoa zEUff%z>vV9^u45DwZ4`Zn=P#{{~7@#8&1B!sH!TtmXoPi0P@1?T)g!+z8y~(D=CFr zFZb?xF8A{J_gqBLCL5Y8pN0A=3MI%fwi5~58S`nU^|&OKm;W}uvlE&q zoB;*8RI*I|H$Ye z?Ys9c4GewoHlL~sjQx!f$+U(eL?SN`1;O`|k5l{)Q~ci|eFNZ?_m#~!uO@9oU5w7& zRptmt^ex69G6H4-hA}cjAb$^;&bR!Rr`mtV5YFg5HY+h8gG7!Z7c^VlTi2Y3OX9KQ zHiM+g7heAL9&-5aKOwLFd3uUh5=r-Hd2_bGBVsCG#wzewhWy^(EB4!&oI;oA#TbF; z#r`4bt_0v7F}oOv)dBQxprmVE+FSv^E^`_j@ME%{ir!V|>pz=8*}nW|GgaM7|14x3 z`y(D}kK=aUs*rpC4q`b*(*3PoZ3i_Pbotjr+4EiH8dQDKR^CJ_6^N}kyPfkUGeK{9 z2S>W%fSHx3ubcB@A|$l`5%}V60spKhh<_{XZh-AB_kSDw|8XY&MP!w0InUd$Vf)||ykZy~G4ac@bKlJXDWL&<4Np&j@i~C=LuF>SCJe}4!x|gu zj4B=Si&um$PIt?vRMN$i2*S7`JV!4Qo1comz?QRpWgS< z>Ssrz^tDeKbn=?QKYao}66Kx;*d+&tKR{${$3A`K9tHI`ca@aPbrc#32-y z4peweY7Dkd0gg!r@E_)6e2XTOO@DTt&smbV)mj+dvT=P}>%Q1mgZ(4`n9FmZ!6&~? zZ^PA`UlkyJ$fn>+2n7)(Cle|DGy5*ERAKE=!Gr{#gH5mPXnHYwsWa$h*&P)u_(eEDX%Sbld7!j>D=hT&F83-X{b#%B##JHr>BG`N0s@X|yB=NB zZvfukF0(gj1^}({dG=m?r#6xz=D%M-LdH8tgN0=zAwTg zAdS<8Hd${knn?=%wMGaF9^grJb7GIVAUo4m@TtYI@{JQW>P7TjW)>Ez#E0Vw%n(FZ zGy*7co*KB9q<4ttpKll7WNpci(1GJeODgm0PlN!jFJ#-rczLzUVr^&l}#Csh4^T(62#h0jZE+AR%qh;5UUWc1cl2K9? z3h}-B_Knyw0K!;S53sP%P;#VvZGCE*f$jOhb}8@clM_+Un?%_JRXf;9ZRGJWv2iVD z>s7~#cDmO-eoc$byOcr>2VZLMFB}f8B4+X|rc_dBSI_ok_t$jk%bEc0plghhLfQfW zC+W@3EY^@TUj5^T-q=``WTH%FY=SNeY#I^9d+L40~T@HKyF5=S^?gT(yiLzlV}WFH}h-a)XAMr%(NDhLITD@=E7hA|BYY zn~R%!{Bw}6@2k)%qzcaF%^qdALV@-%Gz8#g07BLVH4BPr!CE3i|9%Ief0}8vx}hPY zq@-+kYV~hyg{jKMlCj{@UP=AT7@Xh|XsiHgGk~Ykfl!V6bDpn8FKL|Y*&KKqsz{xl z{E`Z~B+8UHw*Q8nje(LMO3CGX$b9&s!Jul2f{{;RcAMB_hXzzaR?< z6ce|$j*22hP3d{)*xRT1TpcGSW&4@AHRp;A6e#|HZ(i^B7_g{}$Y>S7ii=4OSKRWa zvw3;3&(>fKN$K@e&0c(n5UjG~EMHIxM`9tJnT18{`Qf$QA}8CA7I57u zo@|i*+SyWyhx2B!Lw`)?<+(oRW}yU>+~#LGSSwR7SMT)V*p-#7NU*-&7yZo0#WER1 z^VPfn8vg6q>)M23cD9opX?d<&cbC1%f}dnY5S1u$7Mj}5G)c!n#Xabv!vjy7N=jVb z4xZR)s%|#=H@vA|c%w8z&(ELmB5{8oqUr;#!@I0(tJ(YQLFEj5lAA;tJORbKvnOK9 zx($Otr(1k843WqdX+NK#UhTXlEgp0WWTlT<$A81I6TrEj8EvB&Wb3M`o7R5CrR9O} zWANR(RHoFU7cU2BORQwAwtgKFz{|6mH!#|#Oyl^>7U!48%duES;}a%^%gu}cNf|LW zo9u`0K6peTG2Rp?{!!$fi3q;h+%0wM0m-qF+isx>)YQ)@fm3nm#Q!y%ECKMvp8hQK*aR|GvMQv0Ql&M(TLc@P8O~YgKy(2EkQ4f%`$fz2! z^k(bIu;At8oc0dhWz1_TH`m{Q1Q6_Or|Xs_x@}J<-4s%9PYVL5c}ZF_&w&1$urR)Q z*JwqpJ{Pqo{ayVz-bp!T*s`)7;o)a2tc8g$9*T@^HYzE^9X`AF0Hwcq@<;2H7htU= zL*=JT8DhdD0!N#wUWOb_^FULOlb^pN_58wbG0kXAGb|c{&t2~(sl{Vf#h5KRj>(8z zc)Y=0)KK(UJ-V^6zwzZVWswvBAeMp92WTN6(X;bxKI}xyAveY)sY^^iazJ1^^qWTS zw%w$i%ydQ!$5pO^e9IQ4O-xR!g03v#R&7*(8z!kWA%2$80`-P@Yrt)b6AdAv)aua` zh$wT*c(BU#v9J*Hw$Wpz=K_a!0gWU#KW`8jY zF8UbQsF0=QjOX!-SNx^5wY-1}Q+0P!02HMQ=stPAta%G`LPNv+nV6ZC(5zqTNzqa` zKuZ=VwsEadRT#J~DJ=$MN4Eq$4XNT6ObYOK7QzVf?(U=R5axoX_z?;rad9uAlvX4u zQmg}(4px>QGbgk0Zf)mnV#u*;D%;t8Lt+u=2)sPETUxfj0s+n6mDnceVWydZL2F&j zfy~HALJn98bF#X&_L+pZxb}UZt`hS~~jX`v8VL gTIi-i^ItRY?{_!yd~zTK`tTriWo@Mj1?$lN0Y-1TZvX%Q diff --git a/pkgs/games/cards/hicolor/card-5-1.png b/pkgs/games/cards/hicolor/card-5-1.png deleted file mode 100644 index 773b1ed5e053bee2e103a6d5c20815a6c161881f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1834 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 diff --git a/pkgs/games/cards/hicolor/card-5-2.png b/pkgs/games/cards/hicolor/card-5-2.png deleted file mode 100644 index 429aa1edb96df5976ac4b986c2e1944e72f517f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1974 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 C%BAxF diff --git a/pkgs/games/cards/hicolor/card-5-3.png b/pkgs/games/cards/hicolor/card-5-3.png deleted file mode 100644 index e1433f85aae994dba554da5dd854a65fae87130c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2308 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 Ya=s~a(|NiEl#)Rz3L5fd&n$!g1Io!f8~^|S diff --git a/pkgs/games/cards/hicolor/card-6-0.png b/pkgs/games/cards/hicolor/card-6-0.png deleted file mode 100644 index 96a61f703205f13c22fca4006664b636eb644410..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2358 zcmV-63CZ?}P) zYfuzd8it?YB8eg*g#=MBBHk!P0o|a{;0-0ED=eV6t}(`POHe^v2|oe}tI<>`#;Pa* z6nCLC@q*E)WVaSCh?m_Rql^)QL8U|ykedcCpnx#@gPo2zFwUjvp`3Ys&2)c#-cxU# zK6AeAuX|)lrIOUtKPxfw0tzA{^JTJ>lx0eQg$tJ%yGPxEqM}+9iX(sm3osk=A|pmP z;^Pwx&}NRAjxn2~0V~yq($af)dHtc&z|*HQ@b(@lNvFCCf;m=Jmbkh)s|8e7->0#$ z8JSEbX~(()f;lcOPF%fuq}|SY_iFIcU#>THKxUO-k>4v~=y@bny_Rb!7HJz@LyZ@F}-5C?}ogoXz2{`-@=