diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2023-10-31 16:40:49 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-31 16:40:49 +0000 |
| commit | 0f118044c3d954fa4bbb3cbf15a0a05b5733f313 (patch) | |
| tree | ca1892950e9c6c21de3abd6c968394d4535079c5 | |
| parent | fd8e62f616dfb207ce9891f448e279b7385ad1a6 (diff) | |
| parent | 193f81ec4afbfcc448a7695f81eef0e2193c804d (diff) | |
| download | perlweeklychallenge-club-0f118044c3d954fa4bbb3cbf15a0a05b5733f313.tar.gz perlweeklychallenge-club-0f118044c3d954fa4bbb3cbf15a0a05b5733f313.tar.bz2 perlweeklychallenge-club-0f118044c3d954fa4bbb3cbf15a0a05b5733f313.zip | |
Merge pull request #8974 from zapwai/branch-for-241
Week 241
| -rw-r--r-- | challenge-241/zapwai/perl/ch-1.pl | 24 | ||||
| -rw-r--r-- | challenge-241/zapwai/perl/ch-2.pl | 59 |
2 files changed, 83 insertions, 0 deletions
diff --git a/challenge-241/zapwai/perl/ch-1.pl b/challenge-241/zapwai/perl/ch-1.pl new file mode 100644 index 0000000000..8bab017a33 --- /dev/null +++ b/challenge-241/zapwai/perl/ch-1.pl @@ -0,0 +1,24 @@ +use v5.30; +my @nums = (0, 1, 4, 6, 7, 10); +my $diff = 3; +print "Input: \@nums = (". join(", ", @nums) . ")"; +say "\t\$diff = $diff"; +my ($cnt,$output); +foreach my $i (0 .. $#nums - 2) { + foreach my $j ($i + 1 .. $#nums - 1) { + foreach my $k ($j + 1 .. $#nums) { + if ( is_trip($diff, $nums[$i],$nums[$j],$nums[$k]) ) { + $output .= "($nums[$i],$nums[$j],$nums[$k])\n"; + $cnt++; + } + } + } +} +say "Output: $cnt"; +chomp $output; +say $output; +sub is_trip { + my ($diff, $a, $b, $c) = @_; + return 1 if ( ($b - $a == $diff) && ($c - $b == $diff) ); + 0 +} diff --git a/challenge-241/zapwai/perl/ch-2.pl b/challenge-241/zapwai/perl/ch-2.pl new file mode 100644 index 0000000000..fed80beca2 --- /dev/null +++ b/challenge-241/zapwai/perl/ch-2.pl @@ -0,0 +1,59 @@ +use v5.30; +my @int = (11, 8, 27, 4); +say "Input: \@int = (". join(", ", @int) . ")"; +my $max = 0; +foreach my $v (@int) { + $max = $v if ($v > $max); +} +my @prime = myprimes($max); +my @factor = map {factors($_)} @int; +my @ans = @int; +my $flag = 0; +do { + $flag = 0; + foreach my $i (0 .. $#factor - 1) { + if ( ($factor[$i] > $factor[$i + 1]) || + ( ($factor[$i] == $factor[$i+1]) && ($ans[$i] > $ans[$i+1]) ) + ) { + $flag++; + my $aval = $ans[$i]; + my $fval = $factor[$i]; + $ans[$i] = $ans[$i+1]; + $ans[$i + 1] = $aval; + $factor[$i] = $factor[$i+1]; + $factor[$i+1] = $fval; + } + } +} while ($flag); +print "Output: ("; +say join(", ",@ans) . ")"; +sub factors { + my $num = shift; + my @list; + do { + foreach my $factor (@prime) { + if ( $num % $factor == 0 ) { + push @list, $factor; + $num = $num / $factor; + } + } + } while ($num != 1); + return $#list+1; +} + +sub myprimes { + my $N = shift; + my @p = (2); + for my $i (3 .. $N) { + push @p, $i if is_prime($i); + } + @p +} + +sub is_prime { + my $num = shift; + for my $i (2 .. sqrt($num)) { + return 0 if ( $num % $i == 0 ); + } + 1 +} |
