На, говно, держи решение. Чтобы ты двойку получил, раз не можешь такие простые задачи решать. Не ошибись, когда переписывать будешь. Сумей объясннить чо-да-как.
>>2190345 Ха-ха. И даже так неправильно. Нужно ещё в аргументы добавить ссылку на positive_count, иначе вызывающая функцию не узнает количество элементов в возвращаемом массиве.
И скорее всего это реализовать нужно было не в стиле Си, а с использованием STL, через std::array<int, 3> a2 = {1, 2, 3};
Но ежели б ты знала какая хуйня бы получилась, то содрогнулась. В результате использования исходный код получился бы компактней и читабельней, но говна компилятор бы нагенерил лишнего раз эдак 3 или пять больше.
>>2190621 Это не С++. Это Си. Там от С++ только ссылки, bool и объявление переменных в произвольных местах.
Ну и задача соответствующая - простая и бессмысленная.
Но при всём этом вышеприведённый код быстрее уже не напишешь, код занмает несколько десятков байт,
И если ей на вход подать массив размером с гигабайт она его прожуёт и не подавится. Насчёт Хаскеля - предположу что на массиве в один гигабайт твоя программа "Не отвечает и будет закрыта".
>>2190652 ну, сишки очевидно куда быстрее, компактнее и жрут меньше памяти - но если эту программу ни разу не будут юзать для огромных объёмов данных - то ужасающий код был написан зря. + хаскелевский алгоритм всё ещё O(n), так что скорость будет норм
>>2190775 а, вижу, там список + взятие по индексу, так что O(n^2), произведение считается сложновато, i и index используются параллельно. но вроде может работать
Хуевые времена настали. Кто-то всерьёз считает Python языком программирования.
Вот код на чистом C++ Сишный выше красивее и оптимальнее с точки зрения сгенерированного машинного кода.
Что вы делаете? Неужели сейчас всем похуй на скорость и объёмы ОЗУ? За размер исполняемого кода даже не заикась - уже точно всем похуй. Кроме старичков, которые привыкли экономить биты.
>>2190800 >Неужели сейчас всем похуй на скорость и объёмы ОЗУ Дед, успокойся уже, сейчас этого завались, дешевле ещё докупить, чем тратить на обдумывание время, которое можно потратить на выкатывание новых фич.
>>2190800 >ненужный тайпдеф >ненужный выебон с проверкой чётности >array_t вместо const array_t& >массив из элементов вместо индексов Ты охуел на кого-то гнать после такого?
>>2190800 >всем похуй на скорость и объёмы ОЗУ в программе жрать большую часть ресурсов чаще всего будет маленький фрагмент кода - его и хуярь на сихе. а весь код зачем на ней писать? для максимизации страдания?
>>2190383 >>2190800 по такому коду не получится сказать, работает он или нет и его корнеркейсы, глянув на него на скорую руку. работать с таким кодом не торт
>>2190873 отвечу за него >>array_t вместо const array_t& const - так как не хочешь менять оригинальный массив и хочешь сделать это очевидным для других прогеров (и компилятора) & - с++ передаст ссылку на массив вместо того, чтобы делать копию (намного быстрее)
>>2191007 Гомоиконность, функции первого класса, оптимизация хвостовых вызовов, минималистичность стандарт 90 страниц занимает, из которых примерно 35 - приложения и списки литературы
>>2191019 >оптимизация хвостовых вызовов Ой, да ладно. setjmp|longjmp - им больше лет, чем тебе. Приводить этот аргумент в пользу языку - нуууууууу такое.
>>2191021 Обрати внимание, как в примере кода expression является одновременно и списком (элементом данных), и кодом. Не путай с куцым eval, которое можно встретить в питоне и жс, они оперируют со строками, тут вся программа по сути является списком, которым можно при необходимости манипулировать.
>>2191031 Дурачок, setjmp/longjmp - это про нелокальный выход из функции, с оптимизацией хвостовых вызовов связано примерно так, как оп этого треда с программированием.
>>2191031 Хотя по сути ты прав, сейчас трудно найти язык без TCO JS и пистон хах, даже в сишке есть. Тем не менее, впервые оно появилось как раз таки в лиспах.
>>2191046 Ой, да не пизди. Твоя Scheme делает эту оптимизация за тебя. На сях и плюсах это сделает программист, если он слышал о setjmp|longjmp и если ему это понадобится.
longjmp из любой вложенности стека выпрыгнет за пару-тройку тактов. Такое впечатление что ты с LOR'a пятнадцатилетней давности пришёл.
>>2191055 Какую ж ты хуйню несёшь, аж дёсны сводит. Ты случайно не одногруппник опа? На сях и плюсах TCO делает компилятор (если этот компилятор - гцц или кланг), пруф: https://godbolt.org/z/DMleUN (обрати внимание на отсутствие инструкции call в ассемблерном выхлопе, это и есть суть TCO). Вот простой пример с {set,long}jmp: https://godbolt.org/z/8KzG5Gf4Y . Каким здесь блядь вообще боком оптимизация вызовов, если единственные вызовы тут идут в библиотечные _setjmp и longjmp?
>тут вся программа по сути является списком, которым можно при необходимости манипулировать. Ты так говоришь, будто это что-то хорошее. Какая область применения этого интерпретатора?
>>2191067 > Ха. Обратная польская запись наоборот. Странный порядок операторов - не главное, на что нужно обратить внимание в этом примере.
> Ты так говоришь, будто это что-то хорошее. Это не хорошее, это великолепное. Это позволяет элементарно писать макросы, т.к. макрос - это просто функция, принимающая список и возвращающая список, только в компайлтайме. Макросы, в свою очередь, позволяют писать свои кастомные DSL, что на порядок повышает эффективность написания кода.
>>2191101 Долбоёб ты великовозрастный, TCO - это когда call заменяется на условный прыжок, в твоём примере TCO НЕТ. Хотя хули я перед тобой, птушником, распинаюсь, ты даже оптимизацию хвостового вызова от оптимизации хвостовой рекурсии не отличаешь. Нахуй тебя, ухожу спать.
Господи, какие же дегенераты в этом треде сидят: одни носятся со своим старьем С++ аля ПАМЯТИ МЕНИ НЕ ХВАТАЕТ, другие шизло со своей лиспопарашей скобочной, а третьи вообще динамико-петухи из мира петуховена, ПэХэПэ и прочего зоопарка. Джавистов только не хватает в парад уродов. мимо .NET-господа
>>2192395 Господин, а почему на дотнет в три раза меньше вакансий, чем на джаву? Почему asp net за столько лет все еще проигрывает экосистемой спрингу? Почему сишарп и фарш не используются в компаниях уровня FAANG (а даже с++используется)?
>>2192400 >а почему на дотнет в три раза меньше вакансий, чем на джаву Чем ниже квалификация - тем больше вакансий.
>Почему asp net за столько лет все еще проигрывает экосистемой спрингу? Без комментариев.
>не используются в компаниях уровня FAANG Потому что до 2016 .NET был проприеритарной windows-only технологией, его просто невозможно было технически юзать нигде кроме энтерпрайза, пока Майки не выпустили Core и не сделали .NET кросс-платформеным и опен-сорсным.
Всё должны были из FAANG сразу переписывать 10+ летний софт на .NET? Что с ебалом?
>>2194813 >>2195220 UPD: ну и как обычно оно не работает. да и вообще что ты нагородил? >set >set([reduce(...)]) >reduce может упасть >8 строка for i in i for i in за що??
Ваши недоязыки хороши когда значений пару сотен, чтобы кривляться этими языками на анонимном форуме. А когд вам подсунут массив хотя бы гигабайт, они захлебнутся или уйдут в swap. А может быть будут прибиты OOM киллером.
От вас только одна польза была - стимулировать производителей железа. А когда техпроцесс упрётся в свой предел, уже почти упёрся, вы дружной толпой отправитесь таксовать или подавать еду в ресторанах. А кто поумнее и успел - тот будет жить на ренту.
>>2196421 не, ну ты просто угораешь, честное слово! 1) А если программе никогда не придётся перерабатывать столько данных за раз - нахуя тогда писать её на байтоёбском языке? 2) А если в программе 10% кода будут ебаться с большими объёмами данных - нахуя 90% писать на байтоёбском? напиши 10% на нём 3) Лишние затраты памяти в том же хаскеле фиксятся мутабельными типами данных - и будет заебись 4) Читать байтоёбский код - и так беспросветный пиздец, так вы ещё рандомную хуйню ебашите idx & 1 вместо очевиднейшего idx%2 5) если проблема в скорости - чаще всего алгоритм хуйня, а не микробайтоёбские оптимизации. фиксить алгоритм на каких - нибудь плюсах ваще не торт 6) + к скорости - программы на хаскеле готовы к распараллеливанию практически со старта, а вот в байтоёбстве ещё подрочиться придётся 7) в примерах к блядоплюсам по перегрузке операций +-*/>><<буквально предлагается делать копию объекта дважды - перед работой и при использовании return - офигенно оптимально! фикс появился только недавно хаскель таким не страдает - будет только одна копия максимум - оптимизаций в хаскеле дохера
>>2196452 > так вы ещё рандомную хуйню ебашите idx & 1 вместо очевиднейшего idx%2
Компиляторы разные бывают. Большинство заменят "деление на два" сдвигом" на бит вправо, но самые тупые компиляторы будут честно делить, а деление это дорогая операция. Проверить младший бит это очевидно и уже оптимизировано.
Насчёт распараллеливания, ну хуй знает. Тут надо говорить предметно. На абстрактных задачах спорить о распараллеливании алгоритмов я не буду.
>>2196236 >>= для функций имеет следующий смысл - передать результат функции слева в правую + сложить контексты. после передачи значения обе функции имеют тип a->b, при сложении контекстов хаскель будет подразумевать, что обеим функциям будет передано одинаковое значение. таким образом из 2 функций a->b получим одну функцию, её параметр - f0 a
>Проверить младший бит это очевидно и уже оптимизировано Препода из университета напомнило. К чему это битоебство, если на практике нужно для каких-нибудь высоконагруженных систем и прочих оптимизаций, которые будут использовать одни системные программисты.
>>2196460 >Тут надо говорить предметно >main = traverse print [1..100] абсолютно обычный хаскелевский код например у тебя есть список функций, взаимодействующий с окружением print. ты хочешь распараллелить вычисление элементов. учитывать наличие взаимодействия в хаскелле никак не надо - порядок вывода элементов в консоль никак не изменится от распараллеливания, в то время как во многих языках порядок будет абсолютно произвольный и фикс этого будет лежать на плечах программистов
>>2196474 Слушай, раз ты в хаскелле с распараллеливанием имеешь дело, можешь подскажешь, как у вас там дело обстоит с вычислениями на gpu. Я на С пытался осваивать cuda, но жутко заебался вникать в это по итогу сделал мой коллега, мне оставалось нужный матан написать куда он тыкнул.
>>2196470 >И это, оно работает, как zip (tail.f0) (f0 a). + > всё ещё не понимаю монады (>>=) :: m a -> (a -> m b) -> m b где m - монада для списков (>>=) :: [a] -> (a -> ) -> для функций (>>=) :: (x->a) -> (a ->x->b) -> (x->b) или в do - нотации tail>>=zip $ f0 a == do x<-tail zip x $ f0 a самое хитрое здесь - комбинирование монад, происходящее в конце do - зависит от контекста монады. для списков - перебор всех комбинаций, для функций - объединение входа и т.д.
>>2196472 >одни системные программисты Так я и есть системный программист.
>>2196474 Не очень пониваю твой код. И не очень понимаю суть распараллеливания в твоём примере. Распараллелливание с моей колокольни это pthread_create (POSIX) или CreateThread (WIN32/64). Мне в голову не придёт параллелить задачу, которая просто выводит что-то на экран. Добавь сюда факт, что увеличение числа ядер/процессоров не ведёт к линейному возрастанию производительности, добавь чудовищный overhead на синхронизацию. Посему я буду распараллеливать вычисления только там, где это действительно нужно и даст выигрыш в производительности.
>>2196490 я ж простейший пример написал. подмени print любой сложной функцией, которая что-нибудь печатает в конце - и будет выигрыш. >>2196483 не вижу никаких указаний на то, что эта проблема как-то связана с распараллеливанием
>>2196496 >подмени print любой сложной функцией, которая что-нибудь печатает в конце или не в конце. или не печатает, а запрашивает с клавиатуры / общается с бд / делает запросы на сайт - порядок нигде не поменяется от использования распараллеливания
>>2196513 ну тут я, конечно, привираю. но синхронизация потребуется тут на момент окончания потоков - собрать результаты - и вроде всё. в процессе работы её быть не должно
>>2196521 Ты еблан? Параллельные вычисления на цпу и гпу ебать как отличаются по сложности низкоуровневых процедур и затратам на освоение. Сравни хотя бы cuda и openmp, прежде чем визжать.
>>2197046 На го тоже можно написать почти так же, как и на плюсах, вот только я хотел использовать стандартный пакет sort (для этого пришлось создать отдельный тип и заимплементить sort.Interface) и вынести куски кода в разные функции
>>2196452 >в примерах к блядоплюсам по перегрузке операций +-*/>><<буквально предлагается делать копию объекта дважды - перед работой и при использовании return - офигенно оптимально Че?
>>2197250 накатываешь класс матриц class matrix { vector<vector<double>>matr;
хочешь добавить оператор +, ибо хули нет-то?
matrix operator + (matrix&right) { matrix n(this); for (int i = 0;i < matr.size();i++) for (int j = 0;j < matr.size();j++) n[j] = matr[j] + right[j]; return n; }
создаёшь в нём локальную копию, чтобы не менять оригинал - первая копия есть matrix n(this); но эта матрица исчезнет при выходе из функции - ведь она локальная. а программа всё равно работает - так как с++ по тихому сделает копию на строчке return
>>2197458 >что на стеке а что в хипе алоцируется вызов new - главный признак хипа (явный или спрятанный в классе). практически все данные с переменным размером - хип частично или полностью: динамические массивы, вектора, списки, деревья, полиморфизм - тоже хип. статические массивы, простые данные, сами указатели, обёртки над динамикой - стек.
>>2197481 >>2196452 в оригинальном посте ж указано - фикс есть. но толку от него, если некоторые аноны >>2197250 даже не знают, что проблема существует
>>2197413 Зачем было копировать, если результаты сложения всё перезапишут? И так то стандартное решение: сделать матрицу в хипе и вернуть указатель, че сказать то хотел?
Нашёлся бы анон, который бы взял все представленные решения и протестировал. Нашёл бы неработающие или не выполняющие условия задачи, затем посчитал бы время выполнения и потребляемую память. У многих бы глаза открылись.
>>2197630 Если ты такой умный, может ты пару-тройку тесткейсов напишешь? Ну, что на входе и что на выходе ожидается. > затем посчитал бы время выполнения и потребляемую память Не нужно, т.к. решения на разных языках нельзя сопоставить между собой
>>2197716 >Если ты такой умный, может ты пару-тройку тесткейсов напишешь? Может быть и напишу. Сейчас вот попробовал 100000000 случайных числе сгенерировать, но что-то много получилось. Вентилятор гудит. Ещё генерируются. Дождусь когда завершится, уменьшу до 10 миллионов чисел.
>>2197597 >Зачем было копировать шоб оригинал не портить >сделать матрицу в хипе и вернуть указатель тогда вместо простого и удобного matrix a,b,c; ... a=b+c придётся писать рандомную работу с указателями - не торт
В архиве три файла - сортированные данные, несортированные данные и сгенерированный по несоритированным данным список индексов.
Насчёт перемножения - ха-ха-ха (три раза) там даже на double всё быстро-быстро уходит в infinity. Тем не менее, для чистоты эксперимента, умножение должно остаться.
При этом я дал вам фору - код был скомпилирован в режиме Debug без оптимизаций, а режим питания ноута "Максимум экономии". Не люблю греть по пустякам.
И да, это был код на С++. Я хоть и люблю С++, но на чистых Сях могу выжать побыстрее.
Я почти уверен что никто не захочет посоревноваться.Ну а вдруг?!!!
>>2197791 > так и до какого предела множителей плюсы тянут без погрешности?
Хрен его знает. Известно лишь одно - вот это число переполняется очень быстро. std::numeric_limits<double>::max()
Ну и как бы при умножении целых чисел погрешность будет мало ззначить. По хорошему нужно писать свою функцию умножения больших чисел или искать готовую. Но ради этой задачи заморачиваться не вижу смысла. Может быть тут эстэты есть и зафигачат от нечего делать. Но это точно буду не я.
>>2197791 >>2197792 >>2197793 Вы, блядь, ахуели? Причём тут кресты. Какое нахуй сравнение IEEE 754 и длинной математики у хаскеля. UPD ёбанный рот этого казино. Сейчас бы в 2021 возврат каретки делать.
>>2197794 >Какое нахуй сравнение IEEE 754 А кто сравнивает-то? DBL_MAX approximately 1.8 × 10308 Очевидно что на предложенном тесте double переполнится где-то на сороковой итераци или раньше. Он там вообще не к месту, как оказалось.
>Сейчас бы в 2021 возврат каретки делать. Чем тебе возврат каретки не угодил? Тем, что cr+lf? Да пофигу. Мог бы и бинарный захуячить. Но отчего-то мне казалось что большинство читающих тут ни разу не работали с двоичным данными. А так-то конечно было бы значительно быстрее -поделил размер файла на 8 - вот тебе и количество элементов, которые можно прочитать одним read сразу. И читалось бы всё меньше секунды, вместо 44 секунд.
>>2197797 > Но я в упор не понимаю откуда у тебя там десятки секунд набрались.
1. Загрузка из текстового файла. Каждая строка переводится из текствого значения в integer
2. push_back в vector каждого элемента. 1) std::vector is a sequence container that encapsulates dynamic size arrays. 2) std::pmr::vector is an alias template that uses a polymorphic allocator. The elements are stored contiguously, which means that elements can be accessed not only through iterators, but also using offsets to regular pointers to elements.J
3. Там 10 миллионов записей, это дохуя на самом деле. Файл unsorted.txt - 10 Мб.
4. Собрано в Debug.
5. План питания ноутбука - "Максимальная экономия заряда"
Давай подождём парней с Питоном и посмотрим на их скорость? Наверняка у них более быстрые десктопы с хорошим охлаждением.
>>2197804 inb4 надо хроно а у тебя утилита time. выкинь hdd, обнови систему >Давай подождём парней с Питоном и посмотрим на их скорость? Зачем меня ждать?
1. Ты создал новый массив с 5 миллионами элементов. Это ~38 Мб. 2. Ты создал отсортированную копию 5 миллионов элементов. Это ещё ~38 Мб.
При этом ты скушал "просто так" лишних 76 Мб ОЗУ.
Нифига не понимаю как у тебя получилось всего лишь в 5 с половиной раз медленне. Я конечно понимаю, что sort и выделение чётных реализовано средствами языка и выполняются в машинном коде. Но всё же 5 раз как-то мало. Я ожидал разницу раз в 20 или больше.
>>2197815 >А ты на каком наборе данных проверял? this >>2197784 >1. Ты создал новый массив с 5 миллионами элементов. Это ~38 Мб. >2. Ты создал отсортированную копию 5 миллионов элементов. Это ещё ~38 Мб. Пфф 3 readlines 4 массив array 5 join result >При этом ты скушал "просто так" лишних 76 Мб О 900 ёба
>>2198129 Забавно, что создание массива через arr := make([]int, 0, 10_000_000) На время загрузки практически не влияют. Всё-таки многократная алокация памяти всё еще дешевле чтения ссд.
https://play.golang.org/p/J5GksmzpazV При каждом запуске цифры плавают в диапазоне до двух раз, надо полноценный бенчмарк сделать и запустить 100500 раз, но мне лень.
>>2198154 Вот пример выше на С++, собраный Visual Studio в Release, запущенный на ноуте батарейке, но в режиме максимально производительности.
Я нихуя не понимаю, как включив сортировку вы показываете нормальные результаты. Один единственный моего цикл моего пример должен порвать в клочья любые варианты, использующие сортировку. Пусть хоть у вас 5 ГГЦ проц.
>>2198164 Единственная оптимизация, которую вижу у тебя - шаг по чётным элементам. я сознательно его не использовал, чтобы оба условия сделать в один проход.
Если заедомо известно, что массив неотсортирован, то обход с шагом 2 даст заметный выигрыш производительности, кроме того что количество итераций сократится в два раза, так ещё лишнего бранча с проверкой на чётность не будет. А условные переходы, как известно, ломают конвейер CPU.
>>2198171 >Единственная оптимизация, которую вижу у тебя Я другой анон, но не важно. Оптимизация у него ссд. >чтобы оба условия сделать в один проход. Ерохи делают два прохода и ебут с++.
Надо было подъебать "ерох" - в сортированных данных последний эелемент сделать меньше преподпоследнего. И тогда бы они соснули красиво. Так-то первый проход останавливается после нескольких итераций, как-только обнаруживается что данные не сортированы.
>>2198185 Я уже заебался дрочить ноутбук. Пусть он лучше греется на полезных задачах, которые деньги приносят, а не ради потешить ЧСВ на анонимном форуме.
>>2198193 И что тебя удивляет? Тут половина постов моих. Ага. Работаю программистом. Пишу на С# на работе. Причём не для пользователей, я для других программистов. Работаю с 2005 из дома, до этого работал в развитой капстране - ебашил в embedded для всякой экзотики, о которой ты не догадываешься. Что не так?
>>2198218 >Тут половина постов моих. А вторая, где я правлю ошибки и хуею с кода, моя. >Что не так? Да со мной что-то не так. Надо на работу устроится. Пойду немножко гореть.
>>2197780 >чтобы ориг не портить Зачем ты копируешь значения, когда достаточно инициализировать нулями, результат сложения всё скопирванные значения потрет все равно.
>>2198181 Вот только в продакшен коде важнее простота чтения кода и расширяемость. А оптимизация алгоритма для 1% случаев это уже чистейшей воды олимпиадный онанизм для мамкиных борщехлёбов
>>2199002 Всё в рамках регламента. Всё нормально Будто на том же кф решения не ломали из-за плохих нерандомизированных хешей, ну или там падающей до O(n^2) сортировки для примитивов в java
>>2198681 не, попробовал хаскель и офигел от того, что 1) к классам в комплекте нахаляву идёт пачка функций: конструктор с параметрами, конструктор копии, to_string, from_string, == > < (для некоторых также min,max,map и enum функции) 2) полиморфизм делается проще простого - никаких новых ключевых слов, не требует наследования или указателей 3) темы функций и шаблонных функций можно рассказывать между делом - выведение типов многократно упрощает задачу 4) да и супер-мега for делающий всё и вся вызывает немало затруднений у учеников - простые функции хаскеля могут быть неплохой альтернативой
>>2201908 продолжаем перебирать задачи для студентов? как насчёт этой: сгенерировать все возможные комбинации заданной длины из чисел 1,0,-1 такие, что сумма комбинации была бы положительной
>>2202558 Там примеры в конце есть. Типа изначально предполагалось фильтрация по чётным индексам в порядке возрастания (скорее всего). Можно отдельно менять анализ сортировки (по возрастанию или по уменьшению) и фильтрацию по индексам (чётные не чётные). Плюс еще можно вкарячить любое другое что захочешь (по аналогии), но сильно раздувать функцию шаблонами я не хотел.
Пока вы тут куличики в песочнице из питонов строите, на западе уже написали физбаз на асме и превзошли Си и Раст и прочий слоупочный хлам на порядок. Правда, только для avx2-процов, так что сильно не плачьте.
Задача очень примитивная. Можете посоревноваться на красоту и скорость. Дополнительная задача - выдать контрольную сумму данных.
Фишка задачи в том, что она настолько простая, что её выполнение не требует справочных материалов для языка, на котором вы пишите. Если вы не сможете решить эту задачу без щ=подсказок и справочников, значит вы не умеете программировать.
>Это конечно мило, но ты не особо понимаешь что делаешь Спасибо.
>зачем оно шаблон, если оно не шаблон и вообще может быть лямбдой? По аналогии с компараторами less и greater. Шаблон - я хотел показать работу с разными типами в которых определены нужные операторы. Как ты тут предлагаешь использовать лямбду? Объявлять в самой функции через auto шаблоном и потом юзать? Или откуда-то извне передавать? Ну такое, покажи пример.
>Медленно, убивает оптимизацию, никто этим не пользуется. Особенно в цикле где ты точно знаешь что оно не выйдет за пределы. В курсе, не было каких-то причин делать доступ через [] я не заявлял, что это супер оптимизированный алгоритм. Там много мест, которые можно оптимизировать.
>Хотелось применить вариант, но это очень ректальный способ его применять Я не так часто его юзаю. Опять же покажи более простой? Ну да, можно запилить структуру с optional или пару. Моя цель скорее просто показать, что такое бывает. Там много вариантов, как можно сделать.
>>2203333 Не покусал, а конкретно погрыз. И не только хаскель, а всё хорошее, что попалось Ларри под руку. Получилось годно, ящитаю. По духу всё тот же хакерский швейцарский нож "перл". Напрасно в сраку переименовали
>>2202589 >>at >Медленно, убивает оптимизацию Схуяли? Проверки выхода за пределы включаются/отключаются флагами компилятора. В остальном at ничем не отличается от [].
>>2203401 Это две абсолютно разные задачи. Полное решение вот тут, но я форшманулся с кодом символа 0x26b9, поэтому там пропали звёздочки. Ну а второй пример, это подарок местным.
>>2203432 Забавно что даже после предоставленного решения ты настаиваешь на кривой постановке задачи. Походу ты не отличаешь текстовые данные, от двоичных. Я сегодня в хорошем настроении и научил тебя чем они отличаются.
>>2203442 >если все файлы звать бинарными - то просто проебётся весь смысл В словах "преобразуйте в бинарный формат" смысла не больше. КАКОЙ ФОРМАТ БЛЯДЬ? Или я что-то пропустил и у нас только два способа представления информации осталось: ASCII и некий бинарный?
>>2203448 Не копротивляйся. Вот те две картинки выше, они показательны. Так удивительно совпало, что 100 чисел заняли ровно 1000 байт - по десять байт на число. Это совершенно случайно, потому что такой набор данных. Те же сто чисел в двоичном формате заняли ровно 800 байт - по восемь байт на число.
Все эти json и yaml съели тебе мозги и ты не знаешь БАЗОВЫХ вещей. Если даже после всей предоставленной информации ты не понимаешь разницы между текстовым и двоичным форматом, то у меня для тебя плохие новости.
>>2203448 >некий бинарный почему некий? для большинства типов - просто сделать копию их байтового представления и сохранить в файл >у нас только два способа эти два способа - практически самые известные, так что большинство байтоёбов должны успешно угадать, что имелось в виду. для тех же плюсов это создать файл с/без флагом, а дальше просто хуярить обычный вывод
>>2203418 а ваще мы тут хуями меряемся, а не ракеты в космос запускаем. нахуяришь в крутом бинарном формате вместо обычного - красава, сделаешь файл в дохуя раз больше - мы с тебя покекаем
>>2203460 >так что большинство байтоёбов должны успешно угадать Байтоёбы, в отличие от тебя, зададутся вопросом: "в какой бинарный формат?". Даже в вопросе двоичного представления целых чисел есть куча нюансов типа порядка байтов (BE/LE) и кодирования отрицательных чисел, не говоря уж о всяких BCD
На прямоугольном поле для игры в морской бой размером M×N расположено несколько прямоугольных кораблей. Корабли не соприкасаются друг с другом. Ваша задача — определить всевозможные типы кораблей на поле и число кораблей каждого типа. Два корабля относятся к одному типу, если их размеры совпадают (корабли, которые могут быть получены друг из друга поворотом, также относятся к одному типу).
Входные данные Первая строка входных данных содержит два положительных числа M и N, не превосходящих 1000, задающие размеры поля. Далее идет M строк, каждая из которых состоит из N символов. Символ `1' означает, что соответствующая клетка поля занята кораблем, символ `0' — что свободна. Пробелов в строке нет.
Выходные данные Программа должна для каждого обнаруженного типа корабля вывести одну строку, содержащую три числа. Первые два числа задают размеры корабля (первое число должно быть не меньше второго), третье число задает количество кораблей данного типа на поле. Строки в выводе должны быть отсортированы по первому числу, затем по второму числу.
>>2203332 >По аналогии с компараторами less и greater Это наследие С++98 , тогда не было лямбд. С++ сильно поменялся после С++11, и много что есть в языке и стандартной библиотеке устарело.
>>2190286 (OP) >>2203600 Поясню. Это студенческая задача. Идешь по массиву ОДИН раз, считаешь сразу произведение, неубывание, хуение, ебение - ставишь флаги. А после выхода из цикла сравниваешь флаги и делаешь вывод.
>Это наследие С++98 , тогда не было лямбд. С++ сильно поменялся после С++11, и много что есть в языке и стандартной библиотеке устарело. См примеры в https://en.cppreference.com/w/cpp/algorithm/transform , например А как в этом случае мне делать декорацию функции на этапе компиляции? Тут я хотел показать декорацию функции обобщенными функторами на этапе компиляции. Это же можно сделать и через лямбды, но выглядеть будет менее читабельно. То что ты привёл в ссылке отражает другой механизм, когда мы передаём что-то в сигнатуру функции, я же делал параметризацию типами.
>В твоем случае надо пилить две отдельные функции Это как и зачем? Что за функции, как функции связаны с возвращаемым значением? Типа одна функция возвращает одно значение, а другая другое? У нас точка входа одна единственная функция. Нужны примеры в коде.
>Типичный юзкейс для варианта - хранить разнородные объекты в векторе, например. Что-то не припомню, что в плюсах, как в питоне можно такое провернуть. Только если не через any или void указатели. Нужны примеры в коде.
>>2190323 Желательно всё же считать умножение только тогда, когда уже проверил элементы на возврастание. А то вдруг там какая-то неумножаемая фигня которая переполняет всё.
>>2217580 >пик это только для лохов звучит прикольно на деле большинство таких "фразочек" это бесполезные трюизмы и переливание из пустого в порожнее (как и сам теоркат, если говорить о нем не как о языке, а как об отдельной науке)
Можно и целые числа так определить: (Z,+) это группа Гротендика категории конечно-порожденных абелевых однообъектных категорий, в которых каждый морфизм - это изострелка.
На самом деле так, скорее всего, порочный круг где-то появится, как если \mathbb {R} вводить через пополнение, но кого это ебёт.
>>2218481 Мимо. Мемы были про понты шизов, которые помешаны на "абстрактной чепухе", особенно про nlab-шизов и их идиосинкратический groupspeak. За теоркатом не будущее, а уже НАСТОЯЩЕЕ, если говорить о языке современных математиков.
>>2219139 >тифарет о, да тут ровные пацанчики сидят, оказывается хотя неудивительно, ибо недавно пара ребят отписалась, что ленга штудировала, а это святое
>>2191141 А я частенько на более-менее серьёзных проектах видел связку nginx+apache. nginx отдаёт статику и редиректит, а если запрос пришёл на php страницу - отдаёт запрос на apache.
>>2224905 > Сейчас C# умеет запускаться и под Линем. Оттого, набирает популярность. В твоих влажных мечтах. > ASP.NET ебёт в рот и в жопу любой фреймворк жабы. В твоих влажных мечтах. > Потому что правовые затыки. Потому что сирешётка ваша нахуй никому не впёрлась.