Pascal's triangle/Puzzle: Difference between revisions

→‎{{header|Prolog}}: shorter version that can also be more easily extended with additional triangle lines if required
No edit summary
(→‎{{header|Prolog}}: shorter version that can also be more easily extended with additional triangle lines if required)
Line 799:
<lang prolog>:- use_module(library(clpfd)).
 
puzzle(Ts, X, Y, Z) [[ 151],:-
Ts = [ [U1],[U2151],
[40]_,[U3],[U4 _],
[U5]40,[U6] _,[U7],[U8 _],
[ X], [11]_,[ Y]_,[ 4]_,[ Z]_], X,Y,Z ) :-
151 #= U1 + U2, 40 #= U5[X, +11, Y, 4, U6Z]],
Y #= X + Z, triangle(Ts), append(Ts, Vs), Vs ins 0..sup, label(Vs).
U1 #= 40 + U3, U2 #= U3 + U4,
 
U3 #= U6 + U7, U4 #= U7 + U8,
triangle([T|Ts]) :- ( Ts = [N|_] -> triangle_(T, N), triangle(Ts) ; true ).
U5 #= X + 11, U6 #= 11 + Y,
 
U7 #= Y + 4, U8 #= 4 + Z,
triangle_([], _).
Y #= X + Z,
triangle_([T|Ts], [A,B|Rest]) :- T #= A + B, triangle_(Ts, [B|Rest]).
Vars = [U1,U2,U3,U4,U5,U6,U7,U8,X,Y,Z],
Vars ins 0..sup, labeling([],Vars).
 
% ?- puzzle(_,X,Y,Z).
Line 817 ⟶ 816:
% Y = 13,
% Z = 8 ;</lang>
 
=={{header|PureBasic}}==
Brute force solution.
Anonymous user