Chat:Ru/2020-09-07
gsomix: Доброе утро.
gsomix: Uljahn, получается, что на питоне из-за низкой производительности приходится искать хорошие эвристики?
gsomix: Кажется, это не менее интересно, чем реализация поиска. :)
Uljahn: да, либо изворачиваться с помощью numpy/scipy
Uljahn: поиск - это надёжно, но нужно иметь отлаженную симу и запас по быстродействию
gsomix: Хорошо, что контесты развиваются, и в последних можно занять высокое место без высокой производительности поиска.
gsomix: Ну, я сужу по лидербордам.
Uljahn: когда-то давно рефери для контестов не выкладывали, "поисковикам" приходилось реверсить и отлаживать симу, что немного уравнивало шансы
Uljahn: а теперь если метишь в топ - нужно знать плюсы, иметь в запасе библиотеку реализованных алгоритмов и шарить в битбордах и прочих оптимизациях (AVX), чтобы больше симуляций проворачивать
gsomix: Зависит от того, в какой топ метишь. :)
gsomix: Если в топ 50, то уже необязательно знать C/C++/Rust, можно пролезть с C#/Java/Go.
Uljahn: обычно тут за майки борются, т.е. топ-20 :)
gsomix: Я буду радоваться, если до голды доберусь в предстоящем контесте.
gsomix: Последний раз участвовал в каких-либо соревнованиях еще на младших курсах.
Uljahn: сложность попадания в голду будет от контеста зависеть, если физика или кооператив как в CalM - то можно и в легу закатиться будет на питоне
vrabosh: чем разнообразней задача, тем проще на питоне, где только одним универсальным алгоритмом не обойтись.
BorisZ: я давно говорю что все новые контесты специально делают такими чтоб были у всех шансы
BorisZ: последний чисто сима + перебор был xmas rush - в 18 году, потом политика поменялась целенаправленно
BorisZ: всегда либо слишком много вариантов - нет смысла перебирать, либо какой-то туман войны
BorisZ: какие-то поиски-переборы нужны, но они только часть игры, есть другие аспекты всегда
BorisZ: либо действия врагов так сильно влияют на игру что нет смысла далеко считать, как в корабликах или пакмане
BorisZ: а то что в топе плюсов больше - это просто следствие того что мотивированные на победу на плюсах начинают сразу, на всякий случай
Uljahn: на какой случай? :smirk:
BorisZ: ну если понадобится перебирать
BorisZ: да и привычка просто
Uljahn: ну, это явное противоречие
BorisZ: все равно шансы на победу зависят от опыта, а опыт набирался на соревнованиях где надо было на плюсах писать
BorisZ: нет противоречия, допустим начал чел участвовать на КГ в 15 году, писал на питоне, видит что в каждом контесте нужна производительность
BorisZ: перешел на плюсы, результаты улучшились, все настроено уже, куча заготовок есть, он и не будет на питоне начинать контесть в 20 году
BorisZ: у него и опыт и мотивация - они займет место где-то в топе
735487: согласен. я когда пересел на плюсы то теперь их и юзаю. питон теперь для клешей только. и еще пару штук на руби выучил иногда на нем пишу клеши если шорт надо
Uljahn: хочешь сказать, что поиски-переборы нужны, но можно и за счёт других аспектов выйти в топ? и от языка это не зависит?
735487: когда поиск осложнен можно за счет хорошей эвристики вырулить. он это имел ввиду наверное
Uljahn: ну, давайте на питоне следующий контест пилить, кто за? :)
735487: хотя вот в корабликах и поиск смогли какой никакой
735487: не я не буду на питоне )) я нампи не умею
BorisZ: не так немножко, поиск нужен, но результат не сильно улучшится если ты переберешь не 100 вариантов а 3000 например
BorisZ: в старых контестах эти дополнительные 2900 сим давали 90% результата, в новых - только 10% результата
BorisZ: ну цифры от фонаря понятно что )
Uljahn: это слишком субъективно
BorisZ: ага
BorisZ: я ж не претендую на знание истины - это субъективное мнение)
BorisZ: в последних контестах я почти уверен что на питоне можно было в топ 10 условно войти, во всех практически
Uljahn: на 90% уверен? :smirk:
BorisZ: ну я просто читал постмортемы, там идеи попадались, которые мне даже в голову не приходили, они бы точно буст давали
Uljahn: моё мнение - что перекос в сторону переборов никогда не делся, новичков всё так же подталкивают учить плюсы
Uljahn: *никуда
vrabosh: а какой перебор надо был в пакмане?
BorisZ: Uljahn да конечно есть приемущество, но раньше оно было подавляющим, сейчас просто небольшой гандикап)
BorisZ: vrabosh пути надо было перебирать, чтобы побольше точек съесть и об других пакманов не биться
vrabosh: так графы же есть. в чем и прелесть питона, заставляет думать подругому
vrabosh: у меня они друг н друга не били. хотя я не перебирал.. только графы строил.. а там не много ресов кушало..
vrabosh: я думаю, тот кто крутецки шарит в графах, в алгоритмах трафика, менеджмента, думаю круто бы запилил на этом.
BorisZ: я перебирал, сначала искал лучший для одного, потом лучший для остальных с учетом того что первый занят уже и так далее
vrabosh: а я от каждого волну кидал, сомирая монетки и как далеко до них идти, а там где пересекались с другими занижал идти туда.. в итоге они разбредались хорошо в разные стороны и не мешали.
vrabosh: в нампи удобно всякие перемножения итд пделать с матрицами
BorisZ: а некоторые моменты у меня вобще не были сделаны, которые топы описывали
BorisZ: съедание врага в тупиках и с двух сторон, чтобы самого в тупик не загнали
BorisZ: вычисление где враг точно побывал и еды там нет - у меня только самые очевидные случаи
vrabosh: ну эти фишки для того, чтоб бороться за топ нужны, а чтоб в легенду попасть надо базовую стратегию оточить, а не на этих фишках выезжать как по мне
BorisZ: а были всякие хитрые как описывали в постмортемах
BorisZ: ну я и говорю - если учесть все эти мелочи, то можно на питоне в топ10 точно, даже если перебираешь в 20 раз меньше вариантов
BorisZ: чем на плюсах
BorisZ: это тоже что-то дает, но немного, слишком далеко заглядывать нет смысла
vrabosh: я не утверждаю, но мне кажется если на графах прям по науке все сделать, то можно и в топ1
gsomix: Uljahn, я не против питона, конечно, но статическая типизация навсегда забрала мое сердце. :)
gsomix: Учитывая, сколько я опечаток делаю даже при поддержке IDE и компилятора.
vrabosh: хотя возможно поиска идал пути когда можно ходить через теже перекрески и затратная штука.. я хз
Uljahn: gsomix: это я не тебе предлагал, а тем, кто считает, что у плюсов "просто небольшой" гандикап, и что топ-10 на питоне вполне реально было
gsomix: Я просто в воздух что-то ответил, не обращай внимания. :)
gsomix: Uljahn, а с numba уже можно было посоревноваться почти на равных?
Uljahn: "почти"
Uljahn: с джавой и шарпом, наверное, можно
gsomix: Ок.
gsomix: Хорошо, для меня топ все равно недостижим и не является целью. Могу в свое удовольствие писать медленный код под .NET :)
MelnikovIgor: gsomix: какой паззл решаешь?
Uljahn: теперь и в голду стало труднее выходить - все подряд стримят ботов уровня голды, а проверка копипасты работает только для леги
gsomix: MelnikovIgor, пока никакой. Недавно возился с Tron Battle, но ничего сложнее Вороного не писал.
gsomix: Я полный ноль в алгоритмах поиска. :)
BorisZ: мои поинт примерно такой - главное не производительность языка, человек - его опыт + глубина погружения/задротства. Если заставить тех кто занимают топ 10-20 регулярно писать на питоне, то лидерборд не сильно поменяется
Uljahn: это гипотезы
BorisZ: конечно гипотезы, но основания под ними есть
gsomix: MelnikovIgor, у тебя крутые позиции в рейтингах на C#.
BorisZ: просто посмотреть контесты за последние полтора года и увидеть что скриптовые языки либо есть в топ 10 либо от 10 их отделяют 1-2 очка рейтинга
BorisZ: и сравнить со старыми контестами
BorisZ: прогресс очевиден
Uljahn: по сравнению с GitC - не очевиден
BorisZ: это был вобще не очень удачный контест как идея, я помню постмортем от агада
BorisZ: он подобрал локально коофициенты какие-то а сам бот у него был вобще видимо простой как 2 копейки
Uljahn: :upside_down:
gsomix: MelnikovIgor, что используешь для ускорения поиска? Анфейс, интринсики?
gsomix: *ансейф
MelnikovIgor: gsomix: ансейф, неуправляемый код по максимуму
MelnikovIgor: Больше всех горжусь попаданием в топ 30 на C# в UltimateTicTacToe
BorisZ: ладно, не поддаетесь вы на мои мотивирующие спичи, буду искать забвенье в работе )
gsomix: BorisZ, для меня, с дилетантской точки зрения, это звучит как "в новых контестах нужно быть очень умным". :upside_down:
gsomix: И если в реализации алгоритмов можно натренироваться, то как стать умнее — непонятно. :)
Uljahn: ну да, конкуренция стала выше
MelnikovIgor: gsomix Можно пробовать разное и собирать грабли
gsomix: https://www.meme-arsenal.com/memes/d89f8f8ec594a7c0c84229b7e1c45766.jpg
MelnikovIgor: Много граблей
Uljahn: думай как профайлер, Automaton2000
Automaton2000: по крайней мере в варике можно было мапы строить(до сих пор) и много очень игр вышло по этим кастомкам
BorisZ: gsomix не совсем так, нужно иметь опыт и быть задротом)
BorisZ: но это лучше чем "чтобы побеждать необходимо писать на плюсах"
Uljahn: "чтобы побеждать, надо быть задротом и писать на плюсах" - так лучше? :slight_smile:
735487: а еще надо писать без багов
Uljahn: т.е. надо писать тесты
Uljahn: а тесты пишут только задроты)
Gangplank: мужики как на пудже играть
MadKnight: бота пилить надо
gsomix: Uljahn, да, было бы неплохо приучить себя писать тесты.
gsomix: У меня даже в шаблоне есть проект с тестами. Но там пусто. :)
gsomix: Automaton2000, чтобы писать на плюсах нужно иметь опыт и быть задротом.
Automaton2000: он же не может быть
gsomix: Блин, что за дичь вечно в #world происходит? :)
Uljahn: лоулевелы набигают
Uljahn: школьники небось дурью маются
735487: когда то тут каждую субботу ровно час школьники баловались
ConstantBolzmann: а как сделать в цикле for правильную и по правильному задержку?
ConstantBolzmann: на милисекунды типо
ConstantBolzmann: и надо чтобы асинхронно было типо это ждет а другое работает с со своей частотой или заданной
ConstantBolzmann: от Qt не скрыться
735487: делай while true и замеряй часами миллисекунды.
ConstantBolzmann: ла это все знаю просто может есть какие типо про методы, хочется аналог слотов как в кути
ConstantBolzmann: уходил от кути и пришел к кути опять)
ConstantBolzmann: слоты получается очень удобны
735487: зачем делать аналог если можно заюзать готовое?
ConstantBolzmann: задача просто была уйти от кути, в с++ углубится
ConstantBolzmann: понятно что там проще но там типо реализовали за меня
ConstantBolzmann: кути какаято прям для новичка магическая библиотека
ConstantBolzmann: вообще все есть
ConstantBolzmann: и радует и грустно
ConstantBolzmann: даже в фалауте чото на кути
ConstantBolzmann: вот в анриале чото похожее на кути но по круче вроде
ConstantBolzmann: надо просто тик захватить и всё по сути
ConstantBolzmann: имба list<string> *p=new list<string>[H];
gsomix: Automaton2000, надо просто чат захватить и всё по сути
Automaton2000: а у тебя как успехи?
ConstantBolzmann: если не можешь помочь зачем тогда агришься?
MadKnight: ConstantBolzmann я вообще не понял чего ты хочешь
tutubalin: ConstantBolzmann скажи конкретно, какую проблему хочешь решить
Uljahn: MadKnight: по-моему, он хочет как обычно - пофлудить про кути и жль :smirk:
ConstantBolzmann: да просто хотел узнать, помимо, слипов и делеев может как еще делают задержки в циклах
Uljahn: ассемблерную вставку из NOP :)
mykeich: ConstantBolzmann я тоже не понимаю зачем вообще нужны задержки. Есть большая вероятность что твоя задача с несколькими потоками решается с чем-то типа mutex или современном аналоге.
ConstantBolzmann: буду изучать спс
735487: задержки нужны когда нужна синхронизация с временем разве что
gsomix: ConstantBolzmann, я не агрюсь. У меня просто новая квестовая ветка открылась на CG — "Пассивно-агрессивное поведение в чате". ;)
gybson_samara: Задержки нужны когда протокол передачи данных их использует
gybson_samara: обычно аналоговый =)
gybson_samara: допустим спутник дает сигнал, один раз с паузой 2с, потом три с паузой 1с, так можно поймать начало сообщения
gsomix: Кажется, это может интересовать только на очень низком уровне. Обычно есть асинхронный IO, с ним и работаешь. :)
gybson_samara: ну да
gybson_samara: я учился 25 лет назад в аэрокосмическом университете, там такой уровень интересен
gybson_samara: тогда ЛВС были аналоговые =)))
gsomix: Я понял, на CG одни деды сидят. :)
gybson_samara: на конце кабеля ставили терминатор,А по кабелю велось практически радиовещание
Uljahn: gsomix: а где нам ещё сидеть? :(
gybson_samara: Uljahn в палате интенсивной терапии =)
MadKnight: gsomix просто это сайт для бумеров
gybson_samara: в гугл колаб бэтмен работает как надо, тут нет. Проблема в округлении ...всего до двух знаков
gybson_samara: прям скопировал код, там 11, тут 12
gybson_samara: Uljahn почему numpy.int64 к инту не кастится тут?
gybson_samara: и как надо?
Uljahn: :shrug:
Uljahn: есть пример?
Uljahn: .astype(int) кастит в int32 на моей машине под виндой
Uljahn: а на CG в int64 :thinking:
gybson_samara: Uljahn нашел уже фейл =(
gybson_samara: с округдением не нашел
735487: сделай так int(bin(n)[:-32],2) по идее останется 32 бита :)
735487: но это больше шутка
gybson_samara: 1.64286 12.64762 тут, 2.5 11.73333 там
gybson_samara: серьезная разница
Uljahn: версия питона и библиотек одинаковая?
gybson_samara: не факт
gybson_samara: но как это поможет?
Uljahn: хз, я кода не видел
gybson_samara: второй кейс в гугле не срабатывает, кстати, 1,1 дает, вместо 2,2
gybson_samara: 2,1
gybson_samara: так что проблема обоюдная
gybson_samara: Uljahn https://colab.research.google.com/drive/14BWeucti--MP8eciqwNcrNoCfBMOg-cS?usp=sharing
gybson_samara: там с картинками
Uljahn: а где разница? в not match?
Uljahn: и с чем сравнивается?
Uljahn: а, это наклонные сечения
Uljahn: не нашёл, где получается 12.64762 или 11.73333
735487: так то сильно большая разница
gybson_samara: Uljahn в самом конце
gybson_samara: где координаты печатаются
gybson_samara: в конце второго ходя
gybson_samara: там сейчас второй кейс
735487: а нельзя просто взятьи заюзать строгий тип от нумпи? np.uint32 типа такого
gybson_samara: поставил первый кейс
gybson_samara: amurushkin может и можно. Но там питон и тут питон, код перенес 1:1
gybson_samara: блин, в гугле теперь тоже 3,10
gybson_samara: точность 20 нужна
735487: может есть какие то типа прагмы чтобы сказать интерпретатору какой тип тебе нужен по дефолту
735487: или может использовать эпсилон в сравнениях
gybson_samara: там на самом деле разные точности нужны в разных местах, пока
gybson_samara: вы можете себе скопировать и поиграть, действительно интересныйкейс
gybson_samara: лучший пазл вообще пока
gybson_samara: там скорее всего не на всех шагах надо округлять
gybson_samara: вот сейчас когда рядом, то алгоритм уходит не туда
gybson_samara: в целом то правильно, но это вот округление
wlesavo: прикольный пазл недели, наконец-то пазл в котором не у всех одинаковые решения. суть немного похожа но есть вообще веселые
MadKnight: ну чё посоны
MadKnight: есть тут кто вообще?
MadKnight: Automaton2000, тут только мы?
Automaton2000: а как ты противника предсказываешь?