УДАР+УДАР=ДРАКА
2010-10-04 00:13Вопрос навеян последней записью с числовыми ребусами И. Весеннего. Что вы знаете об алгоримизации решения таких ребусов? Если есть ссылки на статьи, было бы здорово. Ну, или просто идеями поделитесь.
З. Ы. ЖЖ опять тормозит несколько дней. Это у всех так, или только в гадюкинских краях?
З. Ы. ЖЖ опять тормозит несколько дней. Это у всех так, или только в гадюкинских краях?
Tags:
(no subject)
2010-10-04 07:37 (UTC)Ввиде программы на Prolog :-).
Кстати, в книжках про Mozart/Oz решение ребусов часто приводят как пример программирования в ограничениях.
(no subject)
2010-10-04 07:38 (UTC)(no subject)
2010-10-04 07:49 (UTC)Одна тонкость
2010-10-04 08:35 (UTC)(no subject)
2010-10-04 12:08 (UTC)... Intrat et exit ut nil supra ...
(no subject)
2010-10-04 16:00 (UTC)(no subject)
2010-10-04 07:45 (UTC)(no subject)
2010-10-04 08:04 (UTC)(no subject)
2010-10-04 09:29 (UTC)УДАР * 2 <= 9876 * 2 = 19752 => Д = 1
УДАР * 2 > 10000, перебор по У с максимизацией остальных разрядов дает У >= 5
эту эвристику формализовать легко. другое дело, что она не всегда продуктивна: СУК * СУК = БАРСУК - этот пример надо решать с младших разрядов. хотя здесь, в примерах на умножение, тоже внятная эвристика - таблица умножения по модулю 10, длины чисел сокращаются не со старших, а с младших разрядов.
самое крутое - это задачи не с буквами, а со звездочками. если не забуду, вечером найду крутейшую задачу, решением которой горжусь :-)
(no subject)
2010-10-04 09:36 (UTC)(no subject)
2010-10-04 18:50 (UTC)(no subject)
2010-10-04 19:07 (UTC)(no subject)
2010-10-04 08:21 (UTC)(no subject)
2010-10-04 08:35 (UTC)(no subject)
2010-10-04 10:03 (UTC)То есть вопрос о решении подобных задач все равно упирается в некоторый объем вычислений.
А 10! и даже 100! - это немного по нашим временам. Недавно в ru_pythonе предлагалась задачка: посчитать 1 000 000! Подразумевалось, что это возможно сделать за вменяемое время. Ну, на нетбуке это время немножко невменяемое, а вот 100 000! за 30 секунд считается. Брутфорсом, без факторизации.
Тут же объем задачи просто провоцирует решить ее перебором.
(no subject)
2010-10-04 10:05 (UTC)(no subject)
2010-10-04 10:17 (UTC)(no subject)
2010-10-04 10:29 (UTC)(no subject)
2010-10-04 09:19 (UTC)http://fdo-eq.livejournal.com/247147.html
(no subject)
2010-10-04 09:44 (UTC)Н-да, промазал
2010-10-04 09:48 (UTC)Коротко суть:
fdo-eq, если Вы автор задачи, то приношу извинения за отсутствие указания на Ваше авторство рядом с условием.
Сообщите, пожалуйста, на какой из Ваших сайтов/ЖЖ следует поставить ссылку рядом с условием этой задачи (если её вообще можно публиковать).
Re: Н-да, промазал
2010-10-04 11:01 (UTC)Ссылку поставил
2010-10-04 11:18 (UTC)(no subject)
2010-10-04 11:05 (UTC)ЖЖ уж не от рекламы ли со звездой тормозит?
(no subject)
2010-10-05 09:51 (UTC)Задача на умножение
2010-10-04 18:48 (UTC)Программистский brainfuck
2010-10-06 16:21 (UTC)(no subject)
2010-10-06 16:50 (UTC)create table #Digits (d int)
insert into #Digits (d) values (0)
insert into #Digits (d) values (1)
insert into #Digits (d) values (2)
insert into #Digits (d) values (3)
insert into #Digits (d) values (4)
insert into #Digits (d) values (5)
insert into #Digits (d) values (6)
insert into #Digits (d) values (7)
insert into #Digits (d) values (8)
insert into #Digits (d) values (9)
select
*
from
#Digits U
cross join #Digits D
cross join #Digits A
cross join #Digits R
cross join #Digits K
where
U.d<>D.d and U.d <> A.d and U.d <> R.d and U.d <> K.d
and D.d <> A.d and D.d <> R.d and D.d <> K.d
and A.d <> R.d and A.d <> K.d
and R.d <> K.d
and (1000*U.d+100*D.d+10*A.d+R.d) + (1000*U.d+100*D.d+10*A.d+R.d) = (10000*D.d+1000*R.d+100*A.d+10*K.d+A.d)
drop table #Digits
--------------
-- 8 1 2 6 5
-- 0 секунд
(no subject)
2010-10-06 19:36 (UTC)Вспомнил об одном из возможных методов решения таких задач: О-алгебры (буква О латинская, не ноль). Вам, как специалисту по БД, это навевает какие-нибудь ассоциации?
(no subject)
2010-10-06 19:56 (UTC)полез в вики - нашёл только O*-algebra, но кажется это не то
(no subject)
2010-10-06 20:04 (UTC)Видимо он этот селект решает закручивая 5 вложенных циклов от 0 до 9, т.е. всего 100 тыс., это мгновенно при любом подходе.
И, если умный, то глядя на условие, ещё часть внутренних циклов пропускает.
(no subject)
2010-10-06 20:10 (UTC)(no subject)
2010-10-06 16:55 (UTC)ну, это мне лень , но там просто
цикл закрутить и умножаит не на 10^k а на N^k