Сергей Шашков @ShashkovS
Менеджер продукта, методист, разработчик
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Бэкенд разработчик, Менеджер продукта
Ведущий
Python
Управление проектами
Алгоритмы и структуры данных
Asyncio
Я не знаю C#, чтобы не разбираться и оценить алгоритм, хорошо было бы понять хоть что-то про время. Я много раз встречал ситуацию, когда «умный велосипед» работает в 100 раз медленнее обычного.
Пришлось разобраться с запуском C#.
Сделал везде 100000 вызовов без вывода в консоль.
На одну итерацию у меня получается:
C# — 0.1013ms
cPython — 0.6469ms
PyPy — 0.1005ms
Rust — 0.0269ms (клон python-решения)
Вот теперь понятен масштаб и уже интересно, до чего можно оптимизировать.
Только вот лучше на доске 12×12 или 14×14. Иначе получается сравнение 0-1ms и 0-1ms.
Более эффективный алгоритм на Python'е может быть в 100 раз быстрее неудачного алгоритма на C++ с intrinsic'ами и чем угодно.
ИМХО, ваша реализация неудачная, и даже версия на C++ не обгонит Python.
А на большие доски она вообще очень тяжело масштабируется. А pypy обсчитывает доску 14х14 за 2 секунды.
Запустил ваш код вот здесь, получается 30мс, что в 10 раз медленнее питона на том же onlinegdb.
Уж не знаю, что вы там оптимизировали, но получилось медленно.
Просто битовая «магия» (когда она не нужна сама по себе) хорошо работает, когда чисел много и они не лезут в кеш процессора. Тогда битовые маски, сжатие и т.п. отлично работают. Здесь же хоть и перебор большой, но чисел и bool'ов в любой момент очень мало.
Код на медленном cPython: доска 8×8 за 0.000655с, доска 12×12 за 0.302с, доска 14×14 за 10 секунд на cPython и за 2 секунды на PyPy.
У вас есть возможность запустить ваш код на досках 12×12? Какое время работы?
Зато энергия от локомотива с токоприёмником передаётся в вагоны без участия высоковольтных линий! Даже, если локомотив — это паровоз на угле.
Включите в браузере «версия для пк» или что-то такое. Почему-то мобильные браузеры не дают сделать сайт мелким.
Да понятно, почему убрали.
Готовятся к признанию. Рисовать как правильно, опасно. Рисовать, как требуют, *&@^* просто.
Вообще позорище, конечно.
Обучал тессеракт на этом шрифте долго и упорно, но результат был всё равно отстойный.
По сравнению с тем распознаванием, который выдавал API от ABBYY.
В общем задачу пришло по-другому решать, через распознавание русского текста не сработало (у ABBYY тоже хватало ошибок, поэтому подход пришлось отклонить)
Суд вынес решение по иску Рособнадзора, ответчик — преподаватель математики из Питера Дмитрий Гущин
Позиции сторон такие:
Гущин: прошу затребовать в ФИПИ задания ЕГЭ-2018, чтобы сверить их со списком утечки и убедиться в том, что до экзамена в интернете были подлинные задания. Прилагаю нотариально заверенные материалы утечки.
Рособрнадзор: категорически против сверки заданий ЕГЭ с заданиями утечки. Рособрнадзор пишет в суд: «указанные в качестве свидетелей лица, не являются разработчиками контрольных измерительных материалов ЕГЭ по математике, соответственно не обладают необходимым объемом информации для пояснения суду тождества опубликованных материалов и контрольных заданий».
Суд счел, что позиция Д.Д.Гущина о совпадении материалов ЕГЭ по математике и химии, выложенных за сутки в сеть, и фактически данных школьникам — является «субъективным мнением», и «доказательствами не подтверждена». Свидетельские показания судья тоже сочла «субъективным мнением». Всё. Сравнить прямо в суде экзаменационные материалы и распечатку утечки судья отказалась.
Полный текст решения суда
Вышестоящие суды оставили этот шедевр в силе.
А каким образом получают подобные изображения от… живых пациентов?
До этого нужно было писать
Другая возможная проблема — это использование IPython ⩾ 7.0 или соответствующего Jupyter. Там уже запущен свой event loop от ipython'а и нельзя создать новый.
Соответственно нужно вызывать первую функцию сразу с await'ом
А чтобы получить текущий event loop —
Скажем ни одна сортировка не подходит: их есть куча «эффективных»: Хоара, слиянием, пирамидальная и т.д.
То же самое с хешированием. Adler-32, FNV-1, PJW-32, MD4, MD5, SHA-1 — их много.
Вот симплекс метод, матричные вычисления, быстрое преобразование Фурье, коды Рида-Соломона, обход в ширину + в глубину, Диффи-Хеллман — в рамках 20-го века (некоторые из них даже и в рамках 21-го) совершенно безальтернативны.