aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-11-25 15:30:20 +0000
committerGitHub <noreply@github.com>2022-11-25 15:30:20 +0000
commitbecc2f759b6b157ae4bb5ca61f11a99727889846 (patch)
tree06a50ee1a6729649b28c7655b9d1bf1f9f5f780e
parentdf71a9b3469ce5357435f500d007664a12d0db4e (diff)
parent00f33741e0e36c9ef65bc315138b48bb9a31ac42 (diff)
downloadperlweeklychallenge-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.c15
-rw-r--r--challenge-192/deadmarshal/c/ch-2.c39
-rw-r--r--challenge-192/deadmarshal/cpp/ch-1.cpp15
-rw-r--r--challenge-192/deadmarshal/cpp/ch-2.cpp31
-rw-r--r--challenge-192/deadmarshal/lua/ch-1.lua9
-rw-r--r--challenge-192/deadmarshal/lua/ch-2.lua25
-rw-r--r--challenge-192/deadmarshal/nelua/ch-1.nelua10
-rw-r--r--challenge-192/deadmarshal/nelua/ch-2.nelua28
-rw-r--r--challenge-192/deadmarshal/nim/ch1.nim8
-rw-r--r--challenge-192/deadmarshal/nim/ch2.nim17
-rw-r--r--challenge-192/deadmarshal/perl/ch-1.pl13
-rw-r--r--challenge-192/deadmarshal/perl/ch-2.pl23
-rw-r--r--challenge-192/deadmarshal/python/ch1.py9
-rw-r--r--challenge-192/deadmarshal/python/ch2.py15
-rw-r--r--challenge-192/deadmarshal/raku/ch-1.raku11
-rw-r--r--challenge-192/deadmarshal/raku/ch-2.raku19
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]);
+