[Haskell-cafe] Code Golf

Sebastian Fischer sebf at informatik.uni-kiel.de
Wed Apr 15 06:32:21 EDT 2009


Fancy some Codegolf?

I wrote the following function for list diagonalization:

 > diag l = foldr (.) id ((sel l . flip sel) ((:[]).(:))) []
 >  where
 >   sel = foldr (\a b c -> id : mrg (a c) (b c)) (const []) . map  
(flip id)
 >
 >   mrg []     ys     = ys
 >   mrg xs     []     = xs
 >   mrg (x:xs) (y:ys) = (x.y) : mrg xs ys

Self explanatory, isn't it? Here is a test case:

     *Main> take 10 $ diag [[ (m,n) | n <- [1..]] | m <- [1..]]
     [(1,1),(1,2),(2,1),(1,3),(2,2),(3,1),(1,4),(2,3),(3,2),(4,1)]

I was trying to golf it down [^1] but my brain explodes. If you  
succeed in reducing keystrokes, I'd be happy to know!

Cheers,
Sebastian

[^1]: http://codegolf.com/


More information about the Haskell-Cafe mailing list