Логическая задачка

061176

Недавно друг загадал задачку, не очень сложную, но мне очень понравилась, так что решил тут запостить, благо какую только хуйню разнородную информацию в этом разделе не встретишь.
Задача чисто математическая, решается без читерства.
Перед вами бочка, в верхней крышке бочки четыре одинаковых круглых отверстия, расположенных в вершинах квадрата. Внутри каждого отверстия находится по выключателю, таким образом, что его не видно, но если засунуть внутрь отверстия руку, то можно определить текущее положение выключателя и, если угодно, изменить его. За один раз можно засунуть руки в два любых отверстия и совершить произвольное действие над доступными выключателями. Если после очередного хода (т.е. когда вы достали руки из бочки) все выключатели переведены в одно положение (т.е. все включены или все выключены открывается стоящая рядом дверь. Цель - открыть эту дверь.
Да, и главное... После каждого хода бочка начинает вращаться таким образом, что перед началом следующего вы не знаете, как она повернулась, ведь отверстия расположены симметрично.
Enjoy! :)
UPD Забыл сказать, вначале все выключатели находятся в случайном положении.

IMPButch

И в чем задача?

EjikVir

И в чем задача?

задачи нет, есть цель! кто достиг, тот молодец!

Damrad

задача весьма и весьма боянистая

paoook

то можно определить текущее положение выключателя
вот это можно пояснить?

061176

вот это можно пояснить?
А что неясно? Каждый выключатель либо включен, либо выключен. Ты этого не видишь, но когда засовываешь руку, можешь определить, в каком именно состоянии он находится. И, соответственно, изменить можешь тоже осознавая, включаешь ты его или выключаешь.

ninash

долго искал словосочетание "за какое наименьшее" =)

EjikVir

долго искал словосочетание "за какое наименьшее" =)

я не нашел.
может это задачка из программы "ключи от форта боярд" и просто на время нужно дверь открыть?

navstar

Решение:
1. Вставляем руки по диагонали и выключаем оба. Если дверь не открылась, то переходим к пункту 2.
2. Вставляем руки в соседние дыры и включаем оба.
3. Вставляем руки по диагонали. Если оба включены, то выключаем один и переходим к пункту 4, иначе выключаем оба и переходим к пункту 5.
4. Вставляем руки в соседние дыры, и переключаем оба. Если дверь не открылась, то переходим к пункту 5.
5. Вставляем руки по диагонали и переключаем оба. После этого дверь должна открыться.

stm8886619

у меня короче:
1. Вставляем руки по диагонали и выключаем оба. Если дверь не открылась, то переходим к пункту 1.

Vlad128

у меня короче:
1. Вставляем руки по диагонали и выключаем оба. Если дверь не открылась, то переходим к пункту 1.
У меня еще короче :crazy:
1. Вставляем руки по диагонали и включаем оба. Если дверь не открылась, то переходим к пункту 1.

Scud

Можно и "по диагонали" выкинуть, фигли.

Damrad

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

Suebaby

нужно решение, которое всегда-всегда будет приводить к концу
давай тогда проще: цель — потрогать выключатель как будешь решать?

Vlad128

А, пожалуй ты прав и решение Сталкера абсолютно верное! Неожиданно

Scud

давай тогда проще: цель — потрогать выключатель как будешь решать?

Гарантии дает только страховой полис! :) При наличии усидчивость статистика на твоей стороне. :)

Suebaby

При наличии усидчивость статистика на твоей стороне.
она также и на стороне номакса и у9у, но у них короче :)

Scud

Повторюсь, что диагональ можно и выкинуть без потери шансов. :)

Scud

Решение:
1. Вставляем руки по диагонали и выключаем оба. Если дверь не открылась, то переходим к пункту 2.
2. Вставляем руки в соседние дыры и включаем оба.
3. Вставляем руки по диагонали. Если оба включены, то выключаем один и переходим к пункту 4, иначе выключаем оба и переходим к пункту 5.
4. Вставляем руки в соседние дыры, и переключаем оба. Если дверь не открылась, то переходим к пункту 5.
5. Вставляем руки по диагонали и переключаем оба. После этого дверь должна открыться.
А если посмотреть на этот алгоритм при условии отсутствия перемешивания как такового?

Damrad

давай тогда проще: цель — потрогать выключатель как будешь решать?
ты лузер. перечитай условие задачи.
потрогать выключатель №3 может оказаться гораздо сложнее (более того - это даже и невыполнимо чем то, что требуется. А требуется, чтобы все были или вкл или выкл. Для этого вовсе не обязательно трогать №3 )

urchin

А требуется, что все были или вкл или выкл. Для этого вовсе не обязательно трогать №3
-------
Ппц неужели ты первый, кто до этого допёр?

Damrad

товарищ баштанов вот почему-то не допер. наверное перепил молока
задача - жуткий боян. еще раз всем говорю

Scud

Тем не менее, работоспособного алгоритма не вижу.

urchin

Работоспособный алгоритм дал Сталкер :)

Scud

Исходное положение -+/++. Вращения нет.
По Сталкеру:
1. Вставляем руки по диагонали и выключаем оба. Если дверь не открылась, то переходим к пункту 2.
Получаем --/-+.
 
2. Вставляем руки в соседние дыры и включаем оба.

Получаем --/++
 
3. Вставляем руки по диагонали. Если оба включены, то выключаем один и переходим к пункту 4, иначе выключаем оба и переходим к пункту 5.

Получаем --/-+. Идем к 5.
 
5. Вставляем руки по диагонали и переключаем оба. После этого дверь должна открыться.

Получаем -+/++. FAIL.
Где я неправильно понял?

navstar

Ну лажанулся, с кем не бывает. Но всем спасибо за поддержку :)

Scud

Да к тебе-то никаких претензий. Просто тут орут, что боян, а решения-то не видно. Неконструктив, однако.

navstar

Чтобы группа поддержки не унывала, вот ещё вариант:
1. (?/?) Вставляем в соседние и выключаем. Если дверь не открылась, переходим к пункту 2.
2. (?/--) Вставляем по диагонали. Если оба выключены, то включаем один и переходим к пункту 4, иначе выключаем оба и, если дверь не открылась, переходим к пункту 3.
3. (+-/--) Вставляем по диагонали. Если один включен, то выключаем его и дверь открывается, иначе включаем один и переходим к пункту 4.
4. (++/--) Вставляем в соседние и переключаем оба. Если дверь не открылась, переходим к пункту 5.
5. (+-/-+) Вставляем по диагонали и переключаем оба.

paoook

В ограниченное время задача не может быть решена со 100% вероятностью. Потому что до четвертого выключателя можно не добраться при любом алгоритме.

sergey63

? ?
? ?
выключаем по диагонали:
- ?
? -
вставляем руки в соседние, если какой-то из них включен, выключаем.
- -
? -
если дверь не открылась, то имеем:
- -
+ -
вставляем руки по диагонали. если какой-то выключатель включен, выключаем его, дверь открывается. если оба выключены, включаем один из них.
+ +
- -
вставляем руки в соседние дырки и инвертируем положение выключателей. либо дверь открывается, либо имеем ситуацию:
- +
+ -
вставляем руки по диагонали и инвертируем положение выключателей. дверь открывается.

061176

- верно, в точности мое решение
- верно, и даже короче и раньше
- медаль за распространение мысли бояноборческой на интеллектуальный контент
- думаю, сам все понял

griz_a

Это задача про Али-Бабу из Кванта для младших школьников 80какого-то года :)

shpanenoc

Тем не менее, задачка интересная.
Любителям подобных вещей рекомендую http://www.braingames.ru - там много разных задачек, есть интересные :)