2017-11-28 9 views
0

나는 영어 스택 거래소에 질문했다. "What is the English word with the longest single definition?" 그들이 줄 수있는 가장 좋은 대답은 문자 또는 단어의 양을 세어 사전 정의를 나열한 (텍스트) 파일에서 가장 긴 항목을 알아낼 수있는 프로그램이 필요하다는 것이다. 주어진 항목에 입력 한 다음 가장 긴 항목의 목록을 제공하십시오. 또한 수퍼 유저에게 물었습니다.하지만 대답을 찾을 수 없었기 때문에 여기에 사진을 찍기로했습니다. 영어 사전 텍스트 파일에서 가장 긴 정의 항목을 찾는 방법은 무엇입니까?

나는 텍스트로 변환 사전 파일을 찾을 관리의 형식은 다음과 같습니다

A/A/부정 관사 (AN 모음 전) (1) 어떤, 일부는 하나 (쿠키가를). 2 1 개의 단일 물건 (마일을위한 가게가 없다). 각 3 회씩 (하루에 두 번씩).

aardvark/ard-vark/n 개미에게 먹이를주는 긴 주둥이가있는 아프리카 포유 동물.

abacus/a-ba-kus, a-ba-kus/n 비즈 계산 프레임. 당신이 볼 수 있듯이

, 각각의 정의는 다음 (슬래시로 둘러싸인) 발음 뒤에 오는하고 다음 중 하나를

1)는 기간 종료, 또는

2)은 이전에 종료 예 (괄호로 묶음) 또는

3)은 숫자 다음에 마침표로 끝나거나 단어 앞에 여러 개의 정의가있는 예 앞에 표시됩니다.

다음은 각 정의를 구별 할 수있는 함수 또는 프로그램입니다 (예 : 단일 단어의 여러 정의를 별도의 단어로 간주하는 것을 포함하여). 그 다음 문자 및/또는 단어의 수를 계산합니다 (예제를 무시하십시오). 괄호 안은 적절한 정의가 아니기 때문에). 그리고 마침내 가장 긴 정의의 목록을 제공합니다 (필자는 비교할 상위 20 대 이상을 필요로하지 않는다고 생각합니다). 파일 형식이 문제라면 PDF, EPUB 등으로 문제없이 파일을 변환 할 수 있습니다. 그리고 가능하다면 문자와 단어로 길이를 계산할 수 있기를 원할 것입니다.

어떻게해야합니까? 나는 오래 전 프로그래밍 수업을 거의 경험하지 못했지만, 프로그래밍에 대해서는 거의 알지 못한다고 생각하는 편이 낫다고 생각합니다.

미리 감사드립니다.

답변

0

나는 코드를 작성하지 않을 것이지만, 문제를 완전히 생각하는 데 도움이 될 것입니다. 오래 전에 가장 익숙한 프로그래밍 언어를 선택하고 쾅하는 소리를 내십시오. 문제가 생겼을 때 돌아와서 도움을 요청하십시오.

나는 하위 문제의 무리들로이 작업을 잘라 것 :

  1. 가 파일 시스템에서 사전 파일을 읽어보십시오.
  2. 파일을 별도의 항목으로 조각 내십시오. 표시하는 텍스트 파일 인 경우 대부분의 프로그래밍 언어에는 파일을 통해 줄 바꿈을 쉽게 반복 할 수있는 기능이 있습니다 (예 : 줄 끝 문자 또는 문자 시퀀스를 구분 기호로 사용).
  3. 잘못된 항목 필터링 : 예에서 줄은 빈 줄로 구분되어 나타납니다.당신이 반복 할 때, 당신은 그것들을 떨어 뜨릴 것입니다.
  4. 인간의 관찰과 판단을 사용하여 확고한 규칙으로 의사 소통 할 수있는 데이터의 강력한 패턴을 찾습니다. 이것이 프로그래밍의 중심 활동 중 하나입니다. 귀하의 질문에서 이미 패턴을 확인하기 시작했습니다. 예 :
    • 모든 항목에 발음 및 품사가 포함 된 서문이 있습니다.
    • 다중 정의 항목에는 고독한 숫자가 산재 해 있습니다.
    • 그렇지 않으면 단일 정의가 바로 앞에옵니다.
  5. 발명 한 규칙을 코드로 작성하십시오. 그것은 다음과 같이 갈 것입니다 : 먼저 단어 그 자체와 전제를 털어내는 방법을 찾으십시오. 나머지 부분은 고독한 숫자 또는 기타의 존재로 다중 def 항목을 식별합니다. 그렇지 않은 경우에는 single-def로 취급하십시오.
  6. 각 항목에 대해 사용자가 식별 한 하나 이상의 정의 각각을 반복합니다.
  7. 단어 단위 또는 문자 단위로 정의를 계산하는 함수를 작성하십시오. 단어별로, 공백을 토대로 토큰화할 수 있습니다. 문자로 된 문자열의 길이를 계산하는 것은 대부분의 프로그래밍 언어에서 사소하다. 왜 두 가지를 구현하지 않습니까!
  8. "가장 긴"파일을 반복 할 때 메모리에 데이터 구조를 유지하십시오. 각 항목의 각 정의에 대해 길이 계산을 적용한 후 이전의 가장 긴 항목과 비교합니다. 새로운 단어가 더 길면이 새로운 주요 단어와 단어 수를 데이터 구조에 기록합니다. '보다 큼'을 비교하고 변수를 저장하는 것은 대부분의 프로그래밍 언어에서 근본적인 부분이므로 프로그램의 실제 고기이지만 이것이 어렵지는 않습니다.
  9. 반복이 완료되면 결과를 표시하는 방법을 구현하십시오. 이것은 print 문과 같이 간단 할 수 있습니다.
  10. 마지막으로 프로그램을 쉽게 실행할 수있는 접착제 코드를 작성하십시오. 이와 같은 프로그램은 하나 또는 두 개의 인수 (분석 할 파일 경로, 아마도 인수 방법으로 '문자 | 단어'를 원하는 인수로 전달할 수있는 명령 줄 도구 일 수 있습니다. 둘 다 구현했기 때문에 가능합니다) . 명령 행에서 실행할 실행 파일을 작성하는 것이 얼마나 쉬운 지에 따라 언어가 다르지만 대부분 지원하기 때문에 이와 같은 타스크에 좋은 옵션입니다.