aboutsummaryrefslogtreecommitdiff
path: root/challenge-271
diff options
context:
space:
mode:
authorntovar <tovar.nelo@gmail.com>2024-06-01 15:40:24 -0500
committerntovar <tovar.nelo@gmail.com>2024-06-01 15:40:24 -0500
commit924d075c5c3607b509bcc5e73e1d977670204a94 (patch)
treefe492524aeb644686fc1364f29e03d83cb802e1c /challenge-271
parent141a2c357124c00dda182472650be78c509efd97 (diff)
downloadperlweeklychallenge-club-924d075c5c3607b509bcc5e73e1d977670204a94.tar.gz
perlweeklychallenge-club-924d075c5c3607b509bcc5e73e1d977670204a94.tar.bz2
perlweeklychallenge-club-924d075c5c3607b509bcc5e73e1d977670204a94.zip
Challenge 271. Add Perl and Bash(ch-2.sh) solutions. By Nelo Tovar
Diffstat (limited to 'challenge-271')
-rwxr-xr-xchallenge-271/nelo-tovar/bash/ch-2.sh55
-rw-r--r--challenge-271/nelo-tovar/perl/ch-1.pl37
-rw-r--r--challenge-271/nelo-tovar/perl/ch-2.pl39
3 files changed, 131 insertions, 0 deletions
diff --git a/challenge-271/nelo-tovar/bash/ch-2.sh b/challenge-271/nelo-tovar/bash/ch-2.sh
new file mode 100755
index 0000000000..937992526f
--- /dev/null
+++ b/challenge-271/nelo-tovar/bash/ch-2.sh
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+#
+# The Weekly Challenge 271 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-271/
+#
+# Task 2 : Sort by 1 bits
+
+function one_count() {
+ local ones=$(bc <<< "obase=2;$1")
+ ones=${ones//0/}
+
+ echo ${#ones}
+}
+
+function sort_by_1_bits() {
+ local nums=("$@")
+ local n=${#nums[@]}
+
+ for (( i = 0; i < $n-1; i++ )); do
+ flag=0;
+ for ((j = 0; j < $n-1-$i; j++ )); do
+ a=$(one_count ${nums[$j]})
+ b=$(one_count ${nums[$j+1]})
+ swap=0
+ if [[ $a -gt $b ]]; then
+ swap=1
+ elif [ $a -eq $b ] && [ ${nums[$j]} -gt ${nums[$j+1]} ]; then
+ swap=1
+ fi
+ if [ $swap -eq 1 ]; then
+ temp=${nums[$j]};
+ nums[$j]=${nums[$j+1]};
+ nums[$j+1]=$temp;
+ flag=1;
+ fi
+ done
+
+ if [[ $flag -eq 0 ]]; then
+ break;
+ fi
+ done
+
+ echo ${nums[@]}
+}
+
+examples=('0 1 2 3 4 5 6 7 8 9' '1024 512 256 128 64')
+
+for e in ${!examples[@]}; do
+ array=(${examples[$e]})
+ sbb=$(sort_by_1_bits "${array[@]}")
+ echo "Input : nums = (${array[@]})"
+ echo -e "Output : $sbb\n"
+done
+
diff --git a/challenge-271/nelo-tovar/perl/ch-1.pl b/challenge-271/nelo-tovar/perl/ch-1.pl
new file mode 100644
index 0000000000..965a03e0f3
--- /dev/null
+++ b/challenge-271/nelo-tovar/perl/ch-1.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/env perl
+
+# The Weekly Challenge 271 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-271/
+#
+# Task 1 - Maximum Ones
+#
+
+use strict;
+use warnings;
+use v5.28;
+use List::Util qw(max sum0);
+use List::MoreUtils qw(first_index);
+use Data::Dump qw(dump);
+
+my @examples = (
+ [ [ 0, 1 ], [1, 0] ],
+ [ [ 0, 0, 0 ], [ 1, 0, 1 ] ],
+ [ [ 0, 0 ], [ 1, 1 ], [ 0, 0 ] ]
+);
+
+sub maximum_ones {
+ my $nums = shift;
+ my @ones = map {sum0 @$_} @$nums;
+ my $max = max @ones;
+
+ return (first_index {$_ == $max} @ones) + 1;
+}
+
+for my $elements (@examples) {
+ my $mo = maximum_ones $elements;
+
+ say 'Input : $matrix = ', dump(@$elements);
+ say 'Output : ', $mo;
+ say ' ';
+}
diff --git a/challenge-271/nelo-tovar/perl/ch-2.pl b/challenge-271/nelo-tovar/perl/ch-2.pl
new file mode 100644
index 0000000000..4b6488017c
--- /dev/null
+++ b/challenge-271/nelo-tovar/perl/ch-2.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/env perl
+
+# The Weekly Challenge 271 - By Nelo Tovar
+#
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-271/
+#
+# Task 2 - Sort by 1 bits
+#
+
+use strict;
+use warnings;
+use v5.28;
+use Data::Dump qw(dump);
+
+my @examples = (
+ [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ],
+ [ 1024, 512, 256, 128, 64 ]
+);
+
+sub one_count{
+ my $ones = sprintf('%b', shift);
+ $ones =~ s/0//g;
+ return length($ones);
+}
+
+sub sort_by_1_bits {
+ my $nums = shift;
+ my @sorted = sort { one_count($a) <=> one_count($b) || $a <=> $b } @$nums;
+
+ return \@sorted;
+}
+
+for my $elements (@examples) {
+ my $sbb = sort_by_1_bits $elements;
+
+ say 'Input : @ints = ', dump(@$elements);
+ say 'Output : ', dump(@$sbb);
+ say ' ';
+}