aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-05-05 11:09:56 +0100
committerGitHub <noreply@github.com>2023-05-05 11:09:56 +0100
commitc5c10f9523c6a1eef5549b37abb0fef72ca50e95 (patch)
tree8aeeb15024e50cc0c0e5e142df457ae7f134368d
parent4849a589490fb6c66163506a4a6e4a8b3c4b1df5 (diff)
parent15615cd21fe47b7e8c725521801c0dde7a024979 (diff)
downloadperlweeklychallenge-club-c5c10f9523c6a1eef5549b37abb0fef72ca50e95.tar.gz
perlweeklychallenge-club-c5c10f9523c6a1eef5549b37abb0fef72ca50e95.tar.bz2
perlweeklychallenge-club-c5c10f9523c6a1eef5549b37abb0fef72ca50e95.zip
Merge pull request #8020 from deadmarshal/TWC215
TWC215
-rw-r--r--challenge-215/deadmarshal/c/ch-1.c29
-rw-r--r--challenge-215/deadmarshal/c/ch-2.c22
-rw-r--r--challenge-215/deadmarshal/cpp/ch-1.cpp30
-rw-r--r--challenge-215/deadmarshal/cpp/ch-2.cpp22
-rw-r--r--challenge-215/deadmarshal/d/ch1.d23
-rw-r--r--challenge-215/deadmarshal/d/ch2.d20
-rw-r--r--challenge-215/deadmarshal/lua/ch-1.lua28
-rw-r--r--challenge-215/deadmarshal/lua/ch-2.lua15
-rw-r--r--challenge-215/deadmarshal/modula-3/ch1/src/Ch1.m333
-rw-r--r--challenge-215/deadmarshal/modula-3/ch1/src/m3makefile4
-rw-r--r--challenge-215/deadmarshal/modula-3/ch2/src/Ch2.m326
-rw-r--r--challenge-215/deadmarshal/modula-3/ch2/src/m3makefile5
-rw-r--r--challenge-215/deadmarshal/pascal/ch1.pas31
-rw-r--r--challenge-215/deadmarshal/pascal/ch2.pas23
-rw-r--r--challenge-215/deadmarshal/perl/ch-1.pl20
-rw-r--r--challenge-215/deadmarshal/perl/ch-2.pl19
-rw-r--r--challenge-215/deadmarshal/raku/ch-1.raku16
-rw-r--r--challenge-215/deadmarshal/raku/ch-2.raku16
18 files changed, 382 insertions, 0 deletions
diff --git a/challenge-215/deadmarshal/c/ch-1.c b/challenge-215/deadmarshal/c/ch-1.c
new file mode 100644
index 0000000000..23a4a98c38
--- /dev/null
+++ b/challenge-215/deadmarshal/c/ch-1.c
@@ -0,0 +1,29 @@
+#include<stdio.h>
+
+int is_alphabetical_order(const char *const str)
+{
+ for(size_t i = 1; str[i] != '\0'; ++i)
+ if(str[i] < str[i-1]) return 0;
+ return 1;
+}
+
+size_t odd_one_out(const char **arr, size_t sz)
+{
+ size_t count = 0;
+ for(size_t i = 0; i < sz; ++i)
+ if(!is_alphabetical_order(arr[i])) count++;
+ return count;
+}
+
+int main(void)
+{
+ const char *a1[] = {"abc","xyz","tsu"};
+ const char *a2[] = {"rat","cab","dad"};
+ const char *a3[] = {"x","y","z"};
+ size_t sz = 3;
+ printf("%zu\n", odd_one_out(a1,sz));
+ printf("%zu\n", odd_one_out(a2,sz));
+ printf("%zu\n", odd_one_out(a3,sz));
+ return 0;
+}
+
diff --git a/challenge-215/deadmarshal/c/ch-2.c b/challenge-215/deadmarshal/c/ch-2.c
new file mode 100644
index 0000000000..250647d579
--- /dev/null
+++ b/challenge-215/deadmarshal/c/ch-2.c
@@ -0,0 +1,22 @@
+#include<stdio.h>
+
+int number_placement(int *arr, size_t sz, size_t count)
+{
+ size_t c = 0;
+ for(size_t i = 1; i < sz-1; ++i)
+ if(arr[i-1] == 0 && arr[i+1] == 0) c++;
+ return c >= count;
+}
+
+int main(void)
+{
+ int a1[] = {1,0,0,0,1};
+ int a2[] = {1,0,0,0,1};
+ int a3[] = {1,0,0,0,0,0,0,0,1};
+ size_t sz1 = 5, sz2 = 5, sz3 = 9;
+ printf("%d\n", number_placement(a1,sz1,1));
+ printf("%d\n", number_placement(a2,sz2,2));
+ printf("%d\n", number_placement(a3,sz3,3));
+ return 0;
+}
+
diff --git a/challenge-215/deadmarshal/cpp/ch-1.cpp b/challenge-215/deadmarshal/cpp/ch-1.cpp
new file mode 100644
index 0000000000..9d8b68dba4
--- /dev/null
+++ b/challenge-215/deadmarshal/cpp/ch-1.cpp
@@ -0,0 +1,30 @@
+#include<iostream>
+#include<vector>
+#include<string>
+
+bool is_alphabetical_order(const std::string &str)
+{
+ for(size_t i = 1; i < str.size(); ++i)
+ if(str[i] < str[i-1]) return false;
+ return true;
+}
+
+size_t odd_one_out(const std::vector<std::string> &vec)
+{
+ size_t count{};
+ for(size_t i = 0; i < vec.size(); ++i)
+ if(!is_alphabetical_order(vec[i])) count++;
+ return count;
+}
+
+int main()
+{
+ std::vector<std::string> vec1{"abc","xyz","tsu"},
+ vec2{"rat","cab","dad"},
+ vec3{"x","y","z"};
+ std::cout << odd_one_out(vec1) << '\n';
+ std::cout << odd_one_out(vec2) << '\n';
+ std::cout << odd_one_out(vec3) << '\n';
+ return 0;
+}
+
diff --git a/challenge-215/deadmarshal/cpp/ch-2.cpp b/challenge-215/deadmarshal/cpp/ch-2.cpp
new file mode 100644
index 0000000000..da2bd1599a
--- /dev/null
+++ b/challenge-215/deadmarshal/cpp/ch-2.cpp
@@ -0,0 +1,22 @@
+#include<iostream>
+#include<vector>
+
+bool number_placement(const std::vector<int> &vec, size_t count)
+{
+ size_t c = 0;
+ for(size_t i = 1; i < vec.size()-1; ++i)
+ if(vec[i-1] == 0 && vec[i+1] == 0) c++;
+ return c >= count;
+}
+
+int main()
+{
+ std::vector<int> vec1{1,0,0,0,1},
+ vec2{1,0,0,0,1},
+ vec3{1,0,0,0,0,0,0,0,1};
+ std::cout << std::boolalpha << number_placement(vec1,1) << '\n';
+ std::cout << std::boolalpha << number_placement(vec2,2) << '\n';
+ std::cout << std::boolalpha << number_placement(vec3,3) << '\n';
+ return 0;
+}
+
diff --git a/challenge-215/deadmarshal/d/ch1.d b/challenge-215/deadmarshal/d/ch1.d
new file mode 100644
index 0000000000..ef8f7bed15
--- /dev/null
+++ b/challenge-215/deadmarshal/d/ch1.d
@@ -0,0 +1,23 @@
+import std.stdio:writeln;
+
+bool is_alphabetical_order(string str)
+{
+ for(size_t i = 1; i < str.length; ++i)
+ if(str[i] < str[i-1]) return false;
+ return true;
+}
+
+int odd_one_out(string[] arr)
+{
+ int count = 0;
+ foreach(s;arr) if(!is_alphabetical_order(s)) count++;
+ return count;
+}
+
+void main()
+{
+ writeln(odd_one_out(["abc", "xyz", "tsu"]));
+ writeln(odd_one_out(["rat", "cab", "dad"]));
+ writeln(odd_one_out(["x","y","z"]));
+}
+
diff --git a/challenge-215/deadmarshal/d/ch2.d b/challenge-215/deadmarshal/d/ch2.d
new file mode 100644
index 0000000000..66ecf02efe
--- /dev/null
+++ b/challenge-215/deadmarshal/d/ch2.d
@@ -0,0 +1,20 @@
+import std.stdio:writeln;
+
+bool number_placement(int[] arr, size_t count)
+{
+ size_t c = 0;
+ for(size_t i = 1; i < arr.length-1; ++i)
+ if(arr[i-1] == 0 && arr[i+1] == 0) c++;
+ return c >= count;
+}
+
+void main()
+{
+ int[] a1 = [1,0,0,0,1];
+ int[] a2 = [1,0,0,0,1];
+ int[] a3 = [1,0,0,0,0,0,0,0,1];
+ writeln(number_placement(a1,1));
+ writeln(number_placement(a2,2));
+ writeln(number_placement(a3,3));
+}
+
diff --git a/challenge-215/deadmarshal/lua/ch-1.lua b/challenge-215/deadmarshal/lua/ch-1.lua
new file mode 100644
index 0000000000..33055f6bb1
--- /dev/null
+++ b/challenge-215/deadmarshal/lua/ch-1.lua
@@ -0,0 +1,28 @@
+#!/usr/bin/env lua
+
+local function str_split(str)
+ local res = {}
+ str:gsub(".", function(c) table.insert(res,c) end)
+ return res
+end
+
+local function is_alphabetical_order(s)
+ local t = str_split(s)
+ for i=2,#t do
+ if t[i] < t[i-1] then return false end
+ end
+ return true
+end
+
+local function odd_one_out(t)
+ local count = 0
+ for i=1,#t do
+ if not is_alphabetical_order(t[i]) then count = count + 1 end
+ end
+ return count
+end
+
+print(odd_one_out({'abc', 'xyz', 'tsu'}))
+print(odd_one_out({'rat', 'cab', 'dad'}))
+print(odd_one_out({'x','y','z'}))
+
diff --git a/challenge-215/deadmarshal/lua/ch-2.lua b/challenge-215/deadmarshal/lua/ch-2.lua
new file mode 100644
index 0000000000..feb8dafe9a
--- /dev/null
+++ b/challenge-215/deadmarshal/lua/ch-2.lua
@@ -0,0 +1,15 @@
+#!/usr/bin/env lua
+
+local function number_placement(t,count)
+ if #t < 3 then return false end
+ local c = 0
+ for i=1,#t-1 do
+ if t[i-1] == 0 and t[i+1] == 0 then c = c + 1 end
+ end
+ return c >= count
+end
+
+print(number_placement({1,0,0,0,1},1))
+print(number_placement({1,0,0,0,1},2))
+print(number_placement({1,0,0,0,0,0,0,0,1},3))
+
diff --git a/challenge-215/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-215/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..25ca275839
--- /dev/null
+++ b/challenge-215/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,33 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT IO,Text;
+
+VAR
+ A1:ARRAY[0..2] OF TEXT := ARRAY OF TEXT{"abc","xyz","tsu"};
+ A2:ARRAY[0..2] OF TEXT := ARRAY OF TEXT{"rat","cab","dad"};
+ A3:ARRAY[0..2] OF TEXT := ARRAY OF TEXT{"x","y","z"};
+
+PROCEDURE IsAlphabeticalOrder(READONLY t:TEXT):BOOLEAN =
+ BEGIN
+ FOR I := 1 TO Text.Length(t)-1 DO
+ IF Text.GetChar(t,I) < Text.GetChar(t,I-1) THEN RETURN FALSE END
+ END;
+ RETURN TRUE
+ END IsAlphabeticalOrder;
+
+PROCEDURE OddOneOut(READONLY A:ARRAY OF TEXT):INTEGER =
+ VAR
+ Count:INTEGER := 0;
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO
+ IF NOT IsAlphabeticalOrder(A[I]) THEN INC(Count) END
+ END;
+ RETURN Count
+ END OddOneOut;
+
+BEGIN
+ IO.PutInt(OddOneOut(A1)); IO.Put("\n");
+ IO.PutInt(OddOneOut(A2)); IO.Put("\n");
+ IO.PutInt(OddOneOut(A3)); IO.Put("\n");
+END Ch1.
+
diff --git a/challenge-215/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-215/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..0ee72d695b
--- /dev/null
+++ b/challenge-215/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-215/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-215/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..fc2c17ad7b
--- /dev/null
+++ b/challenge-215/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,26 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO;
+
+VAR
+ A1:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{1,0,0,0,1};
+ A2:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{1,0,0,0,1};
+ A3:ARRAY[0..8] OF INTEGER := ARRAY OF INTEGER{1,0,0,0,0,0,0,0,1};
+
+PROCEDURE NumberPlacement(READONLY A:ARRAY OF INTEGER;
+ READONLY Count:INTEGER):BOOLEAN =
+ VAR
+ C:INTEGER := 0;
+ BEGIN
+ FOR I := 1 TO LAST(A)-1 DO
+ IF (A[I-1] = 0) AND (A[I+1] = 0) THEN INC(C) END
+ END;
+ RETURN C >= Count
+ END NumberPlacement;
+
+BEGIN
+ SIO.PutBool(NumberPlacement(A1,1)); SIO.Nl();
+ SIO.PutBool(NumberPlacement(A2,2)); SIO.Nl();
+ SIO.PutBool(NumberPlacement(A3,3)); SIO.Nl();
+END Ch2.
+
diff --git a/challenge-215/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-215/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..798c627ef3
--- /dev/null
+++ b/challenge-215/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("ch2")
+
diff --git a/challenge-215/deadmarshal/pascal/ch1.pas b/challenge-215/deadmarshal/pascal/ch1.pas
new file mode 100644
index 0000000000..b0354c5964
--- /dev/null
+++ b/challenge-215/deadmarshal/pascal/ch1.pas
@@ -0,0 +1,31 @@
+program Ch1;
+
+{$mode objfpc}
+
+uses
+ SysUtils,Types;
+
+function IsAlphabeticalOrder(Str:AnsiString):Boolean;
+var
+ I:Integer;
+begin
+ for I := Low(Str)+1 to High(str) do
+ if(Str[I] < Str[I-1]) then Exit(False);
+ Exit(True);
+end;
+
+function OddOneOut(A:TStringDynArray):Integer;
+var
+ I:Integer;
+begin
+ Result := 0;
+ for I := Low(A) to High(A) do
+ if not IsAlphabeticalOrder(A[I]) then Inc(Result);
+end;
+
+begin
+ WriteLn(OddOneOut(['abc', 'xyz', 'tsu']));
+ WriteLn(OddOneOut(['rat', 'cab', 'dad']));
+ WriteLn(OddOneOut(['x','y','z']));
+end.
+
diff --git a/challenge-215/deadmarshal/pascal/ch2.pas b/challenge-215/deadmarshal/pascal/ch2.pas
new file mode 100644
index 0000000000..300e72f649
--- /dev/null
+++ b/challenge-215/deadmarshal/pascal/ch2.pas
@@ -0,0 +1,23 @@
+program Ch2;
+
+{$mode objfpc}
+
+uses
+ SysUtils,Types;
+
+function NumberPlacement(A:TIntegerDynArray;Count:Integer):Boolean;
+var
+ I,C:Integer;
+begin
+ C := 0;
+ for I := 1 to High(A)-1 do
+ if((A[I-1] = 0) and (A[I+1] = 0)) then Inc(C);
+ Result := C >= Count;
+end;
+
+begin
+ WriteLn(NumberPlacement([1,0,0,0,1],1));
+ WriteLn(NumberPlacement([1,0,0,0,1],2));
+ WriteLn(NumberPlacement([1,0,0,0,0,0,0,0,1],3));
+end.
+
diff --git a/challenge-215/deadmarshal/perl/ch-1.pl b/challenge-215/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..550a63f2b1
--- /dev/null
+++ b/challenge-215/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub is_alphabetical_order{
+ my @arr = split '',$_[0];
+ map{return 0 if $arr[$_] lt $arr[$_-1]} 1..$#arr;
+ 1
+};
+
+sub odd_one_out{
+ my $count = 0;
+ map{$count++ unless is_alphabetical_order $_} @{$_[0]};
+ $count
+}
+
+printf "%d\n", odd_one_out(['abc', 'xyz', 'tsu']);
+printf "%d\n", odd_one_out(['rat', 'cab', 'dad']);
+printf "%d\n", odd_one_out(['x','y','z']);
+
diff --git a/challenge-215/deadmarshal/perl/ch-2.pl b/challenge-215/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..4cb1b78063
--- /dev/null
+++ b/challenge-215/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,19 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::MoreUtils qw(slideatatime);
+
+sub number_placement{
+ my ($arr,$count) = @_;
+ my $it = slideatatime 1,3,@$arr;
+ my $c = 0;
+ while(my @vals = $it->()){
+ $c++ if $vals[0] == 0 && $vals[-1] == 0;
+ }
+ $c >= $count;
+}
+
+printf "%d\n", number_placement([1,0,0,0,1],1);
+printf "%d\n", number_placement([1,0,0,0,1],2);
+printf "%d\n", number_placement([1,0,0,0,0,0,0,0,1],3);
+
diff --git a/challenge-215/deadmarshal/raku/ch-1.raku b/challenge-215/deadmarshal/raku/ch-1.raku
new file mode 100644
index 0000000000..ebf443957f
--- /dev/null
+++ b/challenge-215/deadmarshal/raku/ch-1.raku
@@ -0,0 +1,16 @@
+#!/usr/bin/env raku
+
+sub odd-one-out(@arr)
+{
+ my $count = 0;
+ for @arr -> $s
+ {
+ $count++ if $s ne $s.comb.sort.join;
+ }
+ $count
+}
+
+say odd-one-out(['abc','xyz','tsu']);
+say odd-one-out(['rat','cab','dad']);
+say odd-one-out(['x','y','z']);
+
diff --git a/challenge-215/deadmarshal/raku/ch-2.raku b/challenge-215/deadmarshal/raku/ch-2.raku
new file mode 100644
index 0000000000..fa710816b8
--- /dev/null
+++ b/challenge-215/deadmarshal/raku/ch-2.raku
@@ -0,0 +1,16 @@
+#!/usr/bin/env raku
+
+sub number-placement(@arr,$count)
+{
+ my $c = 0;
+ for 1..^@arr.end -> $i
+ {
+ $c++ if all(@arr[$i-1],@arr[$i+1]) == 0;
+ }
+ $c >= $count;
+}
+
+say number-placement([1,0,0,0,1],1);
+say number-placement([1,0,0,0,1],2);
+say number-placement([1,0,0,0,0,0,0,0,1],3);
+