?

Log in

No account? Create an account
kiev

Задача о трех программистах

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

Вопрос: как им узнать среднюю зарплату, не нарушая соглашение о неразглашении, и не прибегая к помощи постороннего доверенного лица?

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

Комменты спрятаны.

Comments

написать программу, где нужно последовательно ввести три цифры, притом что предыдущую цифру не видно?)
Это решение не подходит, потому как по сути программка — это доверенное лицо.
Есть математическое решение, а по сути человек правильно сказал.

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

Потом инспектируют машину на предмет вредоносных закладок и запускают программу.
Окей, пусть они три миллионера, живущие в XVII веке без компьютеров.
но вообще-то им стоит узнать, что зарплата не может составлять коммерческую тайну ))
Почему не может? У меня, например, составляет.
а ты в какой стране работаешь?

если в России то это нарушение закона.
В России. Какого закона нарушение?
закона о коммерческой тайне, закона о труде.

http://www.solidarnost.org/article_new.php?issue=215§ion=78&article=4541 более менее разжевано, сам я не юрист.

как ты представляешь выдачу НДФЛ2 если зарплата - тайна?
Может, и так, да.

Но если мы заменим «коммерческая тайна» на «корпоративная этика», условий задачи это не поменяет.
Можно переформулировать: они хотят узнать среднее арифметическое длин трех своих половых органов. Но расстегивать ширинку при коллегах - некомильфо. Да и вдруг среднее окажется больше их личного показателя?!
Как-то некорректно... А программист может рассказать, сколько будет его зарплата минус десять тысяч?
Вообще, какую информацию он может говорить о своей зарплате?
Нет, не может. Он не может раскрывать любую информацию, которая позволит другим вычислить его зарплату.
По очереди "меняться" компаниями. Чтобы каждый проработал на аналогичной должности в каждой из трёх компаний в короткий период времени.
Не подходит. Так они узнают точную зарплату друг друга :)
Каждый программист загадывает одно из чисел 1, 2, -3. Пишут на доске число, равное своей зарплате+загаданное. Считают среднее. Потом то же самое повторяют для чисел 10, 20, -30. И так далее. Если на доске появится одно и то же число два раза, оно и будет средним арифметическим...Ну это конечно не будет работать если все будут загадывать одно и то же число каждый раз) правда вероятность этого равна нулю.
вообще, решение какое-то простое?)
Пусть первый имеет зарплату X. Он пишет на доске число X1, отстоящее от X не более чем на 3.

На второй итерации он пишет на доске число X2. Второй программист смотрит на число X2. Зная его, он знает, что X равно либо X2 − 10, либо X2 − 20, либо X2 + 30. Ровно одно из этих чисел отстоит от X1 на 3 или меньше — это и есть значение зарплаты первого программиста.
:)
Да, могут пользоваться бумажкой. И шептать на ухо тоже могут.

арифметика в конечных полях по модулю простых чисел ру

а тебя интересует решение с использованием NP-полноты или из класса IP (интерактивный прувер)? :3

Re: арифметика в конечных полях по модулю простых чисел

Я стыдливо промолчу.
пропить три зарплаты в одном баре, сумму по чекам сложить и разделить на три
Кто будет считать сумму по чекам? Бармен? Тогда он по сути доверенное лицо.

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

Выразить сумму в некоторых объектах, в которых она может быть представлена, скажем - приобретениях в этом месяце - кто-то купил машину, и жалуется, что до конца месяца 100 баксов осталось. Так, он как-бы и не говорить конкретную сумму, но можно зная стоимость той же машины к ней прийти. Ну в таком духе примерно :-)

Хотя, наверное, тут что-то посложнее )
Ну это все «как бы» и «примерно». В конце концов, они могут назвать свою зарплату с точностью до 100$. Тогда они будут знать среднюю с точностью до 100$ — но это не решение все-таки.