From 037e86aeaf213bc72033801b84bcdc4bafd03c74 Mon Sep 17 00:00:00 2001 From: josd Date: Sun, 2 Mar 2025 20:30:14 +0100 Subject: [PATCH] refreshing --- .../kaprekar-constant-query.n3 | 3 +- .../kaprekar-constant/kaprekar-constant.n3 | 37 ------------------- .../kaprekar-constant/kaprekar-constant.pl | 33 +++++++++++++++++ reasoning/kaprekar-constant/test | 2 +- 4 files changed, 36 insertions(+), 39 deletions(-) delete mode 100644 reasoning/kaprekar-constant/kaprekar-constant.n3 create mode 100644 reasoning/kaprekar-constant/kaprekar-constant.pl diff --git a/reasoning/kaprekar-constant/kaprekar-constant-query.n3 b/reasoning/kaprekar-constant/kaprekar-constant-query.n3 index 0ac993309..fa20abf98 100644 --- a/reasoning/kaprekar-constant/kaprekar-constant-query.n3 +++ b/reasoning/kaprekar-constant/kaprekar-constant-query.n3 @@ -2,7 +2,8 @@ @prefix : . { - 10000 log:repeat ?I. + ("consult" "./kaprekar-constant.pl") log:program true. + ("between" 0 9999 ?I) log:program true. ?I :recursionCount ?N. } => { ?I :recursionCount ?N. diff --git a/reasoning/kaprekar-constant/kaprekar-constant.n3 b/reasoning/kaprekar-constant/kaprekar-constant.n3 deleted file mode 100644 index 9024eabf7..000000000 --- a/reasoning/kaprekar-constant/kaprekar-constant.n3 +++ /dev/null @@ -1,37 +0,0 @@ -@prefix math: . -@prefix list: . -@prefix log: . -@prefix : . - -# recursive case till 6174 is reached -{ ?A :kaprekar (?B ?C) } <= { - ?A math:notEqualTo 0. - ?A :numberToDigits ?D. - (?D "=<") list:sort ?E. - (?D ">=") list:sort ?F. - ?E :digitsToNumber ?G. - ?F :digitsToNumber ?H. - (?H ?G) math:difference ?I. - (?B 1) math:sum ?J. - ({ ?I math:equalTo 6174 } { ?C log:equalTo ?J } { ?I :kaprekar (?J ?C) }) log:ifThenElseIn ?SCOPE. -}. - -# convert 4 digit number to digits -{ ?A :numberToDigits (?B ?C ?D ?E) } <= { - (?A 1000) math:integerQuotient ?B. - (?A 1000) math:remainder ?F. - (?F 100) math:integerQuotient ?C. - (?F 100) math:remainder ?G. - (?G 10) math:integerQuotient ?D. - (?G 10) math:remainder ?E. -}. - -# convert 4 digits to number -{ (?A ?B ?C ?D) :digitsToNumber ?E } <= { - ((?A 1000)!math:product (?B 100)!math:product (?C 10)!math:product ?D) math:sum ?E. -}. - -# recursion count -{ ?I :recursionCount ?J } <= { - ?I :kaprekar (0 ?J). -}. diff --git a/reasoning/kaprekar-constant/kaprekar-constant.pl b/reasoning/kaprekar-constant/kaprekar-constant.pl new file mode 100644 index 000000000..d101ab719 --- /dev/null +++ b/reasoning/kaprekar-constant/kaprekar-constant.pl @@ -0,0 +1,33 @@ +% Kaprekar's constant + +% recursive case till 6174 is reached +''(A, B, C) :- + A =\= 0, + ''(A, D), + keysort(D, E), + reverse(E, F), + ''(E, G), + ''(F, H), + I is H-G, + J is B+1, + ( I =:= 6174 + -> C = J + ; ''(I, J, C) + ). + +% convert 4 digit number to digits +''(A, [B-0, C-0, D-0, E-0]) :- + B is A // 1000, + F is A rem 1000, + C is F // 100, + G is F rem 100, + D is G // 10, + E is G rem 10. + +% convert 4 digits to number +''([A-0, B-0, C-0, D-0], E) :- + E is A*1000+B*100+C*10+D. + +% recursion count +''(I, J) :- + ''(I, 0, J). diff --git a/reasoning/kaprekar-constant/test b/reasoning/kaprekar-constant/test index c0bfe677e..f40e76e87 100755 --- a/reasoning/kaprekar-constant/test +++ b/reasoning/kaprekar-constant/test @@ -1,2 +1,2 @@ #!/bin/bash -eye --quiet --skolem-genid 8b98b360-9a70-4845-b52c-c675af60ad01 --wcache https://eyereasoner.github.io/eye/reasoning .. --nope https://eyereasoner.github.io/eye/reasoning/kaprekar-constant/kaprekar-constant.n3 --query https://eyereasoner.github.io/eye/reasoning/kaprekar-constant/kaprekar-constant-query.n3 --output kaprekar-constant-answer.n3 +eye --quiet --skolem-genid 8b98b360-9a70-4845-b52c-c675af60ad01 --wcache https://eyereasoner.github.io/eye/reasoning .. --nope --query https://eyereasoner.github.io/eye/reasoning/kaprekar-constant/kaprekar-constant-query.n3 --output kaprekar-constant-answer.n3