«List expander and contractor function» by moncrey
on 22 Mar'13 02:43 inuseful for expanding or reducing arrays by 2^x. I would like to know if there is a more concise way to write this! Any suggestions?
(duplicate post, sorry! forgot to log in!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
(
b = {|x,y|
var arr = List[];
case
{y % x.size == 0} // condition 1
{
var per = y / x.size;
x.size.do{|oo|
var pp = 1,i = 1;
arr.add( x[oo] );
while({i < per},{
arr.add(0);
i = i+1;
});
}
}
{x.size % y == 0} // condition 2
{
var pp = x.size / y, i = 0, sz = x.size;
while({i < sz},{
if(i % pp == 0)
{ arr.add(x[i]) };
i=i+1;
});
};
arr
};
a = [1,1,1,1];
c = b.value(a,16)
// [ 1, 1, 1, 1 ]
// becomes
// [ 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ]
b.value(c,4);
// [ 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ]
// becomes
// [ 1, 1, 1, 1 ]
)
ancestors
full graph
«List expander and contractor function» by anonymous (private)
reception
I suppose one consideration would be using the lists as streams so other objects can be used