@Emir
A big Thank-you for your set of sample tasks from a bona-fide J
beginner. They come at the right time for me.

I have just released a new addon: "format/zulu". This offers a
"sandbox" for experimenting with strings in J. It also installs a new
"Lab". See (in j602):
    Menu: Studio > Labs... > Category: format > Strings conversion package
...which puts the sandbox through its paces.
(Sorry, I can't see the Lab in J701. Maybe it's because I can't see
any "format" category. So you may have to install and run j602 instead
of j701.)

Near the end of the Lab, viz at:
 ── (31 of 39) TASKS
there's a set of sample tasks with boxed strings. They're much like
yours. Plus my own solutions. (But, I have to admit, my solutions are
not as slick as Raul's.)

Nevertheless "zulu" might be of help to you. I offer it to you (and
other beginners) in that vein. Your feedback will help me to improve
the Lab.

   @Raul
Thank you for your solutions to Emir's tasks. Most timely.
As a result I'm going to use some of them in zulu.ijt, if you don't mind.
And if you get time to cast your eye over "format/zulu" I'd welcome
your suggestions.
(Other J-ers, too, especially those teaching J to beginners.)

NB. "format/zulu" is very much aimed at beginners, especially its Lab.
I expect a Jmaster will die of boredom working thru it.

On Sun, Sep 16, 2012 at 9:01 PM, Raul Miller <rauldmil...@gmail.com> wrote:
>    s =: ' ';'this';'is';'a';'sentence'
>    (<'is') 0} s
> ┌──┬────┬──┬─┬────────┐
> │is│this│is│a│sentence│
> └──┴────┴──┴─┴────────┘
>    4 ({.,(<'sample'),}.) s
> ┌─┬────┬──┬─┬──────┬────────┐
> │ │this│is│a│sample│sentence│
> └─┴────┴──┴─┴──────┴────────┘
>    1 }. s
> ┌────┬──┬─┬────────┐
> │this│is│a│sentence│
> └────┴──┴─┴────────┘
>    (2 {. s), 3 }.s
> ┌─┬────┬─┬────────┐
> │ │this│a│sentence│
> └─┴────┴─┴────────┘
>    (<'the') (I. s = <,'a')} s
> ┌─┬────┬──┬─┬────────┐
> │ │this│is│a│sentence│
> └─┴────┴──┴─┴────────┘
>    (<'the') (I. s = <'a')} s
> ┌─┬────┬──┬───┬────────┐
> │ │this│is│the│sentence│
> └─┴────┴──┴───┴────────┘
>    s -. <'is'
> ┌─┬────┬─┬────────┐
> │ │this│a│sentence│
> └─┴────┴─┴────────┘
>
> In other words:
>
> 1) yes
> 2) yes
> 3) yes, but be careful
>
> In this case, your s contained five boxes.  Four of those boxes where
> character sequences.  One of them was just a character.  In the
> general case, you need to be aware of the distinction between a
> character (rank 0) and a sequence of characters (rank 1), and you
> especially need to be aware of the distinction between a character and
> a sequence of characters of length 1.  They're different but seem to
> be the same.
>
> This is analogous to the distinction between
>   2
> and
>   3 4 5
>
> The first is just a number, the second is a sequence of numbers...
> And you can have sequences of numbers of length 1, but that's not
> quite the same thing as the number by itself.
>
> --
> Raul
>
> On Sun, Sep 16, 2012 at 3:30 PM, Emir Ustamujic <emir_...@yahoo.com> wrote:
>> Hello,
>>
>> As I'm often working with boxes of strings I have identified several things 
>> that I would like to do with boxed strings but haven't figured how to do yet 
>> as I'm still learning J.
>>
>> [I hope the boxes in the examples don't turn out garbled...]
>>
>>
>> 1. If there is a list of boxed words(strings) how to replace individual 
>> items with another string ?
>>
>> For example I have :
>>  ] s =: ' ';'this';'is';'a';'sentence'
>> ┌─┬────┬──┬─┬────────┐
>> │   │     this│    is│a│         sentence│
>> └─┴────┴──┴─┴────────┘
>> but would like to use something like: 0 boxitemreplace s; 'is' (to replace 
>> the first element which can be a space with 'is)
>> and get this result :
>> ┌──┬────┬──┬─┬────────┐
>> │is   │this      │is   │a │sentence        │
>> └──┴────┴──┴─┴────────┘
>> or something like 2 boxitemreplace s;' ' (to replace the third element with 
>> a space)
>> ┌──┬────┬──┬─┬────────┐
>> │      │this      │     │a │sentence        │
>> └──┴────┴──┴─┴────────┘
>>
>> 2. Insert and Remove
>>
>> For example using the same s =: ' ';'this';'is';'a';'sentence':
>> would it be possible to somehow insert a word at a specific index so: 4 
>> inserttobox s;'sample'
>> would yield
>> ┌─┬────┬──┬─┬──────┬────────┐
>> │   │this     │is    │a │sample     │sentence         │
>> └─┴────┴──┴─┴──────┴────────┘
>>  or remove nth item such as 0 removeitemfrombox s;' '
>> ┌────┬──┬─┬──────┬────────┐
>> │this      │is   │a │sample     │sentence         │
>> └────┴──┴─┴──────┴────────┘
>>
>>
>> 3. And consequently would it be also possible to replace all occurences of 
>> one string value within s with another string and remove all occurences of 
>> one string from a boxed list such as s ?
>>
>> I more or less know how to do this with regular strings such as s=: 'this is 
>> a sentence' but my problem is when dealing directly with boxed strings and 
>> when they contain spaces.
>>
>>
>> Thanks &Regards,
>> Emir
>> ----------------------------------------------------------------------
>> 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

Reply via email to