Средняя зарплата

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Средняя зарплата

Сообщение Циник »

Задача писал(а):Три русских программиста выпили пива в пятницу вечером и захотели узнать свою среднюю зарплату.
Так как все они уже достаточно долгое время прожили в Канаде и были синьёрами, то никто из них не желал выдавать другим свою собственную зарплату.

Могут ли русские программисты посчитать свою среднюю зарплату, не нарушая этого условия, и если могут, то как?
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Re: Средняя зарплата

Сообщение ajkj3em »

Циник писал(а):
Задача писал(а):Три русских программиста выпили пива в пятницу вечером и захотели узнать свою среднюю зарплату.
Так как все они уже достаточно долгое время прожили в Канаде и были синьёрами, то никто из них не желал выдавать другим свою собственную зарплату.

Могут ли русские программисты посчитать свою среднюю зарплату, не нарушая этого условия, и если могут, то как?
илиментарна, тов циник. поскольку они программисты, то
наверняка могут написать простую программу, которая отключает
эхо на консоли и три раза спрашивает зарплату, а потом считает
и показывает среднее. или мы таки не ищем легких путей ? :)
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Re: Средняя зарплата

Сообщение Циник »

drain bamage писал(а):илиментарна, тов циник. поскольку они программисты, то
наверняка могут написать простую программу, которая отключает
эхо на консоли и три раза спрашивает зарплату, а потом считает
и показывает среднее.
Написать, конечно, они могут что угодно, на то они и синьёры. А если они сидят в баре без лэптопов, а ответ хотят знать прямо сейчас? Так что не годится, товарищ.
или мы таки не ищем легких путей ? :)
Ни в коем случае :twisted:
Аватара пользователя
Marmot
Графоман
Сообщения: 39273
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

Надо приравнять допустим 1к$ как какому нибудь нераспознаваемому предмету (1 спичка или 1 цент),
отсчитать необходимое количество предметов и бросить куда-нибудь что-бы не было видно сколько кидаем.
Дальнейшее очевидно...
Только не надо говорить что у русских программистов нету монеток или спичек... :-)
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Сообщение Циник »

Marmot писал(а):Надо приравнять допустим 1к$ как какому нибудь нераспознаваемому предмету (1 спичка или 1 цент),
отсчитать необходимое количество предметов и бросить куда-нибудь что-бы не было видно сколько кидаем.
Дальнейшее очевидно...
Только не надо говорить что у русских программистов нету монеток или спичек... :-)
Отличная идея, товарищ Мармот!

Однако нет ли у задачи более математического, что ли, решения? А то ведь найти в кармане сто спичек или одноцентовых монет может быть не под силу даже русскому программисту :twisted:

Давайте для определенности предположим, что карманы у программистов пустые, а на столе, кроме пива и закуски, лежат только стопка салфеток да пара карандашей.
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Сообщение Alexan »

Каждый подходит к бармену и говорит на ухо свою зарплату, бармен считает и выдает результат. :)
ilid
Завсегдатай
Сообщения: 255
Зарегистрирован: 19 мар 2003, 13:31

Сообщение ilid »

Тут наверно сходимость. Надо подумать, пишу формулы.
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Сообщение Циник »

Alexan писал(а):Каждый подходит к бармену и говорит на ухо свою зарплату, бармен считает и выдает результат. :)
Xoрошая идея, но не годится :twisted:
Русские программисты настолько долго уже живут в Канаде, что не желают раскрывать свою зарплату никому, в особенности бармену :twisted:
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Сообщение Alexan »

Циник писал(а):
Alexan писал(а):Каждый подходит к бармену и говорит на ухо свою зарплату, бармен считает и выдает результат. :)
Xoрошая идея, но не годится :twisted:
Русские программисты настолько долго уже живут в Канаде, что не желают раскрывать свою зарплату никому, в особенности бармену :twisted:
В любом случае если посчитают среднюю зарплату каждый может высчитать сколько в сумме получают другие. Тогда можно сделать так: перый пишет на листочке какую-то сумму, второй не показывая, вычитает из нее свою зарплату, дает результат третьему, третий вычитает свою и выдает результат первому. Первый вычитает свою зарплату, вычитает результат из задуманной суммы и делит на 3.
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Сообщение Циник »

Отлично, товарищ Алексан!
Задача решена.
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

Alexan писал(а):
Циник писал(а):
Alexan писал(а):Каждый подходит к бармену и говорит на ухо свою зарплату, бармен считает и выдает результат. :)
Xoрошая идея, но не годится :twisted:
Русские программисты настолько долго уже живут в Канаде, что не желают раскрывать свою зарплату никому, в особенности бармену :twisted:
В любом случае если посчитают среднюю зарплату каждый может высчитать сколько в сумме получают другие. Тогда можно сделать так: перый пишет на листочке какую-то сумму, второй не показывая, вычитает из нее свою зарплату, дает результат третьему, третий вычитает свою и выдает результат первому. Первый вычитает свою зарплату, вычитает результат из задуманной суммы и делит на 3.
и в результате первый знает сумму зарплат второго и третьего
если уж и randomizировать процесс, то надо пускать бумажку
по кругу два раза - первый раз прибавляем случайные числа,
второй - вычитаем зарплаты и seeds
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Сообщение Alexan »

drain bamage писал(а):
Alexan писал(а):
Циник писал(а):
Alexan писал(а):Каждый подходит к бармену и говорит на ухо свою зарплату, бармен считает и выдает результат. :)
Xoрошая идея, но не годится :twisted:
Русские программисты настолько долго уже живут в Канаде, что не желают раскрывать свою зарплату никому, в особенности бармену :twisted:
В любом случае если посчитают среднюю зарплату каждый может высчитать сколько в сумме получают другие. Тогда можно сделать так: перый пишет на листочке какую-то сумму, второй не показывая, вычитает из нее свою зарплату, дает результат третьему, третий вычитает свою и выдает результат первому. Первый вычитает свою зарплату, вычитает результат из задуманной суммы и делит на 3.
и в результате первый знает сумму зарплат второго и третьего
если уж и randomizировать процесс, то надо пускать бумажку
по кругу два раза - первый раз прибавляем случайные числа,
второй - вычитаем зарплаты и seeds
В любом случае, зная среднюю зарплату можно вычислить сумму зарплат двух остальных.
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

Alexan писал(а): В любом случае, зная среднюю зарплату можно вычислить сумму зарплат двух остальных.
extremely good point :)
торможу-с
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

Сообщение Циник »

drain bamage писал(а):если уж и randomizировать процесс, то надо пускать бумажку
по кругу два раза - первый раз прибавляем случайные числа,
второй - вычитаем зарплаты и seeds
Отлично, товарищ! Это также и "мой" вариант :twisted:

Однако оба варианта обладают следующим недостатком для любого числа N участвующих программистов (N > 3): двум вероломным программистам, сговорившись, легко узнать зарплату одного другого программиста, не раскрывая никому своей собственной (как? :twisted: )

Можно ли модифицировать алгоритм так, чтобы избавиться от этого недостатка?
ilid
Завсегдатай
Сообщения: 255
Зарегистрирован: 19 мар 2003, 13:31

Сообщение ilid »

А вот как:

если зарплаты А1 А2 А3 и А4, то их среднее Ам1234=(А1+А2+А3+А4)/4=((Ам123*3)+А4)/4; таким образом, если 2 вероломных программиста сядут 1-ым и 3-им номером, то первый запомнит сумму начальную, а третий - сумму после трёх зарплат, они следовательно будут знать среднюю зарплату 3 програмистов, а значит и последнего тоже :

А4= Ам1234*4-Ам123*3 - зарплата четвёртого программиста. В общем виде:

АN=Am1..N*N - Am1..N-1*(N-1)

Am1..N - средняя N чисел.

Следовательно 1-ому и последнему программисту нельзя обмениваться данными. :lol:
Ответить