aboutsummaryrefslogtreecommitdiff
path: root/challenge-045
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-02-01 18:49:19 +0000
committerGitHub <noreply@github.com>2020-02-01 18:49:19 +0000
commit6f11cea266e2ec985798f8de43cb8160b53e9252 (patch)
tree2a5c7838fe9dcfbc7bc3837721b5fd0eb3143d35 /challenge-045
parentdb7f77b1f6696faf340bd66dfb62a50fdf7c829d (diff)
parent93679b5260f7bc57e52e76bef37399d2204e6385 (diff)
downloadperlweeklychallenge-club-6f11cea266e2ec985798f8de43cb8160b53e9252.tar.gz
perlweeklychallenge-club-6f11cea266e2ec985798f8de43cb8160b53e9252.tar.bz2
perlweeklychallenge-club-6f11cea266e2ec985798f8de43cb8160b53e9252.zip
Merge pull request #1193 from rjt-pl/rjt_045
rjt's Week 045 solutions and blogs
Diffstat (limited to 'challenge-045')
-rw-r--r--challenge-045/ryan-thompson/README1
-rw-r--r--challenge-045/ryan-thompson/README.md23
-rw-r--r--challenge-045/ryan-thompson/blog.txt1
-rw-r--r--challenge-045/ryan-thompson/blog1.txt1
-rw-r--r--challenge-045/ryan-thompson/perl/ch-1.pl25
-rw-r--r--challenge-045/ryan-thompson/perl/ch-2.pl8
-rw-r--r--challenge-045/ryan-thompson/perl/ch-2a.pl0
-rw-r--r--challenge-045/ryan-thompson/perl/ch-2b.pl20
-rw-r--r--challenge-045/ryan-thompson/raku/ch-1.p618
-rw-r--r--challenge-045/ryan-thompson/raku/ch-2.p67
-rw-r--r--challenge-045/ryan-thompson/raku/ch-2a.p61
11 files changed, 104 insertions, 1 deletions
diff --git a/challenge-045/ryan-thompson/README b/challenge-045/ryan-thompson/README
deleted file mode 100644
index 53b1e7cfa0..0000000000
--- a/challenge-045/ryan-thompson/README
+++ /dev/null
@@ -1 +0,0 @@
-Solutions by Ryan Thompson.
diff --git a/challenge-045/ryan-thompson/README.md b/challenge-045/ryan-thompson/README.md
new file mode 100644
index 0000000000..e9331e27a2
--- /dev/null
+++ b/challenge-045/ryan-thompson/README.md
@@ -0,0 +1,23 @@
+# Ryan Thompson
+
+## Solution links:
+
+### Square Secret Code
+
+ * [Perl](perl/ch-1.pl)
+ * [Raku](raku/ch-1.p6)
+
+### Quine
+
+ * [Perl Cheaty](perl/ch-2.pl)
+ * [Perl Trivial](perl/ch-2a.pl)
+ * [Perl Colorful](perl/ch-2b.pl)
+ * [Raku Cheaty](raku/ch-2.p6)
+ * [Raku Quine](raku/ch-2a.p6)
+
+## Blogs
+
+Two blog posts this week:
+
+ * [Square Secret Code](http://www.ry.ca/2020/01/square-secret-code/)
+ * [Quine](http://www.ry.ca/2020/02/quine/)
diff --git a/challenge-045/ryan-thompson/blog.txt b/challenge-045/ryan-thompson/blog.txt
new file mode 100644
index 0000000000..42be1e7b97
--- /dev/null
+++ b/challenge-045/ryan-thompson/blog.txt
@@ -0,0 +1 @@
+http://www.ry.ca/2020/01/square-secret-code/
diff --git a/challenge-045/ryan-thompson/blog1.txt b/challenge-045/ryan-thompson/blog1.txt
new file mode 100644
index 0000000000..3aae9ee690
--- /dev/null
+++ b/challenge-045/ryan-thompson/blog1.txt
@@ -0,0 +1 @@
+http://www.ry.ca/2020/02/quine/
diff --git a/challenge-045/ryan-thompson/perl/ch-1.pl b/challenge-045/ryan-thompson/perl/ch-1.pl
new file mode 100644
index 0000000000..695f96340b
--- /dev/null
+++ b/challenge-045/ryan-thompson/perl/ch-1.pl
@@ -0,0 +1,25 @@
+#!/usr/bin/env perl
+#
+# ch-1.pl - Square secret code
+#
+# Ryan Thompson <rjt@cpan.org>
+
+use 5.010;
+use warnings;
+use strict;
+
+use constant COLUMNS => 8;
+
+my $plaintext = 'The quick brown fox jumps over the lazy dog';
+
+say encode($ARGV[0] // $plaintext);
+
+sub encode {
+ local $_ = lc shift;
+ s/\s//g;
+ my ($i, @s);
+
+ map { $s[$i++ % COLUMNS] .= $_ } split '';
+
+ join ' ', @s;
+}
diff --git a/challenge-045/ryan-thompson/perl/ch-2.pl b/challenge-045/ryan-thompson/perl/ch-2.pl
new file mode 100644
index 0000000000..9d7534c8e5
--- /dev/null
+++ b/challenge-045/ryan-thompson/perl/ch-2.pl
@@ -0,0 +1,8 @@
+#!/usr/bin/env perl
+#
+# ch-2.pl - Cheaty quine, but passes the challenge test
+#
+# Ryan Thompson <rjt@cpan.org>
+
+open my $fh, '<', __FILE__; # Or $0
+print do { undef $/; <$fh> };
diff --git a/challenge-045/ryan-thompson/perl/ch-2a.pl b/challenge-045/ryan-thompson/perl/ch-2a.pl
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/challenge-045/ryan-thompson/perl/ch-2a.pl
diff --git a/challenge-045/ryan-thompson/perl/ch-2b.pl b/challenge-045/ryan-thompson/perl/ch-2b.pl
new file mode 100644
index 0000000000..58bdb7df1d
--- /dev/null
+++ b/challenge-045/ryan-thompson/perl/ch-2b.pl
@@ -0,0 +1,20 @@
+$_=q<"
+
+,#######.,#######.
+,#############. ,#############.
+,###############.,###############.
+ ,##################################.
+ ####################################
+ ####:##:###:##::##:##:###:##########
+ ####:######:######:######:##########
+ `###:##:###:######:##:###:#########'
+`##:######:######:##:###:########'
+`::#####:::::##::#::##::::::##'
+`###########################'
+########################'
+`####################'
+    `##############'
+     `########'
+  `##'  =[rjt2020]=
+`'
+";print"\$_=q<$_>;eval\n">;eval
diff --git a/challenge-045/ryan-thompson/raku/ch-1.p6 b/challenge-045/ryan-thompson/raku/ch-1.p6
new file mode 100644
index 0000000000..ca65f7caa8
--- /dev/null
+++ b/challenge-045/ryan-thompson/raku/ch-1.p6
@@ -0,0 +1,18 @@
+#!/usr/bin/env perl6
+
+# ch-1.p6 - Square code
+#
+# Ryan Thompson <rjt@cpan.org>
+
+sub MAIN( Str $plaintext = 'The quick brown fox jumps over the lazy dog' ) {
+ say encode($plaintext, 8);
+}
+
+#| Encode plaintext according to the Square Secret Code definition
+# $width is by default chosen to give a "square" result
+sub encode( Str $plain, Int $width = $plain.chars.sqrt.Int ) {
+ my @s;
+ $plain.lc.subst(/\s/,'',:g).comb.kv.map: { @s[$^i % $width] ~= $^str };
+
+ @s.join(' ')
+}
diff --git a/challenge-045/ryan-thompson/raku/ch-2.p6 b/challenge-045/ryan-thompson/raku/ch-2.p6
new file mode 100644
index 0000000000..f796b94ee4
--- /dev/null
+++ b/challenge-045/ryan-thompson/raku/ch-2.p6
@@ -0,0 +1,7 @@
+#!/usr/bin/env perl6
+
+# ch-2.p6 - Not a quine
+#
+# Ryan Thompson <rjt@cpan.org>
+
+$*PROGRAM.linesĀ».say
diff --git a/challenge-045/ryan-thompson/raku/ch-2a.p6 b/challenge-045/ryan-thompson/raku/ch-2a.p6
new file mode 100644
index 0000000000..4b74792751
--- /dev/null
+++ b/challenge-045/ryan-thompson/raku/ch-2a.p6
@@ -0,0 +1 @@
+{.printf($_)}(<{.printf($_)}(<%s>)>) \ No newline at end of file