diff options
| author | vamsimeenavilli <vamsi.meenavilli@gmail.com> | 2022-11-20 17:12:21 +0530 |
|---|---|---|
| committer | vamsimeenavilli <vamsi.meenavilli@gmail.com> | 2022-11-20 17:12:21 +0530 |
| commit | 8bb07e846d8a0b6b91cc4410be128a470a617616 (patch) | |
| tree | 98dbcd3d03da51d72318556b08f797f8024cd23d | |
| parent | 9db703e2384db7e814a381e48bff0bce7df8122b (diff) | |
| download | perlweeklychallenge-club-8bb07e846d8a0b6b91cc4410be128a470a617616.tar.gz perlweeklychallenge-club-8bb07e846d8a0b6b91cc4410be128a470a617616.tar.bz2 perlweeklychallenge-club-8bb07e846d8a0b6b91cc4410be128a470a617616.zip | |
weekly challenge 191 perl solution
| -rw-r--r-- | challenge-191/vamsi-meenavilli/perl/ch-1.pl | 28 | ||||
| -rw-r--r-- | challenge-191/vamsi-meenavilli/perl/ch-2.pl | 66 |
2 files changed, 94 insertions, 0 deletions
diff --git a/challenge-191/vamsi-meenavilli/perl/ch-1.pl b/challenge-191/vamsi-meenavilli/perl/ch-1.pl new file mode 100644 index 0000000000..ea9fa55ba1 --- /dev/null +++ b/challenge-191/vamsi-meenavilli/perl/ch-1.pl @@ -0,0 +1,28 @@ +#!/usr/bin/perl + +=head1 + +Week 191: + https://theweeklychallenge.org/blog/perl-weekly-challenge-191 + + Task 1: Twice Largest You are given list of integers, @list. Write a script to find out whether the largest item in + the list is at least twice as large as each of the other items. + +=cut + +use Test2::V0; + +is doesTwiceLargestNumberExists(1, 2, 3, 4), -1, 'Example 1'; +is doesTwiceLargestNumberExists(1, 2, 0, 5), 1, 'Example 2'; +is doesTwiceLargestNumberExists(2, 6, 3, 1), -1, 'Example 3'; +is doesTwiceLargestNumberExists(4, 5, 2, 3), -1, 'Example 4'; + +sub doesTwiceLargestNumberExists { + my (@number_array) = @_; + + @number_array = sort @number_array; + + return ($number_array[-1] >= $number_array[-2]**2) ? 1 : -1; +} + +done_testing(); diff --git a/challenge-191/vamsi-meenavilli/perl/ch-2.pl b/challenge-191/vamsi-meenavilli/perl/ch-2.pl new file mode 100644 index 0000000000..410b868e88 --- /dev/null +++ b/challenge-191/vamsi-meenavilli/perl/ch-2.pl @@ -0,0 +1,66 @@ +#!/usr/bin/perl +use strict; +use warnings; + +=head1 + +Week 192: + https://theweeklychallenge.org/blog/perl-weekly-challenge-191 + + Task 2: Cute List You are given an integer, 0 < $n <= 15. Write a script to find the number of orderings of + numbers that form a cute list. With an input @list = (1, 2, 3, .. $n) for positive integer $n, an ordering of + @list is cute if for every entry, indexed with a base of 1, either + +=cut + +use Test2::V0; +use Data::Dumper; + +is getCuteListCount(2), 2, 'Example 1'; + +sub getCuteListCount { + my ($number) = @_; + + my $cute_list_count = 0; + my @numbers_array = (1..$number); + + for (my $i = 0; $i < $number; $i++) { + my @numbers_sub_array = (getArraySlice(\@numbers_array, $i + 1, $number), getArraySlice((\@numbers_array, 0, $i))); + + for (my $j = 0; $j < $number - 1; $j++) { + my @possible_cute_list = ($numbers_array[$i], getArraySlice(\@numbers_sub_array, $j, $number - 1), getArraySlice(\@numbers_sub_array, 0, $j)); + $cute_list_count += 1 if isCuteList(@possible_cute_list); + } + } + + return $cute_list_count; +} + +sub getArraySlice { + my ($array, $start, $end) = @_; + + my $array_size = scalar @{$array}; + my @sliced_array = (); + + for (my $i = $start; $i < $end; $i++) { + if ($i < $array_size) { + push @sliced_array, $array->[$i]; + } + else { + last; + } + } + + return @sliced_array; +} +sub isCuteList { + my @numbers_array = @_; + + for (my $i = 0; $i < scalar(@numbers_array); $i++) { + return (0) unless ($numbers_array[$i] % ($i + 1) == 0 or ($i + 1) % $numbers_array[$i] == 0); + } + + return(1); +} + +done_testing(); |
