Thanks, but:
kip=:[ ((' ' ; [: ,. [) ,. ]) ] ([: ({. ; }.) [: ": ,) +/
table3=: 13 : '('' '';,.x),.({.;}.) ":y,x+/y'
kip
[ ((' ' ; [: ,. [) ,. ]) ] ([: ({. ; }.) [: ": ,) +/
table3
(' ' ; [: ,. [) ,. [: ({. ; }.) [: ": ] , +/
These two seem to agree on the basic examples. These also agree on the
problem cases.
1 2 kip 3
--T----┐
│ │3 │
+-+----+
│1│ 4 5│
│2│ │
L-+-----
1 2 table3 3
--T----┐
│ │3 │
+-+----+
│1│ 4 5│
│2│ │
L-+-----
1 kip 2 3
--T------┐
│ │2 │
+-+------+
│1│ 3 3 4│
L-+-------
1 table3 2 3
--T------┐
│ │2 │
+-+------+
│1│ 3 3 4│
L-+-------
Surprise
table=: 13 : '('' '';,.x),.y;x+/y'
table
(' ' ; [: ,. [) ,. ] ; +/
1 table 2 3
--T---┐
│ │2 3│
+-+---+
│1│3 4│
L-+----
I can't make your example with an adverb work.
Over=: [: ({. ; }.) [: ": ,
By=:(' ' ; [: ,. [) ,. ]
tbl=: 1 : '(,x)u/(,y)'
Table=: [ By ] Over +tbl
a Table b
|domain error: Table
| a Table b
I don't really think the problem is with +/ . Rather their needs to be a
test if the left argument is a list and act accordingly.
Cheers. Thiss has been fun.
Linda
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Kip Murray
Sent: Sunday, November 20, 2011 8:39 AM
To: Programming forum
Subject: Re: [Jprogramming] table challenge in simple J
Look just under "Flawed solution to Linda's challenge" below.
On 11/20/2011 4:16 AM, Linda Alvord wrote:
> What are your definitions of By and Over?
> tbl
> 1 : '(,x)u/(,y)'
> Table=:[ by ] over +tbl
>
> a Table b
> |domain error: Table
> | a Table b
>
> by
> ''&;@,.@[ ,. ]
> over
> ({. ; }.)@":@,
>
> Linda
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Kip Murray
> Sent: Saturday, November 19, 2011 9:58 PM
> To: [email protected]
> Subject: Re: [Jprogramming] table challenge in simple J
>
> I think the correct way to deal with the misbehavior of Table in extreme
> cases is to use adverb tbl below instead of adverb / , leaving the realm
> of Simple J.
>
> Use
>
> tbl =: 1 : 0
> :
> (,x)u/(,y)
> )
>
> and
>
> Table =: [ By ] Over +tbl
>
> then
>
> a Table b
> +-+-------+
> | |0 1 2 3|
> +-+-------+
> |2|2 3 4 5|
> |3|3 4 5 6|
> |5|5 6 7 8|
> +-+-------+
> 1 Table 2 3
> +-+---+
> | |2 3|
> +-+---+
> |1|3 4|
> +-+---+
> 1 2 Table 3
> +-+-+
> | |3|
> +-+-+
> |1|4|
> |2|5|
> +-+-+
> 1 Table 2
> +-+-+
> | |2|
> +-+-+
> |1|3|
> +-+-+
>
> The point is, if adverb tbl is used in place of / then not only is Table
> fixed, but also By and Over handle extreme cases correctly.
>
> Incidentally, Over's use of Format ": enables Table to get heading
> spacing right:
>
> 100 Table 2 3 4
> +---+-----------+
> | | 2 3 4|
> +---+-----------+
> |100|102 103 104|
> +---+-----------+
>
>
> On 11/18/2011 10:48 AM, Kip Murray wrote:
>> It is 18 November, so below is my solution Table to Linda's challenge.
>> It is the same as Raul's. However, it does not handle extreme cases
>> well, and I leave it as a further challenge to repair Table.
>>
>> The difficulty:
>>
>> 1 Table 2 3
>> +-+------+
>> | |2 |
>> +-+------+
>> |1| 3 3 4|
>> +-+------+
>>
>> 1 2 Table 3
>> +-+----+
>> | |3 |
>> +-+----+
>> |1| 4 5|
>> |2| |
>> +-+----+
>>
>> Flawed solution to Linda's puzzle:
>>
>> Over
>> [: ({. ; }.) [: ": ,
>>
>> By
>> (' ' ; [: ,. [) ,. ]
>>
>> Table
>> [ By ] Over +/
>>
>> Table f.
>> [ ((' ' ; [: ,. [) ,. ]) ] ([: ({. ; }.) [: ": ,) +/
>>
>> a Table b
>> +-+-------+
>> | |0 1 2 3|
>> +-+-------+
>> |2|2 3 4 5|
>> |3|3 4 5 6|
>> |5|5 6 7 8|
>> +-+-------+
>>
>> Over and Bye can produce any operation table, but Table can only produce
>> addition tables.
>>
>> a By b Over a */ b
>> +-+---------+
>> | |0 1 2 3|
>> +-+---------+
>> |2|0 2 4 6|
>> |3|0 3 6 9|
>> |5|0 5 10 15|
>> +-+---------+
>>
>>
>> -------- Original Message --------
>> Subject: [Jprogramming] table challenge in simple J
>> Date: Sun, 13 Nov 2011 20:51:50 -0500
>> From: Linda Alvord<[email protected]>
>> Reply-To: Programming forum<[email protected]>
>> To: 'Programming forum'<[email protected]>
>>
>> In the dictionary in the section on "Verbs and Adverbs" there are two
>> definitions designed to produce a table:
>>
>>
>>
>> over=:({.;}.)@":@,
>>
>> by=:' '&;@,.@[,.]
>>
>> a=: 2 3 5
>>
>> b=: 0 1 2 3
>>
>> a by b over a +/ b
>>
>> --T-------┐
>>
>> │ │0 1 2 3│
>>
>> +-+-------+
>>
>> │2│2 3 4 5│
>>
>> │3│3 4 5 6│
>>
>> │5│5 6 7 8│
>>
>> L-+--------
>>
>>
>>
>> Here is the challenge. Use the arguments a and b and define a single
tacit
>> function in "simple J" that does not use @ and provides the same result.
>>
>>
>>
>> a table b
>>
>> --T-------┐
>> │ │0 1 2 3│
>> +-+-------+
>> │2│2 3 4 5│
>> │3│3 4 5 6│
>> │4│4 5 6 7│
>> L-+--------
>>
>>
>>
>> To give a little time for thought, do not post a solution until November
>> 18th. I'll post mine then too.
>>
>>
>>
>> Linda
>>
>> ----------------------------------------------------------------------
>> 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm