본문 바로가기

오일러프로젝트

[오일러프로젝트] 42번문제


n
번째 삼각수는 tn = ½ n (n + 1) 이라는 식으로 구할 수 있는데, 처음 10개는 아래와 같습니다.

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

어떤 영어 단어에 대해서, 각 철자의 알파벳 순서(A=1, B=2, ..., Z=26)를 모두 더한 값을 '단어값'이라 부르기로 합니다. 예를 들어 'SKY'의 단어값은 19 + 11 + 25 = 55가 되는데, 이것은 우연히도 t10과 같습니다.
이렇게 어떤 단어의 단어값이 삼각수일 경우에는 이 단어를 '삼각단어'라 부르기로 합니다.

약 16KB의 텍스트 파일 words.txt에는 2000개 정도의 영어 단어가 수록되어 있습니다. 이 중에서 삼각단어는 모두 몇 개입니까?


회사에서 점심먹고 잠시..파이썬으로만 풀었다..

삼각수 공식에 의해서 단어점수의 값을 X라고 하면
2X = n^2 + n이 된다.
n의 범위를 정해야 하는데 sqrt(2X)의 값을 시작점으로 잡으면 적당해보이고
n^2 + n이 2X를 넘으면 삼각수가 아닌 것으로 판별한다.

일단 파이썬만 풀었고..나머지는 이따 집에서..ㅋ


 

Python
Ruby
Perl

근데 ruby에서 alphaList를 getNameScore 밖으로 빼면 인식을 못 한다. 이유를 모르겠다 --;;