[Purdue-pm] More on Mark's challenge
Mark Senn
mark at ecn.purdue.edu
Thu Jan 14 09:41:08 PST 2010
On Wed, 13 Jan 2010 09:13:21 -0500 Rick Westerman wrote:
> I had a question today as to if is required to use the 'hereis' text
> Mark put in his original challenge email. My feeling is 'yes'. Just
> filling up an array with serial ASCII characters defeats part of the
> challenge -- one could certainly imagine a scenario where arbitrary text
> is used in a non-serial manner. But maybe I am saying this because
> working with the 'hereis' took most of my less than 2 hour effort (I
> almost never use 'hereis') and so want to see what other people come up
> with.
The original challenge email with some reformattig to make it easier to read
and additions made on 2010-01-12 (they're clearly marked):
I came across the following when doing normal work for my job.
Using the following
==== start with next line
0 NUL 1 SOH 2 STX 3 ETX 4 EOT 5 ENQ 6 ACK 7 BEL
8 BS 9 HT 10 NL 11 VT 12 NP 13 CR 14 SO 15 SI
16 DLE 17 DC1 18 DC2 19 DC3 20 DC4 21 NAK 22 SYN 23 ETB
24 CAN 25 EM 26 SUB 27 ESC 28 FS 29 GS 30 RS 31 US
32 SP 33 ! 34 " 35 # 36 $ 37 % 38 & 39 '
40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 /
48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7
56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ?
64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G
72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O
80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W
88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _
96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g
104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o
112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w
120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 DEL
==== end with previous line
in a here document set up an array @print in Perl 5 so that elements
0..31 are '.'
32 is ' '
33..126 are as listed
127 is '.'
128..255 is '.'
I'll show my solution (that doesn't use
chr
do
for
grep (added on 2010-01-12)
if
map (added on 2010-01-12)
ord
repeat (added on 2010-01-12)
require (added on 2010-01-14)
sub
while
until
use (added on 2010-01-14)
) at next meeting and would like to see other solutions with
or without the parenthesized restraint above. -mark
One must use the here document in the original challenge email so that,
for example, if "R" where changed to "X" in the here document then
$print[82] would be "X" after your code runs.
There are two kinds of solutions:
FIRST KIND: ignores the character numbers like the "0" in "0 NUL" and
assumes the values for the @print array are listed in order.
SECOND KIND: uses the character numbers so that if, for example, "127 DEL"
were changed to "127 x" then $print[127] would be "x" after the code runs.
I did an easy to read and understand solution of the first kind. After
reading comments by other people, I did a Perl golf solution (minimize
number of characters used) of the second kind, and a reformatted version
of the Perl golf solution so it is easier to read.
-mark
More information about the Purdue-pm
mailing list