IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите решить задачу с монетками
Zeratull
сообщение 21.02.2006 13:41
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Помогите решить задачу:

12 монет. Известен способ, как за три взвешивания на весах без гирь среди 12 монет найти фальшивую (отличающуюся от остальных по весу в неизвестную сторону). Для этого при каждом взвешивании на чаши весов нужно класть по 4 монеты. Реализовать такую идентификацию: человек загадывает номер фальшивой монеты и ее особенность (легче или тяжелее других). ЭВМ организует взвешивание, спрашивает, куда отклонилась стрелка весов при каждом опыте, и находит номер фальшивой монеты
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.02.2006 14:32
Сообщение #2


Гость






Ну, так ты же знаешь алгоритм... Проблема с реализацией?
Насколько я понимаю, тройной If ... Then ... Else - вот и вся программа...

Что именно проблематично?
 К началу страницы 
+ Ответить 
Zeratull
сообщение 25.02.2006 8:39
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Как раз с реализацией проблемы.

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

Можете подсказать фрагмент основного кода реализации.
А остальное надеюсь допишу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.02.2006 11:21
Сообщение #4


Гость






Цитата
У меня она что-то слишком громоздкой получается.
Вот и приведи то, что у тебя получается...
 К началу страницы 
+ Ответить 
klem4
сообщение 26.02.2006 21:04
Сообщение #5


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


А что является одним испытанием, когда замер происходит в момент нахождения монет и на правой чаше и на левой ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.02.2006 5:19
Сообщение #6


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(klem4 @ 26.02.2006 21:04) *

А что является одним испытанием, когда замер происходит в момент нахождения монет и на правой чаше и на левой ?

Примерно так:

Входные данные (показываются программой на мониторе, три раза за игру):
- На левой чашке: монеты 1, 2, 5, 12
- На правой: 3, 4, 8, 10
(циферки я написал от балды)

Возможные варианты ответов (игрок отвечает, исходя из того, что он задумал: номер фальшивой монеты и тяжелее она или легче) :
- левая тяжелее
- левая легче
- одинаково

Алгоритм (который автор любезно опустил) весьма непростой. Прежде всего надо определиться с ним. Возможно также, что существует не один алгоритм. Поскольку задача размещена не в Математике, а в Задачах (на Паскале!), то нужно попросить автора темы выложить тут подробное описание алгоритма. И уже по нему делать прогу.. Верно?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.02.2006 15:24
Сообщение #7


Гость






lapp, ты меня извини, но не надо раздувать из мухи слона!
Цитата
Алгоритм (который автор любезно опустил) весьма непростой
Уж куда там... 3 строчки - это уникальный просто по сложности алгоритм... dry.gif

И,
Цитата
Поскольку задача размещена не в Математике, а в Задачах (на Паскале!)
, все дальнейшие рассуждения по поводу сложности алгоритма будут считаться флудом. Я тебя уже предупреждал, кажется? Есть, что сказать по теме - Yor Are Welcome, иначе, извини, I'll have to pull rank!
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.02.2006 18:29
Сообщение #8


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(volvo @ 28.02.2006 15:24) *

lapp, ты меня извини, но не надо раздувать из мухи слона!
Уж куда там... 3 строчки - это уникальный просто по сложности алгоритм... dry.gif

Volvo, ты прав, сложность алгритма тут абсолютно ни при чем.
Да и сам алгоритм тут тоже абсолютно ни при чем.
По некотором размышлении набросал программу-рыбу.
Строчки заполнить нужной информацией..
Конечно, она не оптимальная.. строки зря тратит..
Некоторые комбинации, видимо, не осуществляются (27 строк на 24 ответа).

uses
CRT;

const
cL='l';
cE='e';
cR='r';

type
tAnswer = (N,L,E,R);

var
i:integer;
c:char;
S:array[1..3,L..R,L..R]of string;
F:array[L..R,L..R,L..R]of string;

const
A:array[1..3]of tAnswer=(N,N,N);

begin
S[1,N,N]:='Left: , Right: . What is heavier?';
S[2,L,N]:='Left: , Right: . What is heavier?';
S[2,E,N]:='Left: , Right: . What is heavier?';
S[2,R,N]:='Left: , Right: . What is heavier?';
S[3,L,L]:='Left: , Right: . What is heavier?';
S[3,L,E]:='Left: , Right: . What is heavier?';
S[3,L,R]:='Left: , Right: . What is heavier?';
S[3,E,L]:='Left: , Right: . What is heavier?';
S[3,E,E]:='Left: , Right: . What is heavier?';
S[3,E,R]:='Left: , Right: . What is heavier?';
S[3,R,L]:='Left: , Right: . What is heavier?';
S[3,R,E]:='Left: , Right: . What is heavier?';
S[3,R,R]:='Left: , Right: . What is heavier?';
F[L,L,L]:='False coin is #.. It is ..';
F[L,L,E]:='False coin is #.. It is ..';
F[L,L,R]:='False coin is #.. It is ..';
F[L,E,L]:='False coin is #.. It is ..';
F[L,E,E]:='False coin is #.. It is ..';
F[L,E,R]:='False coin is #.. It is ..';
F[L,R,L]:='False coin is #.. It is ..';
F[L,R,E]:='False coin is #.. It is ..';
F[L,R,R]:='False coin is #.. It is ..';
F[E,L,L]:='False coin is #.. It is ..';
F[E,L,E]:='False coin is #.. It is ..';
F[E,L,R]:='False coin is #.. It is ..';
F[E,E,L]:='False coin is #.. It is ..';
F[E,E,E]:='False coin is #.. It is ..';
F[E,E,R]:='False coin is #.. It is ..';
F[E,R,L]:='False coin is #.. It is ..';
F[E,R,E]:='False coin is #.. It is ..';
F[E,R,R]:='False coin is #.. It is ..';
F[R,L,L]:='False coin is #.. It is ..';
F[R,L,E]:='False coin is #.. It is ..';
F[R,L,R]:='False coin is #.. It is ..';
F[R,E,L]:='False coin is #.. It is ..';
F[R,E,E]:='False coin is #.. It is ..';
F[R,E,R]:='False coin is #.. It is ..';
F[R,R,L]:='False coin is #.. It is ..';
F[R,R,E]:='False coin is #.. It is ..';
F[R,R,R]:='False coin is #.. It is ..';
for i:=1 to 3 do begin
WriteLn(S[i,A[1],A[2]]);
repeat
c:=ReadKey;
case c of
cL:A[i]:=L;
cE:A[i]:=E;
cR:A[i]:=R;
end;
until A[i] in [L,E,R];
end;
WriteLn(F[A[1],A[2],A[3]])
end.



Сообщение отредактировано: lapp - 28.02.2006 18:29


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Zeratull
сообщение 3.03.2006 7:09
Сообщение #9





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


lapp
огромное спасибо. попробую разобраться с прогой.

На одном форуме видел предлагали такое теоретическое решение задачи:
Ссылка: http://diesel.elcat.kg/index.php?showtopic=181464#

Решение в 3 взвешивания ! ! !

Положение чаш весов будут показаны как = , > или <
---------------------------------------------
1. --- Если (1,2,3,4) = (5,6,7,8) то 1,,,8,9,10,11,12
2. --- (9) = (10) то 9,10,11,12,
3. --- (11) = (9) то 11,12
---
3. --- (11) <> (9) то 12,11
-------------------
9,10,11,12
2. --- (9) <> (10) то 11,12,9,10
3. --- (11) = (9) то 9,10
---
3. --- (11) <> (9) то 109
--------------------------------------------
1. --- (1,2,3,4) > (5,6,7,8) то 9,,,12,1,,,8
2. --- (1,2,5) = (3,4,9) то 1,,,5,6,7,8
3. --- (6) = (7) то 6,7,8
---
3. --- (6) > (7) то 6
---
3. --- (6) < (7) то 7
------------------
2. --- (1,2,5) > (3,4,9) то 1,2
3. --- (1) = (9) то 2
---
3. --- (1) <> (9) то 1
-----------------
2. --- (1,2,5) < (3,4,9) то 3,4,5 так как чаши весов теперь склонились в другую сторону, нежели при 1-м взвешивании.
3. --- (3,5) = (9,10) то 4
---
3. --- (3,5) > (9,10) то 3 по результату предыдущего взвешивания
---
3. --- (3,5) < (9,10) то 5
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 9:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"