aboutsummaryrefslogtreecommitdiff
path: root/challenge-241
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2023-11-05 10:18:15 -0500
committerJaldhar H. Vyas <jaldhar@braincells.com>2023-11-05 10:18:15 -0500
commitc0f2c7559abb31bb314d82d1e5e358acdb784e0b (patch)
tree4f1f22621efb38bf4d9294dac56fc32401b63325 /challenge-241
parent8f251958914c45f60ae73eb2a9a216aae78f809e (diff)
downloadperlweeklychallenge-club-c0f2c7559abb31bb314d82d1e5e358acdb784e0b.tar.gz
perlweeklychallenge-club-c0f2c7559abb31bb314d82d1e5e358acdb784e0b.tar.bz2
perlweeklychallenge-club-c0f2c7559abb31bb314d82d1e5e358acdb784e0b.zip
Challenge 241 by Jaldhar H. Vyas.
Diffstat (limited to 'challenge-241')
-rw-r--r--challenge-241/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-241/jaldhar-h-vyas/perl/ch-1.pl36
-rwxr-xr-xchallenge-241/jaldhar-h-vyas/perl/ch-2.pl51
-rwxr-xr-xchallenge-241/jaldhar-h-vyas/raku/ch-1.raku19
-rwxr-xr-xchallenge-241/jaldhar-h-vyas/raku/ch-2.raku33
5 files changed, 140 insertions, 0 deletions
diff --git a/challenge-241/jaldhar-h-vyas/blog.txt b/challenge-241/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..c7e62eeee1
--- /dev/null
+++ b/challenge-241/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2023/11/perl_weekly_challenge_week_241.html
diff --git a/challenge-241/jaldhar-h-vyas/perl/ch-1.pl b/challenge-241/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..a951eca18b
--- /dev/null
+++ b/challenge-241/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub combinations {
+ my @list = @{$_[0]};
+ my $length = $_[1];
+
+ if ($length <= 1) {
+ return map [$_], @list;
+ }
+
+ my @combos;
+
+ for (my $i = 0; $i + $length <= scalar @list; $i++) {
+ my $val = $list[$i];
+ my @rest = @list[$i + 1 .. $#list];
+ for my $c (combinations(\@rest, $length - 1)) {
+ push @combos, [$val, @{$c}] ;
+ }
+ }
+
+ return @combos;
+}
+
+my ($diff, @nums) = @ARGV;
+
+say scalar grep {
+ my ($i, $j, $k) = @{$_};
+
+ $i < $j &&
+ $j < $k &&
+ $j - $i == $diff &&
+ $k - $j == $diff;
+
+} combinations(\@nums, 3); \ No newline at end of file
diff --git a/challenge-241/jaldhar-h-vyas/perl/ch-2.pl b/challenge-241/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..5371436865
--- /dev/null
+++ b/challenge-241/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,51 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+sub isPrime {
+ my ($n) = @_;
+
+ if ($n < 2) {
+ return undef;
+ }
+
+ if ($n == 2) {
+ return 1;
+ }
+
+ for my $i (2 .. sqrt($n)) {
+ if ($n % $i == 0) {
+ return undef;
+ }
+ }
+
+ return 1;
+}
+
+sub factorize {
+ my ($n) = @_;
+ my @primeFactors;
+
+ while ($n % 2 == 0) {
+ push @primeFactors, 2;
+ $n /= 2;
+ }
+
+ for (my $i = 3; $i <= sqrt $n; $i += 2) {
+ while ($n % $i == 0) {
+ push @primeFactors, $i;
+ $n /= $i;
+ }
+ }
+
+ if ($n > 2) {
+ push @primeFactors, $n;
+ }
+
+ return @primeFactors;
+}
+
+
+say q{(},
+(join q{, }, sort { scalar factorize($a) <=> scalar factorize($b) } @ARGV),
+q{)};
diff --git a/challenge-241/jaldhar-h-vyas/raku/ch-1.raku b/challenge-241/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..09a5f5b9f1
--- /dev/null
+++ b/challenge-241/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ $diff, *@nums
+) {
+
+ @nums
+ .combinations(3)
+ .grep({
+ my ($i, $j, $k) = @$_;
+
+ $i < $j &&
+ $j < $k &&
+ $j - $i == $diff &&
+ $k - $j == $diff;
+ })
+ .elems
+ .say;
+} \ No newline at end of file
diff --git a/challenge-241/jaldhar-h-vyas/raku/ch-2.raku b/challenge-241/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..212f023077
--- /dev/null
+++ b/challenge-241/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,33 @@
+#!/usr/bin/raku
+
+sub factorize(Int $N) {
+ my $n = $N;
+ my @primeFactors;
+
+ while $n %% 2 {
+ @primeFactors.push(2);
+ $n /= 2;;
+ }
+
+ loop (my $i = 3; $i <= $n.sqrt; $i += 2) {
+ while ($n %% $i) {
+ @primeFactors.push($i);
+ $n /= $i;
+ }
+ }
+
+ if $n > 2 {
+ @primeFactors.push($n);
+ }
+
+ return @primeFactors;
+}
+
+sub MAIN(
+ *@int
+) {
+ say q{(},
+ @int.sort({ factorize($^a).elems <=> factorize($^b).elems }).join(q{, }),
+ q{)};
+
+} \ No newline at end of file