• Объясните как работает в данном случае программа?

    @zexer
    Реализовать удаление элементов с длиной равной единице лучше так
    [i for i in list if len(i) !=1]
    Ответ написан
    Комментировать
  • Как найти определитель матрицы (двумерного массива) на Java?

    @galaxy
    Присоединяюсь к предыдущим ораторам, но хочу предупредить, что рекурсивный алгоритм разложения по минорам имеет сложность O(n!), а 10! = 3628800. В общем, может тормозить, если это важно :)

    С точки зрения скорости лучше методом Гаусса привести матрицу к треугольному виду, определитель в этом случае равен произведению диагональных элементов. Сложность - O(n3).
    Ответ написан
    Комментировать
  • Почему функция возвращает 1 элемент массива?

    @galaxy
    1. Используйте тег <code>

    2. В последней строчке у вас ошибка (подумайте сами, как вы вызываете функцию)

    3. Что касается "почему": посмотрите сроку за строкой, что делает код:
    def exampleOne(pam1):
      # итерация по списку, в переменной i - очерендной элемент
      for i in pam1:
        # приравниваем весь список (???) квадрату i - что ожидается получить?
        pam1 = i**2
      # цикл поломался - pam1 больше не список (там квадрат первого элемента, то есть 4)
      # кладем его в новый список и возвращаем
      return [pam1]


    Я бы мог написать тут рабочий код, но вы же, видимо, изучаете Питон. Вот и учитесь на своих ошибках
    Ответ написан
    3 комментария
  • Как вывести сумму итераций цикла?

    includedlibrary
    @includedlibrary
    Небольшая рекомендация - указывайте типы аргументов в функциях и сами аргументы в прототипах:
    int start_int();
    int end_int(int start_int);
    int calculate(int start_int, int end_int);


    Решение - нужно переписать функцию calculate следующим образом:
    1. n++ нужно перенести в while, чтобы переменная n увеличивалась каждую итерацию.
    2. Установить начальное значение k в start_int, так как k - текущий размер популяции.
    3. Вместо start_int для обновления k использовать само значение k, по правилам обновления размера популяции
    4. Убрать printf, так как функция calculate должна находить количество итераций, его вывод лучше переместить в main.
    5. Убрать скобки вокруг return, оборачивать return в блок нет никакого смысла.
    6. Вернуть n вместо start_int.


    int calculate(int start_int, int end_int) {
        int k = start_int; //текущий размер популяции
        int n = 0; //счетчик
    
        do {
            k = k + (k / 3) - (k / 4);
            n++;           //инкремент счетчика
        } while (k < end_int);
    
        return n; //возврат количества итераций
    }
    Ответ написан
    7 комментариев
  • Все библиотеки которые я использую для своей программы будут в .exe?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Как настроите :)
    Смотрите статическая и динамическая линковка, отдельный прикол это COM то есть если вы вызываете например эксель из вашего приложения.
    Ответ написан
    Комментировать
  • Проблемы с библиотекой math.h Проблемы с cos?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    main.cpp:23:42: error: no matching function for call to ‘cos(float, double)’

    Вот же он тебе пишет, и даже стрелочкой тыкает, что ты пропустил скобку, и вместо cos(2 * a) у тебя получилось cos(2 * a, 2.0).
    Ответ написан
    1 комментарий
  • Почему возможно объявление глобальной переменной структурного типа до объявления этого структурного типа?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему возможно объявление глобальной переменной

    Потому что объявление всего лишь говорит о том, что имя существует и имеет такой-то тип. Оно не вызывает выделения памяти или каких-либо других действий для которых нужно знать как устроен тип связанный с идентификатором.

    В твоём втором примере struct interval b -- это определение переменной, выделяющее для неё место на стеке. Но его можно переписать, чтобы b тоже стало объявлением, например так:
    int main ()
    {
      extern struct interval b;
      struct interval 
      {
        int first;
        int second;
      };
    }


    Возвращаясь обратно к первому примеру, struct interval b; -- это tentative definition с внешней линковкой. Стандарт (С99) говорит о нём следующее (6.9.2:2):

    A declaration of an identifier for an object that has file scope without an initializer,
    and without a storage-class specifier or with the storage-class specifier static, constitutes
    a tentative definition. If a translation unit contains one or more tentative definitions for
    an identifier, and the translation unit contains no external definition for that identifier,
    then the behavior is exactly as if the translation unit contains a file scope declaration of
    that identifier, with the composite type as of the end of the translation unit, with an
    initializer equal to 0.


    Самое важное здесь -- as of the end of the translation unit, т.е. тип объекта из tentative definition таки должен быть определён, но не до появления этого tentative definition, а до конца единицы трансляции (или раньше, если вдруг встретится определение с инициализацией этого объекта).
    Ответ написан
    1 комментарий
  • Составить алгоритм перебора вариантов с весом?

    @dimoff66
    Кратко о себе: Я есть
    Если перестановки не нужны, то все просто. Каждый элемент либо входит в следующий вариант, либо нет. Соответственно делаете цикл 1 до pow(2, count($arr)). Преобразовываете каждое число цикла в двоичное встроенной функцией decbin, переворачиваете результат, и по нему составляете новый вариант - если 1 на соответствующем месте возвращенной decbin строки, то включаете элемент, если 0, то исключаете.

    $arr = [0 => 'a', 1 => 'b', 2 => 'c'];
    $res = [];
    
    for ($i = 1; $i < pow(2, count($arr)); $i++ ) {
        $bin = decbin($i);
        $case = "";
        foreach(str_split(strrev($bin)) as $ind => $symb) if ($symb == "1") $case .= $arr[$ind];
        $res[] = $case;
    }
    
    echo implode(", ", $res); // a, b, ab, c, ac, bc, abc
    Ответ написан
    Комментировать
  • Как задать матрицу X[5][7] на С?

    @res2001
    Developer, ex-admin
    int X[5][7];
    Ответ написан
    Комментировать
  • Имеет ли смысл создавать много простых методов?

    vabka
    @vabka
    Токсичный шарпист
    Много конкретных методов-обёрток лучше, чем большой свич. тк почти всегда вызывающий код и так знает что он читает. Излишней памяти тратится будет не много - очень часто компилятор такое может заинлайнить.
    Вариант со свичём и менее эффективен и менее красив
    Ответ написан
    Комментировать
  • Как рассчитать возможное количество вариантов пароля с доп. условиями?

    Lynn
    @Lynn
    nginx, js, css
    Стандартная задача на рекурсию.

    Представьте что вы уже умеете решать эту задачу для алфавита длиной n-1, n-2 и т.д. Пусть F(k) — количество паролей для алфавита длины k.

    Тогда для алфавита длины n у вас есть варианты:
    1. Не использовать в пароле последний символ — таких паролей очевидно F(n-1)
    2. Использовать в пароле последний символ — тогда в пароле не может быть предпоследнего символа и дальше можно его продолжать всеми вариантами паролей из n-2 символов. Т.е. таких паролей F(n-2)
    3. Пароль из одного последнего символа — один.

    Итого всего паролей из n символов F(n) = F(n-1) + F(n-2) + 1.

    База рекурсии: очевидно, что F(1) = 1, F(2) = 2.
    Ответ написан
    4 комментария
  • Какой алгоритм сортировки представлен?

    0xD34F
    @0xD34F
    похоже на quick
    Ответ написан
    Комментировать
  • Как реализовать алгоритм преследования игрока с учётом препятствий-полигонов?

    @linesb
    Если препятствия с углами и нет прямого пути то на первый взгляд кажется что бот должен двигатся по углам. Значит можно представить углы препятствии как вершины графа (бот и игрок тоже вершины) и найти путь от вершины где находится бот до вершины игрока. Пути между вершинами могут иметь стоимость (длинна пути), некоторые пути могут быть заблокированны (например другими ботами исли они там долго будут стоять)
    5f92aa7482bc1427798465.png
    Ответ написан
  • Как выявить сильное отклонение в массиве?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Математическое ожидание
    среднеквадратичное отклонение
    Ответ написан
    2 комментария
  • Сообщать ли менеджеру о minor-баге?

    BorLaze
    @BorLaze
    Java developer
    "Если отладка — процесс удаления ошибок, то программирование должно быть процессом их внесения."
    Э. Дейкстра


    Если в конторе за допущенный баг следуют санкции - в болото такую контору.
    Ответ написан
    Комментировать
  • Как повысить производительность js-кода?

    RAX7
    @RAX7
    возникла проблема со скоростью выполнения кода

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

    function partsSums(ls) {
      const result = new Array(ls.length + 1);
      result[ls.length] = 0;
    
      for (let i = ls.length - 1; i > -1; i--) {
        result[i] = result[i + 1] + ls[i];
      }
    
      return result;
    }

    Ответ написан
    7 комментариев
  • Где ошибка в алгоритме пермутаций?

    @o5a
    Алгоритм должен быть такой: с конца ищем первый символ, такой, что a[i] < a[i+1], так мы определяем наименьший разряд, который сделает число больше предыдущего. Затем нам нужно минимизировать "хвост", чтобы получилось число, ближайшее к исходному (чем меньше хвост, тем оно ближе к исходному). Для этого мы хвост сортируем по возрастанию и переставляем наше число наименьшего разряда с первым числом из хвоста, большим его.

    В примере с 1234567890.

    1. Ищем цифру наименьшего разряда, когда a[i] < a[i+1]. Это 8, хвост [9, 0].
    2. Сортируем хвост [0, 9] и идем по нему в поисках первой цифры, большей нашей 8. Это 9.
    3. Переставляем их и возвращаем результат
    1234567809 => 1234567908
    Ответ написан
    3 комментария
  • Что это за функция?

    olkhovichs
    @olkhovichs
    Ответ написан
    Комментировать
  • Каков шанс попадания в группу 2 из 10 человек?

    @TheCalligrapher
    Если идти "длинным" комбинаторным путем, то можно вычислить количество "благоприятных" размещений 10 человек по 10 позициям и разделить их на полное количество размещений (то есть на 10!).

    "Благоприятными" будут размещения

    (1, 2) (...) (...) (...) (...)
    (2, 1) (...) (...) (...) (...)
    (...) (1, 2) (...) (...) (...)
    (...) (2, 1) (...) (...) (...)

    и т.д, всего 10 вариантов. Количество размещений в каждом варианте очевидно равно 8!

    Итого, вероятность равна (10 * 8!) / 10! = 1/9

    Хотя на самом деле ответ 1/9 очевиден. Без потери общности можно считать, что сначала мы помещаем куда-то человека №1, а затем в одно из свободных мест человека №2. Вероятность, что человек №2 окажется в одной группе с человеком №1 очевидно равна 1/9. Другое дело, что следует показать, что в таких "очевидных" рассуждениях мы не теряем общности, т.е. показать, что не нужно еще отдельно рассматривать варианты, когда первым мы размещаем человека №3, вторым - человека №5 и только затем человека №1 и т.д.
    Ответ написан
    9 комментариев
  • Есть ли метод генерации большого простого числа с факторизацией p - 1?

    @cicatrix
    было бы большой ошибкой думать
    Для изобретения велосипеда и обучения тому, как всё это работает, генерить большие числа не требуется.
    Если уж очень хочется - то вот, ознакомьтесь. Ну и либо Решето Аткина, ну или того же Эратосфена.
    Это первое.
    Второе: никогда, никогда, никогда, никогда, никогда не пытайтесь реализовать криптографические алгоритмы для любых целей, кроме образовательных. Никогда не используйте собственную реализацию для защиты хоть чего-либо важного. Я вас, конечно, не знаю, но докторской степени по математике и нескольких лет опыта в криптографии и криптоанализе у вас, скорее всего, нет.
    Ответ написан
    5 комментариев