Checkered square table in Haskell -


sometimes need checkered data structure, example if model chess board. simplest way represent checkered data via list of lists.

[[0,1,0],  [1,0,1],  [0,1,0]] 

the above example of checkered list. first attempt:

import data.list  checker :: integral => -> -> -> [[a]] checker n b = generictake n $ intersperse (generictake n xs2) $ repeat (generictake n xs1)   xs1 = checker' b         xs2 = drop 1 xs1  checker' :: -> -> [a] checker' b = intersperse b $ repeat 

the code verbose, while result correct:

*main> checker 5 0 1 [[0,1,0,1,0],[1,0,1,0,1],[0,1,0,1,0],[1,0,1,0,1],[0,1,0,1,0]] 

how write function create such list arbitrary size in haskell?

evenrow = 0:oddrow                -- evenrow = 0:1:evenrow oddrow  = 1:evenrow board   = evenrow:oddrow:board 

here's infinite checkered board. saw off rectangular part:

smallboard = take 17 $ map (take 11) board 

parameterize needed.

edit: haven't used cycle here sake of illustration. in real code want it:

board = cycle [cycle [0,1], cycle [1,0]] 

it's shorter frankly looks cryptic.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -