diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-05-05 11:09:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-05 11:09:56 +0100 |
| commit | c5c10f9523c6a1eef5549b37abb0fef72ca50e95 (patch) | |
| tree | 8aeeb15024e50cc0c0e5e142df457ae7f134368d | |
| parent | 4849a589490fb6c66163506a4a6e4a8b3c4b1df5 (diff) | |
| parent | 15615cd21fe47b7e8c725521801c0dde7a024979 (diff) | |
| download | perlweeklychallenge-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.c | 29 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/c/ch-2.c | 22 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/cpp/ch-1.cpp | 30 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/cpp/ch-2.cpp | 22 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/d/ch1.d | 23 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/d/ch2.d | 20 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/lua/ch-1.lua | 28 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/lua/ch-2.lua | 15 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/modula-3/ch1/src/Ch1.m3 | 33 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/modula-3/ch1/src/m3makefile | 4 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/modula-3/ch2/src/Ch2.m3 | 26 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/modula-3/ch2/src/m3makefile | 5 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/pascal/ch1.pas | 31 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/pascal/ch2.pas | 23 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/perl/ch-1.pl | 20 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/perl/ch-2.pl | 19 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/raku/ch-1.raku | 16 | ||||
| -rw-r--r-- | challenge-215/deadmarshal/raku/ch-2.raku | 16 |
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); + |
