marvellik
допустим на многих учебных сайтах такое решение может не пройти из за времени выполнения на больших списках.
Ты говоришь “много сайтов таких”. Давай хотя бы один из этих “многих сайтов” разберём просто на конкретном примере. Я не встречал таких сайтов. Очень часто можно перепутать двойной проход с какой-нибудь другой вообще фигнёй. Ну, то есть тебе пишут “тест не пройдён по времени” и ты такой думаешь “блин, а это из-за двойного прохода”. Ты убираешь второй проход и тест проходит, и ты думаешь, что дело было в двойном проходе. А остальной код у тебя чистый по скорости? Ты уверен? Может, какой-то другой участок кода сожрал время или неправильно подобранная архитектура сожрала время вообще в целом?
Ты можешь подсчитывать значения легально во время ввода этих значений, когда у тебя программа параллельная - когда у тебя два независимых процесса/потока запущены параллельно и пока один поток вводит, другой в это время считает. Но вот это вот “а я сейчас модульную архитектуру превращу в монолитную мешанину”, это очень подозрительно выглядит. Ты такие оптимизации можешь делать только там, где человек потом по этому результату сливания всего воедино точно лазить не будет. Для машины можно такую оптимизацию сделать, для человека - нет.
Вот я сегодня читал маленький js-скриптик для браузера, который просто что-то немножко делает. В нём не три строчки было, как в этой задаче, в нём где-то тысяча строк, а делает он при этом немножечко действий полезных. Переделывать его или лазить по нему в поисках каких-то размазанных действий по всему скрипту в размере тысяча строк, которые можно было бы инкапсулировать по функциям, я бы не стал, у меня нет на это времени физически. Я его даже прочитать не могу весь, времени даже на прочтение нет. Естественно, чтобы что-то изменить в таком скрипте, я буду искать функцию соответствующую, в которой это находится. Я не буду читать этот код весь и вникать в каждую строчку. У меня просто на это времени нет и он того не стоит. Я его лучше выкину и поищу другой вариант, в котором всё нормально, по классическим правилам сделано без всяких этих этих “заумностей”, которые на самом деле - “тупости” от какого-нибудь ЧСВшника очередного. Говнокод бывает на любом уровне. Человек может дофига знать и при этом писать говнокод. Чаще всего таких выталкивают из команды, говорят “да, да, ты знаешь дофига, ты капец какой мастер, но наша команда для тебя точно слабовата, тебе надо попробовать у других поработать, поучить их уму разуму, а то они пропадут вообще”. А сами думают “хорошо, что мы сбагрили этого придурка, который вечно с умным видом все правила нарушает, типа он такой знаток, но из-за которого весь проект валится и затягивается всё время”.