Skat Engine und AI auf Haskell Basis
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

25 líneas
604B

  1. module Utils where
  2. import System.Random
  3. import Text.Read
  4. shuffle :: StdGen -> [a] -> [a]
  5. shuffle g xs = shuffle' (randoms g) xs
  6. shuffle' :: [Int] -> [a] -> [a]
  7. shuffle' _ [] = []
  8. shuffle' (i:is) xs = let (firsts, rest) = splitAt (1 + i `mod` length xs) xs
  9. in (last firsts) : shuffle' is (init firsts ++ rest)
  10. chunksOf :: Int -> [a] -> [[a]]
  11. chunksOf n [] = []
  12. chunksOf n xs = take n xs : chunksOf n (drop n xs)
  13. query :: Read a => String -> IO a
  14. query s = do
  15. putStrLn s
  16. l <- fmap readMaybe getLine
  17. case l of
  18. Just x -> return x
  19. Nothing -> query s