Мне кажется лучше подошла бы задача на строки (может даже онлайновая), или графы, или запросы на отрезке (поле для оптимизации структуры). В таких задачах предподсчет вряд ли возможен.
Чтобы люди не убивались 24 часа, можно заранее объявить время публикации условий и закрыть прием решений через 3-5 часов. Как, собственно, давно и делают онлайн-площадки соревнований по программированию.
Странно, почему никто не спрашивает:
К чему эти пляски с Clang, чем вас не устроил более распространенный (и быстрый) gcc?
Зачем нужны искусственные ограничения на размер решения? Видимо, раз задача при искусственных же ограничениях на тесты сводится к предподсчету, то она не очень удачна для соревнования по алгоритмам. Победителям пришлось прогонять код через обфускатор — это как бы намекает.
У библиотеки 2 больших минуса:
Она похоже не прописывается просто так в window в браузере. А как бы небрежно писать в доках «With node, simply require it: var numbers = require('numbers');», и не упоминать о первом синусе, как минимум некрасиво.
Там как-то пофигистично относятся к производительности. Глянул 1-ю функцию, дальше наверное еще хуже. jsperf.com/numbers-js-sum
Без подхода — никогда не стараться оптимизировать заранее — не сделать по настоящему оптимальную программу (если нужно). Как раз мысли об оптимальности приводят к неоптимальным программам.
1) Приводится аргумент что для использования в «надежном» поекте надо протестировать пакеты из Hackage. Намек на то что их никто не тестирует? В чем отличие от библиотек на других языках? Мне кажется, вероятность наличия ошибок в популярных библиотеках на Hackage очень мала.
2) «Дело в том, что имеются серьёзные риски получить неподдерживаемые исходные коды на «эзотерическом» языке программирования» — странное утверждение. Риски получить неподдерживаемый код на мейнстримных языках в разы больше.
Еще можно выкинуть unordered_map и написать свой простенький хеш открытой адресацией и линейным исследованием. Если известна нормальная верхняя оценка кол-ва возможных слов на входе, то получиться едва ли не короче, чем 2 комментариями выше.
Техническая литература обычно сверстана так «мелко», что читать ее со смартфона может быть вредно для глаз. Поэтому если в ридере все записи прочитаны, можно и птичек популять.
Маленькое примечание к этому типу: filter (<10) primes ->> [2,3,5,7, никогда не завершит своего выполнения, т.к. filter не знает, будут ли числа меньше 10 или нет и продолжает их искать.
Да вроде нет, filter ничем не отличается от других ленивых функций.
На тему «разделяй и властвуй» советую очень крутую книжку Ричарда Бёрда «Жемчужины проектирования алгоритмов: функциональный подход», почитать первые главы можно тут: oz.by/books/more10282958.html
Чтобы люди не убивались 24 часа, можно заранее объявить время публикации условий и закрыть прием решений через 3-5 часов. Как, собственно, давно и делают онлайн-площадки соревнований по программированию.
К чему эти пляски с Clang, чем вас не устроил более распространенный (и быстрый) gcc?
Зачем нужны искусственные ограничения на размер решения? Видимо, раз задача при искусственных же ограничениях на тесты сводится к предподсчету, то она не очень удачна для соревнования по алгоритмам. Победителям пришлось прогонять код через обфускатор — это как бы намекает.
Чтобы графики не были пустыми, надо использовать логарифмическую шкалу. Хотя в данном случае их пустота скорее следствие странных данных и методики.
Она похоже не прописывается просто так в window в браузере. А как бы небрежно писать в доках «With node, simply require it: var numbers = require('numbers');», и не упоминать о первом синусе, как минимум некрасиво.
Там как-то пофигистично относятся к производительности. Глянул 1-ю функцию, дальше наверное еще хуже. jsperf.com/numbers-js-sum
Передергиваете
2) «Дело в том, что имеются серьёзные риски получить неподдерживаемые исходные коды на «эзотерическом» языке программирования» — странное утверждение. Риски получить неподдерживаемый код на мейнстримных языках в разы больше.
3) «Рекомендация» в конце — я думаю стеб? :)
0.032 в среднем.
Еще можно выкинуть unordered_map и написать свой простенький хеш открытой адресацией и линейным исследованием. Если известна нормальная верхняя оценка кол-ва возможных слов на входе, то получиться едва ли не короче, чем 2 комментариями выше.
На моей машине ~ 0.031
Делал правда почти час, наверное потому что до этого весь день писал на яве и питоне… :)
Да вроде нет, filter ничем не отличается от других ленивых функций.
На тему «разделяй и властвуй» советую очень крутую книжку Ричарда Бёрда «Жемчужины проектирования алгоритмов: функциональный подход», почитать первые главы можно тут: oz.by/books/more10282958.html