• Как сгенерировать всевозможные варианты Х значений?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Не знал, да ещё и подзабыл. Комбинаторные итераторы помогут.
    Ответ написан
    1 комментарий
  • Как преодолеть неуверенность при разработке джуниору?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Все джуны - плохие разработчики. Даже обладатели красных дипломов лучших профильных ВУЗов страны. Это нормально. Важно понимать, что стать лучше можно только преодолевая трудности - no pain, no gain. Нужно не сдаваться. Путь к "более-менее сносный мидл" - это как минимум 3 года упорного тяжёлого труда.

    И ещё, у меня за спиной 19 лет опыта и хороших достижений, но я до сих пор постоянно испытываю чувство неуверенности.

    spoiler
    в конце концов я не смог дальше и ушел с этой работы

    5cea35e2ad156212865359.jpeg
    Ответ написан
    Комментировать
  • Какая сложность алгоритма (относительно n)?

    @Mercury13
    Программист на «си с крестами» и не только
    O(n²), разумеется.
    Первый цикл выполняется O(n) раз, и второй O(n). Так что O(n²).
    Если быть точнее, те итерации, которые выполнятся,— это трапеция на квадрате n×n, никакого тебе O(n), O(n log n) и подобного не будет.
    Кстати, запись O(n/2) и O(n²/2) не имеет особого смысла — само определение символов Ландау говорит, что разница в константу не играет роли. По той же причине пишут O(n log n), не указывая, по какому основанию логарифм.

    UPD2. Запись O(n²) означает: «не превышает cn² при стремлении n→∞». Так что всё, что O(n), одновременно и O(n²). И «никакого тебе O(n)» означает, что оценку n² мы улучшить не можем.
    Ответ написан
    Комментировать
  • Как работает хеш-таблица / ассоциативный массив на пальцах?

    Kurku
    @Kurku
    Погромист
    Не знаю как именно в php реализована эта структура данных, но наверное вы можете прочитать об этом в официальной документации.
    В md5 и sha возвращается не длинная строка, а поток битов, в случае md5 битов 128. Это просто их шестнадцатеричное представление. Смею предположить, что array_keys просто хранятся в списке, или в array list, это не так важно.
    Откуда O(1)? От того, что при обращении, берется хеш от ключа, и по хешу получается индекс. А через индекс в массиве прямым доступом достается значение. Берешь хеш функцию, получаешь результат, а дальше делишь с остатком по размеру хеш таблицы.
    То есть вставка:
    i = hash(key) % hash_table_len
    hash_table[i] = value

    Выгрузка:
    i = hash(key) % hash_table_len
    value = hash_table[i]

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

    @Sumor
    По-умолчанию node.js работает с файлами как с текстовыми файлами в различных кодировках.
    bmp это бинарный (нетекстовый) формат. Для его чтения/записи нужно явно указывать кодировку 'binary' при вызове readFileSync, writeFileSync и т.п.
    Ответ написан
    1 комментарий
  • На сколько сильно отличается образование в ведущих и провинциальных вузах России?

    longclaps
    @longclaps
    Я искренне хотел бы дать тебе высшее образование в одном из ведущих вузов. Но я колеблюсь: достоин ли ты его? Не будет ли лучше сослать тебя в один из провинциальных вузов, где ты будешь просиживать штаны на бюджете?
    Математика всюду разная, это ты везде одинаков, и в этом жопа. Что в крутом вузе, что в пологом - ты будешь ждать, что тебя накормят с ложки. Но это не работает. Тебя накормят с лопаты.
    Ответ написан
    Комментировать
  • Дано взвешенный граф и найти вес самого легкого остовного дерева?

    longclaps
    @longclaps
    Не покровного, мой юный друк - остовного дерева.
    Неудивительно, что ты не можешь найти. В трёх соснах заблудился.
    Ответ написан
    Комментировать
  • Какое есть аналог learn.javascript.ru только для python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Аналога нет. Если ищите хороший учебник по Python, возьмите "Изучаем Python" Лутца.
    Ответ написан
    Комментировать
  • Где можно почитать/посмотреть про принципы проектирования и написания ПО для стратегически важных объектов?

    Vamp
    @Vamp
    Такие стандарты существуют. Наиболее известные - MISRA C и MISRA C++. Как можно догадаться, для языков С и С++, соответственно. Изначально созданы для автомобильной промышленности, но распространились и на аэрокосмическую отрасль, медицинскую технику, военных и прочие критичные к надёжности области. В том числе и АЭС.

    Из MISRA C выросли SEI CERT C/C++, AUTOSAR General Software Specification, JPL Institutional Coding Standard for the C (стандарт NASA) и ещё куча других.

    Вся суть этих стандартов в том, чтобы максимально ограничить используемые фичи языка - чтобы код был максимально прост (даже скорее примитивен) и доступен для анализа. Как правило, запрещено использовать бесконечные циклы, рекурсию, макросы, аллокации из кучи - вобщем, любые потенциально опасные операции, в которых чаще всего находятся ошибки. Так же накладываются ограничения на размер функции (в строках кода), цикломатическую сложность, покрытие автотестами и т.п.

    Помимо этого, существует ворох стандартов, описывающих подходы к организации процесса разработки и контроля качества. У каждой отрасли свои стандарты. Например, AS9100.

    Если вы интересуетесь вопросом чтобы применять подобные техники в повседневном программировании, то не стоит - никакого удовольствия и конкурентного преимущества вы от этого не получите. Если конечно ваше повседневное программирование не включает в себя разработку панели управления АЭС.

    Update 2019-12-30:
    На хабре появилась интересная статья с кратким обзором MISRA.
    Ответ написан
    Комментировать
  • Как читаются переменные в скобках на разных уровнях, и что такое выражение означает?

    @D3lphi
    Этой записью в англоязычной литературе обозначают число сочетаний. Читается, как "число сочетаний из n по l". В русскоязычной литературе чаще встречается обозначение через C:
    a73cf8428fc85510cade14325f0d8a3f460ed0c6
    Ответ написан
    3 комментария
  • Стоит ли читать книгу Таненбаума "Современные операционные системы" до прочтения "Архитектура компьютера"?

    Olek1
    @Olek1
    Читайте те книги, которые вы можете легко читать. И в том порядке, в котором вы всё понимаете. Если вы часто начинаете гуглить при прочтении, то лучше перейти на другую книжку, и позже вернуться к первой.

    Если вам рекомендуют все какуюто определённую книгу, но вы даже понимая о чем идёт речь читаете её тяжело и устаёте, то бросайте её, и ищите другую, которую вам читать в удовольствие, а не через силу. Одну книгу ктото может читать легко, а ктото другой вообще кирпичами срать при прочтении, и наоборот. Все книги и люди разные. Сколько людей, столько мнений и взглядов под разным углом. Вы уже не за школьной партой, где у вас вообще нет выбора в книгах по которым учиться, учитесь чтобы это приносило удовольствие, а не переступая через себя. Совмещайте полезное с приятным.

    Попробуйте хотябы одну из них начать читать, если не зайдёт, начните другую. Если обе на заходят, то третью, книг миллионы. Пока не найдёте свою. Только метод проб и ошибок поможет вам найти книги заточенные под вас.
    Ответ написан
    Комментировать
  • Какие мощности нужны для обучения нейросети?

    @nrgian
    Для вашей задачи годится видеокарта среднего-верхнего ценового сегмента
    Например, NVidia 1080

    А вот для использования уже обученной нейросети - годится более чем рядовой компьютер. Даже возможностей процессора телефона вполне хватит.
    Ответ написан
    3 комментария
  • Как сравнивать числа четвёртой точности в C11?

    Вам нужен тип __float128. Вы пытаетесь сравнить комплексные числа.
    Ответ написан
    1 комментарий
  • Какой язык программирования изучать новичку?

    @AVKor
    Pascal.

    П.С. Программисты (не имеющие опыта преподавания программирования) традиционно в 99 случаях из 100 путают два разных вида деятельности: программирование и обучение ему. В 99 случаях из 100 они просто предлагают начать с ЯП, которым зарабатывают деньги (в то время как задачи обучения такой цели в процессе этого самого обучения вообще не ставят и не должны ставить).
    Ответ написан
    Комментировать
  • Чему нужно учиться?

    32bit_me
    @32bit_me
    Программист, встраиваемые системы
    военным программистом

    Кто и на каких языках разрабатывает ПО для ракет и отрасли в целом?


    Я не сильно разбираюсь в военных специальностях, но, как мне кажется, такой специальности, как "военный программист" не существует.

    Возможно, вы удивитесь, но ПО для ракет, как и сами ракеты, разрабатывают совсем не военные, а просто обычные инженеры, многие из которых (хотя кого я обманываю — подавляющее большинство) даже не служили в армии. ПО для бортовой ЭВМ в основном разрабатывают на С, разное сопутствующее ПО для ПК - на разных языках, кто во что горазд, здесь нет стандартов. Delphi, C#, что угодно.

    Поэтому можно поступить в любой технический ВУЗ, имеющий соответствующие специальности.

    Но хочу сразу предупредить, работа в подобных учреждениях довольно специфична и не всем нравится. Хотя имеет и свои плюсы, молодой специалист может многому научиться и поучавствовать в серьёзных проектах, и быстро дорасти до ведущего инженера. Минусы — специфика, связанная с секретностью, бюрократия (не всех касается, конечно), и небольшие зарплаты. Но для начала карьеры это может быть неплохой вариант.

    По поводу секретности: сейчас рядовые инженеры имеют в основном третью форму секретности, которая не накладывает ограничений на выезд за рубеж.
    Ответ написан
    4 комментария
  • Что делать с изображениями, не попадающими под категории в нейронной сети?

    @Lepilov
    В таких случаях сетка тренируется на трех классах: котик, собачка, прочее. Для прочего берется один из готовых датасетов либо миксуется свой из разных источников.
    Без достаточно большого кол-ва обучающей выборки от ошибочного принятия слона за кошку алгоритм не застрахован.
    Других способов классификация на сколько я знаю нет.
    Ответ написан
    Комментировать
  • Оптимизировать код или как выделить всю вычислительную мощность пк на его выполнение?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Первое, что бросается в глаза - это многократное копирование массива. Представьте, что при сортировке мы бы после каждых двух-трех перестановок делали бы полный дубликат массива. Это же ужас! И это слабое место, постоянное перевыделение памяти больших размеров.

    Второе, что тоже важно - это сложность O(N*N). В вашем случае это критично, потому что много элементов в исходном массиве.

    Предлагаю немного изменить алгоритм. Делаем одно прохождение, но немного увеличиваем потребление памяти, в которой храним интервалы. Таким образом, мы избавляемся от постоянного копирования массива, а также уменьшаем сложность примерно до O(N).

    И маленькая оптимизационная хитрость - поиск интервала происходит по индексу, то есть O(1). Нужно немного поразмыслить, чтобы до этого догадаться, но в целом всё просто.
    Код
    <?php
    $arr = [100,125,75,175,25,300,275,325,375];
    $step = 50;
    
    $b = []; //-1 - deny, 0 - not set, 1 - has interval
    $int = []; //intervals if necessary 
    $step2 = intdiv($step,2);
    $arr = array_values(array_filter($arr, function($v) use ($step2,&$b,&$int) {
        $i = intdiv($v,$step2);
        $mod = $v % $step2;
        $res = true;
        if (isset($b[$i])) {
            if ($b[$i] === -1) $res = false;
            elseif ($mod < $int[$i][0] or $mod > $int[$i][1]) $res = false;
        }
        $b[$i] = -1;
        $b[$i+1] = -1;
        $b[$i-1] = -1;
        if (!isset($b[$i+2])) {
            $b[$i+2] = 1;
            $int[$i+2] = [$mod,$step2];
        } elseif ($b[$i+2] === 1) {
            if ($int[$i+2][0] < $mod) {
                $int[$i+2][0] = $mod;
                if ($int[$i+2][0] >= $int[$i+2][1]) $b[$i+2] = -1;
            }
        }
        if (!isset($b[$i-2])) {
            $b[$i-2] = 1;
            $int[$i-2] = [0,$mod];
        } elseif ($b[$i-2] === 1) {
            if ($int[$i-2][1] > $mod) {
                $int[$i-2][1] = $mod;
                if ($int[$i-2][0] >= $int[$i-2][1]) $b[$i-2] = -1;
            }
        }
        return $res;
    }));
    
    var_dump($arr); // [100, 175, 25, 300, 375]
    ?>

    Переписав алгоритм на С++, получите дополнительно 50-кратное увеличение скорости.
    Ответ написан
    3 комментария
  • Хочу изучать машинное обучение и робототехнику. Какие языки программирования я должен изучить?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Математику
    Ответ написан
    Комментировать
  • В чем смысл быть гуру тостера?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    1. Работа над личным брендом: Высокая репутация в профессиональных сообществах повышает привлекательность для нанимателей.
    2. Улучшение существующих знаний: Хочешь что-то понять, объясни другому.
    3. Приобретение новых знаний: Специализация замыкает в узком спектре задач и проблем, а Q&A-сервисы - это источник задач и проблем из самых разных областей и иногда под самыми неожиданными углами.
    4. Альтруизм: Большинству из нас кто-то помогал в начале пути, пришло время возвращать долг и делать свой скромный вклад в рост кадров.

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

    Для чего просиживаете на тостере по 5-6 часов в день?

    Я в среднем раз в полчаса-час заглядываю. Если находится интересный вопрос, могу потратить на него минут 10. Некоторые на перекуры больше времени тратят.
    Ответ написан
    7 комментариев
  • Где можно пройти курс по алгоритмам и структурам данных?

    @Andrey_Dolg
    Почитайте "Грокаем алгоритмы" книжка на 1 вечер, но сэкономит тучу времени на понимание основ. В ней есть лишь часть алгоритмов, но разжевано до основания, потому и на 1 вечер. Структуры тоже представлены частично.
    Ответ написан
    4 комментария