aboutsummaryrefslogtreecommitdiff
path: root/challenge-045
diff options
context:
space:
mode:
authorRyan Thompson <i@ry.ca>2020-02-01 06:15:48 -0600
committerRyan Thompson <i@ry.ca>2020-02-01 06:15:48 -0600
commit93679b5260f7bc57e52e76bef37399d2204e6385 (patch)
treea3c509381124af30776444f3a3f9c8f579ef6bd4 /challenge-045
parentd094e986802beac5ebd557008a31d8a8032093b5 (diff)
downloadperlweeklychallenge-club-93679b5260f7bc57e52e76bef37399d2204e6385.tar.gz
perlweeklychallenge-club-93679b5260f7bc57e52e76bef37399d2204e6385.tar.bz2
perlweeklychallenge-club-93679b5260f7bc57e52e76bef37399d2204e6385.zip
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