diff options
| author | ntovar <tovar.nelo@gmail.com> | 2024-06-01 15:40:24 -0500 |
|---|---|---|
| committer | ntovar <tovar.nelo@gmail.com> | 2024-06-01 15:40:24 -0500 |
| commit | 924d075c5c3607b509bcc5e73e1d977670204a94 (patch) | |
| tree | fe492524aeb644686fc1364f29e03d83cb802e1c /challenge-271 | |
| parent | 141a2c357124c00dda182472650be78c509efd97 (diff) | |
| download | perlweeklychallenge-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-x | challenge-271/nelo-tovar/bash/ch-2.sh | 55 | ||||
| -rw-r--r-- | challenge-271/nelo-tovar/perl/ch-1.pl | 37 | ||||
| -rw-r--r-- | challenge-271/nelo-tovar/perl/ch-2.pl | 39 |
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 ' '; +} |
