Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Криптарифмы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
mstan
Отправлено: 24 Июня, 2015 - 18:32:34
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Выдержка из http://habrahabr[dot]ru/post/189050/

Криптарифм — разновидность математических головоломок. В арифметическом тождестве каждая цифра заменена буквой (одинаковые цифры — одинаковыми буквами, разные — разными). Решением криптарифма является такая подстановка, при которой тождество становится верным. Как правило, криптарифм имеет только одно решение.

Самым известным криптарифмом является «SEND+MORE=MONEY», опубликованный в 1924ом году английским математиком Генри Дудени. Его (единственное) решение 9567+1085=10652.


Начинаю изучать php, не могу написать скрипт для решения вот такого криптарифма
CODE (htmlphp):
скопировать код в буфер обмена
  1. ЛИСА + ВОЛК = ЗВЕРИ


Решить без применения пхп на листочке с ручкой, наверное, вполне возможно за условно небольшое количество времени. Но вот написать скрипт для этого дела - уже весь день голову ломаю. Рандомный перебор - глупо, множество вложенных for тоже не получается. И даже гугл не помог.

(Отредактировано автором: 24 Июня, 2015 - 18:33:03)

 
 Top
IllusionMH
Отправлено: 24 Июня, 2015 - 19:02:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




mstan, так может сначала стоит найти способ делать это руками, понять алгоритм и тогда уже писать код ?Улыбка
Вообще можно погуглить решение систем уравнений на любом языке и конвертировать в пых + добавть некоторые закономерности которые позволяют упростить решеине.
 
 Top
mstan
Отправлено: 24 Июня, 2015 - 19:19:55
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




[quote=IllusionMH][/quote]я как раз этим сейчас и занимаюсь. Люблю запараллелить процессы, так сказать: тут сам ковыряюсь, там может другие чем помогут.
 
 Top
dcc0
Отправлено: 24 Июня, 2015 - 19:53:06
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




У Вас одинаковых 10 символов всего. Немного. Допускаю, что задача может быть решена простым перебором и подстановкой.
Т.е. можно каждый раз генерировать словарь соответствий букв - числам. Сложить числа из словаря и сравнить каждый полученный символ с этим словарем.

Л И С А В К О З Е Р
1 2 3 4 5 6 7 8 9 10

В свою очередь словарь цифр является перестановкой.
На php это удобно, вероятно, сделать с помощью ассоциативных массивов.

(Отредактировано автором: 24 Июня, 2015 - 19:56:58)



-----
Март 2021. Бросил программирование
 
 Top
dcc0
Отправлено: 24 Июня, 2015 - 22:31:09
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)






-----
Март 2021. Бросил программирование
 
 Top
dcc0
Отправлено: 01 Июля, 2015 - 15:14:48
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Кстати, вот пример попроще. Тут сразу видно, что сумма не может быть больше 18,
а также то, что если одно число больше 4, то второе не может быть меньше 6. Сам пример:

a+б=аг : )))

И он более наглядно приводит к алгоритму по шагам:
1). Генерировать словарь (любым способом) для aбг, например: а=2, б=9, г=0.

2) Сложить: 2+9=11.
3) Сравнить результат со словарем, неверно

4) Снова генерировать (возврат к шагу 1): а=1, б=9, г=0.
5) Сложить: 1+9=10.
Сравнить со словарем: а=1, г=0. Все верно!

Радость

(Отредактировано автором: 01 Июля, 2015 - 15:16:17)



-----
Март 2021. Бросил программирование
 
 Top
dcc0
Отправлено: 01 Июля, 2015 - 22:06:50
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Еще простейшую составил, хех: до+фа=ага


-----
Март 2021. Бросил программирование
 
 Top
IllusionMH
Отправлено: 02 Июля, 2015 - 01:23:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




dcc0, а до + фа = ага - точно имеет 1 решение?
 
 Top
dcc0
Отправлено: 02 Июля, 2015 - 01:41:50
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Одно точно есть. Неужели я промахнулся и там их несколько
(Добавление)
Да их там штук пять Улыбка

Да, можно переименовать в да+фи=гаа
=))

Ну промахнулся я , простите...
(Добавление)
До+фа=лад
Вроде один теперичи

(Отредактировано автором: 02 Июля, 2015 - 10:46:55)



-----
Март 2021. Бросил программирование
 
 Top
mstan
Отправлено: 02 Июля, 2015 - 10:33:24
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Ну, если упростить задачу до уровня a+b=cd
то можно решить так (хотя очень некрасивое решение)

Спойлер (Отобразить)



Но с задачей уровня первого поста таким быдлокодом замахаешься писать скрипт. Нужно как-то упростить процесс формирования возможных значений.

(Отредактировано автором: 02 Июля, 2015 - 10:34:22)

 
 Top
dcc0
Отправлено: 02 Июля, 2015 - 10:52:27
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




mstan,почему у Вас a+b=cd?

a+b=ad

mstan, код гениальный ... предлагаю модифицировать квантовый алгоритм Шора для поиска решения ... = )

(Отредактировано автором: 02 Июля, 2015 - 10:57:04)



-----
Март 2021. Бросил программирование
 
 Top
mstan
Отправлено: 02 Июля, 2015 - 10:57:01
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




dcc0
a+b=ad - совсем уж просто, очевидно, что а=1, а дальше уже неинтересно. Мой пример немного сложнее (больше вариантов).
Да, код действительно гениальный, не спорю, именно поэтому охарактеризовал его как "быдлокод" Улыбка. Хотя из предложенных пока лучший Недовольство, огорчение

(Отредактировано автором: 02 Июля, 2015 - 10:57:29)

 
 Top
dcc0
Отправлено: 02 Июля, 2015 - 11:00:43
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Но с a+b=cd
получаем несколько решений, а это противоречит самой сути крипторифмов.


-----
Март 2021. Бросил программирование
 
 Top
mstan
Отправлено: 02 Июля, 2015 - 11:12:52
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Почему противоречит? "Как правило, имеет одно решение" != "Всегда имеет одно решение"
 
 Top
dcc0
Отправлено: 02 Июля, 2015 - 11:34:09
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




mstan, вроде бы одно и только одно.
Я тоже не сразу прочитал:
http://www[dot]cross-plus-a[dot]ru/html/voc6bll[dot]htm

Хотя для сложных вариантов можно обозначить условие в самой задаче.

Вот, одно ли тут решение?
До+фа=лад

upd: нет : ) не одно...

(Отредактировано автором: 03 Июля, 2015 - 11:18:49)



-----
Март 2021. Бросил программирование
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB