diff options
| author | Lubos Kolouch <lubos@kolouch.net> | 2020-08-22 13:17:23 +0200 |
|---|---|---|
| committer | Lubos Kolouch <lubos@kolouch.net> | 2020-08-22 13:17:23 +0200 |
| commit | 260377fcc49eb06a981c22ad668cb717ea73d768 (patch) | |
| tree | f21f5f655f6b462558acd74b6faf13185ab43181 | |
| parent | 3318ff63b12169b1c7ba3550c19484460eb1ea5a (diff) | |
| download | perlweeklychallenge-club-260377fcc49eb06a981c22ad668cb717ea73d768.tar.gz perlweeklychallenge-club-260377fcc49eb06a981c22ad668cb717ea73d768.tar.bz2 perlweeklychallenge-club-260377fcc49eb06a981c22ad668cb717ea73d768.zip | |
Solutions 074 LK
| -rw-r--r-- | challenge-074/lubos-kolouch/perl/ch-1.pl | 39 | ||||
| -rw-r--r-- | challenge-074/lubos-kolouch/perl/ch-2.pl | 56 |
2 files changed, 95 insertions, 0 deletions
diff --git a/challenge-074/lubos-kolouch/perl/ch-1.pl b/challenge-074/lubos-kolouch/perl/ch-1.pl new file mode 100644 index 0000000000..4afb351e40 --- /dev/null +++ b/challenge-074/lubos-kolouch/perl/ch-1.pl @@ -0,0 +1,39 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: ch-1.pl +# +# USAGE: ./ch-1.pl +# +# DESCRIPTION: https://perlweeklychallenge.org/blog/perl-weekly-challenge-074/ +# +# TASK #1 › Majority Element +# +# AUTHOR: Lubos Kolouch +# VERSION: 1.0 +# CREATED: 08/22/2020 12:40:09 PM +#=============================================================================== + +use strict; +use warnings; + +sub get_majority_element { + my $arr = shift; + + my %counts; + my $arr_size_half = scalar @$arr / 2; + + for (@$arr) { + $counts{$_}++; + return $_ if $counts{$_} > $arr_size_half; + } + + return -1; +} + +use Test::More; + +is( get_majority_element( [ 1, 2, 2, 3, 2, 4, 2 ] ), 2 ); +is( get_majority_element( [ 1, 3, 1, 2, 4, 5 ] ), -1 ); + +done_testing; diff --git a/challenge-074/lubos-kolouch/perl/ch-2.pl b/challenge-074/lubos-kolouch/perl/ch-2.pl new file mode 100644 index 0000000000..7962e80703 --- /dev/null +++ b/challenge-074/lubos-kolouch/perl/ch-2.pl @@ -0,0 +1,56 @@ +# +#!/usr/bin/perl +#=============================================================================== +# +#҄ FILE: ch-2.pl +# +# USAGE: ./ch-2.pl +# +# DESCRIPTION: https://perlweeklychallenge.org/blog/perl-weekly-challenge-074/ +# +# TASK #2 › FNR Character +# +# AUTHOR: Lubos Kolouch +# VERSION: 1.0 +# CREATED: 08/22/2020 12:40:09 PM +#=============================================================================== + +use strict; +use warnings; +use List::MoreUtils qw/firstidx/; +use feature qw/say/; +use Data::Dumper; + +sub get_fnr { + my $input = shift; + + my %fnr_count; + my @fnr_queue; + + my $result; + + for (split //, $input) { + my $char = $_; + + $fnr_count{$_}++; + + if ($fnr_count{$_} == 1) { + push @fnr_queue, $_; + } else { + my $pos = firstidx { $_ eq $char } @fnr_queue; + splice @fnr_queue, $pos, 1 if defined $pos; + } + + $result .= scalar @fnr_queue? $fnr_queue[-1] : '#'; + } + + return $result; + +} + +use Test::More; + +is(get_fnr('ababc'),'abb#c'); +is(get_fnr('xyzzyx'),'xyzyx#'); + +done_testing; |
