postcount ++라는 웹에서 가장 큰 포럼이 새로운 포럼 게임을 만들기로 결정했습니다. 이 게임에서 목표는 단어를 게시하는 것이지만 단어에는 하나의 문자를 추가, 제거 또는 변경해야합니다. 더 지능적인 포럼 게임을 통해보다 지능적인 포럼을 가지고 경쟁을 파괴하고자하는 회사에서 일할 때 상사는 단어와 UNIX 사전을 얻는 프로그램을 작성하기를 원했습니다. 그와 이야기를 나누면 어쨌든 직장에서 많은 현금을 얻습니다).
프로그램은 단어와 사전이라는 두 가지 인수를받습니다. 프로그램을 관리하는 사용자 (예, 사용자, 회사에 봇을 실행할 리소스가 없음)가 완벽하지 않기 때문에 두 경우 모두 사례를 정규화해야합니다. 사전의 단어는 ASCII 문자 (대문자와 소문자 모두)를 사용할 수 있지만 비교 중에는 무시해야합니다. 78자를 넘지 않아야합니다. 단어를 수동으로 생각하는 사람들의 재미를 없애기 위해 게임에서 허용되는 단어 목록을 출력해야합니다.
다음은 유사한 단어를 확인하는 예상 프로그램의 예입니다 golf
.
> ./similar golf /usr/share/dict/words
Goff
Wolf
gold
golfs
goof
gulf
wolf
다음 /usr/share/dict/words
은 줄 바꿈이있는 단어 목록입니다. 예를 들어 fgets ()로 쉽게 읽을 수 있습니다.
당신이 일하는 회사는 펀치 카드가 많지 않습니다 (예, 2014 년이며 여전히 펀치 카드를 사용합니다). 낭비하지 마십시오. 가능한 짧은 프로그램을 작성하십시오. 아, 그리고 당신은 Levenshtein 거리 또는 이와 유사한 알고리즘의 내장 또는 외부 구현을 사용하지 말 것을 요청했습니다. Not Invented Here 또는 백도어에 대한 것 (공급 업체가 언어에 삽입 한 것으로 보입니다) (언어에 대한 증거는 없지만 상사와상의하지 마십시오). 따라서 거리를 원한다면 직접 구현해야합니다.
모든 언어를 자유롭게 사용할 수 있습니다. 펀치 카드를 사용하더라도이 회사는 Cobol Ruby 또는 Haskell 과 같은 최신 프로그래밍 언어 또는 원하는 모든 것에 액세스 할 수 있습니다. 문자열 조작에 좋다고 생각한다면 GolfScript도 있습니다 (아마도 모르겠습니다 ...).
승자는 저에게서 15 점의 평판을 얻었고, 아마도 커뮤니티에서 다른 많은 점을 얻었을 것입니다. 다른 좋은 답변은 10 점을 얻었으며 커뮤니티에서도 점수를 얻습니다. 포인트는 쓸모 없다고 들었지만 2050 년에는 포인트를 대체 할 가능성이 높습니다. 그러나 확인되지는 않았지만 어쨌든 포인트를 얻는 것이 좋습니다.