Эффективный способ Решить Cryptarithms

Проверьте с помощью ldply из plyr после split

df=plyr::ldply(split(x$sequence,x$cluster), rbind)
col=df$.id
df$.id=NULL
df=data.frame(t(df))

names(df)=paste('cluster',col)
df
  cluster 1 cluster 2 cluster 3
1         A         D         D
2        AB         B        BA
3        AC        DB        BB
4       ABC        DC        BC
5      <NA>        AC        BF
6      <NA>       ADC      <NA>
.
5
задан false 27 May 2014 в 11:13
поделиться

4 ответа

В этом году на PyCon Рэймонд Хеттингер рассказал о программировании ИИ на Python и рассмотрел Cryptarithms.

Видео всей беседы можно посмотреть здесь , а кулинарную книгу с решением можно найти по по этой ссылке .

7
ответ дан 13 December 2019 в 19:36
поделиться

Что ж, попробуйте написать его в виде списка функций:

 SEND
 MORE
----+
MONEY

Если я помню свою математику из младшей школы, это должно be:

Y = (D+E) mod 10
E = ((N+R) + (D+E)/10) mod 10
...
1
ответ дан 13 December 2019 в 19:36
поделиться

этот может быть полезен

Редактировать: ответ по вики-ссылке, которую вы разместили, также полезно!

0
ответ дан 13 December 2019 в 19:36
поделиться

Это такая маленькая проблема, что грубое решение не плохой метод. Предполагая, что каждая буква должна представлять собой уникальную цифру (т.е. мы не допустим решения S = 9, M = 1, * = 0), мы видим, что количество комбинаций, которые нужно попробовать, равно n! , где n - количество уникальных букв в криптарифе. Теоретическое максимальное количество комбинаций для оценки составляет 10! = 3 628 800 , что очень мало для компьютера.

Если мы допустим, чтобы несколько букв представляли одно и то же число, количество попыток сочетания будет ограничено 10 ^ n , опять же, где n - количество уникальных букв. Предполагая только заглавные английские буквы, мы имеем теоретическое максимальное количество комбинаций 10 ^ 26 , поэтому для этого теоретического наихудшего случая нам может понадобиться некоторая эвристика. Большинство практических криптарифмов имеют намного меньше, чем 26 уникальных букв, поэтому нормальный случай, вероятно, будет ограничен числом n меньше 10, что опять-таки довольно разумно для компьютера.

2
ответ дан 13 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: