轨道
/
AWK
AWK
/
练习
/
自动可读性指数
自动可读性指数

自动可读性指数

中等

说明

随着年龄增长,我们能读懂的文本也越来越复杂。但一段文本的复杂度到底是怎么评估的?我们又该如何编写程序来完成这件事?在这个练习中,你将编写一个程序,用来判断一段文本有多难读懂,以及它最适合哪个年龄段的人阅读。

我们将使用自动可读性指数(ARI)公式来计算文本的复杂度。ARI 于 1967 年提出,用来评估读懂一段文本所需的美国年级水平。它通过衡量单词和句子的复杂度来做到这一点。复杂度以每个单词的字符数和每个句子的单词数来衡量。数值越高,文本越复杂。

文本预览

你的程序应显示文本的前三个句子,但每个句子最多 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 一年级
3 7-8 二年级
4 8-9 三年级
5 9-10 四年级
6 10-11 五年级
7 11-12 六年级
8 12-13 七年级
9 13-14 八年级
10 14-15 九年级
11 15-16 十年级
12 16-17 十一年级
13 17-18 十二年级
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.
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
AWK Exercism

准备好开始 自动可读性指数 了吗?

注册 Exercism,借助 3 个概念92 个练习 和真人导师指导,学习并掌握 AWK,全部免费。