diff --git a/descriptions/3x3.txt b/descriptions/3x3.txt new file mode 100644 index 0000000..898f4c1 --- /dev/null +++ b/descriptions/3x3.txt @@ -0,0 +1,1000 @@ +3x3:6d48a14e9 +3x3:9a4de4862 +3x3:8d86d6324 +3x3:424e77c42 +3x3:1e44d9856 +3x3:312edd812 +3x3:64197c8e2 +3x3:9d8193459 +3x3:17c4d22e8 +3x3:8b26d19a4 +3x3:3849b38d8 +3x3:8dc9626a8 +3x3:c62a6e382 +3x3:4c43be126 +3x3:4627b489c +3x3:67423c853 +3x3:8cc6714d1 +3x3:4681db391 +3x3:1616d7618 +3x3:1963d4872 +3x3:318a3c974 +3x3:8d28e1ce2 +3x3:1929b7186 +3x3:cd48e2274 +3x3:1165856d9 +3x3:824be6658 +3x3:186eae644 +3x3:219dbb141 +3x3:2e9152c78 +3x3:9e21bc2c8 +3x3:992ae7412 +3x3:2dc8aa364 +3x3:352dec842 +3x3:3a1771892 +3x3:9e12514d3 +3x3:4d19e1296 +3x3:8667ca826 +3x3:8417e3ca2 +3x3:238e76486 +3x3:4b1373229 +3x3:2b6c71231 +3x3:4684774a3 +3x3:2b28bc698 +3x3:191d7621c +3x3:2387e419c +3x3:681eb3432 +3x3:841adec91 +3x3:3529d42e2 +3x3:1c187e253 +3x3:248dec352 +3x3:9443be161 +3x3:416bee421 +3x3:c32abb121 +3x3:99227e4c2 +3x3:c54599932 +3x3:1726711c6 +3x3:84cdae826 +3x3:318cd68e8 +3x3:1e33b2164 +3x3:1e21e13d8 +3x3:489d5ec81 +3x3:891ced611 +3x3:4611da4b6 +3x3:9d82e28e4 +3x3:1987bc249 +3x3:681545373 +3x3:c187764c2 +3x3:c123db294 +3x3:1c1ce44e9 +3x3:c42b59c51 +3x3:47383a1a6 +3x3:4791e22d4 +3x3:1e88583ec +3x3:3223b3171 +3x3:353bc4464 +3x3:391abd818 +3x3:2e26b924c +3x3:6a1376898 +3x3:351bd1831 +3x3:892be489c +3x3:1324bec61 +3x3:3e485827c +3x3:449de7418 +3x3:4e3cea241 +3x3:8928d33d2 +3x3:8c9bea248 +3x3:9d4874178 +3x3:c223dc2d8 +3x3:8c82d63e2 +3x3:69829e8ac +3x3:8c46ee226 +3x3:2c11ea8b9 +3x3:21995e4a6 +3x3:2235933e1 +3x3:8d61ba198 +3x3:8297be441 +3x3:1341e3cd4 +3x3:461ce11b3 +3x3:9c82d92d8 +3x3:8c8bb2954 +3x3:2d96d2234 +3x3:c12eca16c +3x3:9243be298 +3x3:c545113b6 +3x3:293be2161 +3x3:8c26d8273 +3x3:351d68233 +3x3:cd1538651 +3x3:489da7381 +3x3:971aa4139 +3x3:3e45dc242 +3x3:139cd1271 +3x3:1386d711c +3x3:4693b5138 +3x3:318b7c2c4 +3x3:263de1298 +3x3:8538b71c2 +3x3:ce8a36c11 +3x3:3c21de1c1 +3x3:4317714c9 +3x3:118b77816 +3x3:641ded421 +3x3:4312cd95c +3x3:32837d891 +3x3:1738b8872 +3x3:9b1a7c112 +3x3:ca19e68c2 +3x3:882e7c3a4 +3x3:6d95a5822 +3x3:488ae36d2 +3x3:3724e24b1 +3x3:9711b21b1 +3x3:8c82b3374 +3x3:4b18bc362 +3x3:1d6152ce2 +3x3:828bbd988 +3x3:9d35aa888 +3x3:1b4cd29a2 +3x3:4b48e6332 +3x3:4593b9291 +3x3:8116e54b6 +3x3:424e7ec88 +3x3:1914a53e3 +3x3:249a3cce8 +3x3:129bbd844 +3x3:4b81b19d8 +3x3:1321be2a9 +3x3:2e66e5288 +3x3:2763e5221 +3x3:2e36b1131 +3x3:291cb81ec +3x3:4319de449 +3x3:2912dec61 +3x3:c216eb1c1 +3x3:9c24b3878 +3x3:149d45659 +3x3:c489ed194 +3x3:2e66e2834 +3x3:432ee26a8 +3x3:831cb81b3 +3x3:4312db991 +3x3:13655a391 +3x3:c117de214 +3x3:832bb6324 +3x3:46467a493 +3x3:3e22741d4 +3x3:116e77442 +3x3:c81dab829 +3x3:284b76951 +3x3:cb1ab3248 +3x3:2bc6d5111 +3x3:2c2be6c14 +3x3:461772193 +3x3:17cc91651 +3x3:422ed7928 +3x3:1133e7431 +3x3:246ded281 +3x3:899e7a218 +3x3:8343e722c +3x3:652be9448 +3x3:9223e7231 +3x3:8bc9d24c2 +3x3:1761e1272 +3x3:188deb823 +3x3:181dee883 +3x3:494cb2279 +3x3:6915bc868 +3x3:8687716a1 +3x3:6a8edc281 +3x3:121bee216 +3x3:8c2de9384 +3x3:424bdd982 +3x3:3d4578892 +3x3:1e11b2279 +3x3:2344771a3 +3x3:2d2ce3312 +3x3:8416771a3 +3x3:c618d38d1 +3x3:294d74c51 +3x3:823bb9168 +3x3:ce45e3818 +3x3:934abd841 +3x3:4d137c922 +3x3:473cd8238 +3x3:9e44e9468 +3x3:2944b7664 +3x3:4bc4a8374 +3x3:c928971ac +3x3:611bed481 +3x3:3924e91b8 +3x3:1349d14b9 +3x3:6589312dc +3x3:4b48d2c71 +3x3:48c51d65c +3x3:1628eb368 +3x3:8933748e4 +3x3:848ed51c9 +3x3:159cbd248 +3x3:814bedc82 +3x3:1397b5248 +3x3:2bc9e8862 +3x3:1483ea1b6 +3x3:229ceb861 +3x3:9a86d42b4 +3x3:121dbb813 +3x3:8825e66d8 +3x3:8e9c65621 +3x3:2e4173c32 +3x3:8928b7456 +3x3:8782e84b3 +3x3:248eb7621 +3x3:4531764d1 +3x3:8d36b5184 +3x3:8c47d8954 +3x3:2887e7681 +3x3:4949bd984 +3x3:2e83d12c3 +3x3:178cd4293 +3x3:4117be82c +3x3:464ed28c9 +3x3:2336b5894 +3x3:3d9a5a221 +3x3:3447de242 +3x3:2381da2dc +3x3:1c817a8b6 +3x3:4e22731a6 +3x3:85c177832 +3x3:8267b7211 +3x3:47c6d8298 +3x3:9c88bc272 +3x3:4185b33e4 +3x3:431ab8cd4 +3x3:8339b22e2 +3x3:2d437c388 +3x3:142ce51b3 +3x3:958cdc498 +3x3:2936e5192 +3x3:12ce73132 +3x3:9715629a2 +3x3:6a1c784e4 +3x3:281b77123 +3x3:ce2ae1861 +3x3:2dc965c48 +3x3:1617e4193 +3x3:1a3cb3864 +3x3:1916dd22c +3x3:831ed8199 +3x3:9a1dc4236 +3x3:8b16b3216 +3x3:8b29d4c52 +3x3:351ea6348 +3x3:4644e66b4 +3x3:662a73268 +3x3:c7157c184 +3x3:4726b1293 +3x3:4d68b14e8 +3x3:4768d1278 +3x3:93183b1a3 +3x3:432c7b88c +3x3:1b315a334 +3x3:9a3b14658 +3x3:8825bc971 +3x3:883db6192 +3x3:488e77116 +3x3:264bd19a8 +3x3:682bd34c2 +3x3:c287b7144 +3x3:484edb183 +3x3:4c13eb226 +3x3:942ebd284 +3x3:ca2e589a1 +3x3:424ab93b2 +3x3:3a8c3417c +3x3:3219de131 +3x3:4d29d9682 +3x3:2799ca981 +3x3:6a318e159 +3x3:1648dd364 +3x3:222dbe384 +3x3:cd18714b1 +3x3:4686de21c +3x3:2d11b11b6 +3x3:8137a6958 +3x3:4626e6259 +3x3:1215e7c32 +3x3:3c11ed138 +3x3:c53d31838 +3x3:611baec82 +3x3:342bd7481 +3x3:231de8193 +3x3:14c9352d3 +3x3:2c9bc5143 +3x3:14ced92c8 +3x3:168ee318c +3x3:cd24d68c1 +3x3:394a79864 +3x3:4a34b98d4 +3x3:2d34d12d1 +3x3:9b4ad9181 +3x3:621da6ca4 +3x3:171458c76 +3x3:2897bd211 +3x3:1b28d28e3 +3x3:8319d7324 +3x3:1869d7898 +3x3:2b3cd1831 +3x3:8d68b88d2 +3x3:1ec4e51c8 +3x3:44367c4e2 +3x3:8718e48bc +3x3:2e2c7941c +3x3:4e94d5838 +3x3:8463ee434 +3x3:161ddcc22 +3x3:8c8dd6146 +3x3:224bda1c3 +3x3:8b883965c +3x3:341bd7182 +3x3:2ec4d2474 +3x3:8d31a89b4 +3x3:918e77841 +3x3:9b1ab9421 +3x3:43237b823 +3x3:8d4672136 +3x3:2b21e1176 +3x3:2724e28ec +3x3:89c7ea188 +3x3:952db2164 +3x3:464db6312 +3x3:23237e388 +3x3:8b98714b2 +3x3:822edb419 +3x3:8c1a76cc1 +3x3:9c149e2a3 +3x3:3344cd4a9 +3x3:954e34496 +3x3:231e73321 +3x3:1b49d9426 +3x3:8b18b63c2 +3x3:2e43e9443 +3x3:4346b8176 +3x3:2d68782b2 +3x3:8d96ca388 +3x3:c41e73231 +3x3:4837bc862 +3x3:4d4871cb1 +3x3:362479871 +3x3:85ccab28c +3x3:4712e43d2 +3x3:17c3e18c2 +3x3:222ab33e1 +3x3:45949e398 +3x3:1648ec3d1 +3x3:4e12ec253 +3x3:1c2ed14c6 +3x3:8ccc724d4 +3x3:3745e4164 +3x3:8343da266 +3x3:3e24d21e4 +3x3:3546b41b2 +3x3:244eb5233 +3x3:284bbd243 +3x3:8c1db6846 +3x3:422be7216 +3x3:2dccd8898 +3x3:114dbe186 +3x3:496375198 +3x3:1c49722ec +3x3:8c4ed86a1 +3x3:1731e28e2 +3x3:4c48dd2a9 +3x3:1c4ee846c +3x3:2718e4273 +3x3:45c273874 +3x3:1b12d26e8 +3x3:1716d6829 +3x3:952ed9842 +3x3:c525986b4 +3x3:3325be814 +3x3:9a344b8a6 +3x3:1d92589b1 +3x3:1728e9453 +3x3:8b92b12d1 +3x3:848b7b819 +3x3:4117be443 +3x3:681dd3432 +3x3:1a94e68d8 +3x3:426776431 +3x3:4d8378ca4 +3x3:868eec381 +3x3:c816bc4e2 +3x3:12c67e262 +3x3:8ec6e5822 +3x3:6a2db2438 +3x3:672a93819 +3x3:1c43744d3 +3x3:153167994 +3x3:16c6d8472 +3x3:9388ee438 +3x3:1e43b982c +3x3:21cba66a1 +3x3:3b2566219 +3x3:c5275612c +3x3:27c9b2268 +3x3:4869d31b4 +3x3:361ae7812 +3x3:232b7c984 +3x3:1c33b88e2 +3x3:952ed9144 +3x3:3a8da9283 +3x3:274ce6c24 +3x3:2136be1c2 +3x3:444ed549c +3x3:984eee441 +3x3:3a2de6288 +3x3:8748d9331 +3x3:2a397e411 +3x3:2329e22b3 +3x3:982bd7842 +3x3:4c43b44e3 +3x3:193764954 +3x3:661ad6891 +3x3:628395173 +3x3:2346d88b9 +3x3:6c15ce246 +3x3:822ebe483 +3x3:2d84b1c72 +3x3:4869b6871 +3x3:c82ea6ca8 +3x3:6d12a81e9 +3x3:8b4274276 +3x3:226bae311 +3x3:6625d3134 +3x3:429cbd438 +3x3:23ccd1272 +3x3:8263e38b1 +3x3:8e43d819c +3x3:186b5d42c +3x3:168cb11b6 +3x3:652bb9242 +3x3:8e4852cb3 +3x3:873474274 +3x3:4749e13a2 +3x3:876ce4892 +3x3:6dc4584d4 +3x3:2b4271479 +3x3:c64ad7284 +3x3:1c8eb6641 +3x3:43c9ea898 +3x3:2d12e28bc +3x3:8315b3361 +3x3:2193b78c4 +3x3:692aa51cc +3x3:6a8c342d6 +3x3:4146ea2e9 +3x3:c74ae2832 +3x3:1c3dea841 +3x3:1187de688 +3x3:8e167c823 +3x3:6e2594958 +3x3:198edcc18 +3x3:9942dd4c2 +3x3:ce25a146c +3x3:21159d9a9 +3x3:9b41d6138 +3x3:8e64d84d2 +3x3:4a395e324 +3x3:1643d22e3 +3x3:4c1ee2196 +3x3:881ab7c31 +3x3:924c57856 +3x3:c54ee8168 +3x3:9342ec8e2 +3x3:8815d93d2 +3x3:2ac8b32d8 +3x3:8784e2276 +3x3:8e19ec483 +3x3:148eee486 +3x3:ce3a54134 +3x3:6e3551432 +3x3:974ab2261 +3x3:498e79c21 +3x3:412dde684 +3x3:2719d3612 +3x3:44197a8dc +3x3:1925d2cb1 +3x3:354b7c821 +3x3:8d13e2493 +3x3:831e94356 +3x3:4883dd2a3 +3x3:c385ce129 +3x3:8689d7c11 +3x3:8c277648c +3x3:3586b42d1 +3x3:2819ea279 +3x3:864edcc84 +3x3:338ad3894 +3x3:8447edc22 +3x3:8827b33a4 +3x3:66487b2c2 +3x3:226e7b881 +3x3:4712742b3 +3x3:1926784dc +3x3:9311bb134 +3x3:8d617a834 +3x3:2d19d8652 +3x3:4d93b41c2 +3x3:163b744c8 +3x3:4245763e1 +3x3:14c75b119 +3x3:1e41b6c34 +3x3:1c69b5891 +3x3:824ed7988 +3x3:1885aa9e3 +3x3:214e7e219 +3x3:1c35a2c71 +3x3:6c18d64d8 +3x3:6c4a77424 +3x3:8d34e48d2 +3x3:1d4cb912c +3x3:2866e78c4 +3x3:218bd7c14 +3x3:9a2de1131 +3x3:1646eb113 +3x3:4c43d42b3 +3x3:654d784c4 +3x3:8b23e183c +3x3:3515646b1 +3x3:2827d3ca4 +3x3:12c6bb2c1 +3x3:1569db888 +3x3:9d2271274 +3x3:348b53c58 +3x3:453496671 +3x3:8b88d68a9 +3x3:352bacc44 +3x3:932a77821 +3x3:8914e9ce4 +3x3:4345c6353 +3x3:8b88783d8 +3x3:228beb381 +3x3:8287e6351 +3x3:224ceb853 +3x3:cd1591958 +3x3:812ded223 +3x3:c711b28e4 +3x3:c82ceb2c2 +3x3:4721e42dc +3x3:3517d2238 +3x3:9b945a292 +3x3:ce4a76421 +3x3:871151cb6 +3x3:2b12d22e3 +3x3:441aed961 +3x3:234e72136 +3x3:4c2dec886 +3x3:44cebd422 +3x3:9d65a8294 +3x3:c847ae413 +3x3:8685543b6 +3x3:1945d6692 +3x3:1969e21b8 +3x3:1d1872971 +3x3:6b1176468 +3x3:988eb6891 +3x3:971ab9422 +3x3:ce64a2471 +3x3:4c36744e4 +3x3:831c7a4c9 +3x3:c44cdb864 +3x3:439c782d1 +3x3:4cc9b44e1 +3x3:8637ea288 +3x3:416c7b262 +3x3:49877c113 +3x3:1496ed134 +3x3:21c3d9178 +3x3:4c8c7d829 +3x3:3417de248 +3x3:9d82b3268 +3x3:25c2cb6c1 +3x3:342be7212 +3x3:8988bd964 +3x3:3543718e2 +3x3:882ebd12c +3x3:2c23d7883 +3x3:8e46d3682 +3x3:87c9b1498 +3x3:2bc43a2ac +3x3:2297b7184 +3x3:36257e284 +3x3:283c794d8 +3x3:1d9875862 +3x3:4d36da821 +3x3:43446ec53 +3x3:8943e2273 +3x3:2a625b1a6 +3x3:2b48e3334 +3x3:4912b7c31 +3x3:612c3a476 +3x3:c227761c4 +3x3:c48dbd448 +3x3:6682798e2 +3x3:1c6d722c2 +3x3:1d31b2271 +3x3:18337e432 +3x3:3a4ea3684 +3x3:842ee7113 +3x3:228adc972 +3x3:446be31c2 +3x3:69817c274 +3x3:13c798652 +3x3:848edd429 +3x3:9a4a2197c +3x3:438de443c +3x3:1716b9129 +3x3:3d4176168 +3x3:8269e7231 +3x3:8d2ce9c88 +3x3:1d2cd129c +3x3:434ed84c6 +3x3:883773891 +3x3:816ead819 +3x3:88cdeb142 +3x3:221a553b9 +3x3:314597cc4 +3x3:8246de459 +3x3:1815bcce8 +3x3:9d8574162 +3x3:c62ad7482 +3x3:8613b7119 +3x3:8724d82ec +3x3:1738711b8 +3x3:3a17549a2 +3x3:834e78163 +3x3:6419ec8d1 +3x3:cc28b7131 +3x3:8386b7143 +3x3:9513e21b4 +3x3:49cde4494 +3x3:236ce5168 +3x3:2c9b72862 +3x3:6545243d6 +3x3:4914e99b2 +3x3:9382ec4e2 +3x3:883d7b282 +3x3:13ce95243 +3x3:4786e3819 +3x3:4383e4479 +3x3:2c19dd388 +3x3:434ee8866 +3x3:831a719b2 +3x3:8642d7c98 +3x3:8e83748c9 +3x3:18297e2a3 +3x3:4c1bbc413 +3x3:48ccb34b4 +3x3:971a54296 +3x3:4b33e88c8 +3x3:8b46d8954 +3x3:8619ed382 +3x3:ca8e614c6 +3x3:4d88d14ec +3x3:324bde428 +3x3:c5c3c5898 +3x3:4b94d1172 +3x3:1627e3944 +3x3:8316d81dc +3x3:6147b3434 +3x3:652e62139 +3x3:2c39b4478 +3x3:1417e3958 +3x3:4827ed886 +3x3:8437a7681 +3x3:434ebc819 +3x3:864776382 +3x3:298ae93c1 +3x3:21cd5e648 +3x3:3a46b2872 +3x3:1817e6651 +3x3:4b6cba242 +3x3:4e26e9226 +3x3:4763d4134 +3x3:3586e6861 +3x3:4dc8d28b4 +3x3:8b487ccc4 +3x3:354db2868 +3x3:1437be444 +3x3:2b46d3889 +3x3:2621ba1e6 +3x3:65cb8ac84 +3x3:c427d6238 +3x3:491a339a6 +3x3:318e2535c +3x3:891ee229c +3x3:2e42e817c +3x3:162ed81c9 +3x3:231b76914 +3x3:3c445a8d6 +3x3:8e89b6c81 +3x3:892ed8899 +3x3:9c21ec271 +3x3:2624ed6c8 +3x3:ce84792c1 +3x3:128cea4ec +3x3:4d4671136 +3x3:2245b7932 +3x3:131bd9311 +3x3:6189b92b8 +3x3:658da6944 +3x3:2621754bc +3x3:819bb94c2 +3x3:183c79178 +3x3:298ebc48c +3x3:9e12714b4 +3x3:4c225a9bc +3x3:4d84a8673 +3x3:8c2c73952 +3x3:42ca6d964 +3x3:9a63c81d2 +3x3:ca1be9281 +3x3:4e12b4674 +3x3:4e9ce1291 +3x3:1342ec9e4 +3x3:1d94714d2 +3x3:222a7d668 +3x3:83cc782b4 +3x3:3d8579884 +3x3:9384d71c1 +3x3:8342b7cc8 +3x3:138a529d6 +3x3:2925e16d4 +3x3:882a7e938 +3x3:431de2351 +3x3:c6247c4b4 +3x3:98439587c +3x3:1321db334 +3x3:6714b6191 +3x3:228aeec38 +3x3:16c3b4271 +3x3:182bee889 +3x3:1bc3c1ca2 +3x3:1343d63a1 +3x3:1687d3344 +3x3:1722d3991 +3x3:4ec9b84c1 +3x3:4e84e48d3 +3x3:8c26eb846 +3x3:1e19e984c +3x3:382d5bc24 +3x3:8b83b8236 +3x3:122eb7816 +3x3:4c9b718c2 +3x3:1d11714d6 +3x3:428ab93e4 +3x3:428addc38 +3x3:8829e7153 +3x3:612ce72c8 +3x3:3c1ae9462 +3x3:948ddb242 +3x3:4e63e5111 +3x3:994176172 +3x3:4d26ec641 +3x3:864dd3c22 +3x3:878cb4654 +3x3:4d46b2869 +3x3:1388733d2 +3x3:9985bc162 +3x3:3644e3172 +3x3:891873974 +3x3:4d64ea4c1 +3x3:6d12b22b1 +3x3:231ad13d2 +3x3:41ceed244 +3x3:6e6a5a114 +3x3:1d2cb126c +3x3:161377413 +3x3:18c9bd898 +3x3:1c11d58bc +3x3:8b94782e1 +3x3:3a65cd244 +3x3:688e77282 +3x3:14c6bd8c8 +3x3:4997da188 +3x3:8316edc44 +3x3:c62abe142 +3x3:6a1c92273 +3x3:461ebc648 +3x3:24cebd112 +3x3:489ca7859 +3x3:6a23748d2 +3x3:2719d2358 +3x3:8c46da8c3 +3x3:324b79432 +3x3:291edc223 +3x3:192b79149 +3x3:161497cac +3x3:4929bc4a9 +3x3:182dbb84c +3x3:2247eb849 +3x3:896975168 +3x3:419dad123 +3x3:2e9171272 +3x3:13c9e82e2 +3x3:893dea418 +3x3:4b23d24c6 +3x3:c724ec198 +3x3:28c3e91b1 +3x3:692a731c4 +3x3:8922b7c98 +3x3:4c46b2476 +3x3:1847ee216 +3x3:4acceb144 +3x3:1c85e2cd2 +3x3:36253b129 +3x3:954ed2134 +3x3:9388bb264 +3x3:4783dc81c +3x3:4c15d86b4 +3x3:4c117d6c2 +3x3:143a636e4 +3x3:846b5e186 +3x3:3a46e1178 +3x3:3a4d79881 +3x3:9c48d7832 +3x3:192a36956 +3x3:95465c8a3 +3x3:47c3b8291 +3x3:1b6172471 +3x3:6924d7168 +3x3:164bb9c11 +3x3:4d1379648 +3x3:87c27a4c2 +3x3:2718741d3 +3x3:812eed648 +3x3:9546c84b9 +3x3:4b38ea492 +3x3:4d84e89e1 +3x3:3348798e2 +3x3:4313de189 +3x3:121aee9c8 +3x3:2646bd322 +3x3:694267159 +3x3:861768c5c +3x3:9918dd494 +3x3:4b9475168 +3x3:2b49d6819 +3x3:131c7e14c +3x3:1629d7c82 +3x3:964acec48 +3x3:194bb9429 +3x3:9745bc888 +3x3:8c1677942 +3x3:1b86e3886 +3x3:3e41dc831 +3x3:2c83db213 +3x3:8c84ba1e6 +3x3:85346d331 +3x3:9e82738c4 +3x3:286d56951 +3x3:4436d7432 +3x3:2e92d44b1 +3x3:1c8db9342 +3x3:45c46c6d2 +3x3:11c9ca2e6 +3x3:894877962 +3x3:9489eb4c8 +3x3:8d82b6c61 +3x3:2c45b3c68 +3x3:1c1cedc21 +3x3:812b7b849 +3x3:621ced1c1 +3x3:1d62aac92 +3x3:2b3874471 +3x3:4127ea2c6 +3x3:893ec4358 +3x3:942ce62d1 +3x3:481bd6654 +3x3:3a87dc124 +3x3:8cccd8474 +3x3:4ac166ce8 +3x3:2139ae4a3 +3x3:3e1471478 +3x3:671876161 +3x3:42ced7884 +3x3:456cdc438 +3x3:4467e7842 +3x3:6e8acc419 +3x3:131ee143c +3x3:171979641 +3x3:2c3d32952 +3x3:1c4ad19b2 +3x3:c4251ace6 +3x3:4e88d9938 +3x3:1b13ec621 +3x3:924ed3498 +3x3:1617e6912 +3x3:ca68c68d4 +3x3:25c4ed262 +3x3:4469be138 +3x3:8349ed948 +3x3:4e11d3cc8 +3x3:829ba7348 +3x3:176cea188 +3x3:813e7e128 +3x3:498dd8c52 +3x3:c28ea99a8 +3x3:2d19e18c3 +3x3:298cee644 +3x3:834b742c6 +3x3:2193e32d4 +3x3:26c7b5844 +3x3:843b7b128 +3x3:3183bd291 +3x3:314ceb831 +3x3:6416e34b2 +3x3:6a8c794c2 +3x3:9d14521e6 +3x3:1793e5141 +3x3:3645b9431 +3x3:8237ab183 +3x3:8714713b1 +3x3:4385b49b8 +3x3:218ad9672 +3x3:4a68ce938 +3x3:431279cd2 +3x3:4e22ec332 +3x3:469c744b1 +3x3:211edb44c +3x3:8713e4351 +3x3:483cbe138 +3x3:6489e32e2 +3x3:4dc9784c2 +3x3:833cba131 +3x3:1d34ba434 +3x3:2e26e3849 +3x3:288bb39a2 +3x3:1b94b1172 +3x3:8c23718ec +3x3:2983bb618 +3x3:18c6ab4a9 +3x3:192bd3283 +3x3:243eb9491 +3x3:9784e88b4 +3x3:45c1e61b4 +3x3:1e92d1474 +3x3:3b9a2a28c +3x3:1613b58c3 +3x3:818bdb129 +3x3:3119bc2d4 +3x3:249bad648 +3x3:4837ad243 +3x3:4b4979c48 +3x3:8343bdc11 +3x3:2d92e42e2 +3x3:412e7a499 +3x3:c628be1c2 +3x3:87c3b88c2 +3x3:8c2de6213 +3x3:2dc174172 +3x3:944ee31c2 +3x3:9a23d9134 +3x3:4e49721c6 +3x3:c78aec484 +3x3:9d48b61c1 +3x3:4d11e28bc +3x3:85cc7d112 +3x3:4b4632656 +3x3:372a58836 +3x3:624eed421 +3x3:8266bb894 +3x3:3a87e6182 +3x3:664a9e819 +3x3:286eb3862 +3x3:1d89788c9 +3x3:428773ca1 +3x3:1918eb9c1 +3x3:2a327b238 +3x3:2b61e84d4 +3x3:c82a63974 diff --git a/src/GUI.py b/src/GUI.py index aeeadd9..94377dd 100644 --- a/src/GUI.py +++ b/src/GUI.py @@ -77,7 +77,16 @@ class NetGUI: for y in range(height): self.pieceSprites.add(PieceSprite(x, y)) + def update_display(self, events: list[pygame.event.Event]): + self.pieceSprites.update(self.game, events) + for sprite in self.pieceSprites: + self.window.blit(sprite.image, sprite.rect) + + pygame.display.flip() + def run_game(self): + current_solver = None + display_solver = False while not self.game.solved(): events = pygame.event.get() @@ -92,14 +101,17 @@ class NetGUI: self.game.lock(event.x, event.y) elif event.type == pygame.KEYDOWN: if event.key == pygame.K_b: - BruteForceSolver(self.game).solve() - - self.pieceSprites.update(self.game, events) - for sprite in self.pieceSprites: - self.window.blit(sprite.image, sprite.rect) - - pygame.display.flip() + current_solver = BruteForceSolver(self.game).solve() + if event.key == pygame.K_d: + display_solver = not display_solver + if current_solver: + try: + _ = next(current_solver) + except StopIteration: + current_solver = None + if (not current_solver) or display_solver: + self.update_display(events) sleep(2) -NetGUI(5, 5).run_game() +NetGUI(3, 3).run_game() diff --git a/src/algorithms/bruteforce.py b/src/algorithms/bruteforce.py index d4c6d23..1dc0c77 100644 --- a/src/algorithms/bruteforce.py +++ b/src/algorithms/bruteforce.py @@ -1,3 +1,4 @@ +from collections.abc import Generator from itertools import chain, pairwise from src.net import NetGame @@ -13,11 +14,17 @@ class BruteForceSolver: for y in range(game.width): self.game.set_direction(x, y, Direction.UP) - def solve(self) -> None: + def solve(self) -> Generator[None]: attempts = 0 + required = 4 ** (self.game.width * self.game.height) while not self.game.solved(): + yield attempts += 1 - print(f"{attempts}/{4 ** (self.game.width * self.game.height)}") + + print( + f"{attempts:0>{len(str(required))}}/{required} ({attempts / required * 100}%) ", + end="\r", + ) self.game.turn_cw(0, 0) for prev, curr in pairwise( chain( @@ -26,3 +33,5 @@ class BruteForceSolver: ): if prev.direction == Direction.UP: curr.turn_cw() + else: + break diff --git a/src/net.py b/src/net.py index 4916d54..3e43ee7 100644 --- a/src/net.py +++ b/src/net.py @@ -16,7 +16,7 @@ class Grid: def __init__(self, width: int, height: int) -> None: self.height = height self.width = width - if width != height or width not in [5, 7, 9, 11, 13]: + if width != height or width not in [3, 5, 7, 9, 11, 13]: raise ValueError("Feldgrösse nicht erlaubt") with open(f"descriptions/{width}x{height}.txt") as f: lines = f.readlines()