Логика для всех

Понедельник начинается... с головоломки


Программы

"Инструкция по эксплуатации"


Собственно, программа...


Если вам доводилось разгадывать головоломки, подобные тем, что предложены в этом разделе, то, возможно, вы задумывались об "автоматизации" процесса нахождения ответа на определенном этапе решения. После занесения всех данных таблицу ответ получается простым перебором всех вариантов (о том, сколько этих вариантов - ниже). В случае если задача составлена корректно и информация из ее условий правильно нанесена на сетку, ответ, как правило, единственный. Но этот способ не всегда работает в тех случаях, когда условие задачи содержит количественные отношения между объектами, которые (отношения) невозможно отобразить в таблице сразу. Предложенная программа составлена для простого случая (см. пример). Если у вас есть комментарии и соображения по поводу, поделитесь... Только не забывайте, что Javascript больше подходит для создания различных "примочек" для увеселения или раздражения посетителей, а для расчетных задач он несколько слабоват.А как только программа будет окончательно отлажена, перейду к созданию "помощников" для более сложных головоломок.

А теперь инструкция к действию, на примере конкретной задачки.


Четыре дамы получили букеты цветов от своих воздыхателей.

  1. Мартин подарил Ванде букет ее любимых цветов, но не розы.
  2. Майк подарил своей даме (не Ванессе) тюльпаны.
  3. Виктория получила дюжину лилий, но не от Майкла.

Кто кому какие цветы подарил?


Задача решается "в два счета", особенно если призвать на помощь следующую табличку, шаблон которoй воспроизведен здесь с помощью checkbox'ов.


Если занести условия в табличку, то она будет выглядеть примерно так (цветочек - признак соответствия между двумя объектами, а "x" - знак отсутствия соответствия):


Можно "дополнить картину" еще тремя знаками "x", но в этом нет необходимoсти при переборе вариантов.

Кстати, о вариантах. Для данной задачи существует 576 ( =(4!)^2 ) различных вариантов соответствий (именно это число обозначено в маленьком окошке). А в общем случае нужно найти факториал количества "объектов" и возвести его в степень количества "свойств".


Теперь уже можно "жать на кнопки". Нужно только воспроизвести на поле c checkbox'aми следующую картину ("неизвестные" клетки остаются нетронутыми, а вся "отрицательную информацию" помечаeтся):


Если все сделано правильно, то в окошке количества вариантов появится единица, а ответ будет выглядеть примерно так:


(c) NtLogic 2001

TopList SpyLOG

Сайт управляется системой uCoz