2013年2月1日 星期五

[Algorithm] 數值字謎

請寫一個程式破解如下的字謎:
     VINGT
       CINQ
 +    CINQ
------------
  TRENTE

(每一個字母代表一個0~9之中的相異的數,且首位不為0)

解:
這種問題自己找到的線索越多,程式就能越簡易,
而以這題來說其實仔細思考就可以得到答案了XD。

1. 首先I+C+C就算有進位也就是1或2,到V那位以後最多就是是進位1,
    所以T=1,而V=8或9。此時R因為進位的關係要嘛是0,要嘛是1,
    但又不能重複,所以R=0。
2. 2I+N+(從前一位的進位)後,必然有進位,而前一位進位只能是0或2。
    (如果是1的話會造成I有小數點從而不符)
    如果前一位進位是0的話,I=5(∵2I+N=10+N),
    從第一位來看,T+2Q=E,E和T一樣應該是奇數,
    但從I+C+C+1=E來看,E為偶數,矛盾。
    ∴前一位進位只能是2。
    ∴2I+N+2 = 10+N 或 2I+N+2=20+N
       I=4 或 I=9
3. 若I=9,則V=8。(From 1.) 現在式子長這樣:
    222        (進位)
-----------
    89NG1
      C9NQ
 +   C9NQ
------------
  10EN1E


∴9+2C+2=20+E  => 2C=9+E => C=6, E=3或C=7, E=5
如果C=6, E=3 => Q=1或6 矛盾,所以C=7,E=5。
因為E=5,所以Q=2(Q=7不服) 。
因此G+2N=21=>G為奇數,但1579都被用了,所以只剩G=3的可能。
3+2N=21 => N=9,矛盾。

所以I=9的假設是錯誤的!

4. T=1,R=0,I=4,V=8 or 9
         2     (進位)
-----------
    V4NG1
      C4NQ
 +   C4NQ
------------
  10EN1E



N+4+4+2=N+10,所以進1到下一位數。
2C+5=E+10或E+20,C等於6、7、8、9其中之一。
C=7的話 => E=9、V=9 (X)
C=8的話 => E=1 (X)
C=9的話 => E=3、V=8、Q=6,但1+G+2N=21,
                     G為偶數只能是2=>N=9 (X)
所以只剩下C=6的可能性。

5.
    112     (進位)
-----------
    V4NG1
       64NQ
 +    64NQ
------------
  10EN1E


明顯可以看出V=9,E=7。 => Q=3或8
Q=8的話=>1+G+2N=21,G為偶數只能是2=>N=9 (矛盾)
∴ Q=3 => G+2N=21,G為奇數只能是5=>N=8

6.全部推完的結果: R=0、T=1、Q=3、I=4、G=5、C=6、E=7、N=8。
    11200     (進位)
-----------
    94851
      6483
 +   6483
------------
  107817


沒有留言:

張貼留言