Task Description
佐為在漫長的圍棋旅途中,有一天忽然覺得一直下圍棋,有些疲乏了,因此想學學看不同的棋類遊戲,於是他開始接觸象棋,他想要先了解象棋當中,稱作「棋種」的編號方式,並研究和象棋相關的棋類小遊戲,這個小遊戲的棋種編碼方法,詳細介紹如下:
此遊戲為雙人遊戲,兩位玩家分別為「紅方」和「黑方」。 棋盤大小是 6 × 6。 棋子共有 26 顆,棋子編號從 0 到 25。紅方的棋子編號為 1, 3, 5, ..., 25,黑方的棋子編號為 0, 2, 4, ..., 24。 棋盤上會擺放若干棋子,有棋子的位置會標示棋子編號,如果一個位置是空的,則以 -1 表示。
請設計一種編碼方式,使我們可以透過這個編碼得知當下現存的棋子種類以及數量。棋種分為七個等級,而每個等級所對應的棋子數量及編號關係如下表:
| 棋種 | 帥∕將 | 仕∕士 | 相∕象 | 俥∕車 | 傌∕馬 | 炮∕包 | 兵∕卒 |
|---|---|---|---|---|---|---|---|
| Level | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| 紅方 | 25 | 23, 21 | 19, 17 | 15, 13 | 11, 9 | 7, 5 | 3, 1 |
| 黑方 | 24 | 22, 20 | 18, 16 | 14, 12 | 10, 8 | 6, 4 | 2, 0 |
然後,我們藉由這些等級的棋種,給出一個 6 位數的編號,其中的對應關係為(Level 6, Level 5, Level 4, Level 3, Level 2, Level 1),並且除了 Level 7 之外,根據每個等級雙方的棋子數量,給定 0 ~ 8 之編號,以下為編碼示範表。以 Level 5 為例,如果紅方有兩顆相、黑方有一顆象,則編碼為 7:
| 紅方同等級棋子數量 | 黑方同等級棋子數量 | 編碼 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 0 | 2 | 2 |
| 1 | 0 | 3 |
| 1 | 1 | 4 |
| 1 | 2 | 5 |
| 2 | 0 | 6 |
| 2 | 1 | 7 |
| 2 | 2 | 8 |
因為 Level 7 為等級最高的棋子,視作帥∕將,在遊戲結束前必然存在,因此編號無須紀錄。不過,如果棋盤上只要沒有某一方 Level 7 的棋子,則為非法盤面,並輸出 Illegal position。以下將舉例編碼,如果棋盤上有 25、24、22、18、11、0,則編碼為 110301。
Input Format
輸入一個 6 × 6 的棋盤,其中包含棋子編號,若該位置沒有棋子則標示 -1。
Output Format
輸出一個 6 位數編碼。
Sample Input 1
-1 -1 -1 -1 24 -1-1 -1 -1 -1 22 25-1 -1 11 -1 0 -1-1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1-1 -1 -1 18 -1 -1
Sample Output 1
110301
Sample Input 2
-1 -1 22 18 -1 -1-1 -1 -1 -1 -1 0-1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1-1 24 11 -1 -1 -1
Sample Output 2
Illegal position