回分類題庫
h088: C.摩斯電碼
關鍵字: NPSC 2011 高中組初賽

測資點 : 2 | Time Limit : 10000 ms | Memory Limit : 128000 KB
Accepted : 33 Times / 33 Users | Submit : 76 Times / 35 Users | Accepted rate : 94%
題目加入時間 : 2012-11-04 02:27

Content: 简体中文

摩斯電碼是一種傳送文字訊息的方式,在電報通訊的時代被廣泛地使用。它使用兩種長短不同的訊號產生而成的序列來表示各個英文字母、數字和標點符號。我們用點 ( . ) 來表示短訊號,用劃 ( - ) 來表示長訊號,在兩個訊號間以很短的空白(無訊號的狀態)來隔開。英文字母對應的摩斯電碼如下:

在摩斯電碼中,我們需要使用很短的空白來分隔兩個訊號,用稍長的空白來分隔兩個字母,用更長的空白來分隔兩個英文單字。但是這樣有些不方便,如果收訊號的人沒辦法精準的判斷空白的長短,就會搞混EI 和S ,或是AN 和P。這個問題的原因是S 的電碼開頭和E 的電碼重複,P 的電碼開頭和A 的電碼重複。為了解決這個問題,我們修改摩斯電碼的編碼規則,讓每一個字母的電碼都不會和其他字母的電碼開頭重複,我們稱為「字首差異電碼」。使用字首差異電碼,我們不需要空白就可以分辨兩個字母。這個電碼與英文字母的對應如下:

現在,給你一段字首差異電碼,請你解讀這段電碼代表的英文字句。

Input:

輸入的第一行有一個正整數 T,代表測試資料的組數(1<=T<=500)。
接下來每一行有一個以點(‘.’)、劃(‘-’)和空白(‘ ’)組成的字串,代表一組測試資料。點和劃就如題目所說,分別代表短訊號和長訊號。我們忽略訊號之間的空白,而用空白字元代表兩個單字的分隔。題目保證每一行的長度不超過200,而且都能正確解碼,沒有多餘的訊號。一個字母的電碼不會被空白字元切開,測試資料中也不會有連續的空白字元。

Output:

對每一筆測資輸出一行,即這段字首差異電碼代表的英文字句。電碼對應的英文字母以大寫表示,兩個英文單字間以一個空白字元隔開。

Sample Input:help

若題目沒有特別說明,則應該以多測資的方式讀取,若不知如何讀取請參考 a001 的範例程式。
4
...-...-.---..- -.---..- ---.-.-.
.-----.-..---..-.
--...-.-.---.---....----..--..---
--..-.--.-.-... .-..----.-.-. -------.- -.--...

Sample Output :

THIS IS AN
EASY
PROBLEM
YOU CAN DO IT

Hint :

Author :

NPSC 2011 高中組初賽 (管理員:sagit)

  Solve it!   Status Forum