Construct a hexagon of the form
A B C L M N D K R S O E J Q P F I H Gusing each of the numbers 1 to 19 once. The numbers in each of the 5 rows and each of the 10 diagonals should have the same sum.
hexagon:- R19=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19], remove(A, R19, R18), choose1(C, B, A, R18, R16), A > C, % Avoid rotations choose1(E, D, C, R16, R14), A > E, % Avoid rotations choose1(G, F, E, R14, R12), A > G, % Avoid rotations choose1(I, H, G, R12, R10), A > I, % Avoid rotations choose1(K, J, I, R10, R8), A > K, % Avoid rotations C > K, % Avoid reflections calc2(L, A, K, R8, R7), choose2(N, O, B, F, R7, R5), calc3(M, D, N, L, R5, R4), calc3(P, D, O, H, R4, R3), calc3(R, J, M, B, R3, R2), calc3(Q, J, P, F, R2, [S]), tab(4), writes([A,B,C]), tab(2), writes([L,M,N,D]), writes([K,R,S,O,E]), tab(2), writes([J,Q,P,F]), tab(4), writes([I,H,G]), nl, fail. hexagon. choose1(X, Y, I, P, Q):-remove(X, P, R), Y is 38-X-I, remove(Y, R, Q). choose2(X, Y, I, J, P, Q):-remove(X, P, R), Y is 38-X-I-J, remove(Y, R, Q). calc2(X, I, J, P, Q):-X is 38-I-J, remove(X, P, Q). calc3(X, I, J, K, P, Q):-X is 38-I-J-K, remove(X, P, Q). writes([]):-nl. writes([X|Xs]):-fwrite(i, 3, 0, X), tab(1), writes(Xs).