aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvery Adams <oldtechaa@gmail.com>2023-04-13 02:08:09 +1200
committerAvery Adams <oldtechaa@gmail.com>2023-04-13 02:08:09 +1200
commita1c355b453abbef7359b3adf0a9154ac8d5899e7 (patch)
tree41ac3c311ca9151df3ddbf936a9f4156c944d28f
parent4eb9782a746173721822a9ffa29d6f14297a6dca (diff)
downloadperlweeklychallenge-club-a1c355b453abbef7359b3adf0a9154ac8d5899e7.tar.gz
perlweeklychallenge-club-a1c355b453abbef7359b3adf0a9154ac8d5899e7.tar.bz2
perlweeklychallenge-club-a1c355b453abbef7359b3adf0a9154ac8d5899e7.zip
Add solutions and blog posts for Avery Adams for 212.
-rw-r--r--challenge-212/avery-adams/blogs.txt2
-rw-r--r--challenge-212/avery-adams/perl/ch-1.pl13
-rw-r--r--challenge-212/avery-adams/perl/ch-2.pl35
3 files changed, 50 insertions, 0 deletions
diff --git a/challenge-212/avery-adams/blogs.txt b/challenge-212/avery-adams/blogs.txt
new file mode 100644
index 0000000000..73ba576b88
--- /dev/null
+++ b/challenge-212/avery-adams/blogs.txt
@@ -0,0 +1,2 @@
+https://blogs.perl.org/users/oldtechaa/2023/04/perl-weekly-challenge-212---spinning-letters-and-chopping-numbers.html
+https://dev.to/oldtechaa/perl-weekly-challenge-212-spinning-letters-and-chopping-numbers-2kdc
diff --git a/challenge-212/avery-adams/perl/ch-1.pl b/challenge-212/avery-adams/perl/ch-1.pl
new file mode 100644
index 0000000000..b67f72ba31
--- /dev/null
+++ b/challenge-212/avery-adams/perl/ch-1.pl
@@ -0,0 +1,13 @@
+#!/bin/perl
+
+use strict;
+use v5.28;
+
+my @letters = split(//, shift);
+my @jumps = @ARGV;
+my @new_word;
+
+foreach (my $i = 0; $i <= $#letters; $i++) {
+ push @new_word, ord($letters[$i]) + $jumps[$i] < (uc($letters[$i]) eq $letters[$i] ? 91 : 123) ? chr(ord($letters[$i]) + $jumps[$i]) : chr(ord($letters[$i]) + $jumps[$i] - 26);
+}
+say @new_word;
diff --git a/challenge-212/avery-adams/perl/ch-2.pl b/challenge-212/avery-adams/perl/ch-2.pl
new file mode 100644
index 0000000000..3bd68aeddf
--- /dev/null
+++ b/challenge-212/avery-adams/perl/ch-2.pl
@@ -0,0 +1,35 @@
+#!/bin/perl
+
+use strict;
+use v5.28;
+
+my $size = shift;
+my @list = sort @ARGV;
+
+say '-1' and exit if scalar @list % $size != 0;
+my $passes = (scalar @list / $size) - 1;
+
+my @results;
+
+for (my $i = 0; $i <= $passes; $i++) {
+ my $curr_digit = 0;
+ push @{$results[$i]}, $list[0];
+ for (my $j = 1; $j <= $#list; $j++) {
+ if ($list[$j] == $list[0] + $curr_digit + 1) {
+ push @{$results[$i]}, $list[$j];
+ splice (@list, $j, 1);
+ if (scalar @{$results[$i]} == $size) {
+ last;
+ } else {
+ $curr_digit++;
+ $j--;
+ }
+ }
+ if ($j == $#list and scalar @{$results[$i]} != $size) {say '-1' and exit}
+ }
+ splice (@list, 0, 1);
+}
+
+for (my $k = 0; $k <= $#results; $k++) {
+ say @{$results[$k]};
+}