= 누조레보보 in haskell
전 기사
누조레 보보 @mattn
mattn씨
[
["ボ", ""],
["ジョ", ""],
["レ", "ー"],
["ヌ", "ー"],
["ボ", "ー"]
]
이 1 element 눈만을 shuffle 해 전체 flatten 같은 것이 깨끗이 쓸 수 있는 언어는 강할 것 같네요.
이것에 대해 나름대로 써 보았습니다.
하스켈 초보자이므로 더 이상 아름답지 못했습니다 ...
module BeaujolaisNouveau where
import Control.Arrow
import System.Random
import Control.Monad
main :: IO ()
main = do
let beaujolaisNouveau = [ ["ボ", ""]
, ["ジョ", ""]
, ["レ", "ー"]
, ["ヌ", "ー"]
, ["ボ", "ー"]
]
res <- (liftM concat $ liftM concat $ shuffle1st beaujolaisNouveau)
putStrLn res
shuffle1st :: [[a]] -> IO [[a]]
shuffle1st xs = do
xs' <- shuffle $ fstL xs
return $ zipWith (\x y -> [x, y]) xs' (sndL xs)
shuffle :: [a] -> IO [a]
shuffle (x:[])= return [x]
shuffle xs = do
pickedIndex <- randomRIO (0, (length xs) - 1)
let picked = xs !! pickedIndex
rest <- shuffle $ restOf (pickedIndex + 1) xs
return $ picked : rest
restOf :: Int -> [a] -> [a]
restOf _ (x:[]) = []
restOf n xs = take (n - 1) xs ++ (drop n xs)
fstL :: [[a]] -> [a]
fstL [] = []
fstL (x:xs) = head x : fstL xs
sndL :: [[a]] -> [a]
sndL [] = []
sndL (x:xs) = head (tail x) : sndL xs
결과
[2019-11-27 17:43]
Reference
이 문제에 관하여(= 누조레보보 in haskell), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Cj-bc/items/536853d33eba078cb5ca
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[
["ボ", ""],
["ジョ", ""],
["レ", "ー"],
["ヌ", "ー"],
["ボ", "ー"]
]
module BeaujolaisNouveau where
import Control.Arrow
import System.Random
import Control.Monad
main :: IO ()
main = do
let beaujolaisNouveau = [ ["ボ", ""]
, ["ジョ", ""]
, ["レ", "ー"]
, ["ヌ", "ー"]
, ["ボ", "ー"]
]
res <- (liftM concat $ liftM concat $ shuffle1st beaujolaisNouveau)
putStrLn res
shuffle1st :: [[a]] -> IO [[a]]
shuffle1st xs = do
xs' <- shuffle $ fstL xs
return $ zipWith (\x y -> [x, y]) xs' (sndL xs)
shuffle :: [a] -> IO [a]
shuffle (x:[])= return [x]
shuffle xs = do
pickedIndex <- randomRIO (0, (length xs) - 1)
let picked = xs !! pickedIndex
rest <- shuffle $ restOf (pickedIndex + 1) xs
return $ picked : rest
restOf :: Int -> [a] -> [a]
restOf _ (x:[]) = []
restOf n xs = take (n - 1) xs ++ (drop n xs)
fstL :: [[a]] -> [a]
fstL [] = []
fstL (x:xs) = head x : fstL xs
sndL :: [[a]] -> [a]
sndL [] = []
sndL (x:xs) = head (tail x) : sndL xs
[2019-11-27 17:43]
Reference
이 문제에 관하여(= 누조레보보 in haskell), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Cj-bc/items/536853d33eba078cb5ca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)