파일을 다운로드 받아 읽으면 "ABC","DEF",... 와 같은 식으로 이름이 저장되어 있다. 이들을 콤마를 기준으로 자르고 양쪽의 따옴표를 제거한다.
줄리아에서 낱개의 문자는 Char
타입이고, 이는 문자 코드값(정수)처럼 덧셈 뺄셈이 가능하다. 따라서 단어 점수를 매길 때에는 각 글자(Char)에서 'A'를 빼고 1을 더하면 된다. 단어를 각 문자의 배열로 변환하기 위해서는 collect()
를 사용해야 한다.
URL로부터 파일을 다운로드 받을 때에는 download()
함수를 사용하는데, 이 함수는 임시 파일을 생성한다. 만약 파일 이름을 지정하고 싶다면 두 번째 인자로 파일이름을 주면 된다. 참고로 파일을 계속 다운로드 받지 않기 위해서 파일 이름으로 파일의 존재 여부를 확인할 때에는 isfile()
함수를 사용한다.
파일을 텍스트로 읽어들이려면 간단히 read(filename, String)
이라고 해도 된다.
url = "https://euler.synap.co.kr/files/names.txt"
fname = "s022.txt"
isfile(fname) || download(url, fname)
@time begin
names = read(fname, String) |>
(x->split(x, ",")) .|>
(y -> strip(y, '"')) |> sort
evalword(word) = word |> collect .|> (x -> x - 'A' + 1) |> sum
map(enumerate(names)) do (i, name); evalword(name) * i end |>
sum |> println
end