diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-11-25 15:30:20 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-25 15:30:20 +0000 |
| commit | becc2f759b6b157ae4bb5ca61f11a99727889846 (patch) | |
| tree | 06a50ee1a6729649b28c7655b9d1bf1f9f5f780e | |
| parent | df71a9b3469ce5357435f500d007664a12d0db4e (diff) | |
| parent | 00f33741e0e36c9ef65bc315138b48bb9a31ac42 (diff) | |
| download | perlweeklychallenge-club-becc2f759b6b157ae4bb5ca61f11a99727889846.tar.gz perlweeklychallenge-club-becc2f759b6b157ae4bb5ca61f11a99727889846.tar.bz2 perlweeklychallenge-club-becc2f759b6b157ae4bb5ca61f11a99727889846.zip | |
Merge pull request #7150 from deadmarshal/challenge192
Challenge192
| -rw-r--r-- | challenge-192/deadmarshal/c/ch-1.c | 15 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/c/ch-2.c | 39 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/cpp/ch-1.cpp | 15 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/cpp/ch-2.cpp | 31 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/lua/ch-1.lua | 9 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/lua/ch-2.lua | 25 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/nelua/ch-1.nelua | 10 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/nelua/ch-2.nelua | 28 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/nim/ch1.nim | 8 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/nim/ch2.nim | 17 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/perl/ch-1.pl | 13 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/perl/ch-2.pl | 23 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/python/ch1.py | 9 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/python/ch2.py | 15 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/raku/ch-1.raku | 11 | ||||
| -rw-r--r-- | challenge-192/deadmarshal/raku/ch-2.raku | 19 |
16 files changed, 287 insertions, 0 deletions
diff --git a/challenge-192/deadmarshal/c/ch-1.c b/challenge-192/deadmarshal/c/ch-1.c new file mode 100644 index 0000000000..8e76f9b244 --- /dev/null +++ b/challenge-192/deadmarshal/c/ch-1.c @@ -0,0 +1,15 @@ +#include<stdio.h> +#include<math.h> + +int binary_flip(int n) +{ + return (~n) & ((int)pow(2,log(n)/log(2))-1); +} + +int main(void) +{ + printf("%d\n", binary_flip(5)); + printf("%d\n", binary_flip(4)); + printf("%d\n", binary_flip(6)); + return 0; +} diff --git a/challenge-192/deadmarshal/c/ch-2.c b/challenge-192/deadmarshal/c/ch-2.c new file mode 100644 index 0000000000..3d29ab052b --- /dev/null +++ b/challenge-192/deadmarshal/c/ch-2.c @@ -0,0 +1,39 @@ +#include<stdio.h> +#include<stdlib.h> + +int array_sum(int *arr, size_t sz) +{ + int sum = 0; + for(size_t i = 0; i < sz; ++i) + sum += arr[i]; + return sum; +} + +int equal_distribution(int *arr, size_t sz) +{ + int sum,avg,moves = 0,sum_part = 0; + sum = array_sum(arr,sz); + if(sum % sz == 0) + { + avg = (int)sum / sz; + for(size_t i = 0; i < sz; ++i) + { + sum_part += arr[i]; + moves += abs(sum_part - (avg * (i+1))); + } + return moves; + } + return -1; +} + +int main(void) +{ + int a1[] = {1,0,5}; + int a2[] = {0,2,0}; + int a3[] = {0,3,0}; + size_t sz = 3; + printf("%d\n", equal_distribution(a1,sz)); + printf("%d\n", equal_distribution(a2,sz)); + printf("%d\n", equal_distribution(a3,sz)); + return 0; +} diff --git a/challenge-192/deadmarshal/cpp/ch-1.cpp b/challenge-192/deadmarshal/cpp/ch-1.cpp new file mode 100644 index 0000000000..886c748950 --- /dev/null +++ b/challenge-192/deadmarshal/cpp/ch-1.cpp @@ -0,0 +1,15 @@ +#include<iostream> +#include<cmath> + +int binary_flip(int n) +{ + return (~n) & ((int)pow(2,log(n)/log(2))-1); +} + +int main(void) +{ + std::cout << binary_flip(5) << '\n'; + std::cout << binary_flip(4) << '\n'; + std::cout << binary_flip(6) << '\n'; + return 0; +} diff --git a/challenge-192/deadmarshal/cpp/ch-2.cpp b/challenge-192/deadmarshal/cpp/ch-2.cpp new file mode 100644 index 0000000000..b6ec0aea97 --- /dev/null +++ b/challenge-192/deadmarshal/cpp/ch-2.cpp @@ -0,0 +1,31 @@ +#include<iostream> +#include<vector> +#include<numeric> + +int equal_distribution(const std::vector<int>& vec) +{ + int sum{},avg{},moves{},sum_part{}; + sum = std::accumulate(vec.begin(),vec.end(),0); + if(sum % vec.size() == 0) + { + avg = (int)sum / vec.size(); + for(size_t i = 0; i < vec.size(); ++i) + { + sum_part += vec[i]; + moves += abs(sum_part - (avg * (i+1))); + } + return moves; + } + return -1; +} + +int main(void) +{ + std::vector<int> vec1{1,0,5}; + std::vector<int> vec2{0,2,0}; + std::vector<int> vec3{0,3,0}; + std::cout << equal_distribution(vec1) << '\n'; + std::cout << equal_distribution(vec2) << '\n'; + std::cout << equal_distribution(vec3) << '\n'; + return 0; +} diff --git a/challenge-192/deadmarshal/lua/ch-1.lua b/challenge-192/deadmarshal/lua/ch-1.lua new file mode 100644 index 0000000000..24ce490784 --- /dev/null +++ b/challenge-192/deadmarshal/lua/ch-1.lua @@ -0,0 +1,9 @@ +local function binary_flip(n) + assert(type(n) == 'number', 'n must be a number!') + return (~n) & (2 ^ (math.log(n) // math.log(2))-1) +end + +print(binary_flip(5)) +print(binary_flip(4)) +print(binary_flip(6)) + diff --git a/challenge-192/deadmarshal/lua/ch-2.lua b/challenge-192/deadmarshal/lua/ch-2.lua new file mode 100644 index 0000000000..9fb45e9023 --- /dev/null +++ b/challenge-192/deadmarshal/lua/ch-2.lua @@ -0,0 +1,25 @@ +local function table_sum(t) + local sum = 0 + for i=1, #t do sum = sum + t[i] end + return sum +end + +local function equal_distribution(t) + assert(type(t) == 'table', 't must be a table!') + local sum = table_sum(t) + local avg,moves,sum_part = sum // #t,0,0 + if sum % #t == 0 then + for i=1, #t do + sum_part = sum_part + t[i] + moves = moves + math.abs(sum_part - (avg * (i))) + end + return moves + else + return -1 + end +end + +print(equal_distribution({1,0,5})) +print(equal_distribution({0,2,0})) +print(equal_distribution({0,3,0})) + diff --git a/challenge-192/deadmarshal/nelua/ch-1.nelua b/challenge-192/deadmarshal/nelua/ch-1.nelua new file mode 100644 index 0000000000..c2b913eeb0 --- /dev/null +++ b/challenge-192/deadmarshal/nelua/ch-1.nelua @@ -0,0 +1,10 @@ +require'math' + +local function binary_flip(n:integer):integer + return (~n) & integer(2 ^ (math.log(n) // math.log(2))-1) +end + +print(binary_flip(5)) +print(binary_flip(4)) +print(binary_flip(6)) + diff --git a/challenge-192/deadmarshal/nelua/ch-2.nelua b/challenge-192/deadmarshal/nelua/ch-2.nelua new file mode 100644 index 0000000000..abbe9b7a64 --- /dev/null +++ b/challenge-192/deadmarshal/nelua/ch-2.nelua @@ -0,0 +1,28 @@ +require'sequence' +require'math' + +local function seq_sum(s:sequence(integer)):integer + local sum = 0 + for i=1, #s do + sum = sum + s[i] + end + return sum +end + +local function equal_distribution(s:sequence(integer)):integer + local sum = seq_sum(s) + if sum % #s == 0 then + local avg,moves,sum_part = sum // #s,0,0 + for i=1, #s do + sum_part = sum_part + s[i] + moves = moves + math.abs(sum_part - (avg * (i))) + end + return moves + end + return -1 +end + +print(equal_distribution({1,0,5})) +print(equal_distribution({0,2,0})) +print(equal_distribution({0,3,0})) + diff --git a/challenge-192/deadmarshal/nim/ch1.nim b/challenge-192/deadmarshal/nim/ch1.nim new file mode 100644 index 0000000000..9eab2eda50 --- /dev/null +++ b/challenge-192/deadmarshal/nim/ch1.nim @@ -0,0 +1,8 @@ +import std/[bitops,math] + +proc binaryFlip(n:int):int = + bitand(bitnot(n), (2 ^ int(ln(float(n))/ln(float(2)))-1)) + +echo binaryFlip(5) +echo binaryFlip(4) +echo binaryFlip(6) diff --git a/challenge-192/deadmarshal/nim/ch2.nim b/challenge-192/deadmarshal/nim/ch2.nim new file mode 100644 index 0000000000..fbe26a6afd --- /dev/null +++ b/challenge-192/deadmarshal/nim/ch2.nim @@ -0,0 +1,17 @@ +import std/[math] + +proc equalDistribution(s:seq[int]):int = + var + sum:int = sum(s) + (avg,moves,sumPart) = (sum div s.len,0,0) + if sum mod s.len == 0: + for i in 0..<s.len: + sumPart += s[i] + moves += abs(sumPart - (avg * (i+1))) + return moves + return -1 + +echo equalDistribution(@[1,0,5]) +echo equalDistribution(@[0,2,0]) +echo equalDistribution(@[0,3,0]) + diff --git a/challenge-192/deadmarshal/perl/ch-1.pl b/challenge-192/deadmarshal/perl/ch-1.pl new file mode 100644 index 0000000000..4552724e38 --- /dev/null +++ b/challenge-192/deadmarshal/perl/ch-1.pl @@ -0,0 +1,13 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +sub binary_flip{ + my ($n) = @_; + ~$n & (2**(log($n)/log(2))-1); +} + +print binary_flip(5), "\n"; +print binary_flip(4), "\n"; +print binary_flip(6), "\n"; + diff --git a/challenge-192/deadmarshal/perl/ch-2.pl b/challenge-192/deadmarshal/perl/ch-2.pl new file mode 100644 index 0000000000..b295185c6c --- /dev/null +++ b/challenge-192/deadmarshal/perl/ch-2.pl @@ -0,0 +1,23 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use List::Util qw(sum); + +sub equal_distribution{ + my ($arr) = @_; + my $sum = sum(@$arr); + if ($sum % @$arr == 0){ + my ($avg,$moves,$sum_part) = ($sum/@$arr,0,0); + foreach my $i(0..$#$arr){ + $sum_part += $arr->[$i]; + $moves += abs($sum_part - ($avg * ($i + 1))); + } + return $moves; + } + -1; +} + +print equal_distribution([1,0,5]), "\n"; +print equal_distribution([0,2,0]), "\n"; +print equal_distribution([0,3,0]), "\n"; + diff --git a/challenge-192/deadmarshal/python/ch1.py b/challenge-192/deadmarshal/python/ch1.py new file mode 100644 index 0000000000..c604a5b69d --- /dev/null +++ b/challenge-192/deadmarshal/python/ch1.py @@ -0,0 +1,9 @@ +from math import log + +def binary_flip(n): + return (~n) & int((pow(2,log(n)/log(2))-1)) + +print(binary_flip(5)) +print(binary_flip(4)) +print(binary_flip(6)) + diff --git a/challenge-192/deadmarshal/python/ch2.py b/challenge-192/deadmarshal/python/ch2.py new file mode 100644 index 0000000000..0b36cd460d --- /dev/null +++ b/challenge-192/deadmarshal/python/ch2.py @@ -0,0 +1,15 @@ +def equal_distribution(arr): + summ,avg,moves,sumpart = 0,0,0,0 + summ = sum(arr) + if summ % len(arr) == 0: + avg = summ // len(arr) + for i in range(len(arr)): + sumpart += arr[i] + moves += abs(sumpart - (avg * (i+1))) + return moves + return -1 + +print(equal_distribution([1,0,5])) +print(equal_distribution([0,2,0])) +print(equal_distribution([0,3,0])) + diff --git a/challenge-192/deadmarshal/raku/ch-1.raku b/challenge-192/deadmarshal/raku/ch-1.raku new file mode 100644 index 0000000000..3dd1b2270e --- /dev/null +++ b/challenge-192/deadmarshal/raku/ch-1.raku @@ -0,0 +1,11 @@ +sub binary-flip($n) +{ + my $binary = $n.base(2); + $binary ~~ tr/10/01/; + $binary.parse-base(2); +} + +say binary-flip(5); +say binary-flip(4); +say binary-flip(6); + diff --git a/challenge-192/deadmarshal/raku/ch-2.raku b/challenge-192/deadmarshal/raku/ch-2.raku new file mode 100644 index 0000000000..285f6d8926 --- /dev/null +++ b/challenge-192/deadmarshal/raku/ch-2.raku @@ -0,0 +1,19 @@ +sub equal_distribution(@arr){ + my $sum = @arr.sum; + if ($sum %% @arr.elems) + { + my ($avg,$moves,$sum_part) = ($sum/@arr.elems,0,0); + for 0..^@arr.elems -> $i + { + $sum_part += @arr[$i]; + $moves += abs($sum_part - ($avg * ($i + 1))); + } + return $moves; + } + -1; +} + +say equal_distribution([1,0,5]); +say equal_distribution([0,2,0]); +say equal_distribution([0,3,0]); + |
