10306. 棋靈王

I'm a slow walker, but I never walk backwards.

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

Submit

Login

Testdata Set

Download Testdata