diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-01-10 18:42:08 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-10 18:42:08 +0000 |
| commit | b78239e0130d4c3a0d1cc37b31fc78b2147c02da (patch) | |
| tree | 27af15da04ed1e36c33938dd49ca27569451163e | |
| parent | 9848137785315a225734118aae7d0226a325b320 (diff) | |
| parent | 0e3e1a42869013d09eaa4c797cd957539004d944 (diff) | |
| download | perlweeklychallenge-club-b78239e0130d4c3a0d1cc37b31fc78b2147c02da.tar.gz perlweeklychallenge-club-b78239e0130d4c3a0d1cc37b31fc78b2147c02da.tar.bz2 perlweeklychallenge-club-b78239e0130d4c3a0d1cc37b31fc78b2147c02da.zip | |
Merge pull request #7397 from deadmarshal/TWC199
TWC199
22 files changed, 517 insertions, 0 deletions
diff --git a/challenge-199/deadmarshal/c/ch-1.c b/challenge-199/deadmarshal/c/ch-1.c new file mode 100644 index 0000000000..0bfb0675ee --- /dev/null +++ b/challenge-199/deadmarshal/c/ch-1.c @@ -0,0 +1,23 @@ +#include<stdio.h> + +int good_pairs(int *arr, size_t sz) +{ + int count = 0; + for(size_t i = 0; i < sz; ++i) + for(size_t j = i+1; j < sz; ++j) + if(arr[i] == arr[j]) count++; + return count; +} + +int main(void) +{ + int a1[] = {1,2,3,1,1,3}; + int a2[] = {1,2,3}; + int a3[] = {1,1,1,1}; + size_t sz1 = 6, sz2 = 3, sz3 = 4; + printf("%d\n", good_pairs(a1,sz1)); + printf("%d\n", good_pairs(a2,sz2)); + printf("%d\n", good_pairs(a3,sz3)); + return 0; +} + diff --git a/challenge-199/deadmarshal/c/ch-2.c b/challenge-199/deadmarshal/c/ch-2.c new file mode 100644 index 0000000000..84a1935203 --- /dev/null +++ b/challenge-199/deadmarshal/c/ch-2.c @@ -0,0 +1,29 @@ +#include<stdio.h> +#include<stdlib.h> + +int good_triplets(int *arr, size_t sz, int x, int y, int z) +{ + int count = 0; + for(size_t i = 0; i < sz; ++i) + for(size_t j = 0; j < sz; ++j) + for(size_t k = 0; k < sz; ++k) + if((abs(arr[i] - arr[j]) <= x) && + (abs(arr[j] - arr[k]) <= y) && + (abs(arr[i] - arr[k]) <= z) && + (0 <= i) && + (i < j) && + (j < k) && + (k <= sz)) count++; + return count; +} + +int main(void) +{ + int a1[] = {3,0,1,1,9,7}; + int a2[] = {1,1,2,2,3}; + size_t sz1 = 6, sz2 = 5; + printf("%d\n", good_triplets(a1,sz1,7,2,3)); + printf("%d\n", good_triplets(a2,sz2,0,0,1)); + return 0; +} + diff --git a/challenge-199/deadmarshal/cpp/ch-1.cpp b/challenge-199/deadmarshal/cpp/ch-1.cpp new file mode 100644 index 0000000000..b5ccda1df0 --- /dev/null +++ b/challenge-199/deadmarshal/cpp/ch-1.cpp @@ -0,0 +1,22 @@ +#include<iostream> +#include<vector> + +template<typename T> +int good_pairs(const std::vector<T> &vec) +{ + int count{}; + for(size_t i = 0; i < vec.size(); ++i) + for(size_t j = i+1; j < vec.size(); ++j) + if(vec[i] == vec[j]) count++; + return count; +} + +int main() +{ + std::vector<int> vec1{1,2,3,1,1,3},vec2{1,2,3},vec3{1,1,1,1}; + std::cout << good_pairs<int>(vec1) << '\n'; + std::cout << good_pairs<int>(vec2) << '\n'; + std::cout << good_pairs<int>(vec3) << '\n'; + return 0; +} + diff --git a/challenge-199/deadmarshal/cpp/ch-2.cpp b/challenge-199/deadmarshal/cpp/ch-2.cpp new file mode 100644 index 0000000000..cfb5147495 --- /dev/null +++ b/challenge-199/deadmarshal/cpp/ch-2.cpp @@ -0,0 +1,28 @@ +#include<iostream> +#include<vector> + +template<typename T> +int good_triplets(const std::vector<T> &vec, int x, int y, int z) +{ + int count{}; + for(size_t i = 0; i < vec.size(); ++i) + for(size_t j = 0; j < vec.size(); ++j) + for(size_t k = 0; k < vec.size(); ++k) + if((abs(vec[i] - vec[j]) <= x) && + (abs(vec[j] - vec[k]) <= y) && + (abs(vec[i] - vec[k]) <= z) && + (0 <= i) && + (i < j) && + (j < k) && + (k <= vec.size())) count++; + return count; +} + +int main() +{ + std::vector<int> vec1{3,0,1,1,9,7}, vec2{1,1,2,2,3}; + std::cout << good_triplets<int>(vec1,7,2,3) << '\n'; + std::cout << good_triplets<int>(vec2,0,0,1) << '\n'; + return 0; +} + diff --git a/challenge-199/deadmarshal/d/ch1.d b/challenge-199/deadmarshal/d/ch1.d new file mode 100644 index 0000000000..1e552b09d5 --- /dev/null +++ b/challenge-199/deadmarshal/d/ch1.d @@ -0,0 +1,21 @@ +import std.stdio:writeln; + +int good_pairs(int[] arr) +{ + int count = 0; + for(size_t i = 0; i < arr.length; ++i) + for(size_t j = i+1; j < arr.length; ++j) + if(arr[i] == arr[j]) count++; + return count; +} + +void main() +{ + int[] a1 = [1,2,3,1,1,3]; + int[] a2 = [1,2,3]; + int[] a3 = [1,1,1,1]; + writeln(good_pairs(a1)); + writeln(good_pairs(a2)); + writeln(good_pairs(a3)); +} + diff --git a/challenge-199/deadmarshal/d/ch2.d b/challenge-199/deadmarshal/d/ch2.d new file mode 100644 index 0000000000..7349828fb5 --- /dev/null +++ b/challenge-199/deadmarshal/d/ch2.d @@ -0,0 +1,24 @@ +import std.stdio:writeln; +import std.math:abs; + +int good_pairs(int[] arr, int x, int y, int z) +{ + int count = 0; + for(size_t i = 0; i < arr.length; ++i) + for(size_t j = 0; j < arr.length; ++j) + for(size_t k = 0; k < arr.length; ++k) + if((abs(arr[i] - arr[j]) <= x) && + (abs(arr[j] - arr[k]) <= y) && + (abs(arr[i] - arr[k]) <= z) && + (0 <= i) && + (i < j) && + (j < k) && + (k <= arr.length)) count++; + return count; +} + +void main() +{ + writeln(good_pairs([3,0,1,1,9,7],7,2,3)); + writeln(good_pairs([1,1,2,2,3],0,0,1)); +} diff --git a/challenge-199/deadmarshal/lua/ch-1.lua b/challenge-199/deadmarshal/lua/ch-1.lua new file mode 100644 index 0000000000..3d75319798 --- /dev/null +++ b/challenge-199/deadmarshal/lua/ch-1.lua @@ -0,0 +1,17 @@ +#!/usr/bin/env lua + +local function good_pairs(t) + assert(type(t) == 'table','t must be a table!') + local count = 0 + for i=1,#t do + for j=i+1,#t do + if t[i] == t[j] then count = count + 1 end + end + end + return count +end + +print(good_pairs({1,2,3,1,1,3})) +print(good_pairs({1,2,3})) +print(good_pairs({1,1,1,1})) + diff --git a/challenge-199/deadmarshal/lua/ch-2.lua b/challenge-199/deadmarshal/lua/ch-2.lua new file mode 100644 index 0000000000..65de505bb4 --- /dev/null +++ b/challenge-199/deadmarshal/lua/ch-2.lua @@ -0,0 +1,22 @@ +#!/usr/bin/env lua + +local function good_triplets(t,x,y,z) + local count = 0 + for i=1,#t do + for j=1,#t do + for k=1,#t do + if math.abs(t[i] - t[j]) <= x and + math.abs(t[j] - t[k]) <= y and + math.abs(t[i] - t[k]) <= z and + 0 <= i and i < j and j < k and k <= #t then + count = count + 1 + end + end + end + end + return count +end + +print(good_triplets({3,0,1,1,9,7},7,2,3)) +print(good_triplets({1,1,2,2,3},0,0,1)) + diff --git a/challenge-199/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-199/deadmarshal/modula-3/ch1/src/Ch1.m3 new file mode 100644 index 0000000000..9c8e2f607d --- /dev/null +++ b/challenge-199/deadmarshal/modula-3/ch1/src/Ch1.m3 @@ -0,0 +1,28 @@ +MODULE Ch1 EXPORTS Main; + +IMPORT IO; + +VAR + A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{1,2,3,1,1,3}; + A2:ARRAY[0..2] OF INTEGER := ARRAY OF INTEGER{1,2,3}; + A3:ARRAY[0..3] OF INTEGER := ARRAY OF INTEGER{1,1,1,1}; + +PROCEDURE GoodPairs(VAR Arr:ARRAY OF INTEGER):INTEGER = + VAR + Count:INTEGER; + BEGIN + Count := 0; + FOR I := FIRST(Arr) TO LAST(Arr) DO + FOR J := I+1 TO LAST(Arr) DO + IF Arr[I] = Arr[J] THEN INC(Count) END; + END + END; + RETURN Count; + END GoodPairs; + +BEGIN + IO.PutInt(GoodPairs(A1)); IO.Put("\n"); + IO.PutInt(GoodPairs(A2)); IO.Put("\n"); + IO.PutInt(GoodPairs(A3)); IO.Put("\n"); +END Ch1. + diff --git a/challenge-199/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-199/deadmarshal/modula-3/ch1/src/m3makefile new file mode 100644 index 0000000000..0ee72d695b --- /dev/null +++ b/challenge-199/deadmarshal/modula-3/ch1/src/m3makefile @@ -0,0 +1,4 @@ +import("libm3") +implementation("Ch1") +program("ch1") + diff --git a/challenge-199/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-199/deadmarshal/modula-3/ch2/src/Ch2.m3 new file mode 100644 index 0000000000..e128d477b0 --- /dev/null +++ b/challenge-199/deadmarshal/modula-3/ch2/src/Ch2.m3 @@ -0,0 +1,35 @@ +MODULE Ch2 EXPORTS Main; + +IMPORT IO; + +VAR + A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{3,0,1,1,9,7}; + A2:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{1,1,2,2,3}; + +PROCEDURE GoodPairs(VAR A:ARRAY OF INTEGER;X,Y,Z:INTEGER):INTEGER = + VAR + Count:INTEGER; + BEGIN + Count := 0; + FOR I := FIRST(A) TO LAST(A) DO + FOR J := FIRST(A) TO LAST(A) DO + FOR K := FIRST(A) TO LAST(A) DO + IF((ABS(A[I] - A[J]) <= X) AND + ((ABS(A[J] - A[K]) <= Y)) AND + ((ABS(A[I] - A[K]) <= Z)) AND + (0 <= I) AND + (I < J) AND + (J < K) AND + (K <= NUMBER(A))) + THEN INC(Count) END; + END; + END; + END; + RETURN Count; + END GoodPairs; + +BEGIN + IO.PutInt(GoodPairs(A1,7,2,3)); IO.Put("\n"); + IO.PutInt(GoodPairs(A2,0,0,1)); IO.Put("\n"); +END Ch2. + diff --git a/challenge-199/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-199/deadmarshal/modula-3/ch2/src/m3makefile new file mode 100644 index 0000000000..4bfbb7373d --- /dev/null +++ b/challenge-199/deadmarshal/modula-3/ch2/src/m3makefile @@ -0,0 +1,3 @@ +import("libm3") +implementation("Ch2") +program("ch2") diff --git a/challenge-199/deadmarshal/nelua/ch-1.nelua b/challenge-199/deadmarshal/nelua/ch-1.nelua new file mode 100644 index 0000000000..2622331587 --- /dev/null +++ b/challenge-199/deadmarshal/nelua/ch-1.nelua @@ -0,0 +1,21 @@ +#!/usr/bin/env nelua + +require'sequence' + +local function good_pairs(s:sequence(integer)):integer + local count = 0 + for i=1,#s do + for j=i+1,#s do + if s[i] == s[j] then count = count + 1 end + end + end + return count +end + +local s1:sequence(integer) = {1,2,3,1,1,3} +local s2:sequence(integer) = {1,2,3} +local s3:sequence(integer) = {1,1,1,1} +print(good_pairs(s1)) +print(good_pairs(s2)) +print(good_pairs(s3)) + diff --git a/challenge-199/deadmarshal/nelua/ch-2.nelua b/challenge-199/deadmarshal/nelua/ch-2.nelua new file mode 100644 index 0000000000..85af41c908 --- /dev/null +++ b/challenge-199/deadmarshal/nelua/ch-2.nelua @@ -0,0 +1,28 @@ +#!/usr/bin/env nelua + +require'sequence' +require'math' + +local function good_triplets(s:sequence(integer), + x:integer,y:integer,z:integer):integer + local count = 0 + for i=1,#s do + for j=1,#s do + for k=1,#s do + if math.abs(s[i] - s[j]) <= x and + math.abs(s[j] - s[k]) <= y and + math.abs(s[i] - s[k]) <= z and + 0 <= i and i < j and j < k and k <= #s then + count = count + 1 + end + end + end + end + return count +end + +local s1:sequence(integer) = {3,0,1,1,9,7} +local s2:sequence(integer) = {1,1,2,2,3} +print(good_triplets(s1,7,2,3)) +print(good_triplets(s2,0,0,1)) + diff --git a/challenge-199/deadmarshal/oberon/Ch1.Mod b/challenge-199/deadmarshal/oberon/Ch1.Mod new file mode 100644 index 0000000000..f7c40bb03c --- /dev/null +++ b/challenge-199/deadmarshal/oberon/Ch1.Mod @@ -0,0 +1,36 @@ +MODULE Ch1; + + IMPORT Out; + + VAR + A1:ARRAY 6 OF INTEGER; + A2:ARRAY 3 OF INTEGER; + A3:ARRAY 4 OF INTEGER; + + PROCEDURE Init; + BEGIN + A1[0] := 1; A1[1] := 2; A1[2] := 3; A1[3] := 1; A1[4] := 1; A1[5] := 3; + A2[0] := 1; A2[1] := 2; A2[2] := 3; + A3[0] := 1; A3[1] := 1; A3[2] := 1; A3[3] := 1; + END Init; + + PROCEDURE GoodPairs(VAR Arr:ARRAY OF INTEGER):LONGINT; + VAR + I,J,Count:LONGINT; + BEGIN + Count := 0; + FOR I := 0 TO LEN(Arr)-1 DO + FOR J := I+1 TO LEN(Arr)-1 DO + IF Arr[I] = Arr[J] THEN INC(Count) END; + END + END; + RETURN Count; + END GoodPairs; + +BEGIN + Init; + Out.Int(GoodPairs(A1),0); Out.Ln; + Out.Int(GoodPairs(A2),0); Out.Ln; + Out.Int(GoodPairs(A3),0); Out.Ln; +END Ch1. + diff --git a/challenge-199/deadmarshal/oberon/Ch2.Mod b/challenge-199/deadmarshal/oberon/Ch2.Mod new file mode 100644 index 0000000000..b52db76154 --- /dev/null +++ b/challenge-199/deadmarshal/oberon/Ch2.Mod @@ -0,0 +1,43 @@ +MODULE Ch2; + + IMPORT Out; + + VAR + A1:ARRAY 6 OF INTEGER; + A2:ARRAY 5 OF INTEGER; + + PROCEDURE Init; + BEGIN + A1[0] := 3; A1[1] := 0; A1[2] := 1; A1[3] := 1; A1[4] := 9; A1[5] := 7; + A2[0] := 1; A2[1] := 1; A2[2] := 2; A2[3] := 2; A2[4] := 3; + END Init; + + PROCEDURE GoodPairs(VAR A:ARRAY OF INTEGER;X,Y,Z:INTEGER):INTEGER; + VAR + I,J,K:LONGINT; + Count:INTEGER; + BEGIN + Count := 0; + FOR I := 0 TO LEN(A)-1 DO + FOR J := 0 TO LEN(A)-1 DO + FOR K := 0 TO LEN(A)-1 DO + IF((ABS(A[I] - A[J]) <= X) & + ((ABS(A[J] - A[K]) <= Y)) & + ((ABS(A[I] - A[K]) <= Z)) & + (0 <= I) & + (I < J) & + (J < K) & + (K <= LEN(A))) + THEN INC(Count) END; + END; + END; + END; + RETURN Count; + END GoodPairs; + +BEGIN + Init; + Out.Int(GoodPairs(A1,7,2,3),0); Out.Ln; + Out.Int(GoodPairs(A2,0,0,1),0); Out.Ln; +END Ch2. + diff --git a/challenge-199/deadmarshal/pascal/ch1.pas b/challenge-199/deadmarshal/pascal/ch1.pas new file mode 100644 index 0000000000..d028abdd5a --- /dev/null +++ b/challenge-199/deadmarshal/pascal/ch1.pas @@ -0,0 +1,23 @@ +program Ch1; + +{$mode objfpc} + +uses + SysUtils,Types; + +function GoodPairs(Arr:TIntegerDynArray):Integer; +var + I,J:Integer; +begin + Result := 0; + for I := Low(Arr) to High(Arr) do + for J := I+1 to High(Arr) do + if Arr[I] = Arr[J] then Inc(Result); +end; + +begin + WriteLn(GoodPairs([1,2,3,1,1,3])); + WriteLn(GoodPairs([1,2,3])); + WriteLn(GoodPairs([1,1,1,1])); +end. + diff --git a/challenge-199/deadmarshal/pascal/ch2.pas b/challenge-199/deadmarshal/pascal/ch2.pas new file mode 100644 index 0000000000..744f4670af --- /dev/null +++ b/challenge-199/deadmarshal/pascal/ch2.pas @@ -0,0 +1,29 @@ +program Ch2; + +{$mode objfpc} + +uses + SysUtils,Types; + +function GoodTriplets(A:TIntegerDynArray;X,Y,Z:Integer):Integer; +var + I,J,K:Integer; +begin + Result := 0; + for I := Low(A) to High(A) do + for J := Low(A) to High(A) do + for K := Low(A) to High(A) do + if((Abs(A[I] - A[J]) <= X) and + (Abs(A[J] - A[K]) <= Y) and + (Abs(A[I] - A[K]) <= Z) and + (0 <= I) and + (I < J) and + (J < K) and + (K <= Length(A))) then Inc(Result); +end; + +begin + WriteLn(GoodTriplets([3,0,1,1,9,7],7,2,3)); + WriteLn(GoodTriplets([1,1,2,2,3],0,0,1)); +end. + diff --git a/challenge-199/deadmarshal/perl/ch-1.pl b/challenge-199/deadmarshal/perl/ch-1.pl new file mode 100644 index 0000000000..243d686c2b --- /dev/null +++ b/challenge-199/deadmarshal/perl/ch-1.pl @@ -0,0 +1,19 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +sub good_pairs{ + my ($arr) = @_; + my $count = 0; + for(my $i = 0; $i < @$arr; ++$i){ + for(my $j = $i+1; $j < @$arr; ++$j){ + $count++ if($arr->[$i] == $arr->[$j]); + } + } + $count; +} + +printf "%d\n", good_pairs([1,2,3,1,1,3]); +printf "%d\n", good_pairs([1,2,3]); +printf "%d\n", good_pairs([1,1,1,1]); + diff --git a/challenge-199/deadmarshal/perl/ch-2.pl b/challenge-199/deadmarshal/perl/ch-2.pl new file mode 100644 index 0000000000..c315e55a20 --- /dev/null +++ b/challenge-199/deadmarshal/perl/ch-2.pl @@ -0,0 +1,23 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +sub good_triplets{ + my ($A,$x,$y,$z) = @_; + my $count = 0; + for(my $i = 0; $i < @$A; ++$i){ + for(my $j = 0; $j < @$A; ++$j){ + for(my $k = 0; $k < @$A; ++$k){ + if((abs($A->[$i] - $A->[$j]) <= $x) && + (abs($A->[$j] - $A->[$k]) <= $y) && + (abs($A->[$i] - $A->[$k]) <= $z) && + (0 <= $i < $j < $k <= @$A)){$count++} + } + } + } + $count; +} + +printf "%d\n", good_triplets([3,0,1,1,9,7],7,2,3); +printf "%d\n", good_triplets([1,1,2,2,3],0,0,1); + diff --git a/challenge-199/deadmarshal/raku/ch-1.raku b/challenge-199/deadmarshal/raku/ch-1.raku new file mode 100644 index 0000000000..5aefd30874 --- /dev/null +++ b/challenge-199/deadmarshal/raku/ch-1.raku @@ -0,0 +1,17 @@ +sub good-pairs(@arr) +{ + my $count = 0; + for 0..@arr.end -> $i + { + for $i+1..@arr.end -> $j + { + $count++ if (@arr[$i] == @arr[$j]); + } + } + $count; +} + +say good-pairs([1,2,3,1,1,3]); +say good-pairs([1,2,3]); +say good-pairs([1,1,1,1]); + diff --git a/challenge-199/deadmarshal/raku/ch-2.raku b/challenge-199/deadmarshal/raku/ch-2.raku new file mode 100644 index 0000000000..df0d4615f7 --- /dev/null +++ b/challenge-199/deadmarshal/raku/ch-2.raku @@ -0,0 +1,22 @@ +sub good-triplets(@A,$x,$y,$z) +{ + my $count = 0; + for 0..@A.end -> $i + { + for 0..@A.end -> $j + { + for 0..@A.end -> $k + { + if ((abs(@A[$i] - @A[$j]) <= $x) && + (abs(@A[$j] - @A[$k]) <= $y) && + (abs(@A[$i] - @A[$k]) <= $z) && + (0 <= $i < $j < $k <= @A.elems)) {$count++} + } + } + } + $count; +} + +say good-triplets([3,0,1,1,9,7],7,2,3); +say good-triplets([1,1,2,2,3],0,0,1); + |
