如何确定分配给密码中每个字母的数字?

时间:2011-05-15 08:26:19

标签: loops numbers letters cryptarithmetic-puzzle

我有一个需要解决密码的任务。但我无法理解我在互联网上看到的算法。有人可以用简单的话解释如何做到这一点吗?

2 个答案:

答案 0 :(得分:1)

作为一般情况,大多数约束满足算法是一个两步过程,其中猜测(或分支)阶段之后是演绎阶段,其中尽可能多的分配被发现而没有猜测。 (例如,想想Sudoku)

示例:

  S E N D
  M O R E
M O N E Y

First step: guess D=1 (remaining guesses = ...)

  S E N 1  | D=1
  M O R E
M O N E Y

Guess E = 1 (Remaining guesses = ...)

  S 1 N 1  | D = 1 | E = 1
  M O R 1
M O N 1 Y

We can now deduce that Y = 2 and that the carry value in the second column is 0

      0
  S 1 N 1  | D = 1 | E = 1, Y = 2
  M O R 1
M O N 1 2

到达死胡同时,backtrack

答案 1 :(得分:1)

使用遗传算法可以解决这类问题,这是一个使用GA的解决方案https://github.com/pauloremoli/cryptarithmetic