學習軌道
/
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,全部免費。