diff options
| author | pme <hauptadler@gmail.com> | 2024-01-29 15:22:01 +0100 |
|---|---|---|
| committer | pme <hauptadler@gmail.com> | 2024-01-29 15:22:01 +0100 |
| commit | 3d4e9f00856f735ad7d7710b01ce7329dabd4218 (patch) | |
| tree | 558ee5c891ec79804670bde6df18b287e3f28e01 /challenge-254 | |
| parent | 4099837cf3689e1d78a66905fde9c5a45ff95940 (diff) | |
| download | perlweeklychallenge-club-3d4e9f00856f735ad7d7710b01ce7329dabd4218.tar.gz perlweeklychallenge-club-3d4e9f00856f735ad7d7710b01ce7329dabd4218.tar.bz2 perlweeklychallenge-club-3d4e9f00856f735ad7d7710b01ce7329dabd4218.zip | |
challenge-254
Diffstat (limited to 'challenge-254')
| -rwxr-xr-x | challenge-254/peter-meszaros/perl/ch-1.pl | 60 | ||||
| -rwxr-xr-x | challenge-254/peter-meszaros/perl/ch-2.pl | 63 |
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; + + |
