Re: Driving me nuts
- To: mathgroup at smc.vnet.net
- Subject: [mg33816] Re: [mg33801] Driving me nuts
- From: BobHanlon at aol.com
- Date: Fri, 19 Apr 2002 02:27:33 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
In a message dated 4/16/02 5:42:23 AM, stevebg at adelphia.net writes: > The following simple function does not do anything >when called except echo its name. > Any tips will be appreciated, to put it mildly. > >listr[lst] := Module[{lct, itm, str}, > str = "."; > For [ lct = 1, lct <= Length[lst], lct++, > { itm = lst[[lct]]; > If[itm <= 9, itm = itm + 48, itm = itm + 55]; > str = StringInsert[str, FromCharacterCode[itm], 1]; > }] > Return[Reverse[str]]; > ] > >foo = {1, 4, 14, 23} >listr[foo] >listr[{1, 4, 14, 23}] > >The last line shows what happens. No errors are reported. > 1. The LHS of the definition should use a pattern. 2. You must use StringReverse rather than Reverse to reverse a string. However, you don't need StringReverse if you put the character in the proper position initially. 3. Return is unnecessary for normal termination of a function. 4. The output should not be suppressed if you want to see the results. listr[lst_]:= Module[{lct,itm,str}, str="."; For[lct=1,lct<=Length[lst],lct++, itm=lst[[lct]]; If[itm<=9,itm=itm+48,itm=itm+55]; str=StringInsert[str,FromCharacterCode[itm],-1]]; str]; foo={1,4,14,23}; listr[foo] .14EN Or you could write this more simply as listr2[lst_] := "."<>FromCharacterCode[If[#<=9,#+48,#+55]& /@ lst]; listr2[foo] .14EN Bob Hanlon Chantilly, VA USA