Забыть кого-то сложно. Даже когда вы думаете, что вы вроде как забыли кого-то, в нашем мозгу есть кнопки, ожидающие активации, которые посылают волны воспоминаний, связанных с этим человеком (которого мы будем называть «Y» в дальнейшем) . Триггер возникает, когда мы посещаем какое-то конкретное место или делаем что-то, что обычно ассоциируется с «Д». Иногда он также срабатывает без особой причины. В любом случае, это нехорошее чувство, когда срабатывает спусковой крючок, и вы снова возвращаетесь к исходной точке, думая о «Y», когда вы ясно знаете, что должны были полностью забыть этого человека к настоящему времени.

Сегодня я довольно долго думал об этом, может быть, я обязан алкоголю в моей крови за то, что все вместе пришли к этой мысли. В этой смутной мысли я представляю свой глупый маленький мозг чем-то похожим на операционную систему (ОС), которую я хорошо контролирую. Мы только что определили способ переопределить ОС, которая в основном делает ерунду, которая не имеет смысла и полна неустойчивого поведения. Благодаря самой передовой технологии программирования мозга мы теперь можем отправлять патчи, которые изменят поведение и настройки по умолчанию.

Создание первого патча

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

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

Требование

  1. Разработайте подпрограмму FORGET_PERSON(String Name), которая будет принимать имя человека в качестве аргумента от пользователя.
  2. Подпрограмма при вызове должна удалить все воспоминания, связанные с человеком, чье имя передается в качестве аргумента.
  3. Подождите секунду, мы не хотим сразу стирать все воспоминания. Нам нужно что-то вроде всплывающего окна, чтобы оно отображалось как мысленный образ.
  4. Всплывающее окно в этом случае может быть видео (похоже на видео в конце года, которое создает Facebook), фоновая музыка может быть грустной.
  5. Пользователю должно быть предоставлено 42 секунды, чтобы решить, хочет ли он продолжить безвозвратное удаление всех воспоминаний, если пользователь отступит, подпрограмма должна выйти и передать управление обратно основной программе.
  6. Если пользователь с тяжелым сердцем решил пойти с этим или если пользователь не принял решение в течение 42 секунд, инициируйте процесс безвозвратного удаления всех воспоминаний, связанных с Y.
  7. Процесс стирания памяти должен происходить в ночное время во время сна, а когда пользователь просыпается на следующее утро, человек Y должен быть для пользователя совершенно незнакомым человеком.
  8. Не облажайся.

Грубый план

Шаг (i): Первое, что должна сделать подпрограмма, — это получить информацию о том, как пользователь впервые встретил Y, процесс должен будет получить временную метку этого события. Назовем это значение Alpha_Moment.

Шаг (ii). Аналогичным образом получите Omega_Moment, который будет отметкой времени для последней памяти, которой владеет пользователь, связанной с «Y».

Шаг (iii): Теперь все, что нам нужно сделать, это найти все воспоминания, связанные с «Y» в этих двух временных диапазонах (Alpha_Moment и Omega_Moment), и удалить их одно за другим.

Преждевременная оптимизация — корень всех зол

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

Лучшая структура данных?

{ Человек А:

[Первый раз встретились во время поездки в поезде,

………………………………………………………………………………….

Стать друзьями ,

…………………………………………………………………………………….

Позвонили в канун Нового года, проговорили 20 минут]

Человек Y:

[Встретились впервые,

Впервые заговорил,

…………………………………………………………………………………….

Решил забыть раз и навсегда]

}

Эта новая структура данных будет называться PEOPLE_IN_MY_LIFE.

Мой первоначальный анализ говорит мне, что это будет своего рода HashMap/словарь с комбинацией изображений и имен людей в качестве ключа.

Значением будет связанный список, где первое воспоминание, связанное с человеком, будет началом связанного списка, а последнее воспоминание будет хвостом. Должно быть задание cron или что-то подобное, которое запускается ежедневно во время сна, которое обновляет этот связанный список.

Выполнение

(i) Подпрограмма FORGET_PERSON() вызывается с Y в качестве аргумента.

(ii) Мы выполняем поиск O(1) в структуре данных PEOPLE_IN_MY_LIFE.

(iii) Если ключ найден, удалите все содержимое связанного списка. Все сохраненные воспоминания мгновенно удаляются.

(iv) Если по какой-либо причине пользователь попытается получить доступ к пустому значению, присутствующему в структуре данных для лица «Y», с помощью вызова, такого как

ЛЮДИ_IN_MY_LIFE.get('Y')

or

ЛЮДИ_В_МОЕЙ_ЖИЗНИ['Д']

пользователь должен быть перенаправлен на страницу мысленного изображения 404 с вставленной ниже мыслью

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

Мы почти на 100% уверены, что вы не знаете этого человека из своего прошлого.

Искренне Ваш,

Головной мозг

Время для размышлений

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

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

Кстати, нахуй BrainFuck2.