The time/space numbers are telling you that (x $ y) produces a virtual
result when it can, while (_2 ]\ y) doesn't (yet). If you use the
result immediately, the space saving is real. If you box the result or
save it in a name, the value will be realized and the space saving will
vanish.
Henry Rich
On 5/16/2020 11:14 AM, 'Michael Day' via Programming wrote:
Much neater than what I was about to offer, unless Raoul needs to
specify the fill,
in which case, this alternative rather minimal amendment is worth
consideration:
($!._ ~2,~>.@-:@#) i.7
0 1
2 3
4 5
6 _
cf
_2]\ i.7
0 1
2 3
4 5
6 0
Also, the time and space performance _might_ be important for large
inputs:
ts' $ _2]\ list ' [list =: i.100000
0.000618 1.04986e6
ts'($!._ ~2,~>.@-:@#) list'
2.7e_6 2304
Cheers,
Mike
On 16/05/2020 15:57, 'Rob Hodgkinson' via Programming wrote:
You could try Infix … here with NuVoc link…
https://code.jsoftware.com/wiki/Vocabulary/bslash#dyadic
x u\ y where x is eg _2 means apply very b to successive pairs (_
for non-overlapping).
_2 ]\ 1 2 3 4 5 6
1 2
3 4
5 6
_2 ]\ 1 2 3 4 5 6 7
1 2
3 4
5 6
7 0
_2 <\ 1 2 3 4 5 6
┌───┬───┬───┐
│1 2│3 4│5 6│
└───┴───┴───┘
HTH…/Rob
On 17 May 2020, at 12:42 am, Raoul Schorer <[email protected]>
wrote:
Hello,
I am convinced that this must be trivial, but I wasn't able to find
in the documentation how to reshape a list to a table without
manually extracting the length.
in summary, is there a more direct way of doing:
lst =. i. 6
((2,~2%~#) $ ]) lst
for a list of arbitrary length?
Thanks!
Raoul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
--
This email has been checked for viruses by AVG.
https://www.avg.com
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm