• Для чего в вызове функции ставить двойные скобки?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Чтобы передать кортеж из нескольких параметров, одним параметром. Но у вас в коде будет ошибка, так как вы объявили функцию с двумя параметрами, а при её вызове передаете один параметр.
    Ответ написан
    Комментировать
  • Алгоритм эффективного размещения?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    *offtopic* Лет 15 назад делал такое для записывания анимешных сериалов на CD-диски, только там было сложнее, потому что сериалы можно разбивать по нескольким дискам и записывать можно толко сериалы целиком. Эх... было время. Сейчас эти 300 дисков даже и прочитать-то нечем. И исходники пропали лет 10 назад =(.

    Как вам уже написали - эта задача о мульти-рюкзаке. Простого и эффективного решения у нее нет.

    Однако, на практике, скорее всего, вам не нужно оптимальное решение - нужна лишь его некоторая аппроксимация. Посмотрите задачу о рюкзаке. Там есть очень простое динамическое программирование с параметрами вида "можно ли используя файлы с 1 по i-ый заполнить ровно k (мега|кило)байт"

    Потом сморите в конце массива для всех файлов - это оптимальные заполнения одной флешки.

    Удалите файлы определенные на эту флешку из рассмотрения и повторяйте процесс.

    Можно навесить сверху полный перебор с отсечениями. Из массива ДП идля задачи о рюкзаке можно случайным образом получить несколько хороших заполнений.

    Потом в переборе пробуйте разные варианты, запускайтесь рекурсивно. Какой-то ответ будет найден моментально. Выходите из перебора, если текущее количество флешек/общее свободное место/сумма квадратов свободных мест превысило оптимальное найденное пока что.

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

    Альтернативно - составьте задачу целочисленного линейного программирование (integer linear programming) и натравите на нее какой-то из солверов. Они сейчас очень продвинутые. Правда тут уж как повезет. Может на вашей задаче вы ответа так и не дождетесь. В качестве переменных берите, что такой-то файл относится к такой-то флешке. Сумма по каждому файлу - ровно один. По каждой флешке сумма размеров файлов * на переменные <= размер флешки. Сумма свободных мест - минимизируется.

    Возможно, можно составить квадратичную целевую функцию, я не знаю, что сейчас солверы умеют. Гуглите quadratic integer programming solver.

    Если хотите минимизировать количество флешек, то можно завести еще переменные - занята ли флешка. Уравнения тут - эта переменная >= всех индикаторынх переменных для всех файлов для этой флешки. Целевая функция - сумма всех переменных занятости флешек.
    Ответ написан
    Комментировать
  • Каким знаниями должен обладать разработчик blockchain?

    Griboks
    @Griboks
    Необходимо обладать харизмой, предпринимательской жилой и умением убеждать инвесторов, что ваш блокчейн зачем-то нужен в условиях нашей законодательной базы.
    Ответ написан
    8 комментариев
  • Где лучше учить C#?

    datka
    @datka
    Комментировать
  • Как быстро найти зависимость элементов в последовательном ряду?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Если зависимость может быть любая (например, числа фиббоначи) - то никак. Можно поискать последовательность на oeis.org

    Если же возможна только зависимость вида +a_0, +a_1, +a_2,..., +a_k, +a_0, +a_1... т.е. повторяющийся фиксированный паттерн приращений, то есть быстрое и простое решение.

    Во первых, если вам дано 10 чисел, то всегда можно сказать, что есть паттерн длиной в 9 приращений.
    Но можно найти кратчайший паттерн с помощью алгоритма поиска периода в строке. Буквально, по определению, нужный вам кратчайший паттерн (типа {+3, -2} для второго примера) будет периодом строки. Правда, тут не строка, а массив чисел, но это вообще никак не меняет алгоритмы. Просто у вас алфавит нестандартный.

    Сначала от массива чисел перейдите к массиву приращений.

    Потом можно применить жадное наивное решение - просто перебираете все возможные значения периода от 1 до n/2 и проверяете, что a[i] == a[i+str] для всех i. Как только все совпало - вы нашли период. Это решение за квадрат. Если чисел вам задано много, то можно применить префикс функцию: найдите значение префикс функции (p) для всей строки и, если ее значение больше половины длины строки, то у строки есть период n-p. Это будет линейное решение.

    Еще можно применить алгоритм Дюваля. Тоже линейное решение, но более сложное в реализации и понимании.
    Ответ написан
    4 комментария
  • Кто может помочь определить шифрование?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Это не шифрование, а обфускация.
    Учитесь уже, наконец, пользоваться правильными терминами!
    Ответ написан
    Комментировать
  • Кто-то пытается меня взломать? (Объясните, что за запросы)?

    Zoominger
    @Zoominger
    System Integrator
    Ну да, пытаются сделать SQL Injection.
    Ставьте ограничение на кол-во отправлений в минуту, капчу, блокировку массовых запросов.
    Ответ написан
    7 комментариев
  • Почему все кабели на 60 гц?

    @AiR_WiZArD
    Кабель это не цифровое устройство, это тупо кусок экранированного провода, по которому очень быстро передаются 0 и 1. Стандартные кабели HDMI 1.3 и 1.4 могут передавать до 10Гбит в секунду. Считается по простой формуле 32(кол-во бит на пиксель)*Разрешение по оси X*Разрешение по оси Y*Частоту. Если полученное число лежит в пределах 10.000.000, то кабель обязан работать, если выше, гарантий нет. Для 4К надо брать HDMI 2.0, для 1440 подойдет 1.3-1.4
    Ответ написан
    Комментировать
  • Почему слишком большой размер данных после добавления данных в базу?

    Melkij
    @Melkij
    PostgreSQL DBA
    Удаляю значит старые записи в таблицах и php парсю xml файлы и вставляю в таблицы соответствующие.

    Ну и совершенно закономерно получаете двукратный рост как самой таблицы, так и всех индексов. Всё верно.
    Почему? Потому что MVCC. Удаление не удаляет данные, т.к. их может кто-то хотеть ещё прочитать из более старых транзакций, а только отмечает xmax - id транзакции, с которой записи перестают быть видимы. Место занимаемое удалёнными строками будет возможно затем переиспользовать под новые данные после прохода vacuum вручную или автовакуумом.

    Индексы, разумеется, тоже занимают место. И по той же самой причине индексы в варианте delete всей таблицы + insert будут занимать вдвое больше места.

    Когда вы хотите удалить всё из таблицы - вам нужен не delete, а truncate.
    Ответ написан
    1 комментарий
  • Что конкретно мне нужно знать в с#, чтобы создать игру на unity?

    GavriKos
    @GavriKos Куратор тега Unity
    Как говориться "нужны уверенные знания языка". В моем понимании - это когда при реализации задачи язык вам не мешает, а помогает. Т.е. вы не задумываетесь над тем КАК выразить алгоритм на языке c#. А думаете именно над самим алгоритмом.

    Судя по тому, что вы написали - вам в юнити еще очень рано. Начинайте с чистого шарпа. С чего начинать чистый шарп - таких вопросов на тостере полно.
    Ответ написан
    3 комментария
  • Почему все типы данных четные числа?

    @TheCalligrapher
    Причин для этого множество и не последнюю роль в этом играют требования (или рекомендации) выравнивания данных в памяти. Из соображений производительности на многих (или даже на большинстве) современных платформах данные должны хранится в памяти на границе, кратной степени двойки. Поэтому даже если вы изобретете тип, состоящий их 3 байтов, все равно по соображениям выравнивания вам придется хранить данные этого типа на 4-байтовой адресной границе, тем самым фактически теряя каждый четвертый байт впустую. В такой ситуации нет смысла заводить 3-байтовый тип, если его можно сразу фактически "бесплатно" сделать 4-байтовым.

    В ситуациях (или на платформах), где соображения тщательной экономии памяти являются более важными, чем соображения производительности, ваши аргументы будут более вескими. И для таких ситуаций многие языки программирования предоставляют средства для реализации именно таких более компактных типов.
    Ответ написан
    Комментировать
  • Как лучше связать frontend с backend-ом на c#?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    чем вам не нравится net mvc, net api ?
    странички хоть на рэзоре пишите хоть на mvc, а можете и просто vue, react , angular

    Зачем PHP ????
    Ответ написан
    3 комментария
  • Как экранировать спец символы для URL в C#?

    Ответ написан
    Комментировать
  • Почему присваивается значение "false"?

    petermzg
    @petermzg
    Самый лучший программист
    Двоичное представление числа 2 будет 10
    Двоичное представление числа 1 будет 01
    Логическое "И" (оператор &) в первом случае вернет 0 (00), а во втором 2 (10)
    Ответ написан
    3 комментария
  • Нужен ли .NET Framework?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Новые проекты нет смысла начинать, а поддержка идет еще со 2 го.
    Думайте сами
    Ответ написан
    Комментировать
  • Как перезапускать приложение через n минут?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    cron / sheduler linux / win
    Ответ написан
    Комментировать
  • Как заменить мультимедийные клавиши?

    profesor08
    @profesor08
    Как вы знаете, чтобы нажать на ноутбуке любую клавишу от F1 до F12 нужно задерживать клавишу Fn

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

    В самой винде есть возможность редактировать сочетания клавиш, скорее всего надо копать там. Еще можно воспользоваться какой-то прогой, такие наверняка есть.
    Ответ написан
    1 комментарий
  • Как компилятор понимает, что первую функцию, которую нужно вызвать, будет именно Main()?

    Casper-SC
    @Casper-SC
    Программист (.NET)
    В книге CLR via C# - Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. 4-е издание на странице 37 в главе Исполнение кода сборки написано:
    Далее основной поток вызывает определенный в библиотеке MSCorEE.dll метод, который инициализирует CLR, загружает сборку EXE, а затем вызывает ее метод Main, в котором содержится точка входа. На этом процедура запуска управляемого приложения считается завершенной.


    Так же написано в документации Microsoft, что вызывается именно метод Main, если в качестве параметра компилятора -main не передать название другого метода.

    Документация Microsoft:
    Main() и аргументы командной строки
    Запуск приложения
    Ответ написан
    22 комментария
  • Откуда столько вопросов про системное программирование?

    Zoominger
    @Zoominger
    System Integrator
    Сколько "столько"-то? Немного больше, чем обычно, видимо, хаброчка или другая какая помойка рекламу курсов системного программирования запустила.
    Ответ написан
    Комментировать