diff options
| author | deadmarshal <adeadmarshal@gmail.com> | 2022-12-15 10:13:05 +0330 |
|---|---|---|
| committer | deadmarshal <adeadmarshal@gmail.com> | 2022-12-15 10:13:05 +0330 |
| commit | aecf51b43cf11e2d592fdfa86282d642e716d9a8 (patch) | |
| tree | f889a3d22fafcf14022690432b43be08bee43b3c | |
| parent | c1d3932971f399789d4ee01cb886bb1e984f2563 (diff) | |
| download | perlweeklychallenge-club-aecf51b43cf11e2d592fdfa86282d642e716d9a8.tar.gz perlweeklychallenge-club-aecf51b43cf11e2d592fdfa86282d642e716d9a8.tar.bz2 perlweeklychallenge-club-aecf51b43cf11e2d592fdfa86282d642e716d9a8.zip | |
TWC195
24 files changed, 597 insertions, 0 deletions
diff --git a/challenge-195/deadmarshal/c/ch-1.c b/challenge-195/deadmarshal/c/ch-1.c new file mode 100644 index 0000000000..34812b8140 --- /dev/null +++ b/challenge-195/deadmarshal/c/ch-1.c @@ -0,0 +1,29 @@ +#include<stdio.h> + +int has_dups(int n) +{ + int hash[10] = {0}; + if(n > 9999999999) return 1; + while(n) + { + if(hash[n%10]) return 1; + hash[n%10] = 1; + n /= 10; + } + return 0; +} + +int special_integers(int n) +{ + int count = 0; + for(int i = 1; i <= n; ++i) if(!has_dups(i)) count++; + return count; +} + +int main() +{ + printf("%d\n",special_integers(15)); + printf("%d\n",special_integers(35)); + return 0; +} + diff --git a/challenge-195/deadmarshal/c/ch-2.c b/challenge-195/deadmarshal/c/ch-2.c new file mode 100644 index 0000000000..9da6fa2a31 --- /dev/null +++ b/challenge-195/deadmarshal/c/ch-2.c @@ -0,0 +1,31 @@ +#include<stdio.h> + +int all_odd(int *arr, size_t sz) +{ + for(size_t i = 0; i < sz; ++i) if(arr[i] % 2 == 0) return 0; + return 1; +} + +int most_frequent_even(int *arr, size_t sz) +{ +#define N 10 + if(all_odd(arr,sz)) return -1; + int counts[N] = {0}; + for(size_t i = 0; i < sz; ++i) if(arr[i] % 2 == 0) counts[arr[i]]++; + int maxkey = counts[0]; + for(size_t i = 1; i < N; ++i) + if(counts[i] > maxkey) maxkey = i; + return maxkey; +} + +int main(void) +{ + int a1[] = {1,1,2,6,2}; + int a2[] = {1,3,5,7}; + int a3[] = {6,4,4,6,1}; + printf("%d\n", most_frequent_even(a1,5)); + printf("%d\n", most_frequent_even(a2,4)); + printf("%d\n", most_frequent_even(a3,5)); + return 0; +} + diff --git a/challenge-195/deadmarshal/cpp/ch-1.cpp b/challenge-195/deadmarshal/cpp/ch-1.cpp new file mode 100644 index 0000000000..c2efa674ec --- /dev/null +++ b/challenge-195/deadmarshal/cpp/ch-1.cpp @@ -0,0 +1,35 @@ +#include<iostream> +#include<vector> +#include<algorithm> + +std::vector<int> dtov(int n) +{ + std::vector<int> digits{}; + while(n) + { + digits.push_back(n % 10); + n /= 10; + } + return digits; +} + +int special_integers(int n) +{ + int count{}; + for(int i = 1; i <= n; ++i) + { + std::vector<int> digits = dtov(i); + const bool has_dups = + std::adjacent_find(digits.begin(), digits.end()) != digits.end(); + if(!has_dups) count++; + } + return count; +} + +int main() +{ + std::cout << special_integers(15) << '\n'; + std::cout << special_integers(35) << '\n'; + return 0; +} + diff --git a/challenge-195/deadmarshal/cpp/ch-2.cpp b/challenge-195/deadmarshal/cpp/ch-2.cpp new file mode 100644 index 0000000000..610a1bdf62 --- /dev/null +++ b/challenge-195/deadmarshal/cpp/ch-2.cpp @@ -0,0 +1,36 @@ +#include<iostream> +#include<vector> +#include<map> +#include<algorithm> + +int most_frequent_even(std::vector<int> vec) +{ + if(std::all_of(vec.begin(), + vec.end(), + [](int i){return i % 2 != 0;})) return -1; + vec.erase(std::remove_if(vec.begin(), + vec.end(), + [](int i){return i % 2 != 0;}), + vec.end()); + std::map<int,int,std::greater<int>> map{}; + std::vector<int> keys{},vals{}; + for(const auto& i : vec) map[i]++; + for(const auto& kv : map) + { + keys.push_back(kv.first); + vals.push_back(kv.second); + } + const bool has_dups = + std::adjacent_find(vals.begin(), vals.end()) != vals.end(); + if(!has_dups) return keys.back(); + return keys.back(); +} + +int main() +{ + std::cout << most_frequent_even({1,1,2,6,2}) << '\n'; + std::cout << most_frequent_even({1,3,5,7}) << '\n'; + std::cout << most_frequent_even({6,4,4,6,1}) << '\n'; + return 0; +} + diff --git a/challenge-195/deadmarshal/d/ch1.d b/challenge-195/deadmarshal/d/ch1.d new file mode 100644 index 0000000000..b1c6252960 --- /dev/null +++ b/challenge-195/deadmarshal/d/ch1.d @@ -0,0 +1,27 @@ +import std.stdio:writeln; + +bool has_dups(int n) +{ + int[int] hash; + while(n) + { + if(hash.require(n%10,0)) return true; + hash[n%10] = 1; + n /= 10; + } + return false; +} + +int special_integers(int n) +{ + int count = 0; + for(int i = 1; i <= n; ++i) if(!has_dups(i)) count++; + return count; +} + +void main() +{ + writeln(special_integers(15)); + writeln(special_integers(35)); +} + diff --git a/challenge-195/deadmarshal/d/ch2.d b/challenge-195/deadmarshal/d/ch2.d new file mode 100644 index 0000000000..b80f690abc --- /dev/null +++ b/challenge-195/deadmarshal/d/ch2.d @@ -0,0 +1,24 @@ +import std.stdio:writeln; +import std.algorithm:all,filter,reduce,uniq,minElement,sort; +import std.array:array; + +int most_frequent_even(int[] arr) +{ + if(all!"a & 1"(arr)) return -1; + int[int] hash; + foreach(int i; filter!(a => !(a & 1))(arr)) if(!(i & 1)) hash[i]++; + if(hash.values.length == hash.values.uniq.array.length) + return hash.keys.minElement; + return reduce!((a,b) => hash[a] == hash[b] ? a : b)(hash.keys.sort); +} + +void main() +{ + int[] a1 = [1,1,2,6,2]; + int[] a2 = [1,3,5,7]; + int[] a3 = [6,4,4,6,1]; + writeln(most_frequent_even(a1)); + writeln(most_frequent_even(a2)); + writeln(most_frequent_even(a3)); +} + diff --git a/challenge-195/deadmarshal/lua/ch-1.lua b/challenge-195/deadmarshal/lua/ch-1.lua new file mode 100644 index 0000000000..e2b7dfcf00 --- /dev/null +++ b/challenge-195/deadmarshal/lua/ch-1.lua @@ -0,0 +1,26 @@ +#!/usr/bin/env lua + +local function has_dups(n) + assert(type(n) == 'number','n must be a number!') + if n > 9999999999 then return true end + local hash = {} + while n ~= 0 do + if(hash[n%10] ~= nil) then return true end + hash[n%10] = 1 + n = n // 10 + end + return false +end + +local function special_integers(n) + assert(type(n) == 'number','n must be a number!') + local count = 0 + for i=1, n do + if not has_dups(i) then count = count + 1 end + end + return count +end + +print(special_integers(15)) +print(special_integers(35)) + diff --git a/challenge-195/deadmarshal/lua/ch-2.lua b/challenge-195/deadmarshal/lua/ch-2.lua new file mode 100644 index 0000000000..94a2ee7c4a --- /dev/null +++ b/challenge-195/deadmarshal/lua/ch-2.lua @@ -0,0 +1,38 @@ +#!/usr/bin/env lua +-- luarocks install stdlib +local std = require'std' + +local function is_uniq(t) + for i=1, #t do + for j=i+1, #t do + if t[i] == t[j] then return false end + end + end + return true +end + +local function most_frequent_even(t) + if #std.functional.filter(std.functional.lambda('|e| e % 2 ~= 0'), + std.elems,t) == #t then + return -1 + end + t = std.functional.filter(std.functional.lambda('|e| e % 2 == 0'), + std.elems,t) + local hash = {} + setmetatable(hash,{__index = function(t,k) return 0 end}) + for i=1,#t do hash[t[i]] = hash[t[i]] + 1 end + if is_uniq(std.table.values(hash)) then + return math.min(std.table.unpack(std.table.keys(hash))) + end + local sorted = std.table.okeys(hash) + for i=1,#sorted-1 do + if hash[sorted[i]] == hash[sorted[i+1]] then + return sorted[i] + end + end +end + +print(most_frequent_even({1,1,2,6,2})) +print(most_frequent_even({1,3,5,7})) +print(most_frequent_even({6,4,4,6,1})) + diff --git a/challenge-195/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-195/deadmarshal/modula-3/ch1/src/Ch1.m3 new file mode 100644 index 0000000000..7eefc20e96 --- /dev/null +++ b/challenge-195/deadmarshal/modula-3/ch1/src/Ch1.m3 @@ -0,0 +1,30 @@ +MODULE Ch1 EXPORTS Main; + +IMPORT IO; + +PROCEDURE HasDups(N:INTEGER):BOOLEAN = + VAR + Hash := ARRAY[0..9] OF INTEGER{0,..}; + BEGIN + IF N > 9999999999 THEN RETURN TRUE END; + WHILE N # 0 DO + IF Hash[N MOD 10] # 0 THEN RETURN TRUE END; + Hash[N MOD 10] := 1; + N := N DIV 10; + END; + RETURN FALSE; + END HasDups; + +PROCEDURE SpecialIntegers(N:INTEGER):INTEGER = + VAR Count:INTEGER; + BEGIN + Count := 0; + FOR I := 1 TO N DO IF NOT HasDups(I) THEN INC(Count) END END; + RETURN Count; + END SpecialIntegers; + +BEGIN + IO.PutInt(SpecialIntegers(15)); IO.Put("\n"); + IO.PutInt(SpecialIntegers(35)); IO.Put("\n"); +END Ch1. + diff --git a/challenge-195/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-195/deadmarshal/modula-3/ch1/src/m3makefile new file mode 100644 index 0000000000..8a6bc1e4f8 --- /dev/null +++ b/challenge-195/deadmarshal/modula-3/ch1/src/m3makefile @@ -0,0 +1,3 @@ +import("libm3") +implementation("Ch1") +program("ch1") diff --git a/challenge-195/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-195/deadmarshal/modula-3/ch2/src/Ch2.m3 new file mode 100644 index 0000000000..08887daf99 --- /dev/null +++ b/challenge-195/deadmarshal/modula-3/ch2/src/Ch2.m3 @@ -0,0 +1,44 @@ +MODULE Ch2 EXPORTS Main; + +IMPORT IO; + +VAR + A1:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{1,1,2,6,2}; + A2:ARRAY[0..3] OF INTEGER := ARRAY OF INTEGER{1,3,5,7}; + A3:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{6,4,4,6,1}; + +PROCEDURE AllOdd(VAR Arr:ARRAY OF INTEGER):BOOLEAN = + BEGIN + FOR I := FIRST(Arr) TO LAST(Arr) DO + IF Arr[I] MOD 2 = 0 THEN RETURN FALSE END; + END; + RETURN TRUE; + END AllOdd; + +PROCEDURE MostFrequentEven(VAR Arr:ARRAY OF INTEGER):INTEGER = + VAR + MaxKey:INTEGER; + Counts:ARRAY[0..9] OF INTEGER; + BEGIN + IF AllOdd(Arr) THEN RETURN -1 END; + FOR I := FIRST(Counts) TO LAST(Counts) DO Counts[I] := 0 END; + FOR I := FIRST(Arr) TO LAST(Arr) DO + IF Arr[I] MOD 2 = 0 THEN + INC(Counts[Arr[I]]) + END + END; + MaxKey := Counts[0]; + FOR I := 1 TO LAST(Counts) DO + IF Counts[I] > MaxKey THEN + MaxKey := I + END + END; + RETURN MaxKey; + END MostFrequentEven; + +BEGIN + IO.PutInt(MostFrequentEven(A1)); IO.Put("\n"); + IO.PutInt(MostFrequentEven(A2)); IO.Put("\n"); + IO.PutInt(MostFrequentEven(A3)); IO.Put("\n"); +END Ch2. + diff --git a/challenge-195/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-195/deadmarshal/modula-3/ch2/src/m3makefile new file mode 100644 index 0000000000..4bfbb7373d --- /dev/null +++ b/challenge-195/deadmarshal/modula-3/ch2/src/m3makefile @@ -0,0 +1,3 @@ +import("libm3") +implementation("Ch2") +program("ch2") diff --git a/challenge-195/deadmarshal/nim/ch1.nim b/challenge-195/deadmarshal/nim/ch1.nim new file mode 100644 index 0000000000..0696bd476a --- /dev/null +++ b/challenge-195/deadmarshal/nim/ch1.nim @@ -0,0 +1,16 @@ +import std/sequtils + +proc intToSeq(n:int):seq[int] = + var cp = n + while cp != 0: + result.add(cp mod 10) + cp = cp div 10 + +proc specialIntegers(n:int):int = + for i in 1..n: + let digits = intToSeq(i) + if digits.len == deduplicate(digits).len: result += 1 + +echo specialIntegers(15) +echo specialIntegers(35) + diff --git a/challenge-195/deadmarshal/nim/ch2.nim b/challenge-195/deadmarshal/nim/ch2.nim new file mode 100644 index 0000000000..0a77a29286 --- /dev/null +++ b/challenge-195/deadmarshal/nim/ch2.nim @@ -0,0 +1,13 @@ +import std/[sequtils,tables] + +proc mostFrequentEven(s:seq[int]):int = + var t = toCountTable(s.filterIt(it mod 2 == 0)) + if all(s,proc(x:int):bool = x mod 2 != 0): return -1 + if toSeq(t.values).len == toSeq(t.values).deduplicate.len: + return min(toSeq(t.keys)) + return foldl(toSeq(t.keys), (if t[a] == t[b]: a else: b)) + +echo mostFrequentEven(@[1,1,2,6,2]) +echo mostFrequentEven(@[1,3,5,7]) +echo mostFrequentEven(@[6,4,4,6,1]) + diff --git a/challenge-195/deadmarshal/oberon/Ch1.Mod b/challenge-195/deadmarshal/oberon/Ch1.Mod new file mode 100644 index 0000000000..acb5e10420 --- /dev/null +++ b/challenge-195/deadmarshal/oberon/Ch1.Mod @@ -0,0 +1,32 @@ +MODULE Ch1; + + IMPORT Out; + + PROCEDURE HasDups(N:INTEGER):BOOLEAN; + VAR + I:LONGINT; + Hash:ARRAY 10 OF INTEGER; + BEGIN + FOR I := 0 TO LEN(Hash)-1 DO Hash[I] := 0 END; + IF N > 9999999999 THEN RETURN TRUE END; + WHILE N # 0 DO + IF Hash[N MOD 10] # 0 THEN RETURN TRUE END; + Hash[N MOD 10] := 1; + N := N DIV 10; + END; + RETURN FALSE; + END HasDups; + + PROCEDURE SpecialIntegers(N:INTEGER):INTEGER; + VAR I,Count:INTEGER; + BEGIN + Count := 0; + FOR I := 1 TO N DO IF ~HasDups(I) THEN INC(Count) END END; + RETURN Count; + END SpecialIntegers; + +BEGIN + Out.Int(SpecialIntegers(15),0); Out.Ln; + Out.Int(SpecialIntegers(35),0); Out.Ln; +END Ch1. + diff --git a/challenge-195/deadmarshal/oberon/Ch2.Mod b/challenge-195/deadmarshal/oberon/Ch2.Mod new file mode 100644 index 0000000000..551d88f301 --- /dev/null +++ b/challenge-195/deadmarshal/oberon/Ch2.Mod @@ -0,0 +1,53 @@ +MODULE Ch2; + + IMPORT Out; + + VAR + A1,A3:ARRAY 5 OF INTEGER; + A2:ARRAY 4 OF INTEGER; + + PROCEDURE Init(); + BEGIN + A1[0] := 1; A1[1] := 1; A1[2] := 2; A1[3] := 6; A1[4] := 2; + A2[0] := 1; A2[1] := 3; A2[2] := 5; A2[3] := 7; + A3[0] := 6; A3[1] := 4; A3[2] := 4; A3[3] := 6; A3[4] := 1; + END Init; + + PROCEDURE AllOdd(VAR Arr:ARRAY OF INTEGER):BOOLEAN; + VAR I:LONGINT; + BEGIN + FOR I := 0 TO LEN(Arr)-1 DO + IF ~ODD(Arr[I]) THEN RETURN FALSE END + END; + RETURN TRUE; + END AllOdd; + + PROCEDURE MostFrequentEven(VAR Arr:ARRAY OF INTEGER):INTEGER; + VAR + I,J:LONGINT; + Counts:ARRAY 10 OF INTEGER; + MaxKey:INTEGER; + BEGIN + IF AllOdd(Arr) THEN RETURN -1 END; + FOR I := 0 TO LEN(Counts)-1 DO Counts[I] := 0 END; + FOR I := 0 TO LEN(Arr)-1 DO + IF ~ODD(Arr[I]) THEN + INC(Counts[Arr[I]]) + END + END; + MaxKey := Counts[0]; + FOR I := 1 TO LEN(Counts)-1 DO + IF Counts[I] > MaxKey THEN + MaxKey := SHORT(I); + END + END; + RETURN MaxKey; + END MostFrequentEven; + +BEGIN + Init; + Out.Int(MostFrequentEven(A1),0); Out.Ln; + Out.Int(MostFrequentEven(A2),0); Out.Ln; + Out.Int(MostFrequentEven(A3),0); Out.Ln; +END Ch2. + diff --git a/challenge-195/deadmarshal/pascal/ch1.pas b/challenge-195/deadmarshal/pascal/ch1.pas new file mode 100644 index 0000000000..c8b2e1fd4c --- /dev/null +++ b/challenge-195/deadmarshal/pascal/ch1.pas @@ -0,0 +1,34 @@ +program Ch1; + +{$mode objfpc} + +uses + SysUtils; + +function HasDups(N:Integer):Boolean; +var + Hash:array[0..9] of Integer; +begin + FillDWord(Hash,Length(Hash),0); + while N <> 0 do + begin + if Hash[N mod 10] <> 0 then Exit(True); + Hash[N mod 10] := 1; + N := N div 10; + end; + Exit(False); +end; + +function SpecialIntegers(N:Integer):Integer; +var + I:Integer; +begin + Result := 0; + for I := 1 to N do if not(HasDups(I)) then Inc(Result); +end; + +begin + WriteLn(SpecialIntegers(15)); + WriteLn(SpecialIntegers(35)); +end. + diff --git a/challenge-195/deadmarshal/pascal/ch2.pas b/challenge-195/deadmarshal/pascal/ch2.pas new file mode 100644 index 0000000000..5717b30980 --- /dev/null +++ b/challenge-195/deadmarshal/pascal/ch2.pas @@ -0,0 +1,40 @@ +program Ch2; + +{$mode objfpc} + +uses + SysUtils,Types; + +type + TFunc = function(N:Integer):Boolean; + +function All(F:TFunc;Arr:TIntegerDynArray):Boolean; +var + I:Integer; +begin + for I := Low(Arr) to High(Arr) do + if not(F(Arr[I])) then Exit(False); + Exit(True); +end; + +function MostFrequentEven(Arr:TIntegerDynArray):Integer; +var + I,MaxKey:Integer; + Counts:array[0..9] of Integer; +begin + if(All(@Odd,Arr)) then Exit(-1); + FillDWord(Counts,Length(Counts),0); + for I := Low(Arr) to High(Arr) do + if not Odd(Arr[I]) then Inc(Counts[Arr[I]]); + MaxKey := Counts[0]; + for I := 1 to High(Counts) do + if Counts[I] > MaxKey then MaxKey := I; + Exit(MaxKey); +end; + +begin + WriteLn(MostFrequentEven([1,1,2,6,2])); + WriteLn(MostFrequentEven([1,3,5,7])); + WriteLn(MostFrequentEven([6,4,4,6,1])); +end. + diff --git a/challenge-195/deadmarshal/perl/ch-1.pl b/challenge-195/deadmarshal/perl/ch-1.pl new file mode 100644 index 0000000000..a32afd9563 --- /dev/null +++ b/challenge-195/deadmarshal/perl/ch-1.pl @@ -0,0 +1,17 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use List::Util qw(uniq); + +sub special_integers{ + my $count = 0; + foreach(1..$_[0]){ + my @arr = split '',$_; + $count++ if @arr == uniq @arr; + } + $count; +} + +printf "%d\n", special_integers(15); +printf "%d\n", special_integers(35); + diff --git a/challenge-195/deadmarshal/perl/ch-2.pl b/challenge-195/deadmarshal/perl/ch-2.pl new file mode 100644 index 0000000000..5c4aa786fb --- /dev/null +++ b/challenge-195/deadmarshal/perl/ch-2.pl @@ -0,0 +1,19 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use List::Util qw(all min uniqint reduce); + +sub most_frequent_even{ + my ($arr) = @_; + return -1 if all {$_ % 2 != 0} @$arr; + my %hash; + $hash{$_}++ foreach(grep {!($_ & 1)} @$arr); + return min keys %hash if((values %hash) == uniqint(values %hash)); + return reduce {$hash{$a} == $hash{$b} ? $a : $b} + sort {$a <=> $b} keys %hash; +} + +print most_frequent_even([1,1,2,6,2]), "\n"; +print most_frequent_even([1,3,5,7]), "\n"; +print most_frequent_even([6,4,4,6,1]), "\n"; + diff --git a/challenge-195/deadmarshal/python/ch1.py b/challenge-195/deadmarshal/python/ch1.py new file mode 100644 index 0000000000..b48d310af1 --- /dev/null +++ b/challenge-195/deadmarshal/python/ch1.py @@ -0,0 +1,10 @@ +def special_integers(n): + count = 0 + for i in range(1,n+1): + digits = [int(x) for x in str(i)] + if len(digits) == len(set(digits)): count += 1 + return count + +print(special_integers(15)) +print(special_integers(35)) + diff --git a/challenge-195/deadmarshal/python/ch2.py b/challenge-195/deadmarshal/python/ch2.py new file mode 100644 index 0000000000..783f93555b --- /dev/null +++ b/challenge-195/deadmarshal/python/ch2.py @@ -0,0 +1,14 @@ +from functools import reduce + +def most_frequent_even(arr): + if all(map(lambda n: n % 2 != 0, arr)): return -1 + d = {} + for i in arr: + if i % 2 == 0: d[i] = d.get(i, 0) + 1 + if len(d.values()) == len(set(d.values())): return min(d) + return reduce(lambda a,b:a if d[a] > d[b] else b, d.keys()) + +print(most_frequent_even([1,1,2,6,2])) +print(most_frequent_even([1,3,5,7])) +print(most_frequent_even([6,4,4,6,1])) + diff --git a/challenge-195/deadmarshal/raku/ch-1.raku b/challenge-195/deadmarshal/raku/ch-1.raku new file mode 100644 index 0000000000..6adfef56c3 --- /dev/null +++ b/challenge-195/deadmarshal/raku/ch-1.raku @@ -0,0 +1,10 @@ +sub special-integers($n) +{ + my $count = 0; + $count++ if $_.comb.unique == $_.comb for 1..$n; + $count; +} + +say special-integers(15); +say special-integers(35); + diff --git a/challenge-195/deadmarshal/raku/ch-2.raku b/challenge-195/deadmarshal/raku/ch-2.raku new file mode 100644 index 0000000000..6f4c349d1f --- /dev/null +++ b/challenge-195/deadmarshal/raku/ch-2.raku @@ -0,0 +1,13 @@ +sub most-frequent-even(@arr) +{ + return -1 if @arr.none %% 2; + my %hash; + %hash{$_}++ for @arr.grep: * %% 2; + return %hash.keys.min if %hash.values == %hash.values.unique; + %hash.keys.sort.reduce: {%hash{$^a} == %hash{$^b} ?? $^a !! $^b}; +} + +say most-frequent-even([1,1,2,6,2]); +say most-frequent-even([1,3,5,7]); +say most-frequent-even([6,4,4,6,1]); + |
