우리는 자라면서 점점 더 복잡한 글을 이해할 수 있게 돼요. 그런데 어떤 글의 복잡도는 어떻게 평가할까요? 그리고 그런 일을 하는 프로그램은 어떻게 만들 수 있을까요? 이 연습 문제에서는 글을 읽기가 얼마나 어려운지, 그리고 그 글에 가장 알맞은 나이가 몇 살인지 판단하는 프로그램을 작성해요.
글의 복잡도를 계산하기 위해 자동 가독성 지수(ARI) 공식을 사용해요. ARI는 1967년에 어떤 글을 읽는 데 필요한 미국의 학년 수준을 평가하기 위해 개발됐어요. ARI는 단어와 문장의 복잡도를 측정하는 방식으로 이를 평가해요. 복잡도는 단어당 문자 수와 문장당 단어 수로 측정해요. 값이 높을수록 더 복잡하다는 뜻이에요.
프로그램은 텍스트의 처음 세 문장을 표시해야 하는데, 각 문장은 50자를 넘지 않아야 해요.
문장이 50자를 넘으면 처음 50자까지만 출력하고 뒤에 줄임표(...)를 붙여요.
텍스트에 문장이 세 개보다 많으면 네 번째 줄로 줄임표만 출력해요.
"ari.txt"라는 파일에 다음과 같은 내용이 있다고 해봐요(이 텍스트는 아래 모든 예제에서 사용해요):
ARI was designed for military use in 1967. It was for real-time monitoring of readability on typewriters. It offered an automated counting method. It has similar results to other frameworks. This validates its accuracy.
그러면 프로그램은 다음과 같이 출력해야 해요:
The text is:
ARI was designed for military use in 1967.
It was for real-time monitoring of readability on ...
It offered an automated counting method.
...
프로그램은 텍스트의 문자, 단어, 문장 수를 계산해서 출력해야 해요. 문장은 마침표, 느낌표, 물음표로 끝날 수 있어요. 문장에서 단어는 공백 문자로 구분해요. 단어당 문자 수를 셀 때는 문장 부호를 포함해 공백이 아닌 모든 문자를 세요. 통계는 텍스트 미리보기 다음에 빈 줄로 구분해서 출력해요.
텍스트 통계 부분만 출력한 예시는 다음과 같아요:
Words: 34
Sentences: 5
Characters: 186
텍스트에 대한 이런 정보가 주어지면, 다음 공식으로 복잡도 수준을 계산할 수 있어요:
score = 4.71 * chars / words + 0.5 * words / sentences - 21.43
프로그램은 점수와 그 텍스트를 이해하는 데 필요한 대략적인 나이를 계산해서 출력해야 해요.
| 점수 | 나이 | 학년 수준 |
|---|---|---|
| 1 | 5-6 | 유치원 |
| 2 | 6-7 | 1학년 |
| 3 | 7-8 | 2학년 |
| 4 | 8-9 | 3학년 |
| 5 | 9-10 | 4학년 |
| 6 | 10-11 | 5학년 |
| 7 | 11-12 | 6학년 |
| 8 | 12-13 | 7학년 |
| 9 | 13-14 | 8학년 |
| 10 | 14-15 | 9학년 |
| 11 | 15-16 | 10학년 |
| 12 | 16-17 | 11학년 |
| 13 | 17-18 | 12학년 |
| 14 | 18-22 | 대학생 |
점수는 소수점 아래 두 자리까지 출력해야 해요. 나이나 학년 수준을 찾을 때 사용하는 점수는 가장 가까운 정수로 반올림하고 14를 넘지 않도록 해요. 다음은 프로그램의 예시 출력이에요:
The text is:
ARI was designed for military use in 1967.
It was for real-time monitoring of readability on ...
It offered an automated counting method.
...
Words: 34
Sentences: 5
Characters: 186
Score: 7.74
This text should be understood by 12-13 year-olds.