Closed 4meta5 closed 3 years ago
derangement is close, but fails on 4 (yields 12 instead of 9 for some reason)
?- derg(0,R).
false.
?- derg(1,R).
R = 0 .
?- derg(2,R).
R = 1 .
?- derg(3,R).
R = 2 .
?- derg(4,R).
R = 12 .
?- der(4,R).
R = 9 .
code:
derg(N,R) :-
derg(2,N,0,1,R).
derg(X,N,R,_,R) :- X is N+1.
derg(X,N,_,R,R) :- X=N.
derg(X,N,D1,D2,R) :-
X<N,
N1 is N-1,
X1 is X+1,
D3 is (N1 * (D1 + D2)),
derg(X1,N,D2,D3,R).
done
der(N,R) :-
der(2,N,0,1,R).
der(X,N,R,_,R) :- X is N+1.
der(X,N,_,R,R) :- X=N.
der(X,N,D1,D2,R) :-
X<N,
X1 is X+1,
D3 is (X * (D1 + D2)),
der(X1,N,D2,D3,R).
calculate sequences upwards instead of downward
to
TODO
last attempt fucked up the initial conditions