Pull to refresh

Comments 33

Никогда про эту игру не слышал, но за минуту раздумий получилось так:
ответ
(3 + (6 + 0) / 6) * 25
поскольку являюсь профессионалом в этой игре за полминуты нашел 5 решений

трики — если в конце номерка 5 или 25, то найти 20, 10 или 4 из оставшихся 4 -5 цифр — дело 2-х секунд.
Естественно!
Больше решений богу решений:

((((3-6)*(0-6))+2)*5) = 100
((((3*6)+(0*6))+2)*5) = 100
((((3*6)+(0/6))+2)*5) = 100
((((3*6)-(0*6))+2)*5) = 100
((((3*6)-(0/6))+2)*5) = 100
(((3*6)+((0*6)+2))*5) = 100
(((3*6)+((0/6)+2))*5) = 100
(((3*6)-((0*6)-2))*5) = 100
(((3*6)-((0/6)-2))*5) = 100
((((3+(6*0))*6)+2)*5) = 100
((((3-(6*0))*6)+2)*5) = 100
((((3-6)*(0-6))+2)*5) = 100
((((3*6)+(0*6))+2)*5) = 100
((((3*6)+(0/6))+2)*5) = 100
((((3*6)-(0*6))+2)*5) = 100
((((3*6)-(0/6))+2)*5) = 100
(((3*6)+((0*6)+2))*5) = 100
(((3*6)+((0/6)+2))*5) = 100
(((3*6)-((0*6)-2))*5) = 100
(((3*6)-((0/6)-2))*5) = 100
(((3*((6*0)+6))+2)*5) = 100
(((3*(6+(0*6)))+2)*5) = 100
(((3*(6+(0/6)))+2)*5) = 100
(((3*(6-(0*6)))+2)*5) = 100
(((3*(6-(0/6)))+2)*5) = 100
(((3*6)+((0*6)+2))*5) = 100
(((3*6)+((0/6)+2))*5) = 100
(((3*6)-((0*6)-2))*5) = 100
(((3*6)-((0/6)-2))*5) = 100
((3+((6+0)/6))*25) = 100
((3+((6-0)/6))*25) = 100
((3+(6/(0+6)))*25) = 100
((3-(6/(0-6)))*25) = 100
((3+(6/6))*25) = 100
Внешние скобки везде зачем?
Мне нравится множить 1111 на 1111 на калькуляторах -)
Как то дочке задали задачу из цифр составить результат что-то типа 1?2?3?4?5=6, пробовали, пробовали, я устал, наваял на питоне решалку, нашел сразу 4 варианта решения ее задачи, заодно прошелся по всем соседним числам.

Прикольно оказалось то что после определенного числа решалка делала его из первых нескольких цифр разными знаками, а остальные (до знака равно) шли с попеременными + и — , т.е в итоге давали просто +1 к результату на каждую пару цифр.
И решал я задачу рекурсивно — если первых знак, к примеру, + то получается:
1 +… = 6 ->… = 5
но получившееся выражение это просто на одну цифру более короткая первичная задача.
Кстати моя решалка дала такой вариант: (3*6+0+2)*5=100
Вы вторую шестерку в исходном наборе потеряли 360625
А куда одна шестёрка пропала?
Олимпиадная задачка для школьников, помню классе в 4-5 такое решали еще на Бейсике.

Так нет среди первого миллиона чисел тех, для которых нет решения?

Оно одно такое или ещё есть?
Ещё есть: 000000, 000001, 000002, ..., 000099.
Всего решений нет у 93265 билетов. Если требовать расставить знаки во всех 5 местах, то решений нет у 283730 билетов.
Год назад на хабре уже заходила речь об этой игре, тогда я подсчитал общее количество счастливых таким образом билетов, а заодно попытался сгенерировать наиболее сложные билеты. Если кому-то хочется поломать голову, привожу их список по возрастанию сложности (по моему субъективному мнению). Но в известной мне версии игры необязательно ставить знаки между всеми цифрами, то есть для билета 777777 допустимым решением является (777-77)/7, в примерах это используется.
101048
(10+10/4)*8

399940
(3-9/(9+9))*40

146778
(14-6/7)*7+8

198797
1-9*(8/(7-9)-7)
Классно! Подставил все числа в программу, у каждой оказалось единственное решение.

А есть ли у дьявольского числа 666666 другие решения, кроме ((666 - 66) / 6) = 100?
Моя наколенная поделка больше не находит.

нет, у 146778 есть ((1+4*6)/(7+7))*8

Программа точно хорошо работает с дробями?

Недавно видел задачу: построить наилучшее приближение числа e, используя все цифры ровно по одному разу. Можно использовать любые операции.

Насколько любые?
Можно написать sinh(1) + cosh(3-2) + 0*(4+5+6+7+8+9) и получить точное значение числа e.
Если позволить факториал, то можно получить сколь угодно близкое к числу e значение, добавляя новые факториалы вокруг (4+5+6) и (7+8):
(1+(3-2)/(4+5+6)!)^(7+8)! + 0*9.
Если использовать степени, то лучшее, что мне удалось найти, это
(1+3^(-2^85))^(9^(4^(6*7))) + 0
Это приближение даёт примерно 1.846*10^25 правильных знаков числа e.

Набросал на коленке очень медленное и весьма говнокодерское решение на питоне. Посмотрим, как быстро pythonanywhere накажет меня за хаброэффект :)
Потыкать онлайн
gist

Для числа 146778 не находит решения (14-6/7)*7+8, видимо по-хорошему надо написать класс дроби и считать в нём.

Я и так использую встроенный в питон класс дроби


Оно находит не все решения, т. к. там где-то есть баг в переборе возможных способов расставления скобок.


Но мне уже лень искать и исправлять этот баг :)

Оценку комбинаций можно сократить, если считать склейку цифр пятой операцией. Тогда вместо 2^N ⋅ 4^N ⋅ N! = 8^N ⋅ N!, получается 5^N ⋅ N!.. Все-равно завышено, ибо приоритет у склейки всегда будет максимальный, но это уже всего 375000 комбинаций.


Интересно, нашли ли вы хоть одно число, для которого решения нет?

Кстати, изначально я даже планировал так реализовать аглоритм. Когда каждое место можно поставить либо математическую операцию, либо склейку. Однако, для удобства понимания, программирования и отладки, решил их разделить.

Пример чисел без решений привели выше.
Sign up to leave a comment.

Articles