Задать вопрос
  • Как вернуть первые N максимальных элементов из массива без сортировки массива?

    wataru
    @wataru Куратор тега Алгоритмы
    Есть, есть строгие алгоритмы. Работающие за линейную сложность, гарантрованно возвращающие первые N элементов. Правда на практике используются скорее алгоритмы, которые или работют за O(M log N) или за O(M) в среднем (где M - размер массива).
  • Как вернуть первые N максимальных элементов из массива без сортировки массива?

    wataru
    @wataru Куратор тега Алгоритмы
    Не надо quickSelect вызвать N раз. После вызова с параметром N первые N элементов уже будут минимальными. N-ый будет на своем месте, а вот все пердыдущие могут быть и перемешаны. Ведь quickselect гарантирует правильность N-ого элемента именно тем, что все левее его - меньше его, а все правее - больше.

    А выбор минимума N раз - это самое плохое, что можно сделать.
    Если массив маленький, то тупо сортировка будет быстрее чем N раз искать минимум. Если N маленькое, то алгоритм с кучей из моего ответа будет гораздо быстрее.
  • Как проверить n-количество или они образуют последовательность Фибоначчи?

    wataru
    @wataru Куратор тега Математика
    Приведите пример входных данных и нужного ответа поограммы. Лучше несколько примеров - и положительные и отрицательные. Вопрос вообще непонятен.
  • Из за чего кириллица в исходном коде, после компиляции выводится латиницей (транслитерацией)?

    wataru
    @wataru Куратор тега C++
    Spooky 2020, Вы изменили исходник и увидели изменения тоже транслитерированными?
  • Из за чего кириллица в исходном коде, после компиляции выводится латиницей (транслитерацией)?

    wataru
    @wataru Куратор тега C++
    Армянское Радио, задание кодировки исходников совсем не тоже самое, что подменять строки полностью по какому-то никак нестандартизованному алгоритму, нигде не описанному.
  • Из за чего кириллица в исходном коде, после компиляции выводится латиницей (транслитерацией)?

    wataru
    @wataru Куратор тега C++
    Армянское Радио, Да ну, не верю, что компилятор будет строки константы переписывать. А вдруг они будут по сети посылаться? Или интерпретироваться как числа? Это же тупо набор байт. Я еще готов поверить, что wcout насилует строки при выводе, но это вряд ли. Скорее редактор при сохранении корябит исходник. Но еще более вероятно, что ничего этого не происходит и автор просто запускает что-то не то. Транслит - убогая практика, появившаяся от не поддержки кирилицы в разных сценариях. То, что этот ужас где-то действительно реализован как валидная стратегия локализации - это очень вряд ли.
  • Из за чего кириллица в исходном коде, после компиляции выводится латиницей (транслитерацией)?

    wataru
    @wataru Куратор тега C++
    Spooky 2020, поменяйте русскую строку первую. Добавьте, например, "аба" в конец, перекомпилируйте, запустите. Проверьте, действительно ли порограмма выводит это самое "аба" как "aba"? Я думаю, что вывод не изменится, потому что вы что-то не то компилируете или запускаете.
  • Из за чего кириллица в исходном коде, после компиляции выводится латиницей (транслитерацией)?

    wataru
    @wataru Куратор тега C++
    Приведите минимальный код (удалите все неважное из программы. В идеале оставьте только константу и вывод). Удостоверьтесь, что он именно так себя и ведет.

    Такой транслитерации не может нигде происходить. Вы или не то запускаете, или не разобрались с чужим кодом.
  • Сработает ли деструктор, присвоив atomic?

    wataru
    @wataru Куратор тега C++
    Mercury13, Добавлю, что вы пытаетесь детектировать UB через другое UB. То, что оно иногда сработает лишь даст вам ложную илюзию отстуствия UB в вашем коде. Если всякие аналоги valgrind не вариант, то подумайте над тем, как передавать через qt не голые указатели. Хоть guid, хоть индекс в массиве объектов будет тогда уж лучше, если наличие вот этого не-вашего кода так все усложняет, что надо городить всякие хаки для проверки на висячие указатели.
  • Какие разработчики работают с алгоритмами?

    wataru
    @wataru Куратор тега Алгоритмы
    Alexandroppolus, вот. как я и говорил. Посмотрите комментарий RabraBabr - "алгоритмы не нужны"
  • Сработает ли деструктор, присвоив atomic?

    wataru
    @wataru Куратор тега C++
    Mercury13,
    Упала сразу же — это круто! Хуже, когда не упала и потихоньку портит память.


    Гарантий никаких нет. Поскольку ваша проверка сама содержит в себе UB, может быть что угодно.
  • Сработает ли деструктор, присвоив atomic?

    wataru
    @wataru Куратор тега C++
    Mercury13, Короче. Я понял. Это у вас оппортунистская проверка - задетектить UB после того, как оно произойдет. Оппортунистское, потому что все-равно может на какой-нибудь системе упасть во время проверки данных не в своей памяти, плюс то что там кто-то левый положет потом может случайно стать равно SCRAMBLE.

    И ответ на ваш вопрос - нет, компиялтор может и удалить. Есть всякие платформо-зависимые функции для гарантированного зануления памяти, но как их прикрутить к атомикам - я не знаю. Но вообще компилятор может додуматся, что во время жизни объекта value не меняется и вообще удалить проверку нафиг.

    Я бы не городил этот огород, а использовал тот же valgrind для проверки. Ну или, если хотите, то вам придется написать собственный менеджер памяти. Переопределить new и delete и или не удалять память вообще и там внутри где-то как-то помечать (например, выделить на 4 байт больше перед данными). Или где-то запоминать, что память отчищена и проверять на висячие указатели какой-то функцией, отдельной от возможно удаленного объекта.
  • Сработает ли деструктор, присвоив atomic?

    wataru
    @wataru Куратор тега C++
    Mercury13,
    У живого объекта проверочная цифра правильная, а у умершего


    Умершего объекта обычно больше нет. Его память возвращена системе, или переиспользована для других данных компилятором. Любое обращение к памяти объекта после вызова деструктора (если вы его руками, конечно, не вызываете) - это уже обращение по висящему указателю, что есть UB.

    Если же вы сами руками вызываете деструктор у объекта (при этом у вас должен быть собственный какой-то менеджер памяти), то в этом случае, раз вы все еще хотите обращатся к какому-то полю объекта, вам стоит его не уничтожать, а переводить в "невалидное" состояние. Память все-равно не освобождена - ведь иначе UB будет. Для этого будет достаточно тупо bool is_alive и не надо какую-то защиту с канарейками городить. Ну или использовать первые несколько байт для пометки о валидности объекта, а остальные реинтерпритировать как ваш объект, тогда проверка будет как бы отдельно от логики самого объекта.

    QModelIndex слишком мал, чтобы держать умный указатель
    Не совсем понимаю контекст.

    Объект может быть потёрт не только деструктором, но и совершенно посторонним кодом.


    Это каким таким кодом? Если только у вас не собственный менеджер памяти, то объект трется при вызове delete на указателе, или после выхода переменной из scope. А деструктор обычно не трет объект, а лишь вызывается автоматически перед его "удалением" (не считая вызова free какого-нибуть).
  • Какие есть Алгоритмы генерации сетки Судоку?

    wataru
    @wataru Куратор тега Алгоритмы
    Непонятно: вам нужен алгоритм составления пазла, или алгоритм решения?

    Не ужели за столько лет ничего нормального не придумали или я плохо гуглил ?


    Неважно, как много лет ждать, если что-то невозможно - оно не случится.
  • Какие разработчики работают с алгоритмами?

    wataru
    @wataru Куратор тега Алгоритмы
    Alexandroppolus,

    В условиях ограничений по времени и "враждебной" обстановки это нервирует, надо быть в хорошей форме. А так, всякие кодоварсы и кодофорсы пользуются успехом.


    Ну в любой теме про собеседование найдется куча людей утверждающих "алгоритмы не нужны. Зачем их вообще справшивают. Лучше бы просто поговорили по душам". Претензии именно к стрессовости интервью - редкость.
  • Какие разработчики работают с алгоритмами?

    wataru
    @wataru Куратор тега Алгоритмы
    низкомолекулярный макрос, Алгоритмы, как фундаментальная математика. Переодически появляется что-то более эффективное, но старые алгоритмы от этого не становятся медленнее. И улучшение обычно не такое большое. Разница между старым O(n log n log log n) и новым O(n log n) алгоритмами не такая принципиальная, как между наивным O(n^2) и старым алгоритмом за O(n log n log log n).

    Какие-то прорывы, конечно, тоже случаются - но это большая редкость.
  • Как запрограммировать построение мультипликативной группы по неприводимому многочлену?

    wataru
    @wataru Куратор тега Математика
    По свойствам таких групп достаточно взять любой элемент, кроме единицы и нуля, и его степени дадут вам все элементы.


    Неправда.

    Если для вашего многочлена x является генератором, то x^3 им точно не является. Потому что в мультипликативной группе должно быть 15 элементов. Если взять x^3 то оно сгенерирует x^6, x^9, x^12, x^15 = 1. Только 5 элементов.

    Это так всегда, если мощность группы не простое число.
  • Существует ли такой алгорим?

    wataru
    @wataru Куратор тега Математика
    Mercury13, можно усложнить. пусть dosomething берет и выполняет a-ый в лексикографическом порядке алгоритм, передав ему b. Множество алгоритмов же счетное?

    Вот тут уже точно любой метод проверки этого кода становится эквивалентен решению задачи останова.
  • Существует ли такой алгорим?

    wataru
    @wataru Куратор тега Математика
    Mercury13, ну так точно так же могут быть частичные решения для задачи останова. Это неконструктивное доказательство. Я не знаю, что за dosomething() в искомом алгоритме. Но я знаю, что оно существует. Потому что иначе бы задача останова решалась.
  • Суть макросов в с++?

    wataru
    @wataru Куратор тега C++
    Adamos, Ну так и делать из sort макрос - это дикость какая-то. Тут явно, делают что могут, даже не задумываясь - зачем.