Chat:Ru/2021-03-16
tutubalin: это уже какое-то судоку
wlesavo: tutubalin улучшил что-то или сабмит уданый?
miklla: я начал писать, и прога на полном рандоме угадывает второй тест за 6 ходов :)
wlesavo: давай 10ый так )
wlesavo: правда в тестах захардкожены значения, так-что можно и с одной попытки
miklla: блин, я ночью думал о проге, а сегодня прочитал, что все цифры должны быть разными, хз вообще чем это правило мотивировано, с одинаковыми цифрами у меня было бы больше тактических возможностей
miklla: это какая-то упрощённая версия?
wlesavo: ну вообще мы в детстве всегда играли по таким правилам что все цифры разные, а так да, немного проще получается
wlesavo: ну и путаницы меньше типа 1234 и 4234 первая четверка либо корова, либо ничего
miklla: по мне по правилам корова
miklla: до сих пор не могу привыкнуть думать, что все цифры разные :)
miklla: (раньше слышал о такой игре, но не играл и не знал правила детально)
wlesavo: в пазловой версии там без разных цифр и без правила про ноль
tutubalin: wlesavo сабмит удачный. я наоборот ухудшил - сделал таймлимит не 45мс, а 30мс. пропали таймауты, результаты особо не изменились
tutubalin: меня с одинаковыми цифрами тоже смущает. если загадано 1234, а попытка 4444, это сколько коров? а если загадано 4444, а попытка 1234?
tutubalin: ну и благодаря тому, что все числа разные, упрощается способ хранения и сравнения
tutubalin: можно для каждой цифры хранить позицию в комбинации или ноль, если отсутствует
miklla: 3 коровы, 1 бык; 0 коров, 1 бык
wlesavo: да, просто для разных 10^10 было бы погрустнее, еще и сама процедура сравнения тяжелее
tutubalin: miklla теряется коммутативность
miklla: ох, я привык, что её нет, а тут она, оказывается, появлется
wlesavo: на самом деле лимит времени изначально больше был, за 50 мс спасибо илледану :slight_smile:
miklla: вот сижу, оптимизирую, с 100 мс скорее всего не пришлось бы :)
wlesavo: это да, я на плюсах чето накидал тоже, но пока там совсем грустно, 10 таймится на генерации пула, а 9 на первой фильтрации
miklla: у меня уже 9 не таймится вообще
miklla: осталось 10
wlesavo: ну у меня там пул из вектора, так-что да, думаю поправлю скоро
tutubalin: у меня чаще всего таймился 8, почему-то
miklla: лол, на сабмите зафейлил все длины 9 и прошёл все длины 10
miklla: о, первый сабмит без таймаутов (и с полной генерацией)
miklla: сабмиттить можно сколько угодно, пока делаешь капчу? :)
wlesavo: 25 раз за 5 часов чтоли, ульян точнее говорил но я не помню
tutubalin: за короткий промежуток времени вроде около 10 сабмитов можно. потом паузу надо сделать
miklla: лол, на полном рандоме во втором тесте с первой попытки xD
MadKnight: так это вроде число до первой капчи
tutubalin: miklla поздравляю!
miklla: хз, как-то слишком рандомно
miklla: пока что разброс 311-332
miklla: динамическая генерация секрета была бы намного честнее
miklla: но там, наверное, разрыв между местами был бы ещё меньше
miklla: а, предел сабмитов, даже капчу не предлагает
wlesavo: да, с динамической конечно было бы честнее
wlesavo: о, наконец-то тоже заработало, сделал хранение как tutubalin сказал и почти сразу хватило этого
tutubalin: wlesavo комбинации в массиве хранишь или в битмапах?
wlesavo: tutubalin в массиве все, а отфильтрованные сслыками на комбинацию только
wlesavo: ну и у меня случайное число пока выбирается просто, подкручу поумнее выбор может еще
miklla: я думаю завтра локально дебютную книгу локально насчитать :)
tutubalin: тоже думал об этом
tutubalin: но вряд ли особо что-то изменит
miklla: а больше и ничего-то делать, эндгейм и так цивильно обрабатывается
vrabosh: компилятор с++ раза в 2 быстрее делает код чем си?
vrabosh: компилятор с++ раза в два делает код быстрее чем си?
YurkovAS: тогда бы линукс и прочее переписали бы на плюсы :)
vrabosh: я имею введу сам компилятор, а не синтаксис и возможно только тут.. вот этот код запускаю
vrabosh: http://chat.codingame.com/pastebin/1be5a1f0-2540-4ceb-8164-02368485b744
vrabosh: в с++ там 40млн прохоит
YurkovAS: ты сравниваешь этот код в с++ и си?
YurkovAS: может прагмы еще добавить?
YurkovAS: разницы не должно быть. может плюсовый при компиляции вычислил, а си-ный нет
YurkovAS: и 40млн не должно быть, там же 20млн (+1 возможно)
vrabosh: unsigned long tmp = 0;
while (tmp++ < 400000000);
vrabosh: и там и там теперь оденаково
vrabosh: скорей всего у с++ input лучше срабатывает..
vrabosh: поставил выше код перед маин и там и там одинаково
YurkovAS: прагмы не забудь добавить, без них заметно медленнее, в раз 5 тут код копилируется в дебаг режиме, без оптимизаций
vrabosh: что за прагма?
MadKnight: которая включает оптимизации кода
MadKnight: но тогда он может твой цикл превратить в умножение
vrabosh: как это делать?
YurkovAS: #pragma GCC optimize("O3","unroll-loops","omit-frame-pointer","inline") //Optimization flags
- pragma GCC option("arch=native","tune=native","no-zeroupper") //Enable AVX
- pragma GCC target("avx") //Enable AVX
vrabosh: а в си это как делать?
YurkovAS: 3 строки эти добавь в самое начало
YurkovAS: в си так же, но не проверял
vrabosh: надо будет пробовать на рабочем проекте.. сейчас раз в 10 прирост дает с этими прагмами на вайле
YurkovAS: если локально запускаешь и пользуешься дебагером, тогда поменяй там строку "O3" на "O0" - а то оно не будет показывать значения переменных
YurkovAS: это уровень оптимизации
vrabosh: ок. спассиб. потом если, что буду у вас спрашивать, как ускорить код, если не будет хватать)
wlesavo: ляяяя, я думаю че не так, а я прагмы забыл поставить, сразу в три раза быстрее стало
wlesavo: сижу оптимизирую называется
wlesavo: даже в 4 раза разница, мда
tutubalin: надо быть более прагматичным! )
miklla: хаха, один сабмит на 318, а следующий на 354, это рекорд