/** * Random Cyclic Terms. * * Warranty & Liability * To the extent permitted by applicable law and unless explicitly * otherwise agreed upon, XLOG Technologies AG makes no warranties * regarding the provided information. XLOG Technologies AG assumes * no liability that any problems might be solved with the information * provided by XLOG Technologies AG. * * Rights & License * All industrial property rights regarding the information - copyright * and patent rights in particular - are the sole property of XLOG * Technologies AG. If the company was not the originator of some * excerpts, XLOG Technologies AG 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. * * Restrictions * 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. * * Trademarks * Jekejeke is a registered trademark of XLOG Technologies AG. */ % random_cyclic(-Term) random_cyclic(T) :- random_cyclic([], T). % random_cyclic(+List, -Term) random_cyclic(L, T) :- length(L, M), random(R), N is truncate(R*(M+3)), (N = 0 -> T = 0; N = 1 -> T = 1; N = 2 -> T = s(P,Q), random_cyclic([T|L], P), random_cyclic([T|L], Q); K is N-3, nth0(K, L, S), S=T).