aboutsummaryrefslogtreecommitdiff
path: root/challenge-239
diff options
context:
space:
mode:
authordeadmarshal <adeadmarshal@gmail.com>2023-10-18 21:48:51 +0330
committerdeadmarshal <adeadmarshal@gmail.com>2023-10-18 21:48:51 +0330
commit74d32165e22ba78426bb61ccd79e600d2546f956 (patch)
treef9fddcbb8de333c794992dc50cdbbb80e0be110e /challenge-239
parenteb89c85d8f90b18bb075d6bc49e009e38294ad39 (diff)
downloadperlweeklychallenge-club-74d32165e22ba78426bb61ccd79e600d2546f956.tar.gz
perlweeklychallenge-club-74d32165e22ba78426bb61ccd79e600d2546f956.tar.bz2
perlweeklychallenge-club-74d32165e22ba78426bb61ccd79e600d2546f956.zip
TWC239
Diffstat (limited to 'challenge-239')
-rw-r--r--challenge-239/deadmarshal/blog.txt1
-rw-r--r--challenge-239/deadmarshal/cl/ch1.lisp10
-rw-r--r--challenge-239/deadmarshal/cl/ch2.lisp15
-rw-r--r--challenge-239/deadmarshal/haskell/ch1.hs11
-rw-r--r--challenge-239/deadmarshal/haskell/ch2.hs14
-rw-r--r--challenge-239/deadmarshal/lua/ch-1.lua12
-rw-r--r--challenge-239/deadmarshal/lua/ch-2.lua21
-rw-r--r--challenge-239/deadmarshal/perl/ch-1.pl12
-rw-r--r--challenge-239/deadmarshal/perl/ch-2.pl17
-rw-r--r--challenge-239/deadmarshal/raku/ch-1.raku11
-rw-r--r--challenge-239/deadmarshal/raku/ch-2.raku11
-rw-r--r--challenge-239/deadmarshal/ruby/ch1.rb10
-rw-r--r--challenge-239/deadmarshal/ruby/ch2.rb16
13 files changed, 161 insertions, 0 deletions
diff --git a/challenge-239/deadmarshal/blog.txt b/challenge-239/deadmarshal/blog.txt
new file mode 100644
index 0000000000..13b2144464
--- /dev/null
+++ b/challenge-239/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2023/10/twc239.html
diff --git a/challenge-239/deadmarshal/cl/ch1.lisp b/challenge-239/deadmarshal/cl/ch1.lisp
new file mode 100644
index 0000000000..70cb1ebadd
--- /dev/null
+++ b/challenge-239/deadmarshal/cl/ch1.lisp
@@ -0,0 +1,10 @@
+(defun same-string (list1 list2)
+ (let ((s1 (format nil "~{~A~}" list1))
+ (s2 (format nil "~{~A~}" list2)))
+ (string= s1 s2)))
+
+(progn
+ (print (same-string '("ab" "c") '("a" "bc")))
+ (print (same-string '("ab" "c") '("ac" "b")))
+ (print (same-string '("ab" "cd" "e") '("abcde"))))
+
diff --git a/challenge-239/deadmarshal/cl/ch2.lisp b/challenge-239/deadmarshal/cl/ch2.lisp
new file mode 100644
index 0000000000..3e8053c666
--- /dev/null
+++ b/challenge-239/deadmarshal/cl/ch2.lisp
@@ -0,0 +1,15 @@
+(defun consistent-strings (list allowed)
+ (let ((count 0))
+ (loop :for e :in list
+ :do (if (every #'(lambda (c) (position c allowed)) e)
+ (incf count)))
+ count))
+
+(progn
+ (print (consistent-strings
+ '("ad" "bd" "aaab" "baa" "badab") "ab"))
+ (print (consistent-strings
+ '("a" "b" "c" "ab" "ac" "bc" "abc") "abc"))
+ (print (consistent-strings
+ '("cc" "acd" "b" "ba" "bac" "bad" "ac" "d") "cad")))
+
diff --git a/challenge-239/deadmarshal/haskell/ch1.hs b/challenge-239/deadmarshal/haskell/ch1.hs
new file mode 100644
index 0000000000..e6abb6943c
--- /dev/null
+++ b/challenge-239/deadmarshal/haskell/ch1.hs
@@ -0,0 +1,11 @@
+module Ch1 where
+
+sameString :: [String] -> [String] -> Bool
+sameString xs ys = concat xs == concat ys
+
+main :: IO ()
+main = do
+ print $ sameString ["ab","c"] ["a","bc"]
+ print $ sameString ["ab","c"] ["ac","b"]
+ print $ sameString ["ab","cd","e"] ["abcde"]
+
diff --git a/challenge-239/deadmarshal/haskell/ch2.hs b/challenge-239/deadmarshal/haskell/ch2.hs
new file mode 100644
index 0000000000..2b5a26f6ee
--- /dev/null
+++ b/challenge-239/deadmarshal/haskell/ch2.hs
@@ -0,0 +1,14 @@
+module Ch2 where
+
+consistentStrings :: [String] -> String -> Int
+consistentStrings xs allowed =
+ length $ filter (==True) $ map (\s -> cond s) xs
+ where
+ cond s = all (\c -> elem c allowed) s
+
+main :: IO ()
+main = do
+ print $ consistentStrings ["ad","bd","aaab","baa","badab"] "ab"
+ print $ consistentStrings ["a","b","c","ab","ac","bc","abc"] "abc"
+ print $ consistentStrings ["cc","acd","b","ba","bac","bad","ac","d"] "cad"
+
diff --git a/challenge-239/deadmarshal/lua/ch-1.lua b/challenge-239/deadmarshal/lua/ch-1.lua
new file mode 100644
index 0000000000..3b441d8019
--- /dev/null
+++ b/challenge-239/deadmarshal/lua/ch-1.lua
@@ -0,0 +1,12 @@
+#!/usr/bin/env lua
+
+local function same_string(t1,t2)
+ assert(type(t1) == 'table' and
+ type(t2) == 'table','t1,t2 must be tables!')
+ return table.concat(t1) == table.concat(t2)
+end
+
+print(same_string({"ab","c"},{"a","bc"}))
+print(same_string({"ab","c"},{"ac","b"}))
+print(same_string({"ab","cd","e"},{"abcde"}))
+
diff --git a/challenge-239/deadmarshal/lua/ch-2.lua b/challenge-239/deadmarshal/lua/ch-2.lua
new file mode 100644
index 0000000000..e4c7d15181
--- /dev/null
+++ b/challenge-239/deadmarshal/lua/ch-2.lua
@@ -0,0 +1,21 @@
+#!/usr/bin/env lua
+
+local function consistent_strings(t,allowed)
+ assert(type(t) == 'table' and type(allowed) == 'string',
+ 't,allowed must be a table and string respectively!')
+ local count = 0
+ for i=1,#t do
+ local temp = true
+ for j=1,#t[i] do
+ if not allowed:match(t[i]:sub(j,j)) then temp = false break end
+ end
+ if temp == true then count = count + 1 end
+ end
+ return count
+end
+
+print(consistent_strings({'ad','bd','aaab','baa','badab'},'ab'))
+print(consistent_strings({'a','b','c','ab','ac','bc','abc'},'aabc'))
+print(consistent_strings({'cc','acd','b','ba','bac','bad','ac','d'},
+ 'cad'))
+
diff --git a/challenge-239/deadmarshal/perl/ch-1.pl b/challenge-239/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..1a64cadf25
--- /dev/null
+++ b/challenge-239/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,12 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub same_string{
+ join('',@{$_[0]}) eq join('',@{$_[1]});
+}
+
+printf "%d\n",same_string(["ab","c"],["a","bc"]);
+printf "%d\n",same_string(["ab","c"],["ac","b"]);
+printf "%d\n",same_string(["ab","cd","e"],["abcde"]);
+
diff --git a/challenge-239/deadmarshal/perl/ch-2.pl b/challenge-239/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..fab83860c4
--- /dev/null
+++ b/challenge-239/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw(all);
+
+sub consistent_strings{
+ my ($arr,$allowed) = @_;
+ scalar grep{all{index($allowed,$_) != -1} split '',$_} @$arr;
+}
+
+printf "%d\n",consistent_strings(['ad','bd','aaab','baa','badab'],
+ 'ab');
+printf "%d\n",consistent_strings(['a','b','c','ab','ac','bc','abc'],
+ 'abc');
+printf "%d\n",consistent_strings(['cc','acd','b','ba','bac','bad',
+ 'ac','d'],'cad');
+
diff --git a/challenge-239/deadmarshal/raku/ch-1.raku b/challenge-239/deadmarshal/raku/ch-1.raku
new file mode 100644
index 0000000000..80f65c85fe
--- /dev/null
+++ b/challenge-239/deadmarshal/raku/ch-1.raku
@@ -0,0 +1,11 @@
+#!/usr/bin/env raku
+
+sub same-string(@arr1,@arr2)
+{
+ @arr1.join eq @arr2.join
+}
+
+say same-string(["ab","c"],["a","bc"]);
+say same-string(["ab","c"],["ac","b"]);
+say same-string(["ab","cd","e"],["abcde"]);
+
diff --git a/challenge-239/deadmarshal/raku/ch-2.raku b/challenge-239/deadmarshal/raku/ch-2.raku
new file mode 100644
index 0000000000..d2e1901c34
--- /dev/null
+++ b/challenge-239/deadmarshal/raku/ch-2.raku
@@ -0,0 +1,11 @@
+#!/usr/bin/env raku
+
+sub consistent-strings(@arr,$allowed)
+{
+ (@arr.map:{$_.comb (<=) $allowed.comb}).grep({$_ == True}).elems
+}
+
+say consistent-strings(['ad','bd','aaab','baa','badab'],'ab');
+say consistent-strings(['a','b','c','ab','ac','bc','abc'],'abc');
+say consistent-strings(['cc','acd','b','ba','bac','bad','ac','d'],
+ 'cad');
diff --git a/challenge-239/deadmarshal/ruby/ch1.rb b/challenge-239/deadmarshal/ruby/ch1.rb
new file mode 100644
index 0000000000..7dc06819f8
--- /dev/null
+++ b/challenge-239/deadmarshal/ruby/ch1.rb
@@ -0,0 +1,10 @@
+#!/usr/bin/env ruby
+
+def same_string(arr1,arr2)
+ arr1.join == arr2.join
+end
+
+p same_string(["ab","c"],["a","bc"])
+p same_string(["ab","c"],["ac","b"])
+p same_string(["ab","cd","e"],["abcde"])
+
diff --git a/challenge-239/deadmarshal/ruby/ch2.rb b/challenge-239/deadmarshal/ruby/ch2.rb
new file mode 100644
index 0000000000..16e99d4a49
--- /dev/null
+++ b/challenge-239/deadmarshal/ruby/ch2.rb
@@ -0,0 +1,16 @@
+#!/usr/bin/env ruby
+
+def consistent_strings(arr,allowed)
+ count = 0
+ arr.each do |str|
+ if str.split('').all? {|c| allowed.include?(c)} then
+ count += 1
+ end
+ end
+ count
+end
+
+p consistent_strings(['ad','bd','aaab','baa','badab'],'ab')
+p consistent_strings(['a','b','c','ab','ac','bc','abc'],'abc')
+p consistent_strings(['cc','acd','b','ba','bac','bad','ac','d'],'cad');
+