LINUX.ORG.RU

Задача на логику. Помогите разобраться с формулировками.

 


0

3

Сама задача:

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

Невозможно (совсем никак):
 * различить стороны монет
 * определить, на какой угол вращали стол
 * ставить монеты на ребро, греть их, царапать стол и делать прочие нечестные вещи
теперь вопросы:
Стороны каждой монеты раскрашены в два цвета - белый и черный, других различий между сторонами нет.
т.е. отсюда следует что «орел» покрашен всегда в один цвет, а решка в другой, или нет?
Невозможно (совсем никак):
 * различить стороны монет
т.е. когда берешь монету можно определить в какую сторону ты её переворачиваешь или нет?

Вот и догадайся блин что у этих HR'арщиков в голове.

Ответ на: комментарий от O02eg

Что-то усёк. Переворачивание 2-х диагональных либо приводит к решению, либо не изменяет ситуации. 1-ым ходом переворачиваем 2 монеты, лежащие на противоположных краях, тем самым отсекая вариант

ХО
ОХ
Остаются
ХХ
ОО

ОХ
ХХ
с точностью до поворота. Вторым-иретьим ходами отсекаем
ОО
ХХ
Сначала переворачиваем 2 соседние, что либо приведёт к решению, либо к ситуации
ХО
ОХ
, которая решается за 1 ход переворачиванием диагональных. Если за предыдущие 3 хода решения не получили, значит имеем ситуацию.
ОХ
ХХ
Переворачиваем 3 любых, гарантированно получая одну из 1-ых двух ситуаций, возвращаемся к шагу один и получаем решение.
Итого, в наихудшем случае 7 ходов, как и указали выше специалисты. // ссори за форматирование, пишу из метра

backbone ★★★★★
()
Ответ на: комментарий от qnikst

всё врубился как такие задачи решаются, спс.

TDrive ★★★★★
()
Ответ на: комментарий от backbone

Воистину так. Только на последнем шаге:

Переворачиваем 3 любых

таки достаточно перевернуть только одну.

pevzi ★★★★★
()

самая клёвая задача из подобных, которые я видел:

это есть 12 монет, из которых одна фальшивая, и _неизвестно_ тяжелее он или легче, необходимо за 3 взвешивания определить какая.

Я, конечно, дурак, но думал не меньше 2ух недель (не непрерывно) с перерывом где-то в год, честно думая, что решения не существует.

qnikst ★★★★★
()
Ответ на: комментарий от O02eg

да решаема, я даже решение, за минут 5 вспоть смогу. но всё же решил предложить её лоросообществую, как не совсем тривиальную. Могу в общем-то в отдельную тему.

P.S. выкладок не понял.

qnikst ★★★★★
()
Ответ на: комментарий от TDrive

TDrive

при поступление на какую должность получили такую задачу?

Java developer.

andreykyz ★★
() автор топика
Ответ на: комментарий от O02eg

3^1 - одно взешивание даёт 3 варианта. Давай реши задачу с одним взвешиванием и тремя монетами!

Да, а про 12 монет задача за пять минут решается.

anonymous
()
Ответ на: комментарий от qnikst

Делим кучу на 4 группы. За первые 2 взвешивания, комбинируя группы как AB-CD (1 взв-е) и AC-BD (2-е), узнаём 3-ку, где фальшивая монета и то, легче она или тяжелее. Взвешиваем любые 2 из тройки, определяем фальшивую.

backbone ★★★★★
()
Ответ на: комментарий от backbone

пусть в A монета весит меньше. тогда

AB < CD AC < BD

пусть в D монета весит больше. тогда

AB < CD AC < BD

что делать дальше?

qnikst ★★★★★
()
Ответ на: комментарий от anonymous

При знании о весе фальшивой монеты (чтобы число конфигураций монет также было равно 3)? Легко. Взвешиваем 1 и 2, 3 в стороне. Если равны - фальшивая 3, если не равны, то 1 или 2 в зависимости от веса.

O02eg ★★★★★
()

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

если надо минимизировать кол-во раундов - то надо подумать, но выше по треду уже нашли решение.

интересней обратная задача: найти стратегию которая в заданных условиях обеспечит «вечную тьму», причём эффективней чем другие стратегии.

MKuznetsov ★★★★★
()
Ответ на: комментарий от TDrive

я подозреваю, что это в данных условиях чит и так нельзя :)

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

за 2 взвешивания можно найти фальшивую монету из 4 монет, из 5 уже не получится. => после первого взвешивания из 12 монет нужно уменьшить круг до 4 монет.

TDrive ★★★★★
()
Ответ на: комментарий от MKuznetsov

Выключить и больше ничего не трогать, не? (:

pevzi ★★★★★
()
Ответ на: комментарий от TDrive

ещё вопрос возник, какой раздел математики занимается такими задачами? много раз их встречал но никогда не видел что бы они были привязаны к определённому предмету.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

там хитрее, т.к. у тебя после первого взвешивания есть n монет, где фальшивая + k заведомо нефальшивых, и эта инфа может помочь.

P.S. я решение забыл, придйтся вспоминать :)

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

диагонали это пожалуй правильный подход..а если число углов нечётно и простое ? чтобы не было варианта когда выборка перейдёт в себя при повороте кроме 360 град. Скажем пятигранный стол :) Или тайная вечеря на 13 человек..

p.s. это так - гимнастика ума..а то что-то на ЛОРе последнее время встречаются только школьные задачи или вопросы от HR :(

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

у меня дел по дому толпа; а если точек больше чем 5 есть подозрение, что все стратегии будут случайными, т.к. не будет тех инвариантов, которые есть в текущей задаче, хотя это уже надо садиться и доказывать.

реши Задача на логику. Помогите разобраться с формулировками. (комментарий) она повеселее.

qnikst ★★★★★
()
Ответ на: комментарий от O02eg

А ну да, ты же ещё на два умножал. Ладно, тогда за три взешивания с 13 монетами (с неизвестным весом фальшивой).

anonymous
()
Ответ на: комментарий от TDrive

ну думай, гимнастика для ума хорошая.. если через недельку не придумаешь скинь на мыло, я напишу решение.

я кстати вспомнил, не факт, что совпадает с тем решением, которое придумывал раньше

qnikst ★★★★★
()
Ответ на: комментарий от backbone

буду пилить цепочку, так как, чтобы решиться перепилить лодыжку, потребуется минимум 5 минут самоконцентрации

Тем более, что не факт, что в процессе отпиливания лодыжки ты не потеряешь сознание от потери крови или тупо от боли. Хотя в кино они да, «отпилить ногу? да без проблем! мы же дети Чака Норриса! тем более, там такая нога...».

cr0x
()
Ответ на: комментарий от anonymous

оно же не отличается от решения с 12, только в одном месте доп шаг.

qnikst ★★★★★
()
Ответ на: комментарий от O02eg

Есть некая комната с паркетным полом, в углу которой насыпана куча песка. В некоторый момент паркет начинает гореть. Как будут действовать инженер, физик и математик? Инженер: входит в комнату, засыпает огонь песком, уходит. Физик: входит в комнату, насыпает песок вокруг огня, садится и наблюдает процесс. Математик: входит в комнату, видит, что задача имеет решение, и уходит.

qnikst ★★★★★
()

А что сложного?

a) <-> (два раза перевернуть все) 2 соседние ; <-> 2 диаметральные ; <-> (перебрали 6 вариантов) 2 соседние ; <-> (8 или 6 с возвращением в исходный) 2 диаметральные ; <-> (8)

если не зажглось - перевернуть одну и повторить.

// если что, прошу извинить - весь тред не читал

anonymous
()
Ответ на: комментарий от qnikst

что делать дальше?

Действительно... =(
надо подумать...

backbone ★★★★★
()
Ответ на: комментарий от qnikst

Тоже думал когда-то эту задачу пару часов... А потом применил тактику «забей на условие» и все получилось. Ведь основная заковырка, которая сильно путает, именно в условии...

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

я бы сказал, что даже из 8-ми, но при дополнительном условии, что известно, что 1234<5678, ну или >, на общности не отражается.

qnikst ★★★★★
()
Ответ на: комментарий от Jetty

ну не знаю, я просто не мог придумать алгоритм, как использовать условие, полученное на первом шаге, для получения доп информации.

qnikst ★★★★★
()
Ответ на: комментарий от Jetty

Просто из 7 монет найти фальшивую за 2 взвешивания не получится.
По задаче из 12 монет так получается потому, что за первое взвешивание находим часть информации + несколько настоящих монет.

TDrive ★★★★★
()
Ответ на: комментарий от qnikst

Твое «дополнительное условие» и есть еще одно взвешивание.
7 монет потолок для двух взвешиваний.

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

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

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

в том то и дело что не известно, по этому потолок 4 монеты.

TDrive ★★★★★
()
Ответ на: комментарий от qnikst

Вроде дошло. На 1-ом сравниваем по 4: a,b,c,d и e,f,g,h. Если равны, из оставшихся 4-х поиск тривиален. Иначе - сравниваем a,b,c,h и i,j,k,d (i,j,k - обычные, h и d поменялись местами). Если равны, из снятых 3-х при знании легче/тяжелее фальшивая поиск опять тривиален. Ежели показания весов не изменились, ищем из a,b,c. Если изменились - из h и d.

backbone ★★★★★
()
Ответ на: комментарий от Jetty

Твое «дополнительное условие» и есть еще одно взвешивание.
7 монет потолок для двух взвешиваний.

доп. условие берётся из взвешивания, и оно выбирает максимум 8 монет, среди которых искать и даёт соотношение между четвёрками, всё.

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

возможно, только к этой задаче это маловероятно, что относится, т.к. за 1 шаг получить такую информацию невозможно.

qnikst ★★★★★
()
Ответ на: комментарий от backbone

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

qnikst ★★★★★
()

Два человека соревнуются, один переворачивает монеты, другой крутит стол на произвольный угол. Причем первый не видит на какой угол поворачивается стол, а второй не видит какие монеты переворачивает первый. Придумайте выигрышную стратегию.

anonymous
()
Ответ на: комментарий от qnikst

Программно вот.

abcd == efgh?
  i == j?
    a == k?
      l - фальшивая
    a != k?
      k - фальшивая
  i != j?
    a == i?
      j - фальшивая
    a != i?
      i - фальшивая
abcd > efgh?
  abch = ijkd?
    e = f?
      g - ф
    e > f?
      f - ф
    e < f
       e - ф
  abch > ijkd?
    a = b?
      c - ф
    a > b?
       a - ф
    a < b?
       b - ф
  abch < ijkd?
    a = h?
      d - ф
    a != h?
      h - ф
abcd < efgh?
  abch = ijkd?
    e = f?
      g - ф
    e < f?
      f - ф
    e > f
       e - ф
  abch < ijkd?
    a = b?
      c - ф
    a < b?
       a - ф
    a > b?
       b - ф
  abch > ijkd?
    a = h?
      d - ф
    a != h?
      h - ф
Другое тоже интересно увидеть

backbone ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.