Jan Burse, erstellt 15. Sep 2018
* Prolog code for the crypt riddle benchmark.
* This is problem 223 from:
* Trigg, W. C. (1985): Mathematical Quickies,
* Dover Publications, Inc., New York, 1985
* Warranty & Liability
* To the extent permitted by applicable law and unless explicitly
* otherwise agreed upon, XLOG Technologies GmbH makes no warranties
* regarding the provided information. XLOG Technologies GmbH assumes
* no liability that any problems might be solved with the information
* provided by XLOG Technologies GmbH.
* Rights & License
* All industrial property rights regarding the information - copyright
* and patent rights in particular - are the sole property of XLOG
* Technologies GmbH. If the company was not the originator of some
* excerpts, XLOG Technologies GmbH has at least obtained the right to
* reproduce, change and translate the information.
* Reproduction is restricted to the whole unaltered document. Reproduction
* of the information is only allowed for non-commercial uses. Selling,
* giving away or letting of the execution of the library is prohibited.
* The library can be distributed as part of your applications and libraries
* for execution provided this comment remains unchanged.
* Only to be distributed with programs that add significant and primary
* functionality to the library. Not to be distributed with additional
* software intended to replace any components of the library.
* Jekejeke is a registered trademark of XLOG Technologies GmbH.
% sum2(+List, +List, -List)
% sum2(+List, +List, +Integer, -List)
sum2([A|AL], [B|BL], Carry, [C|CL]) :-
sum2(AL, BL, NewCarry, CL).
sum2(, [B|BL], Carry, [C|CL]) :-
sum2(, BL, NewCarry, CL).
sum2([A|AL], , Carry, [C|CL]) :-
sum2(, AL, NewCarry, CL).
sum2(, , Carry, [Carry]).
% mult(+List, +Integer, -List)
% mult(+List, +Integer, +Integer, -List)
mult(, _, Carry, [C,Cend]) :-
mult([A|AL], D, Carry, [B|BL]) :-
mult(AL, D, NewCarry, BL).
mult([C,B,A], E, [I,H,G,F|X]),
mult([C,B,A], D, [L,K,J|Y]),
sum2([I,H,G,F], [0,L,K,J], [P,O,N,M|Z]),