a633. 13. Not Quite OCR
標籤 :
通過比率 : 55人/58人 ( 95% ) [非即時]
評分方式:
Tolerant

最近更新 : 2013-02-20 15:11

內容

銀行總是試圖增加他們的獲利,它們要求它們的電腦專家建構一個可以閱讀支票的系統,以便節省處理支票的費用。其中一個想法便是使用光學字元辨識 (OCR, Optical Character Recognition) 來辨視以 7 個線段印刷的帳戶號碼。

支票經過掃瞄之後,圖形處理軟體就會把水平和垂直筆劃轉成 ASCII 的直線「|」和底線「_」。ASCII 版本的 7 段顯示如下:

一個銀行帳號有 9 位數含一個檢查碼。對一個正確的帳號來說,以下的檢查碼方程式會成立: (d1 + 2 × d2 + 3 × d3 + . . . + 9 × d9) mod 11 = 0。數字位數是從右到左編號:d9d8d7d6d5d4d3d2d1。

不幸的是,掃瞄器有時會出錯:有些線段會不見。你的工作是依據以下的假設為前題來還原真正的帳號: 

  • 當輸入的是帳號檢查碼正確時,它就是原本的真實帳號;
  • 最多只有一位數字會糊掉;
  • 糊掉的帳號不會變成另一個正確的帳號 (糊掉的數字根本就不會是一個正確的數字)。
  • 掃瞄的帳號只會有線段不見,不會有多的線段跑出來。

 以下面的帳號為例:

    _  _     _  _  _  _  _
  | _| _||_||_ |_   ||_||_|
  ||_  _|  | _||_|  ||_| _|

就代表帳號 123456789。

 

輸入說明
輸入的第一行有一個整數,代表要處理幾個帳號。每個帳號三行,每行 27 個字元。兩位數之間沒有空白。
輸出說明
對於所處理的每個帳號,如果它可以推出正確帳號,你要輸出一個 9 位數的帳號於一行,否則就輸出 「failure」,如果有一種以上的可能,請輸出「ambiguous」。
範例輸入 #1
5
    _  _     _  _  _  _  _ 
  | _| _||_||_ |_   ||_||_|
  ||_  _|  | _||_|  ||_| _|
    _  _     _  _  _  _    
  | _| _||_||_ |_   ||_|  |
  ||_  _|  | _||_|  ||_|  |
    _  _  _  _  _  _     _ 
|_||_|| || ||_   |  |  || |
  | _||_||_||_|  |  |  | _|
 _  _  _  _  _  _  _  _  _ 
|_||_||_||_||_||_||_||_||_|
|_||_||_||_||_||_||_||_||_|
 _  _  _  _  _  _  _  _  _ 
|_|   |_||_||_||_||_||_||_|
|_|  ||_||_||_||_||_||_||_|
範例輸出 #1
123456789
failure
490067719
failure
878888888
測資資訊:
記憶體限制: 512 MB
提示 :
標籤:
出處:
HP CodeWars2007 [管理者: snail (蝸牛) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」