diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2023-11-05 10:18:15 -0500 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2023-11-05 10:18:15 -0500 |
| commit | c0f2c7559abb31bb314d82d1e5e358acdb784e0b (patch) | |
| tree | 4f1f22621efb38bf4d9294dac56fc32401b63325 /challenge-241 | |
| parent | 8f251958914c45f60ae73eb2a9a216aae78f809e (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-241/jaldhar-h-vyas/perl/ch-1.pl | 36 | ||||
| -rwxr-xr-x | challenge-241/jaldhar-h-vyas/perl/ch-2.pl | 51 | ||||
| -rwxr-xr-x | challenge-241/jaldhar-h-vyas/raku/ch-1.raku | 19 | ||||
| -rwxr-xr-x | challenge-241/jaldhar-h-vyas/raku/ch-2.raku | 33 |
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 |
