diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-04-17 02:41:54 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-17 02:41:54 +0100 |
| commit | eb6f2715fe54e0e5511cb013a3a98cc853d061bf (patch) | |
| tree | 67f8fd8e3a52e4cc028106dfe3bef1ca406b9852 | |
| parent | c666a8df54af6ea2fa1f9506bef9899d5197583e (diff) | |
| parent | a2b5958baa999943771baae29061931fc85b9366 (diff) | |
| download | perlweeklychallenge-club-eb6f2715fe54e0e5511cb013a3a98cc853d061bf.tar.gz perlweeklychallenge-club-eb6f2715fe54e0e5511cb013a3a98cc853d061bf.tar.bz2 perlweeklychallenge-club-eb6f2715fe54e0e5511cb013a3a98cc853d061bf.zip | |
Merge pull request #7920 from jaldhar/challenge-212
Challenge 212 by Jaldhar H. Vyas.
| -rw-r--r-- | challenge-212/jaldhar-h-vyas/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-212/jaldhar-h-vyas/perl/ch-1.pl | 15 | ||||
| -rwxr-xr-x | challenge-212/jaldhar-h-vyas/perl/ch-2.pl | 53 | ||||
| -rwxr-xr-x | challenge-212/jaldhar-h-vyas/raku/ch-1.raku | 15 | ||||
| -rwxr-xr-x | challenge-212/jaldhar-h-vyas/raku/ch-2.raku | 54 |
5 files changed, 138 insertions, 0 deletions
diff --git a/challenge-212/jaldhar-h-vyas/blog.txt b/challenge-212/jaldhar-h-vyas/blog.txt new file mode 100644 index 0000000000..f7f8366062 --- /dev/null +++ b/challenge-212/jaldhar-h-vyas/blog.txt @@ -0,0 +1 @@ +https://www.braincells.com/perl/2023/04/perl_weekly_challenge_week_212.html
\ No newline at end of file diff --git a/challenge-212/jaldhar-h-vyas/perl/ch-1.pl b/challenge-212/jaldhar-h-vyas/perl/ch-1.pl new file mode 100755 index 0000000000..91f2a18bd6 --- /dev/null +++ b/challenge-212/jaldhar-h-vyas/perl/ch-1.pl @@ -0,0 +1,15 @@ +#!/usr/bin/perl +use 5.030; +use warnings; + +my $word = shift; +my @jump = @ARGV; + +my @letters = split //, $word; +for my $i (0 .. scalar @letters - 1) { + my $aord = $letters[$i] =~ /[[:upper:]]/ ? ord 'A' : ord 'a'; + @letters[$i] = + chr(((((ord $letters[$i]) - $aord) + $jump[$i]) % 26) + $aord); +} + +say join q{}, @letters; diff --git a/challenge-212/jaldhar-h-vyas/perl/ch-2.pl b/challenge-212/jaldhar-h-vyas/perl/ch-2.pl new file mode 100755 index 0000000000..4a9c48bc0c --- /dev/null +++ b/challenge-212/jaldhar-h-vyas/perl/ch-2.pl @@ -0,0 +1,53 @@ +#!/usr/bin/perl +use 5.030; +use warnings; + +sub invalid { + say -i; + exit; +} + +my $size = shift; +my @list = @ARGV; + +unless (scalar @list % $size == 0) { + invalid; +} + +my %frequency; +for my $i (@list) { + $frequency{$i}++; +} + +my @numbers = sort { $a <=> $b } keys %frequency; +my @results; +my $length = scalar @list / $size; + +for (1 .. $length) { + my @group; + my $start = 0; + + for my $i (@numbers) { + if ($frequency{$i} > 0) { + $start = $i; + last; + } + } + + if (!$start) { + invalid; + } + + for my $i ($start .. $start + $size - 1) { + if (!exists $frequency{$i} || $frequency{$i} == 0) { + invalid; + } + + push @group, $i; + $frequency{$i}--; + } + + push @results, \@group; +} + +say join q{, }, map { q{(} . ( join q{, }, @{$_} ) . q{)} } @results; diff --git a/challenge-212/jaldhar-h-vyas/raku/ch-1.raku b/challenge-212/jaldhar-h-vyas/raku/ch-1.raku new file mode 100755 index 0000000000..1f75b33c43 --- /dev/null +++ b/challenge-212/jaldhar-h-vyas/raku/ch-1.raku @@ -0,0 +1,15 @@ +#!/usr/bin/raku + +sub MAIN( + $word, + *@jump +) { + my @letters = $word.comb; + for 0 .. @letters.end -> $i { + my $aord = @letters[$i] ~~ /<upper>/ ?? 'A'.ord !! 'a'.ord; + @letters[$i] = + ((((@letters[$i].ord - $aord) + @jump[$i]) % 26) + $aord).chr; + } + + say @letters.join; +}
\ No newline at end of file diff --git a/challenge-212/jaldhar-h-vyas/raku/ch-2.raku b/challenge-212/jaldhar-h-vyas/raku/ch-2.raku new file mode 100755 index 0000000000..841764b7e1 --- /dev/null +++ b/challenge-212/jaldhar-h-vyas/raku/ch-2.raku @@ -0,0 +1,54 @@ +#!/usr/bin/raku + +sub invalid { + say -1; + exit; +} + +sub MAIN( + $size, + *@list +) { + unless @list.elems %% $size { + invalid; + } + + my %frequency; + for @list -> $i { + %frequency{$i}++; + } + + my @numbers = %frequency.keys.sort({ $^a <=> $^b }); + my @results; + my $length = @list.elems div $size; + + for 1 .. $length { + my @group; + my $start = 0; + + for @numbers -> $i { + if %frequency{$i} > 0 { + $start = $i; + last; + } + } + + if !$start { + invalid; + } + + for $start ..^ $start + $size -> $i { + + if %frequency{$i}:!exists || %frequency{$i} == 0 { + invalid; + } + + @group.push($i); + %frequency{$i}--; + } + + @results.push(@group); + } + + @results.map({ q{(} ~ @$_.join(q{, }) ~ q{)} }).join(q{, }).say; +}
\ No newline at end of file |
