aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-241/razetime/prolog/ch-2.P15
1 files changed, 9 insertions, 6 deletions
diff --git a/challenge-241/razetime/prolog/ch-2.P b/challenge-241/razetime/prolog/ch-2.P
index 0dcef4012f..6d533199d3 100644
--- a/challenge-241/razetime/prolog/ch-2.P
+++ b/challenge-241/razetime/prolog/ch-2.P
@@ -1,16 +1,19 @@
:- use_module(library(clpz)).
:- use_module(library(reif)).
:- use_module(library(pairs)).
+:- use_module(library(lists)).
r_div(A,B,true):-A mod B#=0.
r_div(A,B,false):-A mod B#>0.
-np_(C,_,1,C).
np_(C,Cp,N,P):-
- if_(
- r_div(N,Cp),
- (Q#=N/Cp,D#=C+1,np_(D,Cp,Q,P)),
- (Np#=Cp+1,np_(C,Np,N,P))
- ).
+ if_(=(N,1),
+ P=C,
+ if_(
+ r_div(N,Cp),
+ (Q#=N/Cp,D#=C+1,np_(D,Cp,Q,P)),
+ (Np#=Cp+1,np_(C,Np,N,P))
+ )
+ ).
np(N,P):-np_(0,2,N,P).
ch2(A,S):-maplist(np,A,B),pairs_keys_values(P,B,A),keysort(P,Q),pairs_values(Q,S).