26 ms·
Saw your code, couldn't believe how awesome it was, and made an effort to make it shorter just for kicks. (Warning though, I'm pretty new to Haskell.) Did a b
by chamakits 15y ago
Saw your code, couldn't believe how awesome it was, and made an effort to make it shorter just for kicks. (Warning though, I'm pretty new to Haskell.) Did a bit of "cheating" here and there, since the purpose is for it to be as concise as possible, and got it to 50 characters. I'm sure someone can get it lower :P
f=filter
q[]=[]
q(h:t)= q(f(<=h)t)++[h]++q(f(>h)t
- 1331 15y agoI got it down to 47 characters and improved the performance by moving the less common case to the bottom. (Not that is matters since this implementation sacrifices performance for elegance, but playing code golf with Haskell destroys the elegance anyway...) f=filter q(h:t)=q(f(<=h)t)++h:q(f(>h)t) q _=[]
- chamakits 15y agototally stole your idea and found a way to do it in 46 characters :P f=filter q(h:t)= q(f(<=h)t)++h:q(f(>h)t) q a=a