Декабрь 20, 2008
Решение криптоарифметической задачи
Начал читать книгу «Экспертные системы: принципы разработки и программирование». Книга массивная, много букв. В конце первой главы дается криптоарифметическая задачка donald+gerald = robert при условии, что d = 5. Взял листик бумаги и ручку, минут 5–10 ушло на решение. В книге дают задание написать программу, решающую эту задачу. Начал придумывать как бы я написал эту программу. В голову пришло решение «в лоб», используя перебор.
Собрал в кулак свою лень, создал питоновский файл и начал писать. Далее будет код с краткими вкраплениями моих комментариев:
Результаты:
donald+gerald = robert
если известно, что d = 5 :
result found on 103487 iteration: 526485 + 197485 = 723970
resolve took 9.399 s
если ничего не известно — подольше:
result found on 1917887 iteration: 526485 + 197485 = 723970
resolve took 183.831 s
Нашел еще задачку:
send+more = money
result found on 2787378 iteration: 9567 + 1085 = 10652
resolve took 265.016 s
Сделал для себя несколько выводов. Метод перебора, довольно таки дубовый и медленный. В следующий раз хочу попробовать что-то быстрое, может генетический алгортим. Понял, что нужно углубить знания в питоне для более эффективного написания кода.
Комментарии(1)

открой для себя пролог! на прологе такой ребус путем написания 2х предикатов за 1 минуту без всякой отладки и т.п.
swi prolog ftw!