Chat:Ru/2021-03-16

From CG community
Jump to navigation Jump to search

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

  1. pragma GCC option("arch=native","tune=native","no-zeroupper") //Enable AVX
  2. 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, это рекорд