すごいぞprolog!魔方陣がワンライナーでかける!(swi-prologで魔方陣を計算その2)
prologはこれがワンライナーでかけるのか。すごすぎる。しかも2秒。あり得ない。
?- time((permutation([1, 2, 3, 4, 5, 6, 7, 8, 9], [A, B, C, D, E, F, G, H, I]),X is A+B+C,X is D+E+F,X is G+H+I,X is A+D+G,X is B+E+H,X is C+F+I,X is A+E+I,X is C+E+G,print([A,B,C,D,E,F,G,H,I,X]),nl,fail)). [6, 1, 8, 7, 5, 3, 2, 9, 4, 15] [8, 1, 6, 3, 5, 7, 4, 9, 2, 15] [8, 3, 4, 1, 5, 9, 6, 7, 2, 15] [4, 3, 8, 9, 5, 1, 2, 7, 6, 15] [6, 7, 2, 1, 5, 9, 8, 3, 4, 15] [2, 7, 6, 9, 5, 1, 4, 3, 8, 15] [2, 9, 4, 7, 5, 3, 6, 1, 8, 15] [4, 9, 2, 3, 5, 7, 8, 1, 6, 15] % 1,154,556 inferences, 1.91 CPU in 2.00 seconds (95% CPU, 605748 Lips) No ?-