[英]Replacing characters with numbers in Haskell
我已經開始在Euler項目上進行有關名稱列表的問題,這些名稱需要替換為字母中的相應位置。 在問題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))
我找不到的是如何用字母在字母表中的位置替換字符。 我將如何做一些替換功能(最好不是正則表達式)?
Data.Char
模塊中的ord
函數為每個字符提供一個整數代碼。 鑒於此,這就是您要尋找的功能:
import Data.Char
replace :: Char -> Int
replace c = ord c - ord 'A' + 1
我不確定ord c
是否會返回字符的ASCII代碼或unicode代碼點,或者結果是否與機器有關。 為了對此進行抽象,我們只需從結果中減去'A'
的代碼,然后加上1
因為我們希望字母從1
而不是0
。
找到這種功能的一種簡單方法是Hoogle 。
您可以在其中輸入其類型在標准Haskell軟件包中搜索功能。 在這種情況下, ord
是搜索Char -> Int
時的第二個結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.