aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-08-22 12:26:19 +0100
committerGitHub <noreply@github.com>2020-08-22 12:26:19 +0100
commit7efb3bd4c5ff589c63370f7b475c9818e833e5c2 (patch)
treef21f5f655f6b462558acd74b6faf13185ab43181
parent3318ff63b12169b1c7ba3550c19484460eb1ea5a (diff)
parent260377fcc49eb06a981c22ad668cb717ea73d768 (diff)
downloadperlweeklychallenge-club-7efb3bd4c5ff589c63370f7b475c9818e833e5c2.tar.gz
perlweeklychallenge-club-7efb3bd4c5ff589c63370f7b475c9818e833e5c2.tar.bz2
perlweeklychallenge-club-7efb3bd4c5ff589c63370f7b475c9818e833e5c2.zip
Merge pull request #2117 from LubosKolouch/chal_074_LK
Solutions 074 LK Perl
-rw-r--r--challenge-074/lubos-kolouch/perl/ch-1.pl39
-rw-r--r--challenge-074/lubos-kolouch/perl/ch-2.pl56
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;