| Ruud H.G. van Tol on Thu, 30 Jan 2025 13:51:18 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: 2^[1,3] |
On 2025-01-29 22:07, Bill Allombert wrote: > On Wed, Jan 29, 2025 at 03:51:26PM +0100, Bill Allombert wrote: >> On Wed, Jan 29, 2025 at 03:24:02PM +0100, Ruud H.G. van Tol wrote: >>> On 2025-01-29 14:42, Bill Allombert wrote: >>>> On Wed, Jan 29, 2025 at 02:28:46PM +0100, Ruud H.G. van Tol wrote: >>>>> ? vecsum(2^[1,3]) >>>>> % 10.000000000000000000000000000000000000 > > I geuss you can do vecsum([2^i|i<-[1,3]]) Yes, that is what was used in the initial email of this thread. The shown example usage is to sum(2^[distinct decimal digits of a number]), to derive a Map-key, for sorting integers into buckets.I guess the basic wish here, is to more canonically create a meta-bitmap from a Set(), and/or from the (non-negative integer) keys of a Map(), etc.
-- Ruud
Example usage:
? {
my(r=Map());
for(i=1, 200
, my(k=vecsum([ 1<<e |e<-Set(digits(i))]), v);
if(mapisdefined(r,k,&v), v=concat(v,[i]), v=[i]);
mapput(~r, k, v)
);
foreach(r, e \\ how to properly traverse a Map?
, my([k,v]=e[1]);
if(#v > 2
, printf("%4s => %s\n", k, v)
)
);
}
2 => [1, 11, 111]
3 => [10, 100, 101, 110]
6 => [12, 21, 112, 121, 122]
10 => [13, 31, 113, 131, 133]
18 => [14, 41, 114, 141, 144]
34 => [15, 51, 115, 151, 155]
66 => [16, 61, 116, 161, 166]
130 => [17, 71, 117, 171, 177]
258 => [18, 81, 118, 181, 188]
514 => [19, 91, 119, 191, 199]