aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2023-04-17 02:41:54 +0100
committerGitHub <noreply@github.com>2023-04-17 02:41:54 +0100
commiteb6f2715fe54e0e5511cb013a3a98cc853d061bf (patch)
tree67f8fd8e3a52e4cc028106dfe3bef1ca406b9852
parentc666a8df54af6ea2fa1f9506bef9899d5197583e (diff)
parenta2b5958baa999943771baae29061931fc85b9366 (diff)
downloadperlweeklychallenge-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.txt1
-rwxr-xr-xchallenge-212/jaldhar-h-vyas/perl/ch-1.pl15
-rwxr-xr-xchallenge-212/jaldhar-h-vyas/perl/ch-2.pl53
-rwxr-xr-xchallenge-212/jaldhar-h-vyas/raku/ch-1.raku15
-rwxr-xr-xchallenge-212/jaldhar-h-vyas/raku/ch-2.raku54
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