aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-10-18 21:24:13 +0100
committerGitHub <noreply@github.com>2023-10-18 21:24:13 +0100
commit2836a0d55e5660d51d5098ee1ba4ef404acc9af1 (patch)
treeb5045f7f8ce2060f6b8df51b3e6a2e4fd632218b
parentf7c1b61463782a6743ae45f59a8eab03b2076d53 (diff)
parentb65e31895717139ba625abdfbcf7c59e41236f13 (diff)
downloadperlweeklychallenge-club-2836a0d55e5660d51d5098ee1ba4ef404acc9af1.tar.gz
perlweeklychallenge-club-2836a0d55e5660d51d5098ee1ba4ef404acc9af1.tar.bz2
perlweeklychallenge-club-2836a0d55e5660d51d5098ee1ba4ef404acc9af1.zip
Merge pull request #8900 from razetime/razetime-239
razetime challenge 239 raku and prolog solutions
-rw-r--r--challenge-239/razetime/README1
-rw-r--r--challenge-239/razetime/prolog/ch-1.pl6
-rw-r--r--challenge-239/razetime/prolog/ch-2.pl12
-rw-r--r--challenge-239/razetime/raku/ch-1.raku5
-rw-r--r--challenge-239/razetime/raku/ch-2.raku8
5 files changed, 32 insertions, 0 deletions
diff --git a/challenge-239/razetime/README b/challenge-239/razetime/README
new file mode 100644
index 0000000000..29a919e5c3
--- /dev/null
+++ b/challenge-239/razetime/README
@@ -0,0 +1 @@
+Solution by razetime
diff --git a/challenge-239/razetime/prolog/ch-1.pl b/challenge-239/razetime/prolog/ch-1.pl
new file mode 100644
index 0000000000..ddeb4f911d
--- /dev/null
+++ b/challenge-239/razetime/prolog/ch-1.pl
@@ -0,0 +1,6 @@
+:- use_module(library(lists)).
+ch1(A,B):-append(A,R),append(B,R).
+
+?- ch1(["ab","c"],["a","bc"]).
+?- ch1(["ab","c"],["ac","b"]).
+?- ch1(["ab","cd","e"],["abcde"]).
diff --git a/challenge-239/razetime/prolog/ch-2.pl b/challenge-239/razetime/prolog/ch-2.pl
new file mode 100644
index 0000000000..391ad3599d
--- /dev/null
+++ b/challenge-239/razetime/prolog/ch-2.pl
@@ -0,0 +1,12 @@
+:- use_module(library(lists)).
+:- use_module(library(reif)).
+:- use_module(library(ordsets)).
+:- use_module(library(clpz)).
+
+ss_reif(A,B,true):-ord_subset(A,B).
+ss_reif(_,_,false).
+
+ch2_([],_,0).
+ch2_([X|S],A,R):-if_(ss_reif(X,A),(R#=Q+1,ch2_(S,A,Q)),ch2_(S,A,R)).
+
+ch2(S,A,R):-maplist(sort,S,T),sort(A,B),ch2_(T,B,R).
diff --git a/challenge-239/razetime/raku/ch-1.raku b/challenge-239/razetime/raku/ch-1.raku
new file mode 100644
index 0000000000..694c342ab2
--- /dev/null
+++ b/challenge-239/razetime/raku/ch-1.raku
@@ -0,0 +1,5 @@
+sub ch1{([~] $^a)===([~] $^b)}
+
+say ch1(("ab", "c"),("a", "bc")); # true
+say ch1(("ab", "c"),("ac", "b")); # false
+say ch1(("ab", "cd", "e"),("abcde")); # true
diff --git a/challenge-239/razetime/raku/ch-2.raku b/challenge-239/razetime/raku/ch-2.raku
new file mode 100644
index 0000000000..70af7f9d20
--- /dev/null
+++ b/challenge-239/razetime/raku/ch-2.raku
@@ -0,0 +1,8 @@
+sub ch2(@a,$b){
+ my @c=$b.split("",:skip-empty);
+ @a.map({.split("",:skip-empty)}).grep({$_ (<=)@c}).elems
+}
+
+say ch2(("ad", "bd", "aaab", "baa", "badab"),"ab");
+say ch2(("a", "b", "c", "ab", "ac", "bc", "abc"),"abc");
+say ch2(("cc", "acd", "b", "ba", "bac", "bad", "ac", "d"),"cad");