thanks Raul. 44 characters now. }.|:1j1#a.{~((]+(i.25)|.~-)(98-33^96>]))3&u:'s'
e.g. testing, testing,. ... }.|:1j1#a.{~((]+(i.25)|.~-)(98-33^96>]))3&u:'J' k l m n o p q r s t u v w x y a b c d e f g h i }.|:1j1#a.{~((]+(i.25)|.~-)(98-33^96>]))3&u:'J' K L M N O P Q R S T U V W X Y A B C D E F G H I NB. I introduced an issue in the previous I posted. This one appear On 30 August 2012 10:45, Raul Miller <rauldmil...@gmail.com> wrote: > On Thu, Aug 30, 2012 at 5:05 AM, Linda Alvord <lindaalv...@verizon.net> > wrote: > > This seems to be the shortest version at the moment. > > > > |:1j1#(25{.(u:,2#65 97+/i.26)(>:@i.}.[)])"0 's' > > > > If I apply Raul's explanation to the current shortest version, why > doesn't > > the following function work? > > > > f=: 13 :'|:1j1#(25{.x (>:@i.}.x)y)"0' > > f=: 13 :'|:1j1#(25{.x (>:@i.}.x)y)"0' > > (u:,2#65 97+/i.26) f 's' > > |domain error: f > > | |:1j1#(25{.x( >:@i.}.x)y)"0 > > One issue here is >:@i. -- that was the left tine of a fork, but by > replacing the right tine of that fork you no longer have a fork, you > have a noun phrase. > > But if you replace that with (x >:@i. y) you will then get a syntax > error... > > Here's a cleaned up version of f that is syntactically valid: > f=: 13 :'|:1j1#(25{.((x>:@i.y)}.x))' > > > I didn't have much luck with Raul's definition either: > > > > 1j1#"1&|:(25{.]}.~1+i.~)&(u:,2#65 97+/i.26)"0 'L' > > M N O P Q R S T U V W X Y Z A B C D E F G H I J K > > > > g=: 13 :'1j1#"1&|:(25{.y}.~1+i.~)&x"0' > > (u:,2#65 97+/i.26) f 'L' > > |syntax error: f > > First, you should be using g here, instead of f > > But the syntax error is because the result of the sentence you used > for g's definition is a verb. It's a verb because of the trailing "0 > on your (25{.y}.~1+i.~)&x means that (25{.y}.~1+i.~)&x becomes the > definition for a rank 0 verb. And the rest of the expression to the > left of it is suitable to turn the whole thing into a fork. So if you > had defined: > g=: 2 :'1j1#"1&|:(25{.y}.~1+i.~)&x"0' > it would have succeeded without error. > > But that's not the only problem. Another problem is that you have an > expression which reads ()&x and this will also be generating a verb, > So just removing the "0 is not enough to make your 13 : definition > compute a noun result. > > And there are other problems... but working with the definition split > out from the arguments seems to me to be tedious -- if everything is > on one line, I can hit control-shift-uparrow to recall my previous > line and then simplify my test until I understand what's going on. > With things on two lines that process becomes much slower. > > Anyways, here's what seems to me to be a near minimal set of edits to > your g to make it do what I am expecting you want it to do: > > g=: 2 :'1j1#"1&|:(25{.x}.~1+y i.~x)' > > Note that I changed an x to a y and I removed things that made your > result want to be a verb and I gave your i.~ its explicit arguments. > > I hope this helps, but I'm thinking that you are making blind changes > to full sentences instead of experimenting with small phrases and > building those into full sentences. If you make blind changes (for > example, putting y where you meant x, but also things like using a > verb where you meant to use a noun) the results will tend to be > confusing. To unravel the confusing stuff, you are going to need a > good set of practices, for isolating the parts of the code which are > behaving differently from what you want. > > Take care, > > -- > Raul > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm