Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
1
Task/Multifactorial/Picat/multifactorial-1.picat
Normal file
1
Task/Multifactorial/Picat/multifactorial-1.picat
Normal file
|
|
@ -0,0 +1 @@
|
|||
multifactorial(N,Degree) = prod([ I : I in N..-Degree..1]).
|
||||
1
Task/Multifactorial/Picat/multifactorial-2.picat
Normal file
1
Task/Multifactorial/Picat/multifactorial-2.picat
Normal file
|
|
@ -0,0 +1 @@
|
|||
multifactorial2(N,Degree) = reduce(*, [I : I in N..-Degree..1]).
|
||||
6
Task/Multifactorial/Picat/multifactorial-3.picat
Normal file
6
Task/Multifactorial/Picat/multifactorial-3.picat
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
multifactorial3(N,Degree) = M =>
|
||||
M = 1, I = N,
|
||||
while(I > 0)
|
||||
M := M*I,
|
||||
I := I - Degree
|
||||
end.
|
||||
1
Task/Multifactorial/Picat/multifactorial-4.picat
Normal file
1
Task/Multifactorial/Picat/multifactorial-4.picat
Normal file
|
|
@ -0,0 +1 @@
|
|||
multifactorial4(N,_D) = 1, N <= 0 => true.
|
||||
1
Task/Multifactorial/Picat/multifactorial-5.picat
Normal file
1
Task/Multifactorial/Picat/multifactorial-5.picat
Normal file
|
|
@ -0,0 +1 @@
|
|||
multifactorial4(N,D) = N*multifactorial4(N-D,D).
|
||||
2
Task/Multifactorial/Picat/multifactorial-6.picat
Normal file
2
Task/Multifactorial/Picat/multifactorial-6.picat
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
multifactorial5(N,D) = M =>
|
||||
N <= 0 -> M = 1 ; M = N*multifactorial4(N-D,D).
|
||||
1
Task/Multifactorial/Picat/multifactorial-7.picat
Normal file
1
Task/Multifactorial/Picat/multifactorial-7.picat
Normal file
|
|
@ -0,0 +1 @@
|
|||
multifactorial6(N,D) = cond(N <= 0, 1, N*multifactorial6(N-D,D)).
|
||||
7
Task/Multifactorial/Picat/multifactorial-8.picat
Normal file
7
Task/Multifactorial/Picat/multifactorial-8.picat
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import util.
|
||||
|
||||
go =>
|
||||
foreach(D in 1..15)
|
||||
println(D=[multifactorial(I,D) : I in 1..15])
|
||||
end,
|
||||
nl.
|
||||
30
Task/Multifactorial/Picat/multifactorial-9.picat
Normal file
30
Task/Multifactorial/Picat/multifactorial-9.picat
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
import cp.
|
||||
|
||||
%
|
||||
% Reversible: find Degree and N given M
|
||||
%
|
||||
go2 =>
|
||||
Ms = [4,20,105], % The multifactorials to identify
|
||||
|
||||
foreach(M in Ms)
|
||||
println(m=M),
|
||||
Degree :: 1..10, % limit of the degree
|
||||
N :: 1..100, % limit of N
|
||||
All = findall([N,Degree,M], (multifactorial_reversible(N,Degree,M),
|
||||
solve([M,N,Degree]))),
|
||||
foreach([NN,DD,MM] in All.sort)
|
||||
printf("n=%d degree=%d m=%d\n",NN,DD,MM)
|
||||
end,
|
||||
nl
|
||||
end,
|
||||
nl.
|
||||
|
||||
% reversible variant (using CP)
|
||||
multifactorial_reversible(N,_D,M) :-
|
||||
N #<= 0, M #= 1.
|
||||
multifactorial_reversible(N,D,M) :-
|
||||
D #> 0,
|
||||
N #> 0,
|
||||
ND #= N-D,
|
||||
multifactorial_reversible(ND,D,M1),
|
||||
M #= N*M1.
|
||||
Loading…
Add table
Add a link
Reference in a new issue