15 lines
614 B
Haskell
15 lines
614 B
Haskell
import Data.List
|
|
import Control.Monad
|
|
import Control.Arrow
|
|
import Rosetta.Knuthshuffle
|
|
|
|
task = do
|
|
let blanco = replicate (31*31) " "
|
|
cs = sequence [[-15,-14..15],[-15,-14..15]] :: [[Int]]
|
|
constraint = uncurry(&&).((<= 15*15) &&& (10*10 <=)). sum. map (join (*))
|
|
-- select and randomize all circle points
|
|
pts <- knuthShuffle $ filter constraint cs
|
|
-- 'paint' first 100 randomized circle points on canvas
|
|
let canvas = foldl (\cs [x,y] -> replaceAt (31*(x+15)+y+15) "/ " cs ) blanco (take 100 pts)
|
|
-- show canvas
|
|
mapM_ (putStrLn.concat). takeWhile(not.null). unfoldr (Just . splitAt 31) $ canvas
|