0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Project Euler No. 22

Posted at

Problem

Using names.txt (right click and 'Save Link/Target As...'), a 46K text file containing over five-thousand first names, begin by sorting it into alphabetical order. Then working out the alphabetical value for each name, multiply this value by its alphabetical position in the list to obtain a name score.

For example, when the list is sorted into alphabetical order, COLIN, which is worth $3 + 15 + 12 + 9 + 14 = 53$, is the $938$th name in the list. So, COLIN would obtain a score of $938 \times 53 = 49714$.

What is the total of all the name scores in the file?

Code in Haskell

Euler_022.hs
module Main where
import Data.List

nv c = (fromEnum c)-64

nvsum str = foldl (+) 0 (map nv str)

calc _ [] = []
calc n (x:xs) = (n*(nvsum x)):(calc (n+1) xs)

aggregate nlist = sum $ calc 1 nlist

cosme [] = []
cosme (x:xs)
  |x == '"' = cosme xs
  |x == ',' = ' ':cosme xs
  |otherwise = x: cosme xs


main = do
  contents <- readFile "names.txt"
  print $ aggregate $ sort $ words $ cosme contents

Answer

8*******2

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?