Hi Adam, I agree with Henry. That is impressive for a first program. To start with it works, which is a lot more than I can say for my first attempts!
The only adjustment that I came up with in addition to the use of -: instead of (*/)@(=&(...)) was getting rid of the ] because I like my verbs to do more work than that if I have a choice. Since you are going to /:~@:tolower the arguments anyway, I moved that in place of the ] to get this. isAnagramOf=: -:&:(' ' -.~ /:~@:tolower) 'Nag a Ram ' isAnagramOf 'Anagram' 1 'ab' isAnagramOf 'aa' 0 I look forward to more of your ideas on the forum. Cheers, bob > On Mar 13, 2016, at 9:15 AM, Henry Rich <henryhr...@gmail.com> wrote: > > Wow, that's amazing for a first program. You'll go far with this language. > > There are easier ways to do what you did: > (' ' & i.#]) > removes spaces. Easier is > -.&' ' > > (*/)@(=&(...)) > will cause trouble if the left and right arguments have different length, > which is why you had to discard that case. The better way to check for > identical arguments is > -: > which doesn't have that problem. > > Applying these changes leaves > > isAnagramOf =: -:&:(/:~@tolower)&:(-.&' ') > > which uses your ideas, and gives the same result except that '' isAnagramOf > '' will be 1. > > Notice I used &: instead of & . & would work here, but don't use @ and & > until you understand how they differ from @: and &: . > > Henry Rich > > > > > > ' ' & i.#]) > On 3/13/2016 11:21 AM, Adam Tornhill wrote: >> Hi all, >> I finally decided to try to understand this fascinating language. So far >> I've spent some evenings reading and experimenting with the language. J is >> fun. Real fun. I also like how J forces me to re-consider how I view >> programming. Of course, that also means I'm still at a complete beginner's >> stage, so I'd like to ask for some feedback and suggestions on my first J >> code. I'm sure there's a lot I can simplify in my code. >> Here's the code I put together by digging around in the J Dictionary: >> isAnagramOf=:(0:`((*/)@(=&((/:~@tolower)@(' ' & i.#])))))@.(=&(#@:(' ' & >> i.#]))) >> >> Some examples: >> 'Nag a Ram ' isAnagramOf 'Anagram'1 >> 'ab' isAnagramOf 'aa'0 >> All tips and hints on both the code and learning J in general would be much >> welcome. >> Thanks!/Adam-- Homepage: www.adamtornhill.com Twitter: @AdamTornhill >> Your Code as a Crime Scene: >> https://pragprog.com/book/atcrime/your-code-as-a-crime-sceneLisp for the >> Web: https://leanpub.com/lispwebPatterns in C: >> https://leanpub.com/patternsinc >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm