代码之家  ›  专栏  ›  技术社区  ›  Jonno_FTW

在Haskell中用数字替换字符

  •  1
  • Jonno_FTW  · 技术社区  · 16 年前

    Problem 22 我需要用数字替换字母:

    names = ["MARY","PATRICIA","LINDA"....
    replace = ??????
    char2num a = map replace a
    score (a,b) = a * (sum $ map char2num b)
    answer = sum $ map score (zip [1..] (sort names))
    

    我找不到的是如何用字母表中的位置替换字符。我该如何制作一些东西来实现replace函数(最好不是regex)?

    1 回复  |  直到 11 年前
        1
  •  11
  •   Tom Lokhorst    16 年前

    这个 ord 功能 Data.Char

    import Data.Char
    
    replace :: Char -> Int
    replace c = ord c - ord 'A' + 1
    

    我不确定 ord c 将返回字符的ASCII码或unicode码点,或者如果结果依赖于机器。为了从中提取,我们只需减去 'A' 从结果中,添加 1 1. 而不是 0

    找到这样一个函数的简单方法是 Hoogle .
    在那里,您可以通过输入其类型在标准Haskell包中搜索函数。在这种情况下 作战需求 Char -> Int