Забыть кого-то сложно. Даже когда вы думаете, что вы вроде как забыли кого-то, в нашем мозгу есть кнопки, ожидающие активации, которые посылают волны воспоминаний, связанных с этим человеком (которого мы будем называть «Y» в дальнейшем) . Триггер возникает, когда мы посещаем какое-то конкретное место или делаем что-то, что обычно ассоциируется с «Д». Иногда он также срабатывает без особой причины. В любом случае, это нехорошее чувство, когда срабатывает спусковой крючок, и вы снова возвращаетесь к исходной точке, думая о «Y», когда вы ясно знаете, что должны были полностью забыть этого человека к настоящему времени.
Сегодня я довольно долго думал об этом, может быть, я обязан алкоголю в моей крови за то, что все вместе пришли к этой мысли. В этой смутной мысли я представляю свой глупый маленький мозг чем-то похожим на операционную систему (ОС), которую я хорошо контролирую. Мы только что определили способ переопределить ОС, которая в основном делает ерунду, которая не имеет смысла и полна неустойчивого поведения. Благодаря самой передовой технологии программирования мозга мы теперь можем отправлять патчи, которые изменят поведение и настройки по умолчанию.
Создание первого патча
Примечание. Все патчи должны быть написаны на новом языке программирования, который будет называться BrainFuck2.
Первый патч должен был решить эту проблему забывания кого-то. Когда мы действительно уверены, что нам нужно полностью забыть кого-то, нам нужен механизм для этого, и давайте сделаем это раз и навсегда.
Требование
- Разработайте подпрограмму FORGET_PERSON(String Name), которая будет принимать имя человека в качестве аргумента от пользователя.
- Подпрограмма при вызове должна удалить все воспоминания, связанные с человеком, чье имя передается в качестве аргумента.
- Подождите секунду, мы не хотим сразу стирать все воспоминания. Нам нужно что-то вроде всплывающего окна, чтобы оно отображалось как мысленный образ.
- Всплывающее окно в этом случае может быть видео (похоже на видео в конце года, которое создает Facebook), фоновая музыка может быть грустной.
- Пользователю должно быть предоставлено 42 секунды, чтобы решить, хочет ли он продолжить безвозвратное удаление всех воспоминаний, если пользователь отступит, подпрограмма должна выйти и передать управление обратно основной программе.
- Если пользователь с тяжелым сердцем решил пойти с этим или если пользователь не принял решение в течение 42 секунд, инициируйте процесс безвозвратного удаления всех воспоминаний, связанных с Y.
- Процесс стирания памяти должен происходить в ночное время во время сна, а когда пользователь просыпается на следующее утро, человек Y должен быть для пользователя совершенно незнакомым человеком.
- Не облажайся.
Грубый план
Шаг (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.