# [PD] list interlace ?

tim vets timvets at gmail.com
Thu Sep 8 19:29:00 CEST 2011

```2011/9/8 Mathieu Bouchard <matju at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20110908/80c3319a/attachment.htm>
```