diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2025-06-29 17:48:48 -0400 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2025-06-29 17:48:48 -0400 |
| commit | 9fd0668a04dea93a9f87119759a3c7ecbc0beebf (patch) | |
| tree | 9f06a566adc9f796d3a11ce7f06c95de4d16b9bd | |
| parent | 3495f39a1245ae75e4aa8c3862186211a5b33a5b (diff) | |
| download | perlweeklychallenge-club-9fd0668a04dea93a9f87119759a3c7ecbc0beebf.tar.gz perlweeklychallenge-club-9fd0668a04dea93a9f87119759a3c7ecbc0beebf.tar.bz2 perlweeklychallenge-club-9fd0668a04dea93a9f87119759a3c7ecbc0beebf.zip | |
Challenge 327 by Jaldhar H. Vyas.
| -rw-r--r-- | challenge-327/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-327/jaldhar-h-vyas/perl/ch-1.pl | 29 | ||||
| -rwxr-xr-x | challenge-327/jaldhar-h-vyas/perl/ch-2.pl | 36 | ||||
| -rwxr-xr-x | challenge-327/jaldhar-h-vyas/raku/ch-1.raku | 8 | ||||
| -rwxr-xr-x | challenge-327/jaldhar-h-vyas/raku/ch-2.raku | 17 |
5 files changed, 91 insertions, 0 deletions
diff --git a/challenge-327/jaldhar-h-vyas/blog.txt b/challenge-327/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..71395f8e01 --- /dev/null +++ b/challenge-327/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2025/06/perl_weekly_challenge_week_327.html diff --git a/challenge-327/jaldhar-h-vyas/perl/ch-1.pl b/challenge-327/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..105f3db5bf --- /dev/null +++ b/challenge-327/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,29 @@ +#!/usr/bin/perl +use 5.038; +use warnings; + +sub setDifference($arr1, $arr2) { + my %difference = map { $_ => 0 } @{$arr1}; + + for my $elem (@{$arr2}) { + if (exists $difference{$elem}) { + $difference{$elem}++; + } + } + + return grep { !$difference{$_} } keys %difference; +} + +sub unique(@list) { + my %elems; + for (@list) { + $elems{$_}++; + } + + return [keys %elems]; +} + +my @ints = @ARGV; + +my @missing = sort { $a <=> $b } setDifference([1 .. scalar @ints], unique(@ints)); +say q{(}, (join q{, }, @missing), q{)}; diff --git a/challenge-327/jaldhar-h-vyas/perl/ch-2.pl b/challenge-327/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..60b698f1a2 --- /dev/null +++ b/challenge-327/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,36 @@ +#!/usr/bin/perl +use 5.038; +use warnings; + +sub combinations($listref, $length) { + my @list = @{$listref}; + + 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 @ints = @ARGV; +my %differences; + +for my $pair (combinations(\@ints, 2)) { + push @{ $differences{ abs($pair->[0] - $pair->[1]) } }, $pair; +} + +say +join q{, }, +sort +map { q{[} . ( join q{,}, sort { $a <=> $b } @{$_} ) . q{]} } +@{ $differences{ (sort { $a <=> $b } keys %differences)[0] } }; diff --git a/challenge-327/jaldhar-h-vyas/raku/ch-1.raku b/challenge-327/jaldhar-h-vyas/raku/ch-1.raku new file mode 100755 index 0000000000..34f23edd72 --- /dev/null +++ b/challenge-327/jaldhar-h-vyas/raku/ch-1.raku @@ -0,0 +1,8 @@ +#!/usr/bin/raku + +sub MAIN( + *@ints +) { + my @missing = ((1.. @ints.elems) ∖ @ints».Int.unique).keys.sort({$^a <=> $^b}); + say q{(}, @missing.join(q{, }), q{)}; +}
\ No newline at end of file diff --git a/challenge-327/jaldhar-h-vyas/raku/ch-2.raku b/challenge-327/jaldhar-h-vyas/raku/ch-2.raku new file mode 100755 index 0000000000..e3161d288b --- /dev/null +++ b/challenge-327/jaldhar-h-vyas/raku/ch-2.raku @@ -0,0 +1,17 @@ +#!/usr/bin/raku + +sub MAIN( + *@ints +) { + my %differences; + + for @ints».Int.combinations(2) -> $pair { + %differences{([-] @$pair).abs}.push($pair); + } + + %differences{%differences.keys».Int.min} + .map({ "[@$_.sort({ $^a <=> $^b }).join(q{,})]" }) + .sort + .join(q{, }) + .say; +}
\ No newline at end of file |
