aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-11-01 22:49:25 +0000
committerGitHub <noreply@github.com>2023-11-01 22:49:25 +0000
commite4782a4b3f10855757a8def3ac839a69b5ee2cf0 (patch)
treed9f76d48626bb7248ccc0649e2db87c10c2f1335
parent4c7c8441a1be0e999747be281b9a05ee6bf64863 (diff)
parentebbba5e79c3bfbe017f84f131482087eb9bae924 (diff)
downloadperlweeklychallenge-club-e4782a4b3f10855757a8def3ac839a69b5ee2cf0.tar.gz
perlweeklychallenge-club-e4782a4b3f10855757a8def3ac839a69b5ee2cf0.tar.bz2
perlweeklychallenge-club-e4782a4b3f10855757a8def3ac839a69b5ee2cf0.zip
Merge pull request #8985 from razetime/razetime-241
challenge 241 solutions
-rw-r--r--challenge-241/razetime/bqn/ch-1.bqn4
-rw-r--r--challenge-241/razetime/bqn/ch-2.bqn4
-rw-r--r--challenge-241/razetime/factor/ch-1.factor11
-rw-r--r--challenge-241/razetime/factor/ch-2.factor5
-rw-r--r--challenge-241/razetime/prolog/ch-1.P13
-rw-r--r--challenge-241/razetime/prolog/ch-2.P19
-rw-r--r--challenge-241/razetime/raku/ch-1.raku16
-rw-r--r--challenge-241/razetime/raku/ch-2.raku15
8 files changed, 87 insertions, 0 deletions
diff --git a/challenge-241/razetime/bqn/ch-1.bqn b/challenge-241/razetime/bqn/ch-1.bqn
new file mode 100644
index 0000000000..63e335fa0d
--- /dev/null
+++ b/challenge-241/razetime/bqn/ch-1.bqn
@@ -0,0 +1,4 @@
+Ch1←{d←-⌜˜𝕩,+´(𝕨=-d)⌊○(+˝)𝕨=d}
+! 2 ≡ 3 Ch1 0‿1‿4‿6‿7‿10
+! 2 ≡ 2 Ch1 4‿5‿6‿7‿8‿9
+
diff --git a/challenge-241/razetime/bqn/ch-2.bqn b/challenge-241/razetime/bqn/ch-2.bqn
new file mode 100644
index 0000000000..632a2ff23d
--- /dev/null
+++ b/challenge-241/razetime/bqn/ch-2.bqn
@@ -0,0 +1,4 @@
+Ch2←{𝕩⊏˜⍋2⊸{𝕩<2 ? 0; 0=𝕨|𝕩 ? 1+𝕨𝕊𝕩÷𝕨; (𝕨+1)𝕊𝕩}¨𝕩}
+! 11‿4‿8‿27 ≡ Ch2 11‿8‿27‿4
+
+
diff --git a/challenge-241/razetime/factor/ch-1.factor b/challenge-241/razetime/factor/ch-1.factor
new file mode 100644
index 0000000000..1db73bccd2
--- /dev/null
+++ b/challenge-241/razetime/factor/ch-1.factor
@@ -0,0 +1,11 @@
+USING: kernel sequences prettyprint math.matrices arrays ranges math.statistics tools.test ;
+IN: pwc-341
+:: ch-1 ( seq m -- n )
+ seq length <iota> dup dup cartesian-product concat cartesian-product concat
+ [ first2 swap prefix ] map [
+ [ first3 2dup < nip [ < ] dip and ]
+ [ seq nths differences [ m = ] all? ] bi and
+ ] filter length ;
+
+{ 2 } [ { 0 1 4 6 7 10 } 3 ch-1 ] unit-test
+{ 2 } [ { 4 5 6 7 8 9 } 2 ch-1 ] unit-test
diff --git a/challenge-241/razetime/factor/ch-2.factor b/challenge-241/razetime/factor/ch-2.factor
new file mode 100644
index 0000000000..7e39f674aa
--- /dev/null
+++ b/challenge-241/razetime/factor/ch-2.factor
@@ -0,0 +1,5 @@
+USING: kernel sequences math.primes.factors sorting tools.test ;
+IN: pwc-341
+: ch-2 ( seq -- seq' ) [ factors length ] sort-by ;
+
+{ { 11 4 8 27 } } [ { 11 8 27 4 } ch-2 ] unit-test
diff --git a/challenge-241/razetime/prolog/ch-1.P b/challenge-241/razetime/prolog/ch-1.P
new file mode 100644
index 0000000000..5a730d7903
--- /dev/null
+++ b/challenge-241/razetime/prolog/ch-1.P
@@ -0,0 +1,13 @@
+:- use_module(library(lists)).
+:- use_module(library(clpz)).
+
+soln(t(I,J,K),D,A):-
+ nth0(I,A,M),nth0(J,A,N),nth0(K,A,O),
+ I#<J,J#<K,
+ D#=N-M,D#=O-N.
+
+ch1(N,D,A):-findall(X,soln(X,D,A),S),length(S,N).
+
+?- ch1(A,3,[0,1,4,6,7,10])
+?- ch1(A,2,[4,5,6,7,8,9]).
+
diff --git a/challenge-241/razetime/prolog/ch-2.P b/challenge-241/razetime/prolog/ch-2.P
new file mode 100644
index 0000000000..6d533199d3
--- /dev/null
+++ b/challenge-241/razetime/prolog/ch-2.P
@@ -0,0 +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,Cp,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).
diff --git a/challenge-241/razetime/raku/ch-1.raku b/challenge-241/razetime/raku/ch-1.raku
new file mode 100644
index 0000000000..271406ff95
--- /dev/null
+++ b/challenge-241/razetime/raku/ch-1.raku
@@ -0,0 +1,16 @@
+sub ch1(@n,$d) {
+ my $c=0;
+ for 0..^@n.elems -> $i {
+ for ($i+1)..^@n.elems -> $j {
+ for ($j+1)..^@n.elems -> $k {
+ if (@n[$j] - @n[$i] == $d && @n[$k] - @n[$j] == $d) {
+ $c+=1;
+ }
+ }
+ }
+ }
+ return $c;
+}
+
+say ch1((0,1,4,6,7,10),3);
+say ch1((4,5,6,7,8,9),2);
diff --git a/challenge-241/razetime/raku/ch-2.raku b/challenge-241/razetime/raku/ch-2.raku
new file mode 100644
index 0000000000..b0e30445a4
--- /dev/null
+++ b/challenge-241/razetime/raku/ch-2.raku
@@ -0,0 +1,15 @@
+sub ch2(@a) {return @a.sort({
+ my @p=(2..*).grep({.is-prime});
+ my $i=0;
+ my $r=0;
+ my $s=$_;
+ while $s>1 {
+ if $s%%@p[$i] {
+ $s=$s div @p[$i];
+ $r+=1;
+ } else { $i+=1;}
+ }
+ $r;
+});}
+
+say ch2((11,8,27,4));