1

Имеются 9 монет и рычажные весы. Среди монет имеется одна фальшивая, отличающаяся от остальных по весу. Необходимо ее определить за три взвешивания.

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

2 (03.05.2012 08:45:26 отредактировано Silencer)

на 3 кучки разделить надо вначале =)

3

1) по 4 монеты на каждую чашу весов, и одна в запасе.
    1. a) если вес чаш одинаков - монета которая фальшивая в запасе
    1. б) если вес чаш разный - берем ту сторону которая легче
2) делим эту сторону 4 монеты по 2 на каждую чашу и выбираем более легкую сторону
3) делим 2 монеты на каждую чашу по одной и находим фальшивую

Верить нельзя никому...

4 (03.05.2012 13:22:39 отредактировано Fat-Zer)

XELFAER, не сказано, что фальшивка легче
Silencer, вроде правильно, но там хитрожопая вторая часть...

+ открыть спойлер
123 V 456 -> s1 ? {
  s1=="=": 789 - одна из фальшивая
  s1=="!=": 15 V 42 -> s2 ? {
    "=" => 36 - фальшивые
    s1==s2 => 14 - фальшивые
    s1!=s2 => 52 - фальшивые
  }
}
95% процентов проблем находятся между клавиатурой и стулом.

5

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

6

Vascom пишет:

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

Вообще-то, весь цимес задачи в том, что неизвестно, в какую сторону фальшивка от настоящей монеты отличается, иначе бы она вообще в два действия решалась.

7

Vascom пишет:

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

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

8

Но если неизвестно легче или тяжелее, то делением на 3 кучки не найдёшь ведь.

9

Vascom пишет:

Но если неизвестно легче или тяжелее, то делением на 3 кучки не найдёшь ведь.

решается... смотри у меня под спойлером, если невтерпёж... [очевидные действия я опустил]

ЗЫ: я вас ненавижу... уже три часа на braingames.ru с этой подачи зависаю...

95% процентов проблем находятся между клавиатурой и стулом.

10

Fat-Zer, всё равно за три взвешивания у тебя не получается определить одну фальшивую монету.

11

Vascom пишет:

Fat-Zer, всё равно за три взвешивания у тебя не получается определить одну фальшивую монету.

Почему. Имхо в худшем случае 3

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

12

Может тогда распишите алгоритм Fat-Zer на пальцах и с пояснением каждой строки? Если не сложно.

Я согласен, что это можно сделать, но не алгоритмом Fat-Zer.

13

Vascom пишет:

Может тогда распишите алгоритм Fat-Zer на пальцах и с пояснением каждой строки? Если не сложно.

Я согласен, что это можно сделать, но не алгоритмом Fat-Zer.

Делим монеты на три стопки по три.
1. 1ое  Взвешивание. 123 и 456. Если веса равны то фальшивка в стопке 789 (переход на пункт 2)  Иначе на п. 3.

2. Если по п.1 фальшивка в 789.  2ое взвешивание  7 против 8.  Если веса равны то фальшивка 9. Больше взвешиваний не нужно. Иначе переходим на 2.1
2.1  3е взвешивание  Взвешиваем 7 и 9. Если веса равны то фальшивка 8, если веса не равны фальшивка 7. Больше взвешиваний не нужно в обоих случаях

3. Перераспределяем монеты и взвешиваем (2-ое) 14 и 25.  Если равны то переходим на 3.1 иначе на 3.2
3.1 Если 14 и 25 равны. То фальшивка в 3 или 6.  Взвешиваем  (3-е) 34 и 25.  Если равны, то фальшивка 6 иначе 3. Больше взвешиваний не нужно
3.2. (Если 14 тяжелее 25  и 123 тяжелее 456 (по 1ому взвешиванию) ) или  (Если 14 легче 25  и 123 легче 456 (по 1ому взвешиванию) )  то фальшивка 1 или 5  (переход на 3.2.1) иначе  4 или 2  (переход на 3.2.2)
3.2.1   Взвешиваем (3-е)  64 и 25   если равны фальшивка 1 иначе 5
3.2.2   Взвешиваем (3-е)  16 и 25   если равны фальшивка 4 иначе 2

Т.е ходы взвешиваний 

1 - 2   (рез 9)
1 - 2 - 2.1 (рез 8 или 7)
1 - 3 - 3.1 (рез 6 или 3)
1 - 3 - 3.2.1  (рез 1 или 5)
1 - 3 - 3.2.2  (рез 2 или 4)

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

14

Не знаю как вам, а мне сложно было об этом догадаться по этому алгоритму:

123 V 456 -> s1 ? {
  s1=="=": 789 - одна из фальшивая
  s1=="!=": 15 V 42 -> s2 ? {
    "=" => 36 - фальшивые
    s1==s2 => 14 - фальшивые
    s1!=s2 => 52 - фальшивые
  }
}

15

Vascom пишет:

Не знаю как вам, а мне сложно было об этом догадаться по этому алгоритму:

я сам не смог решить задачу пока не увидел этот алгоритм ab

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

16

Vascom, кто захотел тот понял... =)
+ рассчитывал, что алгоритм за одно/два взвешивания определить фальшивку из 2/3 монет вы можете...
ЗЫ: я конечно мастер изобретать псевдокоды, но пару не однозначностей синтаксиса допустил... поправлюсь от греха подальше...

+ открыть спойлер
123 V 456 -> s1 ? {
  s1=="=": 789 - фальшивые
  s1=="!=": 15 V 42 -> s2 ? {
    s2=="=" : 36 - фальшивые
    s1==s2 : 14 - фальшивые
    s1!=s2 : 52 - фальшивые
  }
}
95% процентов проблем находятся между клавиатурой и стулом.

17

Fat-Zer пишет:

XELFAER, не сказано, что фальшивка легче

или легче или тяжелее - разница в весе, последовательность действий не меняется.

Верить нельзя никому...

18

XELFAER пишет:

или легче или тяжелее - разница в весе, последовательность действий не меняется.

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

Был, был и весь вышел...

19

Lupo Alberto пишет:

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

точно, верно замечено.

Верить нельзя никому...

20

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

21 (04.05.2012 00:06:01 отредактировано Chars67)

Фиксируем три раза по три монеты - нумеруем эти тройки - 1 2 3
\/ и /\ - cуть лоханка с этой тройкой выше или ниже
Весы - рычажные, результаты первых двух взвешиваний возможны такие:
       2      3
1    ==    /\       3, фальшивка легче
1    ==    \/       3, тяжелее
1    \/    ==       2, легче
1    /\    ==       2, тяжелее
1    \/     \/         1, тяжелее
1    /\     /\         1, легче
Теперь известно, в какой из троек присутствует фальшивка, и легче или тяжелее она прочих монет.
И осталось ещё одно взвешивание - любых двух монет из выделенной тройки.

Давно уже не забавно наблюдать торжество отрицательного отбора.

22

Задачка на перестановки, так? Тогда есть еще задачка похожая: есть три штыря: один с "блинами" и два свободных. Задача: за минимальное количество перемещений переместить "блины" с одного штыря на другой:

Как-то так:

       <=>             I                    I
     <===>           I                    I
   <=====>         I                    I 
|+++++++++++++++++++++++++++|

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

23

В.Е.Кузнецов
Представление в ЭВМ неформальных процедур, с.35

Там и задача на Ханойские башни корректнее сформулирована, и решение есть,
и можно внезапно открыть для себя продукционные системы...

Давно уже не забавно наблюдать торжество отрицательного отбора.

24 (04.05.2012 01:32:55 отредактировано NoXi0uZ)

Vascom пишет:

Но если неизвестно легче или тяжелее, то делением на 3 кучки не найдёшь ведь.

Делим на 3 по 3.
Шаг 1) взвешиваем кучку 1 и 2. Если 1 > 2, то тогда взвешиваем 1 и 3. Если 1 = 3, то фальшивая во второй куче, если 1 > 3, то в 1. Отсюда ксати делается вывод тяжелее или легче фальш монета. Ситуация 2>1обратно симметрична. Итог: на первом взвешивании неравенство, то вторым определяется в какой ( 1 или 2 ) кучке фальшивая и легче она или тяжелее.
Шаг 2) В кучке с фальш монетой берем 2 наугад и взвешиваем, если одинаковые, то фальшивая последняя. Если не равны, то та что тяжелее или лечге в зависимости от шага 1 ( там определились)

Если на шаге 1) 1 = 2, то фальшивая в 3 кучке. Тогда, берем из 3 кучки наугад две:
                                                                                                              если 3.1 = 3.1, то фальшивая 3.3
                                                                                                              если 3.1 <> 3.2, то 3 взывешивание: 3.1 и 3.3  - если 3.1 = 3.3, то фальшивая 3.2, если 3.1<>3.3, то 3.1 - фальшивая.


PS походу у Chars67 такое же решение)

github.com/cocaine

25

Vascom пишет:

Фальшивка же должна быть из недорогого и лёгкого металла.

угу
из чугуна

ПатреГ не любит Gnome...

26

Termo пишет:

из чугуна

это не металл, а сплав ) И кстати, высокопрочный достаточно дорог. (Хотя ни фига он не прочный)

github.com/cocaine

27

Termo пишет:

угу
из чугуна

Чугун тоже легче золота)
таблица плотности металлов тыц
m=P*V
P-плотность
V-объем
m-масса

Тока в начальном условии я не видел, что бы монеты были золотые.

28

ичо?

ПатреГ не любит Gnome...

29

Termo пишет:

ичо?

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

30

ormorph пишет:

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

ни разу такого не видел

ПатреГ не любит Gnome...