Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- print_expression([]).
- print_expression([A|B]) :-
- write(A),
- print_expression(B).
- num_length(N, R) :-
- ( N >= 1,N < 10 ) -> R is 1;
- ( N >= 10,N < 100 ) -> R is 2;
- ( N >= 100,N < 1000 ) -> R is 3.
- solve(Digit, Total, CurNum, SignCount, Expr, A, B, Goal) :-
- BA is B - A,
- ( BA > 50 ) -> ( B2 is div(B-A, 2)+A, Goal1 is div(Goal, 2), Goal2 is Goal - Goal1, D2 is B2 + 1,
- solve(Digit, 0, CurNum, 0, [], A, B2, Goal1),
- solve(D2, 0, B2, 0, [], B2, B, Goal2));(
- Digit >= A, Digit =< B,D1 is Digit+1,
- number_string(CurNum, Str),
- num_length(Digit, P),
- (
- T1 is Total + CurNum, CurNum1 is Digit, C1 is SignCount+1, append(Expr, ["+", Str], Expr1);
- T1 is Total - CurNum, CurNum1 is Digit, C1 is SignCount+1, append(Expr, ["-", Str], Expr1);
- CurNum1 is CurNum * (10 ** P) + Digit, T1 is Total, C1 is SignCount, Expr1 = Expr
- ),
- (
- (
- ( Digit == B,CurNum1 == B,T1 == Goal ) -> print_expression(Expr1),write("="),writeln(Goal); false
- );
- solve(D1, T1, CurNum1, C1, Expr1, A, B, Goal)
- )
- ).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement