Chat:Ru/2021-03-31
Uljahn: нет, мне достаточно питона с numpy, в офлайне ещё нумбу юзаю
vrabosh: tutubalin намекни плз про funge)
vrabosh: жалко, что тут numba нет.
Uljahn: зато тут фортран есть, но он под капотом
wlesavo: должен был завтра выйти на новую работу иииии походу заболел ковидом
Uljahn: ппц, обоняние пропало?
wlesavo: ага, третий день температура 38 и запахи пропали, вкусы пока на месте вроде
Uljahn: надеюсь, ситуацию на самотёк не пускаешь? врача вызвал, на работу сообщил? в лихорадочном состоянии часто концентрация внимания резко падает, можно за банальными ошибками не уследить
Uljahn: чатик диванных советов и выражения сочувствия, Automaton2000
Automaton2000: Uljahn в чем смысл жизни
wlesavo: да у меня сегодня последний день рабочий, должен был ехать увольняться, а так да сообщил конечно, ща думают как меня уволить дистанционно)) врача еще не успел вызвать, сегодня собираюсь
tutubalin: vrabosh про хардкод?
tutubalin: короче, первая идея: проверять по порядку с каждым тестом и выдавать PRIME или NOT PRIME. проблема: линейный поиск, для последних чисел проверок будет ооооочень много
tutubalin: вторая идея: использовать бинарный поиск. в таком случае количество проверок будет логарифмическим.
tutubalin: третья идея: так как у нас оператор проверки отправляет нас в один из трёх путей (меньше, равно, больше), то можно использовать тринарный поиск
tutubalin: маленькая хитрость: записи для больших чисел можно использовать string mode. например: 'AA'* (всего 5 инструкций) создаст в стеке число 4225
tutubalin: пардон, "AA"*
YurkovAS: vrabosh у тебя есть бинарный поиск?
vrabosh: бинарный это как?
YurkovAS: понятно, значит нет. это метод деления пополам и потом проверки нужно половины опять же делением уже ее пополам
YurkovAS: и т.д.
vrabosh: может есть, я в терминологии слаб
YurkovAS: нет такого?
YurkovAS: мне как раз его осталось сделать, что-то не получается, на днях безуспешно попытался
vrabosh: я алгоритм обычный сделал.. и покругу у меня ходит проверяет делится н 3 если нет, идет дальше делится на 5 если нет идет дальше, пока делитель не станет больше на что делю
YurkovAS: а после 5? 7, 9, 11?
vrabosh: tutubalin ну ты предложил хардкорно, мне надо выписать все большие числа, занести их в стек и на них делать проверку, минусовать от искомог очисла, если 0 то это оно, если + то больше, если - то меньше в стеке?
vrabosh: YurkovAS до бесконечности, n+2
vrabosh: да после 5 , 7, 9, 11 итд
YurkovAS: ну что-то не сходится по моим подсчетам, если n+2, тогда у тебя должно быть 80к скор
YurkovAS: значит у тебя не до бесконечности и не до 100?
vrabosh: ну хз, может я сократил както хитро)
YurkovAS: но там есть еще момент один
vrabosh: нет не до 100, я делаю условие, если a / n > n то выход
YurkovAS: н+2 можно еще больше сократить
YurkovAS: и как раз кол-во итераций можно очень точно расчитать, для него и нужен бинпоиск
vrabosh: будет ли сокращать, это дополнительыне символы, может то на то и выйдет
YurkovAS: твой вариант я не проверял, у меня почти без сокращений до 100 - что точно избыточно
vrabosh: я щаз думаю бендера решать, с графами сижу вожусь, поверяю сразу на поизводительность.
vrabosh: кнечно, я сразу начал делать выход при избытке
YurkovAS: это пазл, не оптимизация?
vrabosh: но додумался только до a/n про +2 неподумал
vrabosh: Bender - Episode 4
vrabosh: оптимизация
vrabosh: надоели эти пазлы
YurkovAS: +2 точно можно сократить еще больше. у меня с +2 было 80к, а с сокращением стало 65к
vrabosh: штук 100 уже решил гдето
vrabosh: я думаю до 50к можно насокращаться таким способом
vrabosh: но 50к это не мотивирует заниматсья этим)
vrabosh: еслиб хотябы 20к
YurkovAS: ой, перепутал, точно, недавно ее решил на 100%, но очень нестабильное решение, хотелось бы точно решить
tutubalin: если без хардкода, то как я уже говорил, проверяй только делимость на простые числа не больше 97
YurkovAS: или на "потенциально простые"
vrabosh: так и делаем, проверяем на 3,5,6,7 итд
YurkovAS: 7, 9, 11 - это слишком много лишних проверок. можно сократить еще
YurkovAS: без хардкода
vrabosh: как?
YurkovAS: надо подставлять простые числа только
vrabosh: я попробовал отсечь лишнее деля на %24, стало даже хуже.
YurkovAS: либо, потенциально простые числа, недавно писали какой формуле они соответствуют
vrabosh: так 3,7,11 этож и простые
vrabosh: ой я 5 и 6 написал)
YurkovAS: 9 то нет
vrabosh: да я подставляю 3,7,11,13,17
vrabosh: а нет +2 подставля, запутал
vrabosh: кстати да, можно постые.. это надо думать как их кранить и вытаскиать
tutubalin: нечётных чисел от 3 до 99: 49 простых чисел от 3 до 97: 24
tutubalin: ускорение в 2 раза
tutubalin: как хранить: числа до 7 - просто цифрой числа от 37 и выше - через string mode
tutubalin: числа от 11 до 31 - в принципе тоже можно через string mode, но не всегда. если не получается, тогда через арифметику
Uljahn: в 2048 приделал загрузчик для распаковщика храдкода, а то в base65536-конверторе коэффициенты много весят (пожал их встроенным base85)
Uljahn: осталось ещё дефинишоны через exec из utf-16 распаковывать и сразу выполнять, и код будет тупо простынёй иероглифов с небольшим загрузчиком
wlesavo: сохранил себе мудрости tutubalinа глядишь дойдут руки тоже
Uljahn: красота какая: exec(decode("驤啦??嵯漩饰尨驨ꍬ啯??ꍲ層ᔩ"))
Uljahn: эквивалентно def foo():print('hello world')
tutubalin: Uljahn а что есть каждая фраза на китайском языке является исполняемой?
tutubalin: wlesavo vrabosh добавочка по поводу хранения. все числа от 10 до 18 можно представить в формате XY+ например для 13 (которое в string mode скорее всего не зайдёт) можно записать как 67+
MadKnight: Automaton2000
Automaton2000: хотя у меня и у кубера