binpack-clusters ( sizes -- bins blobs )


Vocabulary
zim.builder

Inputs
sizesan object


Outputs
binsan object
blobsan object


Definition


:: binpack-clusters ( sizes -- bins blobs )
sizes [ CLUSTER-SIZE > ] partition
[ length ] [ sum CLUSTER-SIZE /mod zero? [ 1 + ] unless + ]
bi* :> #clusters #clusters sizes length <= t assert=
sizes length <iota> [ sizes nth ] #clusters map-binpack
:> bins sizes length <iota>
[| i | i bins [ index ] with find i swap index 2array ] map
:> blobs bins blobs ;