diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-01-04 21:01:00 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-04 21:01:00 +0000 |
| commit | 5b3ea1a64e395c503d38d98804bcc4152f312f16 (patch) | |
| tree | 42ca4aab41d235a25df93e1be39e7f1986dbfd0e | |
| parent | 583d796a7962253923ab089dc542d78cf7a78d27 (diff) | |
| parent | b133bb9d785de26a728841c0358f27fb17a30c17 (diff) | |
| download | perlweeklychallenge-club-5b3ea1a64e395c503d38d98804bcc4152f312f16.tar.gz perlweeklychallenge-club-5b3ea1a64e395c503d38d98804bcc4152f312f16.tar.bz2 perlweeklychallenge-club-5b3ea1a64e395c503d38d98804bcc4152f312f16.zip | |
Merge pull request #5475 from andrezgz/challenge-146
challenge-146 andrezgz solution
| -rw-r--r-- | challenge-146/andrezgz/perl/ch-1.pl | 29 | ||||
| -rw-r--r-- | challenge-146/andrezgz/perl/ch-2.pl | 64 |
2 files changed, 93 insertions, 0 deletions
diff --git a/challenge-146/andrezgz/perl/ch-1.pl b/challenge-146/andrezgz/perl/ch-1.pl new file mode 100644 index 0000000000..a7c3477f50 --- /dev/null +++ b/challenge-146/andrezgz/perl/ch-1.pl @@ -0,0 +1,29 @@ +#!/usr/bin/perl + +# https://theweeklychallenge.org/blog/perl-weekly-challenge-146/ +# TASK #1 > 10001st Prime Number +# +# Write a script to generate the 10001st prime number. + +use strict; +use warnings; +use feature 'say'; + +my $n = 1; +my $count = 0; + +do {} until (is_prime(++$n) && ++$count == 10001 && print $n); + +sub is_prime { + my $n = shift; + #every composite number has a prime factor less than or equal to its square root. + return 1 == grep {$n % $_ == 0} (1 .. sqrt $n); +} + +__END__ + +$ time ./ch-1.pl +104743 +real 0m2.137s +user 0m2.106s +sys 0m0.030s diff --git a/challenge-146/andrezgz/perl/ch-2.pl b/challenge-146/andrezgz/perl/ch-2.pl new file mode 100644 index 0000000000..62e9454ad1 --- /dev/null +++ b/challenge-146/andrezgz/perl/ch-2.pl @@ -0,0 +1,64 @@ +#!/usr/bin/perl + +# https://theweeklychallenge.org/blog/perl-weekly-challenge-146/ +# Task #2 > Curious Fraction Tree +# +# You are given a fraction, member of the tree created similar to the above sample. +# +# Write a script to find out the parent and grandparent of the given member. +# +# Example 1: +# Input: $member = '3/5'; +# Output: parent = '3/2' and grandparent = '1/2' +# Example 2: +# Input: $member = '4/3'; +# Output: parent = '1/3' and grandparent = '1/2' + +use strict; +use warnings; +use feature 'say'; + +my $member = shift || die "Argument member is missing e.g. 5/3 \n"; + +my $ftree = { + v => '1/1', + l => { + v => '1/2', + l => { v => '1/3', l => { v=> '1/4' }, r => { v=> '4/3' } }, + r => { v => '3/2', l => { v=> '3/5' }, r => { v=> '5/2' } } + }, + r => { + v => '2/1', + l => { v => '2/3', l => { v=> '2/5' }, r => { v=> '5/3' } }, + r => { v => '3/1', l => { v=> '3/4' }, r => { v=> '4/1' } } + } +}; + +travel($ftree); + +exit 0; + +sub travel { + my $node = shift; + my $parent = shift // 'N/A'; + my $grandparent = shift // 'N/A'; + + if ($member eq $node->{v}) { + say "parent = $parent and grandparent = $grandparent"; + } + else { + travel($node->{l},$node->{v},$parent) if exists $node->{l}; + travel($node->{r},$node->{v},$parent) if exists $node->{r}; + } +} + +__END__ + +./ch-2.pl 4/1 +parent = 3/1 and grandparent = 2/1 + +$ ./ch-2.pl 2/1 +parent = 1/1 and grandparent = N/A + +$./ch-2.pl 1/1 +parent = N/A and grandparent = N/A |
