aboutsummaryrefslogtreecommitdiff
path: root/challenge-074
diff options
context:
space:
mode:
authorNuno Vieira <nunovieira220@gmail.com>2020-08-23 16:35:58 +0100
committerNuno Vieira <nunovieira220@gmail.com>2020-08-23 16:35:58 +0100
commit4d11997ef0d98fd2a98395c8d846f577d946adc2 (patch)
tree69330d21182fac87b477385489cd288a87abaec9 /challenge-074
parent5136afa4aa61688c92f6c58e777a4cc8742e7c90 (diff)
downloadperlweeklychallenge-club-4d11997ef0d98fd2a98395c8d846f577d946adc2.tar.gz
perlweeklychallenge-club-4d11997ef0d98fd2a98395c8d846f577d946adc2.tar.bz2
perlweeklychallenge-club-4d11997ef0d98fd2a98395c8d846f577d946adc2.zip
Add nunovieira220 solution to challenge 074
Diffstat (limited to 'challenge-074')
-rw-r--r--challenge-074/nunovieira220/README1
-rw-r--r--challenge-074/nunovieira220/perl/ch-1.pl21
-rw-r--r--challenge-074/nunovieira220/perl/ch-2.pl36
3 files changed, 58 insertions, 0 deletions
diff --git a/challenge-074/nunovieira220/README b/challenge-074/nunovieira220/README
new file mode 100644
index 0000000000..3af1c4fb9a
--- /dev/null
+++ b/challenge-074/nunovieira220/README
@@ -0,0 +1 @@
+Solution by Nuno Vieira.
diff --git a/challenge-074/nunovieira220/perl/ch-1.pl b/challenge-074/nunovieira220/perl/ch-1.pl
new file mode 100644
index 0000000000..1c83984174
--- /dev/null
+++ b/challenge-074/nunovieira220/perl/ch-1.pl
@@ -0,0 +1,21 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use POSIX;
+
+# Get majority element
+sub get_majority {
+ my %freq = ();
+ $freq{$_}++ for @_;
+ my $higher = (sort { $freq{$b} <=> $freq{$a} } keys(%freq))[0];
+ $higher = -1 if($freq{$higher} <= @_ / 2);
+ return $higher;
+}
+
+# Input/Output
+if(scalar @ARGV > 0) {
+ print get_majority(@ARGV)."\n";
+} else {
+ print get_majority((1, 2, 2, 3, 2, 4, 2))."\n";
+} \ No newline at end of file
diff --git a/challenge-074/nunovieira220/perl/ch-2.pl b/challenge-074/nunovieira220/perl/ch-2.pl
new file mode 100644
index 0000000000..b366c48cf7
--- /dev/null
+++ b/challenge-074/nunovieira220/perl/ch-2.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+# Execute FNR
+sub fnr {
+ my @stack = ();
+ my %aux = ();
+ my $res = "";
+ for my $i (0..length($_[0])-1) {
+ my $c = substr($_[0], $i, 1);
+
+ if(!$aux{$c}) {
+ push(@stack, $c);
+ $aux{$c} = 1;
+ $res .= $c;
+ } else {
+ @stack = grep {!/$c/} @stack;
+ if(scalar @stack > 0) {
+ $res .= pop(@stack);
+ } else {
+ $res .= '#';
+ }
+ }
+ }
+
+ return $res;
+}
+
+# Input/Output
+if(scalar @ARGV == 1) {
+ print fnr($ARGV[0])."\n";
+} else {
+ print fnr("xyzzyx")."\n";
+} \ No newline at end of file