Решение криптоарифметической задачи

Начал читать книгу «Экспертные системы: принципы разработки и программирование». Книга массивная, много букв. В конце первой главы дается криптоарифметическая задачка 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. jkm
    Декабрь 21st, 2008 | 2:28 дп

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

Оставь комментарий