如果一串包含字母或數字的文字由前面讀過來與由後面讀過來都相同的話,則稱為“迴文(a regular palindrome)”,例如"ABCDEDCBA"即是迴文(a regular palindrome),因為該字串由左邊開始讀與由右邊開始讀是一樣的。
“鏡像字串(a mirrored string)”是一種字串,其字串的每一個字元經過反轉(reverse)之後(假若每一字元有其對應的反轉字元),倒著讀與原字串相同。例如"3AIAE"即是一個鏡像文字,因為"A"與"I"為自身的反字元(reverse),而"3"與"E"互為反字元。
一個“鏡像迴文字串(mirrored palindrome)”是一種字串同時符合迴文字串與鏡像字串的限制,例如"ATOYOTA"即是一個鏡像迴文字串,因為該字串由後面讀過來會與由前面讀過來一樣,且每一個字元經過反轉(reverse)之後,其由後面讀過來的結果與原字串相同,畢竟,"A", "T", "O", "Y"都是自身的反字元(reverse)。
所有有效的字元及其對應的反字元如下表所示。
Character | Reverse | Character | Reverse | Character | Reverse |
A | A | M | M | Y | Y |
B | N | Z | 5 | ||
C | O | O | 1 | 1 | |
D | P | 2 | S | ||
E | 3 | Q | 3 | E | |
F | R | 4 | |||
G | S | 2 | 5 | Z | |
H | H | T | T | 6 | |
I | I | U | U | 7 | |
J | L | V | V | 8 | 8 |
K | W | W | 9 | ||
L | J | X | X |
注意:0(數字零)與O(字母O)被視為相同的字元,所以只有字母O才是有效字元。
Input
輸入資料有多列字串,每一列字串長度介於1~20之間,且必定都是有效字元(如上表),絕不會有非有效字元出現。你的程式必須讀到檔案結尾後中止。
Output
針對每一筆輸入字串,你必須先印出該字串後,再接著印出下列字串中的其中一個。
STRING | CRITERIA |
" -- is not a palindrome." | 假如輸入字串既非迴文也非鏡像。 |
" -- is a regular palindrome." | 假如輸入字串是迴文但非鏡像。 |
" -- is a mirrored string." | 假如輸入字串非迴文但為鏡像。 |
" -- is a mirrored palindrome." | 假如輸入字串既為迴文亦為鏡像。 |
注意:字元 - (dash)與空白字元是必須的,如上表與下列輸出範例所示。
另外,每一列輸出之後你必須另外再印出一列空行。
Sample Input
NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTA
Sample Output
NOTAPALINDROME -- is not a palindrome.
ISAPALINILAPASI -- is a regular palindrome.
2A3MEAS -- is a mirrored string.
ATOYOTA -- is a mirrored palindrome.
沒有留言:
張貼留言