Каков лучший низкотехнологичный протокол для имитации рисования имен из шляпы и обеспечения секретности? - PullRequest
3 голосов
/ 06 ноября 2008

Каждый год на День Благодарения моя семья рисует имена из шляпы, чтобы определить, кто они будут «Тайным Санта» для обмена рождественскими подарками. Для нашей семейной культуры важно, чтобы никто в семье не знал, кого они получили друг от друга, чтобы это было интересно. Единственное правило выбора заключается в том, что вы не можете выбрать своего супруга. Если это произойдет, вы снова начнете рисовать и вернете имя своего супруга в шапку.

Из-за планов логистики и поездок в этом году мы празднуем Рождество рано (всего через две недели после Дня благодарения).

Для того, чтобы у вас было достаточно времени для поиска подарков, мы хотели бы выбрать имена сейчас. Наша семья находится в США. Некоторые члены имеют доступ к Интернету, а некоторые нет (например, моя дорогая бабушка).

То, что я хотел бы сделать, это иметь честный протокол, который имитирует рисование имен из шляпы и обеспечивает некоторый уровень секретности, не будучи слишком сложным. Некоторые веб-сайты, такие как прежний drawnames.com или другие подобные, обычно требуют, чтобы люди указали свой адрес электронной почты. Я хочу быть абсолютно уверенным, что адреса электронной почты моей семьи не будут оскорблены поэтому я не хочу доверять им другой сайт.

Лучший протокол, который я могу придумать:

  1. Напишите программу, которая случайным образом отбирает людей и гарантирует, что люди не получат своего супруга.
  2. Программа покажет мне половину списка, но не покажет мне, кто получил мое имя, но покажет мне, чье имя у меня есть, и человека, который получил имя моей жены.
  3. Затем я выйду из комнаты, и программа отобразит вторую половину списка людей для моей жены (включая тех, кто меня зовут).
  4. Затем мы с женой свяжемся с каждым человеком и сообщим ему, кто у него есть.

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

Ответы [ 11 ]

13 голосов
/ 06 ноября 2008

Возьмите немного бумаги и несколько конвертов. Номер два в каждом конверте и два в каждой бумаге, чтобы у вас было 2 конверта «1» и 2 «1», конверты 2 «2» и 2 «2» и т. Д.

Пусть вы или ваша жена напишите имена каждой пары на соответствующих листах, например: вы можете указать свое имя на листе "1", а ваша жена должна быть на другом листе "1". Адресуйте соответствующий конверт соответствующим образом (ваш адрес будет в обоих конвертах «1» в примере).

Переверните все бумаги и конверты, чтобы не было видно ни одного имени или адреса (вы не не забыли написать цифры на обороте бумаги и конвертов, верно?) Поменяйте местами так что человек, который сделал , а не , пишет вещи конвертами. Просто не забудьте положить каждую пронумерованную бумагу в конверт с другим номером (например, никогда не кладите «1» в конверт «1»). Таким образом, вы будете знать, что A) никто не получил себя и B) никто не получил их значимого другого.

Не каждый ответ должен включать компьютер! Просто спросите ближайшего игрока D & D. : -Р

4 голосов
/ 07 ноября 2008

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

2 голосов
/ 06 ноября 2008

Это программное решение.

  1. Поместите имя и адрес каждого в список.
  2. Сделайте копию списка, затем перемешайте его.
  3. Если какой-либо адрес в исходном списке имеет совпадающий адрес в перетасованном списке, либо перестановите в случайном порядке, либо произведите произвольную перестановку, пока в слотах нет одинаковых адресов в обоих списках. (Делайте это в программном обеспечении, чтобы не заглядывать.)
  4. Печать конвертов в порядке первого списка.
  5. Печать букв в порядке перетасованного списка.
  6. Заполните конверты, не заглядывая.

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

Счастливых праздников.

2 голосов
/ 06 ноября 2008

Что ж, в элементе доверия должен быть элемент доверия, так как вы можете легко обмануть, но если вы хотите просто избежать случайного просмотра назначений подарков, как насчет назначения больших случайных чисел каждому, создайте список для каждого из людей и их кодовые номера, и распечатывать отдельные листы для каждого человека с кодом человека, которого они «рисуют». Таким образом, без необходимости запоминания номера и поиска его в списке, вы, вероятно, интерпретируете «Боб назначен на 0785286741234» как «Боб назначен на Келли». Вероятно, я бы сделал первые и последние несколько цифр одинаковыми для всех, так что вы не можете просто вспомнить, что Боб получил 7 с чем-то, и была только одна случайная запись, начинающаяся с 7. Скопайте различия глубже в числовую строку. Посмотрите, как они «теряются» визуально:

0785253451234 Боб

0785286741234 Келли

0785238761234 Герман

0785200281234 Лидия

0 голосов
/ 19 января 2009

Когда мы обменялись подарками в этом году, я предложил http://www.secretsanta.com. Моя сестра отвечала, и в то время у нее не было подключения к Интернету, поэтому она не использовалась.

Если я правильно помню, он может отслеживать предыдущие годы и может делать исключения, чтобы люди из одной семьи не перебивали друг друга.

0 голосов
/ 28 ноября 2008

Я не знаю, слишком ли поздно для вас. Я только что создал веб-приложение, которое будет очень похоже на это - http://www.secretsantaswap.com/

Вы можете импортировать контакты из Gmail / Hotmail / Outlook и назначать подгруппы, которые не будут сопоставляться друг с другом (например, Билл и Лиза никогда не хотят получать имена друг друга). Я пишу каждому участнику по электронной почте их цель. Участники могут иметь один и тот же адрес электронной почты (например, родитель может получить все электронные письма для своего ребенка).

0 голосов
/ 07 ноября 2008

Простое решение:

  • Запишите каждое имя на карточке и закройте его.
  • Для каждой пары положите одну в стек A, а другую в стек B.
  • Разделите синглы по A и B. (Вы должны знать, кто в каком стеке).
  • Назначьте ноты в стопке B кому-либо в стопке A и наоборот.
  • Если есть нечетное число, держите один из синглов (слепых) отдельно и назначьте его другому. (Существует небольшая вероятность того, что человек получит себя сам), но вы можете противостоять этому, взяв карту самостоятельно и обменяв ее на другую, если это вы.
0 голосов
/ 06 ноября 2008

Используй соседа:

Подготовьте N конвертов с именами на них.

Подготовьте N именных листов, которые включают имена супругов, например,

"Боб (супруга Молвы)"

Затем выйдите из комнаты и попросите соседа сделать случайное совпадение. Presto. Раздайте конверты лицам лично или по почте США

С Рождеством Христовым

0 голосов
/ 06 ноября 2008

Вы можете заставить свой компьютер набирать номера каждого человека через модем и использовать преобразование текста в речь, чтобы объявить его имя в строке после ответа. Это похоже на программы автоматического дозвона, которые используют политические кандидаты и рекламодатели, чтобы воспроизвести вам сообщение. В качестве альтернативы вы можете настроить его так, чтобы ваша семья звонила на ваш номер, а компьютер отвечал. Затем они нажимают кнопки телефона, чтобы написать их имя, а компьютер сообщает им, кого они нарисовали.

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

Существует программное обеспечение с открытым исходным кодом, которое может работать на Linux, хотя я никогда не использовал его. Я предполагаю, что есть эквивалент Windows с открытым исходным кодом.

Я предполагаю, что вся ваша семья имеет доступ к телефону, даже если у них нет электронной почты.

0 голосов
/ 06 ноября 2008

В OS X очень легко воспользоваться преимуществами механизма преобразования текста в речь, просто вызвав утилиту «say» из командной строки. Есть также способы сделать это в Windows.

ПОЭТОМУ вы можете позвонить тому, кто находится в вашем списке, попросить их выслушать, для кого они должны купить подарок, и подключить наушники к компьютеру к телефону, как вы говорите своей программе, чтобы произнести имя, связанное с человек, которому вы звоните. Затем они могут сказать вам, слышали ли они это ясно и что это не их супруг.

...