2011年11月18日 星期五

433 - Bank (Not Quite O.C.R.)

銀行為了降低成本,請來了電腦專家研發支票核對系統,利用光學儀器偵測並辨識數字。
 
當支票被掃描後,影像處理軟體會把數字以ASCII字元的 | 與 _ 作輸出,其數字的輸出看起來像這樣:
銀行帳號會有9位數字並包含一位檢查碼(checksum),一個有效的帳號會滿足下列等式:(d1 + 2*d2 + 3*d3 + ... + 9*d9) mod 11 = 0。一個帳號的九位數字為:d9d8d7d6d5d4d3d2d1。

不過掃描器有時會出錯,導致一些直或橫槓遺失,本題請你寫一個程式推測原來的帳號為何,並假設:
  • 若輸入資料本身即為有效的帳號,且它就是正確的帳號。
  • 最多只有一個位數會被誤判。
  • 被掃描的影像不會有額外的直槓或橫槓。

例如下列數字實際上應該為123456789。
    _  _     _  _  _  _  _
  | _| _||_||_ |_   ||_||_|
  | _  _|  | _||_|  ||_| _|

Input Specification

輸入資料的第一列會有一個整數表示測試資料的組數,每組資料一個帳號,分別以一列27個字元,共三列來表示。

Output Specification

若可以推測出正確的帳號則請輸出該帳號的九位數字,若找不到任一組可能的解則請輸出"failure",若有多組可能的解則輸出"ambiguous"。

Sample Input

4
    _  _     _  _  _  _  _
  | _| _||_||_ |_   ||_||_|
  | _  _|  | _||_|  ||_| _|
    _  _  _  _  _  _     _
|_||_|| || ||_   |  |  ||_ 
  | _||_||_||_|  |  |  | _|
 _  _  _  _  _  _  _  _  _
|_||_||_||_||_||_||_||_||_|
|_||_||_||_||_||_||_||_||_|
 _     _  _  _  _  _  _  _
|_|  ||_||_||_||_||_||_||_|
|_|  ||_||_||_||_||_||_||_|

Sample Output

123456789
ambiguous
failure
878888888

原文出處

沒有留言:

張貼留言