[PD] list interlace ?

Mathieu Bouchard matju at artengine.ca
Thu Sep 8 19:13:47 CEST 2011

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

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