diff options
| author | Burkhard Nickels <chuck@peregrina> | 2020-02-02 20:09:29 +0100 |
|---|---|---|
| committer | Burkhard Nickels <chuck@peregrina> | 2020-02-02 20:09:29 +0100 |
| commit | 2ff7e6f86f87487102dfb8115185b3a7bffcb35c (patch) | |
| tree | 2343dd5105d6f16560330e414b7760bbd45d3336 /challenge-045 | |
| parent | 03f81614b5363be6c56aabc353eda770dbc91c3c (diff) | |
| download | perlweeklychallenge-club-2ff7e6f86f87487102dfb8115185b3a7bffcb35c.tar.gz perlweeklychallenge-club-2ff7e6f86f87487102dfb8115185b3a7bffcb35c.tar.bz2 perlweeklychallenge-club-2ff7e6f86f87487102dfb8115185b3a7bffcb35c.zip | |
Solution for PWC 45 from Burkhard Nickels.
Diffstat (limited to 'challenge-045')
| -rw-r--r-- | challenge-045/burkhard-nickels/README | 1 | ||||
| -rw-r--r-- | challenge-045/burkhard-nickels/blogs.txt | 1 | ||||
| -rw-r--r-- | challenge-045/burkhard-nickels/perl5/ch-1.html | 272 | ||||
| -rwxr-xr-x | challenge-045/burkhard-nickels/perl5/ch-1.pl | 23 | ||||
| -rwxr-xr-x | challenge-045/burkhard-nickels/perl5/ch-1.pod | 262 | ||||
| -rwxr-xr-x | challenge-045/burkhard-nickels/perl5/ch-1.py | 37 | ||||
| -rw-r--r-- | challenge-045/burkhard-nickels/perl5/ch-2.html | 276 | ||||
| -rwxr-xr-x | challenge-045/burkhard-nickels/perl5/ch-2.pl | 74 | ||||
| -rwxr-xr-x | challenge-045/burkhard-nickels/perl5/ch-2.pod | 264 | ||||
| -rwxr-xr-x | challenge-045/burkhard-nickels/perl5/ch-2.py | 11 | ||||
| -rwxr-xr-x | challenge-045/burkhard-nickels/perl6/ch-1.p6 | 26 | ||||
| -rwxr-xr-x | challenge-045/burkhard-nickels/perl6/ch-2.p6 | 16 |
12 files changed, 1263 insertions, 0 deletions
diff --git a/challenge-045/burkhard-nickels/README b/challenge-045/burkhard-nickels/README new file mode 100644 index 0000000000..f5e16bb98b --- /dev/null +++ b/challenge-045/burkhard-nickels/README @@ -0,0 +1 @@ +Solutions by Burkhard Nickels. diff --git a/challenge-045/burkhard-nickels/blogs.txt b/challenge-045/burkhard-nickels/blogs.txt new file mode 100644 index 0000000000..9cb0ea99b5 --- /dev/null +++ b/challenge-045/burkhard-nickels/blogs.txt @@ -0,0 +1 @@ +http://pearls.dyndnss.net diff --git a/challenge-045/burkhard-nickels/perl5/ch-1.html b/challenge-045/burkhard-nickels/perl5/ch-1.html new file mode 100644 index 0000000000..4f916735b1 --- /dev/null +++ b/challenge-045/burkhard-nickels/perl5/ch-1.html @@ -0,0 +1,272 @@ +<?xml version="1.0" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>Perl Weekly Challenge #45 Task #1, Square Secret Code</title> +<link rel="stylesheet" href="/www/Perl/PWC/pwc_coloured.css" type="text/css" /> +<meta http-equiv="content-type" content="text/html; charset=utf-8" /> +<link rev="made" href="mailto:root@localhost" /> +</head> + +<body> +<table border="0" width="100%" cellspacing="0" cellpadding="3"> +<tr><td class="_podblock_" valign="middle"> +<big><strong><span class="_podblock_"> Perl Weekly Challenge #45 Task #1, Square Secret Code</span></strong></big> +</td></tr> +</table> + + + +<ul id="index"> + <li><a href="#Perl-Weekly-Challenge-45-Task-1:-Square-Secret-Code">Perl Weekly Challenge #45 Task #1: Square Secret Code</a></li> + <li><a href="#SYNOPSIS">SYNOPSIS</a></li> + <li><a href="#Definition-Task-1:-Square-Secret-Code">Definition Task #1: Square Secret Code</a></li> + <li><a href="#Perl5-and-Perl6-Solutions">Perl5 and Perl6 Solutions</a> + <ul> + <li><a href="#Program-execution">Program execution</a></li> + <li><a href="#Sourcecode-for-Perl5-and-Perl6">Sourcecode for Perl5 and Perl6</a></li> + </ul> + </li> + <li><a href="#Sourcecode-for-Python">Sourcecode for Python</a></li> + <li><a href="#AUTHOR">AUTHOR</a></li> +</ul> + +<h1 id="Perl-Weekly-Challenge-45-Task-1:-Square-Secret-Code">Perl Weekly Challenge #45 Task #1: Square Secret Code</h1> + +<p>This task is more or less about reformatting some text. So first I eleminate spaces, do lower case letters and split every letter into an array.</p> + +<p>In a second step I reorder the letters with 2 <code>for</code> loops.</p> + +<h2> Download and References </h2> +<b>Download File:</b><a href="ch-1.pl" download> Perl5 Solution PWC #45 Task #1 ch-1.pl</a><br> +<b>Download File:</b><a href="ch-1.p6" download> Perl6 Solution PWC #45 Task #1 ch-1.p6</a><br> +<b>Download File:</b><a href="ch-1.py" download> Python Solution PWC #45 Task #1 ch-1.py</a><br> +<br> + +<h1 id="SYNOPSIS">SYNOPSIS</h1> + +<pre><code> # ./ch-1.pl - Program execution + # ./ch-1.p6 - Program execution + # ./ch-1.py - Program execution + # perldoc ch-1.pod - POD</code></pre> + +<h1 id="Definition-Task-1:-Square-Secret-Code">Definition Task #1: Square Secret Code</h1> + +<p>The square secret code mechanism first removes any space from the original message. Then it lays down the message in a row of 8 columns. The coded message is then obtained by reading down the columns going left to right.</p> + +<p>For example, the message is "The quick brown fox jumps over the lazy dog".</p> + +<p>Then the message would be laid out as below:</p> + +<pre><code> thequick + brownfox + jumpsove + rthelazy + dog</code></pre> + +<p>The code message would be as below:</p> + +<pre><code> tbjrd hruto eomhg qwpe unsl ifoa covz kxey</code></pre> + +<p>Write a script that accepts a message from command line and prints the equivalent coded message.</p> + +<h1 id="Perl5-and-Perl6-Solutions">Perl5 and Perl6 Solutions</h1> + +<p>First the Command Line Arguments are read. See below differences in Perl5 and Perl6.</p> + +<pre><code> 9 if($ARGV[0]) { $msg = $ARGV[0]; } + + 8 if (@*ARGS[0]) { $msg = @*ARGS[0]; }</code></pre> + +<p>Next is eleminating spaces, change to lower case letters and split into an array.</p> + +<pre><code> 12 $msg =~ s/\s//g; + 13 $msg = lc($msg); + 14 my @l = split("",$msg);</code></pre> + +<p>Although the split line looks exact equal in Perl5 and Perl6, Perl6 has an empty array element on index 0 and on last index. Perl6 has the global search as ":g" appended to the "s". For me all this double-colon attributes is difficult to get used to.</p> + +<pre><code> 11 $msg ~~ s:g/\s//; + 12 $msg = $msg.lc; + 14 my @l = split("",$msg);</code></pre> + +<p>Then two for loops change the order of the letters, see below.</p> + +<p>Other differences:</p> + +<ul> + +<li><p>$#l versus @l.end</p> + +</li> +<li><p>.= versus ~=</p> + +</li> +<li><p>for versus loop</p> + +</li> +<li><p>lc($msg) versus $msg.lc</p> + +</li> +<li><p>$msg =~ s/\s//g; versus $msg ~~ s:g/\s//;</p> + +</li> +<li><p>$ARGV[0] versus @*ARGS[0]</p> + +</li> +</ul> + +<h2 id="Program-execution">Program execution</h2> + +<p>After execution of the program either without argument or with a text on the command line, following output is generated.</p> + +<pre><code> ./ch-1.pl + ch-1.pl - PWC #45 Task #1: Square Secret Code + Original: The quick brown fox jumps over the lazy dog + Coded : tbjrd hruto eomhg qwpe unsl ifoa covz kxey + + ./ch-1.pl "This is my solution for perl weekly challenge fourtyfive task two" + ch-1.pl - PWC #45 Task #1: Square Secret Code + Original: This is my solution for perl weekly challenge fourtyfive task two + Coded : tsfelut hooelra ilrkets suplnyk iteygft sirceiw molhfvo ynwaoe </code></pre> + +<h2 id="Sourcecode-for-Perl5-and-Perl6">Sourcecode for Perl5 and Perl6</h2> + +<table class=code><tr><td class=code> +<pre class=code><div class=t> Perl5 </div> + 1 <span class="synPreProc">#!/usr/bin/perl</span> + 2 + 3 <span class="synStatement">use strict</span>; + 4 <span class="synStatement">use warnings</span>; + 5 + 6 <span class="synStatement">print</span> <span class="synConstant">"ch-1.pl - PWC #45 Task #1: Square Secret Code</span><span class="synSpecial">\n</span><span class="synConstant">"</span>; + 7 + 8 <span class="synStatement">my</span> <span class="synIdentifier">$msg</span> = <span class="synConstant">"The quick brown fox jumps over the lazy dog"</span>; + 9 <span class="synStatement">if</span>(<span class="synIdentifier">$ARGV[</span><span class="synConstant">0</span><span class="synIdentifier">]</span>) { <span class="synIdentifier">$msg</span> = <span class="synIdentifier">$ARGV[</span><span class="synConstant">0</span><span class="synIdentifier">]</span>; } + 10 + 11 <span class="synStatement">print</span> <span class="synConstant">"Original: </span><span class="synIdentifier">$msg</span><span class="synSpecial">\n</span><span class="synConstant">"</span>; + 12 <span class="synIdentifier">$msg</span> =~ <span class="synStatement">s/</span><span class="synSpecial">\s</span><span class="synStatement">//g</span>; + 13 <span class="synIdentifier">$msg</span> = <span class="synStatement">lc</span>(<span class="synIdentifier">$msg</span>); + 14 <span class="synStatement">my</span> <span class="synIdentifier">@l</span> = <span class="synStatement">split</span>(<span class="synConstant">""</span>,<span class="synIdentifier">$msg</span>); + 15 + 16 <span class="synStatement">my</span> <span class="synIdentifier">$coded_msg</span>; + 17 <span class="synStatement">for</span>(<span class="synStatement">my</span> <span class="synIdentifier">$i</span>=<span class="synConstant">0</span>; <span class="synIdentifier">$i</span><=<span class="synConstant">7</span>; <span class="synIdentifier">$i</span>++) { + 18 <span class="synStatement">for</span>(<span class="synStatement">my</span> <span class="synIdentifier">$j</span>=<span class="synIdentifier">$i</span>; <span class="synIdentifier">$j</span><=<span class="synIdentifier">$#l</span>; <span class="synIdentifier">$j</span>+=<span class="synConstant">8</span>) { + 19 <span class="synIdentifier">$coded_msg</span> .= <span class="synIdentifier">$l[$j]</span>; + 20 } + 21 <span class="synIdentifier">$coded_msg</span> .= <span class="synConstant">" "</span>; + 22 } + 23 <span class="synStatement">print</span> <span class="synConstant">"Coded : </span><span class="synIdentifier">$coded_msg</span><span class="synSpecial">\n</span><span class="synConstant">"</span>; +</pre> +</td><td class=code> +<pre class=code><div class=t> Perl6 </div> + 1 <span class="synComment">#!/home/chuck/rakudo/bin/perl6</span> + 2 + 3 <span class="synPreProc">use</span> strict<span class="synStatement">;</span> + 4 + 5 <span class="synIdentifier">print</span> <span class="synSpecial">"</span><span class="synConstant">ch-1.p6 - PWC #45 Task #1: Square Secret Code</span><span class="synSpecial">\n"</span><span class="synStatement">;</span> + 6 + 7 <span class="synSpecial">my</span> <span class="synIdentifier">$msg</span> <span class="synStatement">=</span> <span class="synSpecial">"</span><span class="synConstant">The quick brown fox jumps over the lazy dog</span><span class="synSpecial">"</span><span class="synStatement">;</span> + 8 <span class="synStatement">if</span> (<span class="synIdentifier">@</span><span class="synSpecial">*</span><span class="synIdentifier">ARGS</span>[<span class="synConstant">0</span>]) { <span class="synIdentifier">$msg</span> <span class="synStatement">=</span> <span class="synIdentifier">@</span><span class="synSpecial">*</span><span class="synIdentifier">ARGS</span>[<span class="synConstant">0</span>]<span class="synStatement">;</span> } + 9 + 10 <span class="synIdentifier">print</span> <span class="synSpecial">"</span><span class="synConstant">Original: </span><span class="synIdentifier">$msg</span><span class="synSpecial">\n"</span><span class="synStatement">;</span> + 11 <span class="synIdentifier">$msg</span> <span class="synStatement">~~</span> <span class="synStatement">s:</span><span class="synConstant">g</span><span class="synSpecial">/\s//</span><span class="synStatement">;</span> + 12 <span class="synIdentifier">$msg</span> <span class="synStatement">=</span> <span class="synIdentifier">$msg</span><span class="synStatement">.</span><span class="synIdentifier">lc</span><span class="synStatement">;</span> + 13 <span class="synComment"># print "Debug: $msg\n";</span> + 14 <span class="synSpecial">my</span> <span class="synIdentifier">@l</span> <span class="synStatement">=</span> <span class="synIdentifier">split</span>(<span class="synSpecial">""</span><span class="synStatement">,</span><span class="synIdentifier">$msg</span>)<span class="synStatement">;</span> + 15 <span class="synComment"># print join("-",@l), "\n";</span> + 16 + 17 <span class="synSpecial">my</span> <span class="synIdentifier">$coded_msg</span><span class="synStatement">;</span> + 18 <span class="synStatement">for</span> (<span class="synConstant">1</span> <span class="synStatement">..</span> <span class="synConstant">8</span>) { + 19 <span class="synStatement">loop</span> (<span class="synSpecial">my</span> <span class="synIdentifier">$j</span> <span class="synStatement">=</span> <span class="synIdentifier">$_</span><span class="synStatement">;</span> <span class="synIdentifier">$j</span> <span class="synStatement"><=</span> <span class="synIdentifier">@l</span><span class="synStatement">.</span><span class="synIdentifier">end</span><span class="synStatement">;</span> <span class="synIdentifier">$j</span> <span class="synStatement">+=</span> <span class="synConstant">8</span>) { + 20 <span class="synComment"># print "($j) @l[$j] ";</span> + 21 <span class="synIdentifier">$coded_msg</span> <span class="synStatement">~=</span> <span class="synIdentifier">@l</span>[ <span class="synIdentifier">$j</span> ]<span class="synStatement">;</span> + 22 } + 23 <span class="synIdentifier">$coded_msg</span> <span class="synStatement">~=</span> <span class="synSpecial">"</span><span class="synConstant"> </span><span class="synSpecial">"</span><span class="synStatement">;</span> + 24 } + 25 <span class="synIdentifier">print</span> <span class="synSpecial">"</span><span class="synConstant">Coded : </span><span class="synIdentifier">$coded_msg</span><span class="synSpecial">\n"</span><span class="synStatement">;</span> +</pre> +</td></tr></table> + +<h1 id="Sourcecode-for-Python">Sourcecode for Python</h1> + +<p>Because the code is similar to the above ones I do not explain it here. Only some remarks for me as a Python beginner:</p> + +<ul> + +<li><p>Command line arguments are extracted with sys.argv</p> + +<pre><code> 3 import sys + ... + 12 if len(sys.argv) > 1: + 13 msg = sys.argv[1]</code></pre> + +</li> +<li><p>Splitting the letters from the string is done by a list constructor.</p> + +<pre><code> 19 l = list(msg)</code></pre> + +</li> +<li><p>I wanted to use the range from 0 - 7, but my last element was missing. To write here "range (0,8)" I do not understand, but trial and error told me so.</p> + +<pre><code> 24 for i in range (0,8):</code></pre> + +</li> +</ul> + +<table class=code><tr><td class=code> +<pre class=code><div class=t> Python </div> + 1 <span class="synComment">#!/usr/bin/python</span> + 2 + 3 <span class="synPreProc">import</span> sys + 4 <span class="synPreProc">import</span> re + 5 <span class="synPreProc">import</span> array <span class="synStatement">as</span> arr + 6 + 7 <span class="synIdentifier">print</span> <span class="synConstant">"ch-1.py - PWC #45 Task #1: Square Secret Code."</span> + 8 + 9 <span class="synComment"># ----------------------------------</span> + 10 msg = <span class="synConstant">"The quick brown fox jumps over the lazy dog"</span> + 11 + 12 <span class="synStatement">if</span> <span class="synIdentifier">len</span>(sys.argv) > <span class="synConstant">1</span>: + 13 msg = sys.argv[<span class="synConstant">1</span>] + 14 + 15 <span class="synIdentifier">print</span> <span class="synConstant">"Original: "</span>, msg + 16 + 17 msg = re.sub(<span class="synConstant">'\s'</span>,<span class="synConstant">''</span>,msg) + 18 msg = msg.lower() + 19 l = <span class="synIdentifier">list</span>(msg) + 20 <span class="synComment"># print "Original: ", msg</span> + 21 <span class="synComment"># print "Letters : ", l</span> + 22 + 23 coded_msg = <span class="synConstant">""</span> + 24 <span class="synStatement">for</span> i <span class="synStatement">in</span> <span class="synIdentifier">range</span> (<span class="synConstant">0</span>,<span class="synConstant">8</span>): + 25 <span class="synComment"># print</span> + 26 <span class="synComment"># print i, ":",</span> + 27 j = i + 28 e = <span class="synIdentifier">len</span>(l) + 29 <span class="synStatement">while</span> j < e: + 30 <span class="synComment"># print "(",j,"/",e,") ", l[j], " ",</span> + 31 coded_msg += l[j] + 32 j += <span class="synConstant">8</span> + 33 + 34 coded_msg += <span class="synConstant">" "</span> + 35 + 36 <span class="synIdentifier">print</span> <span class="synConstant">"Coded : "</span>, coded_msg +</pre> +</td></tr></table> + +<h1 id="AUTHOR">AUTHOR</h1> + +<p>Chuck</p> + +<table border="0" width="100%" cellspacing="0" cellpadding="3"> +<tr><td class="_podblock_" valign="middle"> +<big><strong><span class="_podblock_"> Perl Weekly Challenge #45 Task #1, Square Secret Code</span></strong></big> +</td></tr> +</table> + +</body> + +</html> + + diff --git a/challenge-045/burkhard-nickels/perl5/ch-1.pl b/challenge-045/burkhard-nickels/perl5/ch-1.pl new file mode 100755 index 0000000000..c764a86e7e --- /dev/null +++ b/challenge-045/burkhard-nickels/perl5/ch-1.pl @@ -0,0 +1,23 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +print "ch-1.pl - PWC #45 Task #1: Square Secret Code\n"; + +my $msg = "The quick brown fox jumps over the lazy dog"; +if($ARGV[0]) { $msg = $ARGV[0]; } + +print "Original: $msg\n"; +$msg =~ s/\s//g; +$msg = lc($msg); +my @l = split("",$msg); + +my $coded_msg; +for(my $i=0; $i<=7; $i++) { + for(my $j=$i; $j<=$#l; $j+=8) { + $coded_msg .= $l[$j]; + } + $coded_msg .= " "; +} +print "Coded : $coded_msg\n"; diff --git a/challenge-045/burkhard-nickels/perl5/ch-1.pod b/challenge-045/burkhard-nickels/perl5/ch-1.pod new file mode 100755 index 0000000000..d876ff117b --- /dev/null +++ b/challenge-045/burkhard-nickels/perl5/ch-1.pod @@ -0,0 +1,262 @@ +#!/usr/bin/perldoc + +=head1 Perl Weekly Challenge #45 Task #1: Square Secret Code + +This task is more or less about reformatting some text. So first +I eleminate spaces, do lower case letters and split every letter +into an array. + +In a second step I reorder the letters with 2 C<for> loops. + +=begin html + +<h2> Download and References </h2> +<b>Download File:</b><a href="ch-1.pl" download> Perl5 Solution PWC #45 Task #1 ch-1.pl</a><br> +<b>Download File:</b><a href="ch-1.p6" download> Perl6 Solution PWC #45 Task #1 ch-1.p6</a><br> +<b>Download File:</b><a href="ch-1.py" download> Python Solution PWC #45 Task #1 ch-1.py</a><br> +<br> + +=end html + +=head1 SYNOPSIS + + # ./ch-1.pl - Program execution + # ./ch-1.p6 - Program execution + # ./ch-1.py - Program execution + # perldoc ch-1.pod - POD + +=cut + +# ====================== TASK 1 ============================== + +=head1 Definition Task #1: Square Secret Code + +The square secret code mechanism first removes any space from the original message. +Then it lays down the message in a row of 8 columns. The coded message is then +obtained by reading down the columns going left to right. + +For example, the message is "The quick brown fox jumps over the lazy dog". + +Then the message would be laid out as below: + + thequick + brownfox + jumpsove + rthelazy + dog + +The code message would be as below: + + tbjrd hruto eomhg qwpe unsl ifoa covz kxey + +Write a script that accepts a message from command line and prints +the equivalent coded message. + +=head1 Perl5 and Perl6 Solutions + +First the Command Line Arguments are read. See below differences in +Perl5 and Perl6. + + 9 if($ARGV[0]) { $msg = $ARGV[0]; } + + 8 if (@*ARGS[0]) { $msg = @*ARGS[0]; } + +Next is eleminating spaces, change to lower case letters and split into +an array. + + 12 $msg =~ s/\s//g; + 13 $msg = lc($msg); + 14 my @l = split("",$msg); + +Although the split line looks exact equal in Perl5 and Perl6, Perl6 has +an empty array element on index 0 and on last index. Perl6 has the global +search as ":g" appended to the "s". For me all this double-colon attributes +is difficult to get used to. + + 11 $msg ~~ s:g/\s//; + 12 $msg = $msg.lc; + 14 my @l = split("",$msg); + +Then two for loops change the order of the letters, see below. + +Other differences: + +=over 2 + +=item * $#l versus @l.end + +=item * .= versus ~= + +=item * for versus loop + +=item * lc($msg) versus $msg.lc + +=item * $msg =~ s/\s//g; versus $msg ~~ s:g/\s//; + +=item * $ARGV[0] versus @*ARGS[0] + +=back + + +=head2 Program execution + +After execution of the program either without argument or with a text +on the command line, following output is generated. + + ./ch-1.pl + ch-1.pl - PWC #45 Task #1: Square Secret Code + Original: The quick brown fox jumps over the lazy dog + Coded : tbjrd hruto eomhg qwpe unsl ifoa covz kxey + + ./ch-1.pl "This is my solution for perl weekly challenge fourtyfive task two" + ch-1.pl - PWC #45 Task #1: Square Secret Code + Original: This is my solution for perl weekly challenge fourtyfive task two + Coded : tsfelut hooelra ilrkets suplnyk iteygft sirceiw molhfvo ynwaoe + +=head2 Sourcecode for Perl5 and Perl6 + + + + +=begin html + +<table class=code><tr><td class=code> +<pre class=code><div class=t> Perl5 </div> + 1 <span class="synPreProc">#!/usr/bin/perl</span> + 2 + 3 <span class="synStatement">use strict</span>; + 4 <span class="synStatement">use warnings</span>; + 5 + 6 <span class="synStatement">print</span> <span class="synConstant">"ch-1.pl - PWC #45 Task #1: Square Secret Code</span><span class="synSpecial">\n</span><span class="synConstant">"</span>; + 7 + 8 <span class="synStatement">my</span> <span class="synIdentifier">$msg</span> = <span class="synConstant">"The quick brown fox jumps over the lazy dog"</span>; + 9 <span class="synStatement">if</span>(<span class="synIdentifier">$ARGV[</span><span class="synConstant">0</span><span class="synIdentifier">]</span>) { <span class="synIdentifier">$msg</span> = <span class="synIdentifier">$ARGV[</span><span class="synConstant">0</span><span class="synIdentifier">]</span>; } + 10 + 11 <span class="synStatement">print</span> <span class="synConstant">"Original: </span><span class="synIdentifier">$msg</span><span class="synSpecial">\n</span><span class="synConstant">"</span>; + 12 <span class="synIdentifier">$msg</span> =~ <span class="synStatement">s/</span><span class="synSpecial">\s</span><span class="synStatement">//g</span>; + 13 <span class="synIdentifier">$msg</span> = <span class="synStatement">lc</span>(<span class="synIdentifier">$msg</span>); + 14 <span class="synStatement">my</span> <span class="synIdentifier">@l</span> = <span class="synStatement">split</span>(<span class="synConstant">""</span>,<span class="synIdentifier">$msg</span>); + 15 + 16 <span class="synStatement">my</span> <span class="synIdentifier">$coded_msg</span>; + 17 <span class="synStatement">for</span>(<span class="synStatement">my</span> <span class="synIdentifier">$i</span>=<span class="synConstant">0</span>; <span class="synIdentifier">$i</span><=<span class="synConstant">7</span>; <span class="synIdentifier">$i</span>++) { + 18 <span class="synStatement">for</span>(<span class="synStatement">my</span> <span class="synIdentifier">$j</span>=<span class="synIdentifier">$i</span>; <span class="synIdentifier">$j</span><=<span class="synIdentifier">$#l</span>; <span class="synIdentifier">$j</span>+=<span class="synConstant">8</span>) { + 19 <span class="synIdentifier">$coded_msg</span> .= <span class="synIdentifier">$l[$j]</span>; + 20 } + 21 <span class="synIdentifier">$coded_msg</span> .= <span class="synConstant">" "</span>; + 22 } + 23 <span class="synStatement">print</span> <span class="synConstant">"Coded : </span><span class="synIdentifier">$coded_msg</span><span class="synSpecial">\n</span><span class="synConstant">"</span>; +</pre> +</td><td class=code> +<pre class=code><div class=t> Perl6 </div> + 1 <span class="synComment">#!/home/chuck/rakudo/bin/perl6</span> + 2 + 3 <span class="synPreProc">use</span> strict<span class="synStatement">;</span> + 4 + 5 <span class="synIdentifier">print</span> <span class="synSpecial">"</span><span class="synConstant">ch-1.p6 - PWC #45 Task #1: Square Secret Code</span><span class="synSpecial">\n"</span><span class="synStatement">;</span> + 6 + 7 <span class="synSpecial">my</span> <span class="synIdentifier">$msg</span> <span class="synStatement">=</span> <span class="synSpecial">"</span><span class="synConstant">The quick brown fox jumps over the lazy dog</span><span class="synSpecial">"</span><span class="synStatement">;</span> + 8 <span class="synStatement">if</span> (<span class="synIdentifier">@</span><span class="synSpecial">*</span><span class="synIdentifier">ARGS</span>[<span class="synConstant">0</span>]) { <span class="synIdentifier">$msg</span> <span class="synStatement">=</span> <span class="synIdentifier">@</span><span class="synSpecial">*</span><span class="synIdentifier">ARGS</span>[<span class="synConstant">0</span>]<span class="synStatement">;</span> } + 9 + 10 <span class="synIdentifier">print</span> <span class="synSpecial">"</span><span class="synConstant">Original: </span><span class="synIdentifier">$msg</span><span class="synSpecial">\n"</span><span class="synStatement">;</span> + 11 <span class="synIdentifier">$msg</span> <span class="synStatement">~~</span> <span class="synStatement">s:</span><span class="synConstant">g</span><span class="synSpecial">/\s//</span><span class="synStatement">;</span> + 12 <span class="synIdentifier">$msg</span> <span class="synStatement">=</span> <span class="synIdentifier">$msg</span><span class="synStatement">.</span><span class="synIdentifier">lc</span><span class="synStatement">;</span> + 13 <span class="synComment"># print "Debug: $msg\n";</span> + 14 <span class="synSpecial">my</span> <span class="synIdentifier">@l</span> <span class="synStatement">=</span> <span class="synIdentifier">split</span>(<span class="synSpecial">""</span><span class="synStatement">,</span><span class="synIdentifier">$msg</span>)<span class="synStatement">;</span> + 15 <span class="synComment"># print join("-",@l), "\n";</span> + 16 + 17 <span class="synSpecial">my</span> <span class="synIdentifier">$coded_msg</span><span class="synStatement">;</span> + 18 <span class="synStatement">for</span> (<span class="synConstant">1</span> <span class="synStatement">..</span> <span class="synConstant">8</span>) { + 19 <span class="synStatement">loop</span> (<span class="synSpecial">my</span> <span class="synIdentifier">$j</span> <span class="synStatement">=</span> <span class="synIdentifier">$_</span><span class="synStatement">;</span> <span class="synIdentifier">$j</span> <span class="synStatement"><=</span> <span class="synIdentifier">@l</span><span class="synStatement">.</span><span class="synIdentifier">end</span><span class="synStatement">;</span> <span class="synIdentifier">$j</span> <span class="synStatement">+=</span> <span class="synConstant">8</span>) { + 20 <span class="synComment"># print "($j) @l[$j] ";</span> + 21 <span class="synIdentifier">$coded_msg</span> <span class="synStatement">~=</span> <span class="synIdentifier">@l</span>[ <span class="synIdentifier">$j</span> ]<span class="synStatement">;</span> + 22 } + 23 <span class="synIdentifier">$coded_msg</span> <span class="synStatement">~=</span> <span class="synSpecial">"</span><span class="synConstant"> </span><span class="synSpecial">"</span><span class="synStatement">;</span> + 24 } + 25 <span class="synIdentifier">print</span> <span class="synSpecial">"</span><span class="synConstant">Coded : </span><span class="synIdentifier">$coded_msg</span><span class="synSpecial">\n"</span><span class="synStatement">;</span> +</pre> +</td></tr></table> + +=end html + + +=head1 Sourcecode for Python + +Because the code is similar to the above ones I do not explain it here. +Only some remarks for me as a Python beginner: + +=over 2 + +=item * Command line arguments are extracted with sys.argv + + 3 import sys + ... + 12 if len(sys.argv) > 1: + 13 msg = sys.argv[1] + +=item * Splitting the letters from the string is done by a list constructor. + + 19 l = list(msg) + +=item * I wanted to use the range from 0 - 7, but my last element was missing. + To write here "range (0,8)" I do not understand, but trial and error told me so. + + 24 for i in range (0,8): + +=back + +=begin html + +<table class=code><tr><td class=code> +<pre class=code><div class=t> Python </div> + 1 <span class="synComment">#!/usr/bin/python</span> + 2 + 3 <span class="synPreProc">import</span> sys + 4 <span class="synPreProc">import</span> re + 5 <span class="synPreProc">import</span> array <span class="synStatement">as</span> arr + 6 + 7 <span class="synIdentifier">print</span> <span class="synConstant">"ch-1.py - PWC #45 Task #1: Square Secret Code."</span> + 8 + 9 <span class="synComment"># ----------------------------------</span> + 10 msg = <span class="synConstant">"The quick brown fox jumps over the lazy dog"</span> + 11 + 12 <span class="synStatement">if</span> <span class="synIdentifier">len</span>(sys.argv) > <span class="synConstant">1</span>: + 13 msg = sys.argv[<span class="synConstant">1</span>] + 14 + 15 <span class="synIdentifier">print</span> <span class="synConstant">"Original: "</span>, msg + 16 + 17 msg = re.sub(<span class="synConstant">'\s'</span>,<span class="synConstant">''</span>,msg) + 18 msg = msg.lower() + 19 l = <span class="synIdentifier">list</span>(msg) + 20 <span class="synComment"># print "Original: ", msg</span> + 21 <span class="synComment"># print "Letters : ", l</span> + 22 + 23 coded_msg = <span class="synConstant">""</span> + 24 <span class="synStatement">for</span> i <span class="synStatement">in</span> <span class="synIdentifier">range</span> (<span class="synConstant">0</span>,<span class="synConstant">8</span>): + 25 <span class="synComment"># print</span> + 26 <span class="synComment"># print i, ":",</span> + 27 j = i + 28 e = <span class="synIdentifier">len</span>(l) + 29 <span class="synStatement">while</span> j < e: + 30 <span class="synComment"># print "(",j,"/",e,") ", l[j], " ",</span> + 31 coded_msg += l[j] + 32 j += <span class="synConstant">8</span> + 33 + 34 coded_msg += <span class="synConstant">" "</span> + 35 + 36 <span class="synIdentifier">print</span> <span class="synConstant">"Coded : "</span>, coded_msg +</pre> +</td></tr></table> + +=end html + + +=cut + +=head1 AUTHOR + +Chuck + +=cut + +# ############################## END ############################################# + diff --git a/challenge-045/burkhard-nickels/perl5/ch-1.py b/challenge-045/burkhard-nickels/perl5/ch-1.py new file mode 100755 index 0000000000..a7af6fc993 --- /dev/null +++ b/challenge-045/burkhard-nickels/perl5/ch-1.py @@ -0,0 +1,37 @@ +#!/usr/bin/python + +import sys +import re +import array as arr + +print "ch-1.py - PWC #45 Task #1: Square Secret Code." + +# ---------------------------------- +msg = "The quick brown fox jumps over the lazy dog" + +if len(sys.argv) > 1: + msg = sys.argv[1] + +print "Original: ", msg + +msg = re.sub('\s','',msg) +msg = msg.lower() +l = list(msg) +# print "Original: ", msg +# print "Letters : ", l + +coded_msg = "" +for i in range(0,8): + # print + # print i, ":", + j = i + e = len(l) + while j < e: + # print "(",j,"/",e,") ", l[j], " ", + coded_msg += l[j] + j += 8 + + coded_msg += " " + +print "Coded : ", coded_msg + diff --git a/challenge-045/burkhard-nickels/perl5/ch-2.html b/challenge-045/burkhard-nickels/perl5/ch-2.html new file mode 100644 index 0000000000..368f221eab --- /dev/null +++ b/challenge-045/burkhard-nickels/perl5/ch-2.html @@ -0,0 +1,276 @@ +<?xml version="1.0" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>Perl Weekly Challenge #45 Task #2, Source Dumper</title> |
