aboutsummaryrefslogtreecommitdiff
path: root/challenge-239
diff options
context:
space:
mode:
authorrazetime <rraghu.11502@gmail.com>2023-10-18 23:19:11 +0800
committerrazetime <rraghu.11502@gmail.com>2023-10-18 23:19:26 +0800
commitb65e31895717139ba625abdfbcf7c59e41236f13 (patch)
tree4e7d43f7860a92630e349ab5a4fa5e47e3ce753e /challenge-239
parenteb89c85d8f90b18bb075d6bc49e009e38294ad39 (diff)
downloadperlweeklychallenge-club-b65e31895717139ba625abdfbcf7c59e41236f13.tar.gz
perlweeklychallenge-club-b65e31895717139ba625abdfbcf7c59e41236f13.tar.bz2
perlweeklychallenge-club-b65e31895717139ba625abdfbcf7c59e41236f13.zip
razetime challenge 239 raku and prolog solutions
Diffstat (limited to 'challenge-239')
-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");