源材料
此外,源材料
如果您通过跳过一个字母来阅读 Alola Rocon...
— 与 Hiroki Kiyohara @Shodo (@hirokiky) 一起进行 AI 校对2022 年 7 月 27 日
>>> “阿罗拉罗康”[::2]
'亚伦'我最近一直在学习 Haskell 语法,这似乎是一个非常好的练习主题,所以我决定尝试一下。
执行
跳过字符.hsimport Debug.Trace main = do cs <- getContents print $ map (\(n, c) -> c) $ filter (\(n, c) -> if (n `mod` 2) == 1 then True else False) $ zip [1..] $ cs$ echo "アローラロコン" | stack runghc skipchar.hs "アーロン"细节
如果你写得很详细,它将如下所示。
跳过字符.hsimport Text.Show.Unicode main = do cs <- getContents uprint $ skipchar $ cs skipchar :: [Char] -> [Char] skipchar cs = removeIndexes $ filterOddIndexes $ addIndexes $ cs addIndexes :: [Char] -> [(Int, Char)] addIndexes cs = zip [1..] cs removeIndexes :: [(Int, Char)] -> [Char] removeIndexes cs = map removeIndex cs removeIndex :: (Int, Char) -> Char removeIndex (n, c) = c filterOddIndexes :: [(Int, Char)] -> [(Int, Char)] filterOddIndexes ts = filter isIndexOdd ts isIndexOdd :: (Int, Char) -> Bool isIndexOdd (n, c) = if (n `mod` 2) == 1 then True else False通过将输入的 Char 类型数组转换为 (Int, Char) 类型数组,可以确定哪个字符是偶数。
['ア', 'ロ', 'ー', 'ラ'., ...] → [(1, 'ア'), (2, 'ロ'), (3, 'ー'), (4, 'ラ'), ...]这是我直观想出的方法,但似乎有一种更简单的书写方式,不涉及分配数字。
但是,我谈到了无限列表和惰性求值,它们是类似 Haskell 的操作,所以我认为结果还可以(?)想法
输出片假名而不是处理本身花费了很多时间。
(我想安装一个叫做 Stack 的东西来使用一个处理 Unicode 的库,但它不能很好地与 WSL 一起工作并转移到 Mac)我在学习Haskell本身方面取得了一些进展,我又开始迷茫了,所以我希望我能继续慢慢进步。
非常感谢。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308622831.html