3 ms·
rewritten apl version w/ lambdas and commute (vs assignment & parens): {⍵/⍨⍵<50}{2*⍨⍵/⍨1=2|⍵}⍳10 1 9 25 49 About as short as I can make it, and
by gandercrews 6y ago
rewritten apl version w/ lambdas and commute (vs assignment & parens):
{⍵/⍨⍵<50}{2*⍨⍵/⍨1=2|⍵}⍳10
1 9 25 49
About as short as I can make it, and while its longer than the pandas solution, the primitives are significantly more general (sqr, odd - why include these as language primitives?).
- eesmith 6y agoThanks! It's been a long time since I tried APL. All I could remember was ⍳ and right-to-left evaluation. The rest was through monkeying around with Rosetta Code examples. As to your "why" question - I'm assuming to make a neat demo. Something like: >>> from math import cos, sin >>> [s for i in range(50) if i&1 and cos(s:=i*i) < sin(i)] [1, 9, 49, 225, 361, 441, 625, 1089, 1521, 1681, 2025, 2209] seems more difficult to pull off in a pipeline API.
- gandercrews 6y agonah its pretty straightforward w/ higher order fns. one of many possible solutions: {(1○⍺)>2○⍵} {(⍹ ⍵)/⍨⍵ ⍶ ⍹ ⍵} {⍵*2} {⍵/⍨2|⍵}⍳50 1 9 49 225 361 441 625 1089 1521 1681 2025 2209
- eesmith 6y agoOh, sorry, I was too clever by half. I should have been more specific - hard to pull off in Panda. Thanks for an APL solution in any case!