Портрет 4X_Pro
Был в Сети сегодня, 05:17
Мультиблог
4X_Pro
Записки лишнего человека

Сиюминутное и повседневное

Раздел, где я пишу о прожитых днях, своем текущем настроении и наиболее эмоционально значимых событиях. Является продолжением блога, который я вел в ЖЖ с ноября 2004 по апрель 2018 года.

CodinGame: я в золотой лиге

4X_Pro
Вот и все, конкурс Code a la Mode на CodinGame закончился. Мне удалось совершить качественный скачок! Впервые поднялся в золотую лигу и существенно улучшил результат как в абсолютных, так и в относительных показателях. Итог — 326 место из 1548. Кроме этого, впервые применил алгоритм поиска вширь, а не вглубь, для построения пути. Почему-то раньше мне он казался намного более сложным, хотя потом оказалось, что реализуется он элементарно на основе банального списка, работающего в режиме очереди, без всяких рекурсий (видимо, сказались стереотипы, оставшиеся со времен изучения Pascal и C, где нужно было заниматься реализацией списков самостоятельно). Кроме этого, реализовал один относительно новый для себя подход, который прежде в этих конкурсах не использовал: построение своего рода «виртуальной программы».
Что любопытно, в этом конкурсе я участвовал как-то лениво. Самый первый «жесткий» алгоритм сделал только на третий день. Как это ни странно, его вполне хватило, чтобы подняться в «бронзу» до 24 места. Впрочем, если бы я его адаптировал для последнего типа заказов (TARTS), которые появились в бронзовой лиге, то вышел бы и в серебро.
А потом до четверга не было вообще никаких продвижений. В четверг более-менее серьезно засел за написание более «умного» кода, но только в субботу его закончил, и потом еще весь вечер ушел на отладку. Но сначала результат разочаровал: 42 место в бронзе, хуже, чем у «жесткого». После нескольких доработок удалось повысить позиции до первой десятки, но дальше — никак. Потом добавил одно упрощение: вместо анализа того, что есть на столах, код просто запоминал, куда он сбрасывал незаконченное блюдо, а потом забирал его обратно. И после этого произошел качественный скачок. Когда я сделал submit кода, он еще на 50% игр вышел на первое место (обычно это случается на последних 80-90%), я перешел в серебряную лигу и там тоже сразу оказался достаточно высоко: в районе 40-ой позиции (точно не помню). После некоторых мелких доработок удалось подняться на второе место, но вот бота серебряной лиги победить не получалось. Тут возник сложный выбор: либо довести до ума ту часть кода, которая анализирует столы с блюдами, либо сначала поэкспериментировать с алгоримтмом выбора заказов. Я выбрал второе и после небольших доделок все же прорвался в золотую лигу!
Но вот там алгоритм быстро уперся в предел своих возможностей: примерно 200-ая позиция. Я стал пытаться сделать некоторые мелкие усовершенствования, но эффект был незначителен, так как не понимал, за счет чего другие игроки проявляют себя лучше, что нужно добавить в алгоритм. Потом выявил один баг с расчетом дистанций, но и это помогло не сильно.
Было еще несколько идей, что можно сделать: рекурсивный поиск лучшего пути при разном порядке сбора компонентов вместо «жадного» алгоритма, который хватал то, что было ближе всего в данный момент, довести до ума тот самый алгоритм анализа столов, а также исправить ситуацию, когда мой персонаж берет блюдо, а потом снова ставит его на стол, так как для второго компонента тоже нужны свободные руки, но голова уже не соображала от слова совсем, сказывалась и эмоциональная перегрузка от прорыва, и поздняя ночь, и просто усталость. Поэтому я так и не стал их реализовывать, а взял ту версию, которая показала лучшие результаты, добавил туда пару мелких правок и сделал финальный submit где-то в районе 3:30. И первый раз за все время участия в конкурсах не сидел до последнего, а лег спать как обычно.
Еще тогда же, вечером, пришла в голову мысль, какой вообще должна быть идеальная тактика: один персонаж работает только верхней линии, другой — только на нижней, а все передачи компонентов идут через центральный стол. В этом случае значительно сокращается время на пробег вверх/вниз. Но как реализовать такое в случае, если поведение второго игрока непредсказуемо, пока за пределами моих возможностей.
Тем не менее, конкурсом я очень доволен! Жаль только, что самые интересные идеи пришли в голову слишком поздно. В принципе, их можно было бы реализовать, когда появится multiplayer-версия, но, скорее всего, к тому времени опять снесет потоком жизни, и будет не до этого… Все-таки конкурс своей ограниченностью во времени создает гораздо большую мотивацию, чем просто решение задачи в режиме multiplayerа. Отличный пример того, о чем я писал некоторое время о планах и дефиците времени.

Прогулки и CodinGame

4X_Pro
Опять не успеваю писать в блог. Во многом из-за конкурса, но и других причин тоже хватает. А произошло за эти дни немало интересного.
Во-первых, в среду S0m3Th1nG_AwFul! прислал потрясающую статью про старушку, которая живет практически тем образом жизни, который я пропагандирую: умеет довольствоваться очень малым количеством денег да и вообще всего материального, занимается бесплатной общественно-полезной деятельностью и при этом вполне довольна жизнью. Пожалуй, надо подобные истории собирать, чтобы показывать людям, что жить так — действительно реально.
В среду же я снова ездил на настолки. Но на этот раз впечатления остались противоречивые. Было гораздо более шумно чем обычно. Кроме того, в «Колонизацию» я сел играть с двумя людьми, которые матерились так, что нам даже администраторша заведения сделала замечание, пообещав, что если это не прекратится, то нас просто выгонят из клуба. Было весьма неприятно!
А играли в тот день в «Нечто» и в «Колонизацию» (и еще в CodeNames, но это без меня). В «Нечто» оба раза побеждали мирные (что, впрочем, и не удивительно при таком количестве игроков), но мой вклад в победу был оба раза незначителен. Во второй раз вообще получилось так: нечто был А.Ш., но за всю игру ему не пришла ни одна карта заражения (почему-то большая их часть шла мне).
В «Колонизации» первый раз я особо себя не показал, а вот во второй складывалась ситуация, когда вырвался в лидеры: было 9 победных очков из 10. 6 за города, 2 за самую длинную дорогу и еще одна карта развития с +1 очком в закрытом виде. Но увы, чтобы получить последнее очко, нужно было построить еще две дороги и поселение, а ресурсы для этого шли совершенно неподходящие: пшеница и камни. Глина за игру выпадала всего один раз, а дерево — очень неравномерно: то за один ход приходит 4 штуки, то долго нет. И тут один из игроков, который до этого был в отстающих, за один ход построил дорогу и поселение. В результате у него получилась дорога из 7 частей, он отобрал 2 очка за дорогу у меня, а потом еще вскрыл карту развития. И в результате за один ход с 6 очков переместился до 10, а меня отбросил до 7.
В четверг я проснулся по будильнику достаточно рано (в своем понимании) и собирался было воспользоваться отличной погодой и отправиться на прогулку на Воробьевы горы. Но с другой стороны, хотелось отложить, так как с одной стороны, слишком сильно не выспался, а с другой — нужно было писать код для CodinGame. В результате остановился на промежуточном варианте: решил отправиться на Терлецкие пруды, а по дороге еще зайти на почту и отправить документы, связанные с ИП-деятельностью. Но как всегда, прособирался, и пришел в парк тогда, когда уже начинало темнеть, что значительно уменьшило впечатления от прогулки.
А в пятницу мы с Tellой решили прогуляться в районе Китай-города. Она была там незадолго до этого и нашла немало интересных мест, и решила показать их мне. Сначала планировалось, что прогулка будет небольшой: час или полтора, а потом я отправлюсь домой и займусь доделкой программы для CodinGame. Но получилось как всегда все не так как ожидалось. Сначала нормально прогулялись, увидели несколько старых церквей, впервые побывали на легендарной Хитровке, потом вышли к Чистым Прудам и решили найти какое-нибудь кафе, где можно было бы засесть. Но пока шли, случился крайне неприятный для меня момент в разговоре, причем, как обычно, сразу она этого не заметила (вот, она, обратная сторона психософского квазиэроса). В результате Tella распереживалась до крайности, а я наоборот, пытался уйти в себя по максимуму, чтобы успокоиться, но не получалось. И потом мы еще долго сидели и обсуждали этот момент. Нельзя сказать, чтобы прямо так ругались, но получилась эмоциональная перегрузка.
В результате я и домой позже вернулся, чем рассчитывал, и совершенно не мог сосредоточиться на коде. И только в субботу вечером удалось заставить алгоритм работать. Но об этом — в следующем сообщении

Снова CodinGame: конкурс Code a la Mode

4X_Pro
Опять участвую в конкурсе на CodinGame под названием Code a la Mode. На этот раз задача достаточно необычная: нужно не пытаться обыграть второго игрока, а вместе с ним показать более хороший результат, чем этот же игрок в паре с третьим. При этом вторым игроком управляет алгоритм, о котором ничего не известно, кроме возможности наблюдать уже выполненные его действия.
Конкурс длится 10 дней, причем первые полдня я частично пропустил, не вспомнив о нем своевременно. Потом дело шло весьма медленно: в пятницу я только-только разобрался с условиями, в субботу набросал пробный вариант простого, достаточно жестко закодированного алгоритма, но так и не решился его протестировать (как всегда, внутренне сопротивляюсь первому запуску и связанному с ним разочарованию). В воскресенье все же собрался. Как это ни странно, заработало достаточно быстро, из третьей «дубовой» лиги я вышел с первой попытки, из второй — после некоторых достаточно быстрых доделок. Вот с первой пришлось повозиться: добавились новые правила, которые существенно изменили ситуацию.
В итоге получилось как всегда: засиделся до 5 утра, но смог подняться только до 4 места. Решил лечь спать, а утром обнаружил, что все же прошел в бронзовую лигу. Наскоро добавил в алгоритм несколько «костылей» для обработки тех правил, которые добавились при переходе, и сумел подняться до 240 места. Теперь вот думаю, что лучше: попытаться доделать уже существующий алгоритм, заменив «костыли» на нормальную обработку одной ситуации, и посмотреть, что будет (по идее, этого окажется достаточно, чтобы прорваться в серебряную лигу), или садиться писать новый, более гибкий,  который пришел мне в голову вчера вечером.
Кстати, впервые мне удалось подняться в бронзовую до открытия серебряной (если не считать одного двухэтапного конкурса).

Об акцентуациях или Фундаментальное противоречие №2

4X_Pro
Недавно осознал, что у меня в течение жизни дважды менялась ведущая акцентуация. Класса до 6—7 я был явно выраженным истероидом. Потом превратился в шизоида. По всей видимости, это связано с переходом с первого уровня развития личности по Подводному на трейти (второй я тогда благополучно проскочил). А где-то то ли после Второго подключения, то ли после Великого Излома 2006 года на первое место вышла параноидная акцентуация, которая до сих пор является ведущей.
Так вот, мое мировоззрение формировалось во времена шизоидной акцентуации, где ключевой установкой было «как можно меньше взаимодействовать с враждебным оффлайновым миром, в частности, не участвовать в конкуренции». А когда акцентуация сменилась, главной целью стало «переделать мир так, чтобы снизить уровень конкуренции, а критерием качества жизни считался уровень гармонии с собой».
А противоречие заключается вот в чем: чтобы переделывать мир, нужно с ним взаимодействовать, но это — ухудшение качества жизни, так как качество своей я по-прежнему оцениваю по «шизоидным» критериям.

Третье фундаментальное противоречие

4X_Pro
Сегодня во втором настолочном чате состоялась очень интересная дискуссия, в ходе которой я осознал глобальное противоречие №3 в своей системе мировоззрения (нет, я не ошибся с нумерацией, противоречие №2 существует, и я как раз вчера хотел его описать, но так и не собрался).
Если конкретно, я отстаивал следующую позицию: неправильно, когда цель начинает изменять личность, заставляя ее делать то, что ей не свойственно. Тогда как на самом деле должно быть все в точности наоборот: личные качества и склонности должны определять цели, за которые берется человек. И, соответственно, как только цели начинают требовать делать то, что вызывает внутреннее неприятие, противоречит личностным качествам или системе ценностей, в жертву должны приноситься именно цели, а не все вышеперечисленное.
Оппонент же считал, что изменение и преодоление личностных ограничений — это путь к росту, и указал на то, что во всех восточных учениях конечной целью является именно стирание личности вообще. Для меня эта идея полностью чужда, и на этом мы и разошлись.
Чуть позже разговор вернулся к теме покупок и статуса (с которого все и начиналось). Как обычно, я писал о том, что делать покупки ради статуса и повышения своей ценности — это неправильно, и вообще проявления «рангового инстинкта» и должно всячески ограничиваться человеческим началом, то есть культурой. Оппонент же на это привел аргумент «вот у меня много настолок, и это для определенного круга людей повышает мою ценность, а другие, наоборот, считают меня из-за этого идиотом». На это я сказал, что главным критерием опять же должна являться согласованность со своей личностью. То есть покупка чего-то потому что фанатеешь с этого, получаешь удовольствие от пользования — нормально и заслуживает одобрения.
На что он возразил, что человек реально может фанатеть с покупки, тогда со стороны как мне будет казаться, что он покупает ее ради статуса. Тут уже я задумался: а ведь и правда, возможны самые разные сочетания. Например, человеку может убеждать себя (с той или иной степенью искренности), что ему нравится сама вещь, в то время как на самом деле ему нравится внимание окружающих, которое она вызывает. И как вообще провести границу?
А третье фундаментальное противоречие заключается вот в чем: с одной стороны, я считаю, что тяга к статусу (тот самый «ранговый инстинкт») должна максимально ограничиваться культурой, с другой — в мире, где базовые потребности удовлетворены (через БОД или его аналоги) именно желание проявить себя перед окружающими будет главной движущей силой, главным мотивом любой созидательной деятельности. Правда, частично его можно снять через дополнительное условие: статус должны давать только то, что сделано самостоятельно, а не куплено за деньги. Но тем не менее, сам факт существования этого противоречия я раньше не осознавал вообще.

День, когда я не пошел на настолки

4X_Pro
Сегодня в очередной раз собирался пойти на настолки в «Гарцующий дредноут». Но как-то не сложилось. Сначала нашел вроде бы толковую книжку по алгоритмам и стал читать, потом — решил проверить, как обстоит дело с позициями сайта Intellect Board по запросам типа «скачать форумный движок на php». По-прежнему ничего хорошего. Впрочем, по этому запросу выдача забита каталогами скриптов и обзорами периода 2008—2011 годов. И видеть это очень печально: возникает ощущение, что скрипты больше никому не нужны, а сайты сейчас делают только на всяких Joomla и Wordpress. Но все же один более новый сайт мне попался. Называется он Toxu.Ru и по формату похож на Quora. Там была тема 2018 года, где делились информацией о форумных движках, и я решил закинуть ссылку на свой, так как увидел, что один участник там выложил ссылку на свою разработку, и там восприняли это нормально. Зарегистрировался, но оказалось, что в той теме сразу отвечать возможности нет. Написал пару комментариев в другие темы, после чего появилась возможность отписаться и в той теме. Потом обнаружил, что там можно получить сертификат, пообщавшись с ботом и пройдя краткую демонстрацию возможностей сайта. Не упустил возможности это сделать. Пока прошел, обнаружил, что мои сообщения набрали немало лайков, и решил написать еще несколько. В общем, то сообщество мне понравилось, и я всерьез подумываю, что надо там появляться регулярно. А еще убедился, насколько важна лента с информацией о лайках/ответах и PUSH-уведомления. Пожалуй, в IntB нужно тоже нечто подобное сделать будет.
Когда закончил со всем этим, обнаружил, что времени уже около 20 часов. А кроме того, на настолки не придут Ал.С. и К.Ш., что означало, что не будет «японского Бэнга» и «Нечто». Решил дождаться сообщения от Tellы, которая все же сегодня поехала. Она написала, что играют в Codenames. Хоть к этой игре я отношусь хорошо, но все же это явно не то, ради чего захотелось бы вылезать из дома. И в итоге так никуда и не поехал, вместо этого сел играть в World of Tanks. Но дело шло так себе: то побеждали, но мой вклад в победу был незначительным, то наоборот: оказывался на первых местах по опыту и урону, но команда эпично сливалась.

Почему возникает ощущение «я ничего не успеваю»?

4X_Pro
Странное дело: вроде бы когда сижу в Интернете, большую часть времени ничего важного не делаю. Но если по каким-то причинам провожу несколько дней без него (в позапрошлые пятницу и воскресенье устроил себе дни оффлайна, а в прошлые вторник, среду и четверг большую часть дня провел вне дома), то сразу же возникает очень неприятное чувство «ничего не успеваю!». Или даже так: «нииичего неее успееееваааю!!!». И нужна потом пара дней безвылазного сидения в Сети, чтобы от него отделаться.
Впрочем, кое-что я все же успел. Во-первых, вчера ночью доделал один проект, который висел надо мной с конца прошлого года. Впрочем, все равно кое-какие мелкие доделки еще остаются, но они мелкие и потому не воспринимаются как страшные, в отличие от проекта целиком. Во-вторых, разобрался как в Joomla и Wordpress делать асинхронное подключение скриптов и CSS, не залезая в основной код, а редактируя только шаблоны. Если все же решусь заняться оптимизацией скорости загрузки сайтов на платной основе, пригодится. В-третьих, нашел несколько интересных статей, которые хочу закинуть в соционическую сеть. Точнее, две уже закинул, по одной все никак не соберусь создать тему, так как там надо высказаться развернуто.
Так что сегодня наконец-то появилась возможность замедлить жизнь и провести день неспешно, в созерцании. Впрочем, еще пару мелочей тоже сделал. Заплатил взносы за первый квартал (эх, опять жизнь меняется в худшую сторону: они ощутимо выросли). Заодно узнал, что Эльба научилась интегрироваться с банком, которым я пользуюсь, и настроил эту интеграцию. Хотя, в принципе, в моем случае это толком ничего не даст, кроме экономии пары нажатий на клавиши. И еще пересобрал дистриутив Intellect Board со всеми исправлениями, что сделал там с января.

Очень позитивный день

4X_Pro
День сегодня получился очень удачным! Во-первых, съездил в «Дредноут» на настолки. Поиграли очень классно, даже несмотря на то, что я ни разу не выиграл. Играли в «Колонизацию», «японский Бэнг» и, в самом конце, в «Нуар» (игра, которую я толком не понимаю). Во-вторых, еще раз обновился рекорд посещаемости этого сайта — теперь уже 158 уник.виз. за сутки. (Интересно это покупка нескольких ссылок на трастовых сайтах повлияла так сильно или же рост чисто естественный?)
А еще я решил снова вернуться на NetBeans в качестве основной IDE. Komodo Editor, штука, конечно, хорошая, но некоторых возможностей мне в нем не хватает, а также очень раздражает то, что не работает комбинация Shift+Del (да, я знаю про Ctrl+X, но не могу себя к нему приучить). Оказалось, что за это время уже появилась 10-ая версия, в то время, как в Lubuntu через apt все равно доступна только 8-ая. Поставил, попробовал. Первые впечатления вполне хорошие, не считая того, что стартует дольше и памяти жрет больше (Komodo — 248, NetBeans — 760 при том, что в первом открыто больше файлов).
И буквально в последний момент обнаружил, что обновился ИКС. У этого сайта он подпрыгнул с 60 до 110! А вот у большинства соционических — просел до 20, только у Socionics.me, наоборот, вырос до 30. Судя по всему, для ИКС теперь важно, чтобы сайт регулярно обновлялся.
В Конкурсе Созидательного Интеллекта пришло приглашение в так называемый Управленческий Десант. Правда, потом выяснилось, что там хотят скан паспорта, поэтому получилась какая-то ерунда: вроде бы я и согласился, но паспорт загружать не стал. Вроде пишут, что даже так возможно участвовать в каком-то ограниченном режиме, так что посмотрим, что из этого выйдет.
В общем, очень доволен прожитым днем!

Антирекорд сна

4X_Pro
Опять установил антирекорд сна: проснулся в 16:45, проспав тем самым более 10 часов. Когда включил свет, сначала подумал, что это будильник по каким-то причинам стал неправильное время показывать. Но потом нашел планшет, посмотрел время на нем и понял, что нет, это реально столько времени. С чем это связано, не понимаю совершенно: вроде вчера выспался нормально, накопившихся недосыпов не было. Видимо, что-то с погодой или магнитными бурями.

Откуда берутся периоды спада?

4X_Pro
Утром задумался над вопросом, почему у меня во многих играх получается так: постепенный рост периодически сменяется периодами катастрофического падения результатов, когда начинаю без видимых причин проигрывать раз за разом, допуская предельно глупейшие ошибки. Такое происходит достаточно долго, пока я не скатываюсь к изначальному уровню (или даже ниже), потом все стабилизируется и снова начинается рост. Сначала я обратил внимание на это в World of Tanks (там после НГ был такой момент с немецкой ПТшкой, где я съехал с 54% до 46%, а недавно — с французской артой). Но там я это списывал на «происки врагов народа», то есть либо то, что есть недели, неблагоприятные для техники той или иной нации или вида техники (в смысле, что сама игра начинает жульничать, увеличивая число промахов и т.п.), либо балансировщик, видя, что у меня показатели выросли, помещает меня в команды более слабых игроков для уравновешивания результатов.  Нечто подобное не раз наблюдалось и в Wikium, но там я был уверен, что за любое уменьшение ИП тренажера добавляется искусственный штраф к общему показателю.
Но сегодня я вдруг вспомнил, что и в шахматах на Mail.Ru у меня происходило то же самое! Тоже несколько раз дорастал до рейтинга выше 1800, а потом сваливался ниже 1700 чередой непрерывных проигрышей. Но там на уровне игры жульничать просто негде (да и незачем)! То есть это реально что-то происходит со мной! Да и в Клавогонках тоже подобное наблюдается: иногда случаются дни, когда вообще не получается набирать в безошибочном режиме. Просто там последствия не столь существенны, поэтому я и не обращаю на это внимание. Да и в школе (по крайней мере, в 10-11 классах) у меня было так: равномерно разбросанные четверки-пятерки, которые вдруг в какой-то момент сменяются столбцом троек. А потом снова четверки-пятерки.
И вот возник вопрос: с чем же это связано и как научиться выходить из таких спадов досрочно? Есть несколько версий:
  1. Упорство. В благоприятные дни, выиграв несколько раз, я решаю «на сегодня хватит» и переключаюсь на что-то другое. В неблагоприятные (например, в случае недосыпа, магнитных бурь или просто низкого давления) начинаю упорно пытаться отыграться. В результате за день играю значительно больше партий, чем обычно, но из-за неблагоприятных факторов вероятность проигрыша растет, плюс еще возникает положительная обратная связь: чем больше я проигрываю, тем больше злюсь и ошибаюсь, и начинаю еще больше проигрывать.
  2. Переоценка своих возможностей. Видя, что я начал выигрывать, решаю, что наконец-то стал крутым игроком, и начинаю действовать более рискованно и менее продуманно. Скажем, в тех же шахматах начинаю играть с более сильными соперниками и меньше думать над ходом, в танках — ломиться вперед там, где в других обстоятельствах пересидел бы и подождал. И вообще, если вспомнить книгу Канемана, переключаюсь со второй (достаточно энергозатратной) системы на первую, дающую быстрые, но часто ошибочные решения.
  3. Это работа «малого сценария», который Мик называл сизифовым. То есть существует какая-то бессознательная установка не превышать определенного уровня, и когда он достигается, бессознательное начинает работать на то, чтобы свалиться.
  4. Опять же переоценка своих возможностей, которая ведет во впадание в грех Закрытости, что приводит к ухудшению работы интуиции, на которую я в играх полагаюсь гораздо больше, чем на логику.
Но какая из них истинна — загадка…

Страницы:
Задать вопрос

Здесь можно задать мне вопрос или спросить совета по любой теме, затронутой в блогах или на форуме. После того, как я отвечу, вопрос и ответ появятся в соответствующем разделе. Но не забываем, что я — сторонник slow life, поэтому каких-либо сроков ответов не обещаю. Самые интересные вопросы станут основой для новых тем на форуме или записей в блоге.
Сразу предупреждаю: глупости, провокации, троллинг и тому подобное летит прямо в /dev/null.