簡體   English   中英

在Haskell中用數字替換字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM