aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvamsimeenavilli <vamsi.meenavilli@gmail.com>2022-11-20 17:12:21 +0530
committervamsimeenavilli <vamsi.meenavilli@gmail.com>2022-11-20 17:12:21 +0530
commit8bb07e846d8a0b6b91cc4410be128a470a617616 (patch)
tree98dbcd3d03da51d72318556b08f797f8024cd23d
parent9db703e2384db7e814a381e48bff0bce7df8122b (diff)
downloadperlweeklychallenge-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.pl28
-rw-r--r--challenge-191/vamsi-meenavilli/perl/ch-2.pl66
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();