[Purdue-pm] More on Mark's challenge
Michael Gribskov
gribskov at purdue.edu
Thu Jan 14 11:41:16 PST 2010
i have a very ugly one statement solution using marks first approach,
which doesn't use etc, etc.
Mark Senn wrote:
> 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
> _______________________________________________
> Purdue-pm mailing list
> Purdue-pm at pm.org
> http://mail.pm.org/mailman/listinfo/purdue-pm
>
--
Michael Gribskov
Professor of Biological Sciences
Purdue University
Lilly Hall of Life Sciences
915 W. State Street
West Lafayette IN 47907-2054
gribskov at purdue.edu vox: 765.494.6933 fax: 765.496-1189
calendar: http://www.google.com/calendar/embed?src=mgribskov%40gmail.com&ctz=America/New_York
More information about the Purdue-pm
mailing list