diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-02-04 12:33:16 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-04 12:33:16 +0000 |
| commit | be3769d49bb2bbcc17d01a88fa0a236696ec5b22 (patch) | |
| tree | 4e845cc2c248adf909eedc4ab1708874873f36f5 /challenge-200 | |
| parent | 70ba2173afa6f303797d7888b5a0af0d9abac467 (diff) | |
| parent | 8d47db3feb21a8675d4f14a64a854a0552969555 (diff) | |
| download | perlweeklychallenge-club-be3769d49bb2bbcc17d01a88fa0a236696ec5b22.tar.gz perlweeklychallenge-club-be3769d49bb2bbcc17d01a88fa0a236696ec5b22.tar.bz2 perlweeklychallenge-club-be3769d49bb2bbcc17d01a88fa0a236696ec5b22.zip | |
Merge pull request #7510 from jaldhar/challenge-200
Challenge 200 by Jaldhar H. Vyas.
Diffstat (limited to 'challenge-200')
| -rw-r--r-- | challenge-200/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-200/jaldhar-h-vyas/perl/ch-1.pl | 31 | ||||
| -rwxr-xr-x | challenge-200/jaldhar-h-vyas/perl/ch-2.pl | 41 | ||||
| -rwxr-xr-x | challenge-200/jaldhar-h-vyas/raku/ch-1.raku | 26 | ||||
| -rwxr-xr-x | challenge-200/jaldhar-h-vyas/raku/ch-2.raku | 39 |
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 |
