我正在尝试获取一个整数列表,并多次重复它们,但在haskell中是一个字符串。预期产出如下:
> nnn [3,1,5] = ["3-3-3","1","5-5-5-5-5"]
> nnn [10,2,4] = ["10-10-10-10-10-10-10-10-10-10","2-2","4-4-4-4"]现在我觉得我很接近..。但是我不能把一个into列表转换成一个字符串,而且我肯定不知道如何处理连字符。到目前为止,这是我的代码,输出如下:
nnn :: [Int] -> [[Char]]
nnn list = map show (map (\x -> take x $ repeat x) list)它给了我:
> nnn [3,1,5] = ["[3,3,3]","[1]","[5,5,5,5,5]"](我至少快到了!)有人能指给我看正确的方向吗?)
发布于 2014-02-26 17:23:05
在这里,使用单独的函数将数字重复到以连字符分隔的字符串中似乎很有用。首先将数字转换为字符串,然后复制它,然后使用intercalate在每个元素之间插入一个连字符并将它们连接起来:
repeatNumber :: Int -> String
repeatNumber n = intercalate "-" $ replicate n $ show n然后,nnn又好又简单:
nnn :: [Int] -> [String]
nnn = map repeatNumber(replicate a b为take a $ repeat b)
https://stackoverflow.com/questions/22048603
复制相似问题