aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-200/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-200/jaldhar-h-vyas/perl/ch-1.pl31
-rwxr-xr-xchallenge-200/jaldhar-h-vyas/perl/ch-2.pl41
-rwxr-xr-xchallenge-200/jaldhar-h-vyas/raku/ch-1.raku26
-rwxr-xr-xchallenge-200/jaldhar-h-vyas/raku/ch-2.raku39
5 files changed, 138 insertions, 0 deletions
diff --git a/challenge-200/jaldhar-h-vyas/blog.txt b/challenge-200/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..abcfa82f59
--- /dev/null
+++ b/challenge-200/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2023/01/perl_weekly_challenge_week_200.html \ No newline at end of file
diff --git a/challenge-200/jaldhar-h-vyas/perl/ch-1.pl b/challenge-200/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..894989ea7f
--- /dev/null
+++ b/challenge-200/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+my @array = @ARGV;
+
+my @results = ();
+@array = sort { $a <=> $b } @array;
+
+for my $i (0 .. scalar @array - 3) {
+ slice: for my $j ($i + 2 .. scalar @array - 1) {
+ my @slice = @array[$i .. $j];
+ my $diff = $slice[1] - $slice[0];
+ for my $k (2 .. scalar @slice - 1) {
+ if ($slice[$k] - $slice[$k - 1] != $diff) {
+ last slice;
+ }
+ }
+ push @results, \@slice;
+ }
+}
+
+say q{(},
+(
+ join q{), (},
+ (
+ map { join q{, }, @{$_} } sort { scalar @{$a} <=> scalar @{$b} }
+ @results
+ )
+),
+q{)};
diff --git a/challenge-200/jaldhar-h-vyas/perl/ch-2.pl b/challenge-200/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..bec294ea66
--- /dev/null
+++ b/challenge-200/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+use 5.030;
+use warnings;
+
+my $number = shift // die "need an integer\n";
+my @truth = qw/ abcdef bc abdeg abcdg bcfg acdfg acdefg abc abcdefg abcfg /;
+my @segments = (
+ [qw/ - a a a a a a a /],
+ [qw/ - F - - - - - B /],
+ [qw/ - F - - - - - B /],
+ [qw/ - g g g g g g g /],
+ [qw/ - E - - - - - C /],
+ [qw/ - E - - - - - C /],
+ [qw/ - d d d d d d d /],
+);
+my @template = map { $truth[$_]; } split //, $number;
+my $offset = 0;
+my @result;
+for my $i (0 .. 6) {
+ for my $j (0 .. (length $number) * 8 - 1) {
+ $result[$i][$j] = q{ };
+ }
+}
+
+for my $digit (@template) {
+ for my $segment (split //, $digit) {
+ for my $row (0 .. 6) {
+ for my $column (0 .. 7) {
+ if (lc $segments[$row][$column] eq $segment) {
+ $result[$row][$offset + $column] =
+ ($segments[$row][$column] =~ /[A-Z]/) ? q{|} : q{-};
+ }
+ }
+ }
+ }
+ $offset += 8;
+}
+
+for my $i (0 .. 6) {
+ say join q{}, @{$result[$i]};
+}
diff --git a/challenge-200/jaldhar-h-vyas/raku/ch-1.raku b/challenge-200/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..f2992680c1
--- /dev/null
+++ b/challenge-200/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,26 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@array
+) {
+ my @results = ();
+ @array = @array.sort({ $^a <=> $^b });
+
+ for 0 .. @array.end - 2 -> $i {
+ slice: for $i + 2 .. @array.end -> $j {
+ my @slice = @array[$i .. $j];
+ my $diff = @slice[1] - @slice[0];
+ for 2 .. @slice.end -> $k {
+ if @slice[$k] - @slice[$k - 1] != $diff {
+ last slice;
+ }
+ }
+ @results.push(@slice);
+ }
+ }
+
+ say q{(},
+ @results.sort({ $^a.elems <=> $^b.elems }).map({ @$_.join(q{, }) })
+ .join(q{), (}),
+ q{)};
+}
diff --git a/challenge-200/jaldhar-h-vyas/raku/ch-2.raku b/challenge-200/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..e39a530d70
--- /dev/null
+++ b/challenge-200/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,39 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ Int $number #= an integer
+) {
+
+ my @truth = <abcdef bc abdeg abcdg bcfg acdfg acdefg abc abcdefg abcfg>;
+ my @segments = (
+ < - a a a a a a a >,
+ < - F - - - - - B >,
+ < - F - - - - - B >,
+ < - g g g g g g g >,
+ < - E - - - - - C >,
+ < - E - - - - - C >,
+ < - d d d d d d d >,
+ );
+
+ my @template = $number.comb.map({ @truth[$_] });
+ my $offset = 0;
+ my @result = [ q{ } xx $number.chars * 8 ] xx 7;
+
+ for @template -> $digit {
+ for $digit.comb -> $segment {
+ for 0 .. 6 -> $row {
+ for 0 .. 7 -> $column {
+ if @segments[$row][$column].lc eq $segment {
+ @result[$row][$offset + $column] =
+ (@segments[$row][$column] ~~ 'A' .. 'Z') ?? q{|} !! q{-};
+ }
+ }
+ }
+ }
+ $offset += 8;
+ }
+
+ for 0 .. 6 -> $i {
+ say @result[$i].join(q{});
+ }
+} \ No newline at end of file