aboutsummaryrefslogtreecommitdiff
path: root/challenge-254
diff options
context:
space:
mode:
authorpme <hauptadler@gmail.com>2024-01-29 15:22:01 +0100
committerpme <hauptadler@gmail.com>2024-01-29 15:22:01 +0100
commit3d4e9f00856f735ad7d7710b01ce7329dabd4218 (patch)
tree558ee5c891ec79804670bde6df18b287e3f28e01 /challenge-254
parent4099837cf3689e1d78a66905fde9c5a45ff95940 (diff)
downloadperlweeklychallenge-club-3d4e9f00856f735ad7d7710b01ce7329dabd4218.tar.gz
perlweeklychallenge-club-3d4e9f00856f735ad7d7710b01ce7329dabd4218.tar.bz2
perlweeklychallenge-club-3d4e9f00856f735ad7d7710b01ce7329dabd4218.zip
challenge-254
Diffstat (limited to 'challenge-254')
-rwxr-xr-xchallenge-254/peter-meszaros/perl/ch-1.pl60
-rwxr-xr-xchallenge-254/peter-meszaros/perl/ch-2.pl63
2 files changed, 123 insertions, 0 deletions
diff --git a/challenge-254/peter-meszaros/perl/ch-1.pl b/challenge-254/peter-meszaros/perl/ch-1.pl
new file mode 100755
index 0000000000..8a1d8509b3
--- /dev/null
+++ b/challenge-254/peter-meszaros/perl/ch-1.pl
@@ -0,0 +1,60 @@
+#!/usr/bin/env perl
+#
+# You are given a positive integer, $n.
+#
+# Write a script to return true if the given integer is a power of three
+# otherwise return false.
+# Example 1
+#
+# Input: $n = 27
+# Output: true
+#
+# 27 = 3 ^ 3
+#
+# Example 2
+#
+# Input: $n = 0
+# Output: true
+#
+# 0 = 0 ^ 3
+#
+# Example 3
+#
+# Input: $n = 6
+# Output: false
+#
+
+use strict;
+use warnings;
+use Test2::V0 -no_srand => 1;
+use Data::Dumper;
+
+my $cases = [
+ [27],
+ [0],
+ [6],
+ [1],
+ [3],
+ [4]
+];
+
+sub three_power
+{
+ my $n = shift;
+
+ while ($n) {
+ last if $n % 3;
+ $n /= 3;
+ }
+ return $n == 1 ? 1 : 0;
+}
+
+is(three_power($cases->[0]->@*), 1, 'Example 1 ' . $cases->[0]->[0]);
+is(three_power($cases->[1]->@*), 0, 'Example 2 ' . $cases->[1]->[0]);
+is(three_power($cases->[2]->@*), 0, 'Example 3 ' . $cases->[2]->[0]);
+is(three_power($cases->[3]->@*), 1, 'Example 4 ' . $cases->[3]->[0]);
+is(three_power($cases->[4]->@*), 1, 'Example 5 ' . $cases->[4]->[0]);
+is(three_power($cases->[5]->@*), 0, 'Example 6 ' . $cases->[5]->[0]);
+done_testing();
+
+exit 0;
diff --git a/challenge-254/peter-meszaros/perl/ch-2.pl b/challenge-254/peter-meszaros/perl/ch-2.pl
new file mode 100755
index 0000000000..96aff6bc0a
--- /dev/null
+++ b/challenge-254/peter-meszaros/perl/ch-2.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/env perl
+#
+# You are given a string, $s.
+#
+# Write a script to reverse all the vowels (a, e, i, o, u) in the given string.
+# Example 1
+#
+# Input: $s = "Raku"
+# Output: "Ruka"
+#
+# Example 2
+#
+# Input: $s = "Perl"
+# Output: "Perl"
+#
+# Example 3
+#
+# Input: $s = "Julia"
+# Output: "Jaliu"
+#
+# Example 4
+#
+# Input: $s = "Uiua"
+# Output: "Auiu"
+
+
+use strict;
+use warnings;
+use Test2::V0 -no_srand => 1;
+use Data::Dumper;
+use List::Util qw/sum/;
+
+my $cases = [
+ ['Raku'],
+ ['Perl'],
+ ['Julia'],
+ ['Uiua'],
+];
+
+sub reverse_wovels
+{
+ my $str = shift;
+
+ my $qr = qr/[aeiou]/i;
+ my @str = split('', $str);
+ $str[0] = lc($str[0]);
+ my @w = reverse grep { lc(/$qr/) } @str;
+ for (@str) {
+ $_ = shift @w if /$qr/;
+ }
+ $str[0] = uc($str[0]);
+ return join('', @str);
+}
+
+is(reverse_wovels($cases->[0]->@*), 'Ruka', 'Example 1');
+is(reverse_wovels($cases->[1]->@*), 'Perl', 'Example 2');
+is(reverse_wovels($cases->[2]->@*), 'Jaliu', 'Example 3');
+is(reverse_wovels($cases->[3]->@*), 'Auiu', 'Example 4');
+done_testing();
+
+exit 0;
+
+