Пазл "Социальная сеть" - PullRequest
       7

Пазл "Социальная сеть"

4 голосов
/ 05 апреля 2011

В фильме есть аккуратная последовательность Социальная сеть , в которой персонаж пишет скрипт на Perl для получения изображений с веб-серверов женского сообщества в кампусе. Его цель состоит в том, чтобы получить картину для каждого члена каждого сообщества с минимумом пропущенных участников. Как правило, это просто вовлечение его в общий каталог или другие маленькие скачки, например, пустой поиск, который возвращает всех участников, но он описывает один действительно интересный набор и никогда не дает решения для него.

Сайт одного студента позволяет осуществлять поиск и возвращает фотографии для соответствующих участников. Однако, если поиск возвращает более 20 совпадений, ничего не отображается.

Если предположить, что нет другого способа получить доступ к фотографиям и без списка имен членов сообщества, есть ли в этом случае элегантный способ получить хотя бы большинство фотографий участников? Или вообще?

Редактировать: Вот ссылка на сцену из фильма, слегка разрезанная, чтобы показать только части кода.

Ответы [ 5 ]

11 голосов
/ 06 апреля 2011

Поднимите трубку, попросите справочник кампуса и введите эти имена в поиск, чтобы получить участников по одному.

В конце концов, это социальная сеть.

4 голосов
/ 05 апреля 2011

Я не видел фильм, но позвольте мне высказать некоторые предположения:

  • У вас есть поле поиска, которое ищет по имени.
  • Вы не знаете имен членов сообщества.
  • Нет другого способа получить доступ к изображениям (кроме окна поиска).

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

  1. Если вы выполняете поиск по общим именам (и фамилиям), вы можете получить большинство членов.
  2. Если у вас есть время и желание, фактическая грубая сила (буква за буквой и т. Д.) В конечном итоге восполнит пробелы, пропущенные в пункте 1.

Edit: Кроме того, теоретически, если женский клуб достаточно велик и всех зовут «Джейн Смит», решения не будет.

2 голосов
/ 05 апреля 2011
findall(prefix):
   res = set()
   for char in alphabet:
      sresults = search(prefix + char)
      if len(sresults) == 0 and len(prefix) < ABORT_SIZE:
          res += findall(prefix + char)
      else:
          res += sresults
   return res
findall("")

Обратите внимание, что решение займет много времени, если распределение имен не приблизительно равно, потому что оно будет бесконечно перечислять все суффиксы для "ab", если есть 20 человек, соответствующих "abc" и 1, соответствующих "abd". Вы можете изменить ABORT_SIZE, чтобы сбалансировать время и полноту. Он должен быть больше, чем log | алфавит | (n), где n - это (неизвестное) число конечных результатов.

1 голос
/ 05 апреля 2011

Полагаю, вы могли бы использовать своего рода «словарную атаку» - знаете ли вы, что вы можете загрузить все фамилии и / или имена из Бюро переписей США? Другим моим вариантом было то, что предложил @phihag.

0 голосов
/ 06 апреля 2011

У меня здесь есть книга "Случайные миллиардеры", и она цитируется прямо из его Живого Журнала, и ... этого не произошло. Вы знаете, что парень, который написал сценарий, абсолютно ничего не знает о коде, верно?

Из того, что я читаю, он использовал что-то LWP для пауков 'Лоуэлл' и 'Адамс', затем он добрался до 'Данстер', который имеет проблему с 20 результатами, и он пишет: «Я приду Вернуться позже". Так что, насколько я вижу, он мог просто сдаться.

Он также пишет, что «требуется несколько попыток для компиляции сценария».

...