Имеются 9 монет и рычажные весы. Среди монет имеется одна фальшивая, отличающаяся от остальных по весу. Необходимо ее определить за три взвешивания.
Выглядит просто, но у меня меньше четырех взвешиваний не получается никак. Старею 
Настоятельно просим вас при общении соблюдать Правила форума и законы РФ. Наша тематика вне политики, поэтому воздержитесь от обсуждения ситуации на Украине и связанных с ней событий, независимо от того, какую сторону вы поддерживаете.
Также напоминаем, что наш форум находится в доменной зоне .ru, физически расположен на российских серверах и мы соблюдаем действующее законодательство России. Любые сообщения о политике будут удаляться.
Linux Forum → Разговоры о Linux и не только → 9 монет (логическая задачка)
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Имеются 9 монет и рычажные весы. Среди монет имеется одна фальшивая, отличающаяся от остальных по весу. Необходимо ее определить за три взвешивания.
Выглядит просто, но у меня меньше четырех взвешиваний не получается никак. Старею 
на 3 кучки разделить надо вначале =)
1) по 4 монеты на каждую чашу весов, и одна в запасе.
1. a) если вес чаш одинаков - монета которая фальшивая в запасе
1. б) если вес чаш разный - берем ту сторону которая легче
2) делим эту сторону 4 монеты по 2 на каждую чашу и выбираем более легкую сторону
3) делим 2 монеты на каждую чашу по одной и находим фальшивую
XELFAER, не сказано, что фальшивка легче
Silencer, вроде правильно, но там хитрожопая вторая часть...
123 V 456 -> s1 ? {
s1=="=": 789 - одна из фальшивая
s1=="!=": 15 V 42 -> s2 ? {
"=" => 36 - фальшивые
s1==s2 => 14 - фальшивые
s1!=s2 => 52 - фальшивые
}
}Подразумевается, что фальшивая монета легче. Изначально монеты были золотые и серебряные (только их подделывать есть смысл), а это тяжёлые металлы. Фальшивка же должна быть из недорогого и лёгкого металла.
Подразумевается, что фальшивая монета легче. Изначально монеты были золотые и серебряные (только их подделывать есть смысл), а это тяжёлые металлы. Фальшивка же должна быть из недорогого и лёгкого металла.
Вообще-то, весь цимес задачи в том, что неизвестно, в какую сторону фальшивка от настоящей монеты отличается, иначе бы она вообще в два действия решалась.
Подразумевается, что фальшивая монета легче.
Но прямо этого не сказано. В любом случае, делением на три кучки, как предложил Silencer, фальшивую монету можно найти, будь она легче или тяжелее настоящей.
Но если неизвестно легче или тяжелее, то делением на 3 кучки не найдёшь ведь.
решается... смотри у меня под спойлером, если невтерпёж... [очевидные действия я опустил]
ЗЫ: я вас ненавижу... уже три часа на braingames.ru с этой подачи зависаю...
Fat-Zer, всё равно за три взвешивания у тебя не получается определить одну фальшивую монету.
Fat-Zer, всё равно за три взвешивания у тебя не получается определить одну фальшивую монету.
Почему. Имхо в худшем случае 3
Может тогда распишите алгоритм Fat-Zer на пальцах и с пояснением каждой строки? Если не сложно.
Я согласен, что это можно сделать, но не алгоритмом Fat-Zer.
Может тогда распишите алгоритм 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)
Не знаю как вам, а мне сложно было об этом догадаться по этому алгоритму:
123 V 456 -> s1 ? {
s1=="=": 789 - одна из фальшивая
s1=="!=": 15 V 42 -> s2 ? {
"=" => 36 - фальшивые
s1==s2 => 14 - фальшивые
s1!=s2 => 52 - фальшивые
}
}Не знаю как вам, а мне сложно было об этом догадаться по этому алгоритму:
я сам не смог решить задачу пока не увидел этот алгоритм 
Vascom, кто захотел тот понял... =)
+ рассчитывал, что алгоритм за одно/два взвешивания определить фальшивку из 2/3 монет вы можете...
ЗЫ: я конечно мастер изобретать псевдокоды, но пару не однозначностей синтаксиса допустил... поправлюсь от греха подальше...
123 V 456 -> s1 ? {
s1=="=": 789 - фальшивые
s1=="!=": 15 V 42 -> s2 ? {
s2=="=" : 36 - фальшивые
s1==s2 : 14 - фальшивые
s1!=s2 : 52 - фальшивые
}
}XELFAER, не сказано, что фальшивка легче
или легче или тяжелее - разница в весе, последовательность действий не меняется.
или легче или тяжелее - разница в весе, последовательность действий не меняется.
Меняется. Как вы определите кучку, где находится фальшивая монета, не зная, легче или тяжелее она должна быть?
Меняется. Как вы определите кучку, где находится фальшивая монета, не зная, легче или тяжелее она должна быть?
точно, верно замечено.
Ну тут понятно, достаточно определить каких больше: тяжёлых или лёгких. И вроде в алгоритм это входит.
Фиксируем три раза по три монеты - нумеруем эти тройки - 1 2 3
\/ и /\ - cуть лоханка с этой тройкой выше или ниже
Весы - рычажные, результаты первых двух взвешиваний возможны такие:
2 3
1 == /\ 3, фальшивка легче
1 == \/ 3, тяжелее
1 \/ == 2, легче
1 /\ == 2, тяжелее
1 \/ \/ 1, тяжелее
1 /\ /\ 1, легче
Теперь известно, в какой из троек присутствует фальшивка, и легче или тяжелее она прочих монет.
И осталось ещё одно взвешивание - любых двух монет из выделенной тройки.
Задачка на перестановки, так? Тогда есть еще задачка похожая: есть три штыря: один с "блинами" и два свободных. Задача: за минимальное количество перемещений переместить "блины" с одного штыря на другой:
Как-то так:
<=> I I
<===> I I
<=====> I I
|+++++++++++++++++++++++++++|
В.Е.Кузнецов
Представление в ЭВМ неформальных процедур, с.35
Там и задача на Ханойские башни корректнее сформулирована, и решение есть,
и можно внезапно открыть для себя продукционные системы...
Но если неизвестно легче или тяжелее, то делением на 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 такое же решение)
Фальшивка же должна быть из недорогого и лёгкого металла.
угу
из чугуна
из чугуна
это не металл, а сплав ) И кстати, высокопрочный достаточно дорог. (Хотя ни фига он не прочный)
угу
из чугуна
Чугун тоже легче золота)
таблица плотности металлов тыц
m=P*V
P-плотность
V-объем
m-масса
Тока в начальном условии я не видел, что бы монеты были золотые.
ичо?
ичо?
То что, фальшивые могут быть сделаны из того же материала, и по весу не отличаться.
Просто сделаны не тем кто имеет право на производство таких монет.
То что, фальшивые могут быть сделаны из того же материала, и по весу не отличаться.
Просто сделаны не тем кто имеет право на производство таких монет.
ни разу такого не видел
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Linux Forum → Разговоры о Linux и не только → 9 монет (логическая задачка)
Форум работает на PunBB, при поддержке Informer Technologies, Inc