Pascal's triangle/Puzzle: Difference between revisions

Content added Content deleted
No edit summary
(→‎{{header|Prolog}}: shorter version that can also be more easily extended with additional triangle lines if required)
Line 799: Line 799:
<lang prolog>:- use_module(library(clpfd)).
<lang prolog>:- use_module(library(clpfd)).


puzzle( [[ 151],
puzzle(Ts, X, Y, Z) :-
[U1],[U2],
Ts = [ [151],
[40],[U3],[U4],
[_, _],
[U5],[U6],[U7],[U8],
[40, _, _],
[ X],[11],[ Y],[ 4],[ Z]], X,Y,Z ) :-
[_, _, _, _],
151 #= U1 + U2, 40 #= U5 + U6,
[X, 11, Y, 4, Z]],
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).
% ?- puzzle(_,X,Y,Z).
Line 817: Line 816:
% Y = 13,
% Y = 13,
% Z = 8 ;</lang>
% Z = 8 ;</lang>

=={{header|PureBasic}}==
=={{header|PureBasic}}==
Brute force solution.
Brute force solution.