2011/9/8 Mathieu Bouchard <matju@artengine.ca>
On Thu, 8 Sep 2011, tim vets wrote:

what's the best way to 'interlace' two lists, i.e. turn:
1 2 3 4 and 5 6 7 8
into
1 5 2 6 3 7 4 8
?

It's usually called interleaving.

If they are all floats, the fastest is something like this :

[list prepend 1 4 f #]
 |
[#join 0]---------------[list prepend 1 4 f #]
 |
[#transpose]
 |
[#to_l]

where the 1 4 f # prefix means you want to make a grid of 1 row and 4 columns of floats. Then in contact with grid-inlets, those prefixed lists become grids of 1 by 4.

[#join] joins them by the dimension 0, which makes a single grid of (1+1=2) rows by 4 columns.

[transpose] swaps the first two dimensions, which makes a grid of 4 rows by 2 columns.

[#to_l] makes a list of 8 elements, row after row.

Of course you can instead use a [list append] and messagebox containing :

 $1 $5 $2 $6 $3 $7 $4 $8

ha good one, I didn't think of that.
In my case the lists are not big but there are many.
I may try that solution too, see if it improves speed...
thanks,
Tim

 
and in that particular case, it's more efficient, but the GridFlow solution works for any list length, and is probably more efficient for big lists...

 _______________________________________________________________________
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC