Chat:Ru/2020-09-07

From CG community
Jump to navigation Jump to search

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: а тесты пишут только задроты)

Default avatar.png 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: а как ты противника предсказываешь?