すごいぞ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
?-