Задать вопрос
Ответы пользователя по тегу Алгоритмы
  • По какому принципу работает алгоритм с массивом очереди?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вы определитесь с формулированием вопроса.
    Если хранить задачи в массиве вам кажется слишком напряжно, можно использовать другие структуры, удаление которых не требует пересоздания (двухсторонний список, например).
    Чем пересборка массива мешает - также не понимаю. Нужно ж понимать как часто у вас добавляются/удаляются задачи, сколько времени занимает пересборка.
    Может быть можно просто помечать задачи как удаленные, и удалять раз в сутки в нерабочее время.

    В общем у вас вопрос слишком абстрактный
    Ответ написан
  • Как называется алгоритм?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    А причем тут алгоритм?
    Ты имел ввиду типы данных?
    Ну так граф. Но сейчас работать с битами - неудобно, ибо память не критична, а работа с битами занимает больше, чем с байтами, ибо усложнена адресация.
    Ответ написан
  • Какую структуру данных надо использовать что бы посчитать уникальные ip в огромном количестве?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Дан файл с ip адресами. ip могут повторяться. Вес файла многократно превышает объём оперативной памяти.

    Сколько оперативки?

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

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

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Сигнал?
    Вы путаете шину с какой шиной?

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

    Если же вам на уровне архитектуры готового процессора - то можно посмотреть инструкции ассемблера для сложения чисел. Отправляем два числа в регистры, выполняем команду Add, получаем результат в регистрах, достаем его.

    p.s. Счетчик команд обычно в шину не передается, это часть внутренней архитектуры процессора

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

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вообще не понимаю проблемы. Тут нкиаких условий к xyz не указано.
    Просто вычисляем abc, либо идем к преподу и уточняем условия
    Ответ написан
  • В какой области программирования попробовать себя?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Берешь любой интересный для тебя алгоритм и пишешь приложение, которое визуализирует его понятным для среднестатистического человека.
    И алгоритм, и спортивность.
    Ответ написан
    Комментировать
  • Чем одиноковость ключей в двух 2-3 деревьях отличается от одинаковости информации в двух 2-3 деревьях?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    потому что данные это пара ключ-значение. Следовательно есть три варианта:
    ключи разные, значения одинаковые
    ключи одинаковые, значения разные
    ключи разные, значения разные.
    Ответ написан
  • Кто хорошо знаком и желательно специализируется на алгоритмах?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Чтобы написать Алгоритм нужно знать предметную область.
    Учителя по Алгоритмам не существует, это общее понимание о математическом складе ума и понимании предметной области. Например, чтобы составить математический алгоритм, надо знать математику.

    Чтобы составить алгоритм как накачать мышцы, надо примерно разбираться в биологии, питании и спорте.

    И так далее.
    А Алгоритм отдельно от предметной области - абстракция.
    Ответ написан
    Комментировать
  • Какую книгу лучше выбрать для изучения АЛГОРИТМОВ: Род Стивенс или Роберт Седжвик?

    saboteur_kiev
    @saboteur_kiev Куратор тега Книги
    software engineer
    Для изучения алгоритмов, одной книги будет мало. читайте обе в алфавитном порядке.
    Но без практики, прочтение вылетит из головы за пару недель.
    Ответ написан
    2 комментария
  • Как в пузырьковой сортировке подсчитать кол-во сранений и перестановок?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Указать переменные, которые вы используете внутри функции как глобальные и вывести их.

    from random import randint
    comparison = 0
    transfer = 0
    
    arr = [randint(1, 100) for _ in range(10)]
    
    def bubble_sort():
        global comparison
        global transfer
        for i in range(9):
            for j in range(9 - i):
                comparison += 1
                if arr[j] > arr[j + 1]:
                    arr[j], arr[j + 1] = arr[j + 1], arr[j]
                    transfer += 1
    
    print('original array\n', *arr)
    bubble_sort()
    print('bubble sort\n', *arr)
    print('comparisons: ', comparison)
    print('transfers: ',transfer)
    Ответ написан
    1 комментарий
  • Какой алгоритм сжатия данных использовать при архивации лог файлов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    "Стоит задача написать архиватор лог файлов"

    "Алгоритмов сжатия данных немало и у каждого своя спецификация.
    Как определить какой алгоритм сжатия данных нужно использовать для архивации файла, в котором много повторяющихся элементов?"

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

    Что я могу подсказать, так это свою догадку, что хотел ваш препод, но для этого нужно понять принципы алгоритмов сжатия по словарю - когда вы анализируете файл, находите в нем что-то похожее, составляете словарь похожих частей и сжимаете используя этот словарь.
    Так вот - в случае сжатия нескольких файлов, можно использовать словарь первого файла для сжатия второго и так далее.
    В архиваторах это называется solid архив.
    Его преимущество - меньший размер.
    Недостаток - при распаковке одного конкретного файла (например последнего), вам придется распаковать все предыдущие.
    Ответ написан
    3 комментария
  • Зачем давать право выбора машине?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Потому что хотят сделать автопилот, а для этого автопилот должен будет управлять автомобилем в том числе и не в стандартных ситуациях.
    Если производитель просто напишет софт, который решит что надо давить бабушек, производителя засудят родственники бабушек.
    А если алгоритм будет утвержден со стороны правительства, то производитель скажет, что "мой автомобиль в данных условиях сделал все согласно закону".
    Ответ написан
  • Как рассчитать боевые характеристики в браузерной игре на JS?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    Зависит от вашего желания.

    Вы можете придумать формулы самостоятельно.

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

    Вы можете взять любую существующую игру и адаптировать ее формулы к своей.

    Но балансировать вам все равно придется - если не формулы, так параметры, если не параметры так взаимодействие хайлевелов и лоулевелов.

    И развитие игры (если оно подразумевается) всегда будет сводится к правке баланса. Я когда-то развивал MUD сервер. Около 30% работы - правка баланса.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Каждый C++ программист должен уметь пользоваться поисковыми системами.
    Особенно в тех случаях, когда он собирается задать вопрос, который за него уже задавали множество раз, и на который можно найти готовые ответы.
    Ответ написан
    Комментировать
  • Возможно ли создать программу путем перебора символов в файле?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Упоминая Теорему о бесконечных обезьянах, большинство совершенно не способно представить себе неограниченное время.

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

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

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Для начала 0..30+0..30+0..30 = 93 значения, а не 90.

    Во-вторых сложив, вы обратно не разложите, так как диапазоны пересекаются, и что 25+30 и 30+25 - для результата неважно.

    Что можно сделать для перевода число в двухначное:
    1. Переводим в двоичную систему, видим что на диапазон от 30 это 11110, и нам нужно 5 бит.
    2. Следовательно однозначно закодировать, с возможностью раскодировать три значения, нужно минимум 15 бит.
    3. 111111111111111 = 32767
    4. Можно использовать систему исчисления с бОльшим основанием таким образом, чтобы 15 бит влезло в 2 символа.
    5. Шестнадцатиричной будет недостаточно (7FFF - 4 символа)
    6. Следовательно нужно подобрать систему исчисления, где ваше число уместится в два знака. Подозреваю, что 46-ричной (30 + 30/2) должно быть достаточно с запасом, но под рукой готового калькулятора для свободного конвертирования нет, надо поковырять, осталось только подобрать 46 разных символов для обозначения числа.
    Ответ написан
    1 комментарий
  • Как обеспечить автономность программы от сервера?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    генерировать уникальный номер договора, который включает нечто уникальное для каждого инстанса программы.

    Номер договора не фиксированное число и может содержать все, что вам нужно (желательно конечно обойтись обычными символами).
    Ответ написан
  • Зачем нужна сериализация?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Например, вам нужно передать структуру данных на удаленный сервер.
    Структура данных выглядит примерно так
    struct {
    int age=17;
    string name="Vasya";
    date birthday="01/01/2001"
    }

    На удаленный сервер мы собираемся передавать обычным HTTP запросом, в который в принципе можно зааттачить XML, а можно передать просто одной строкой прямо в заголовке. Для этого мы можем нашу структуру данных серилизовать в строку, передать туда, там распаковать и получить сразу структуру.
    Разница в том, что мы на той стороне будем не "парсить" неизвестные данные, а именно десерилизовать.
    Ответ написан
    Комментировать
  • Как правильно организовать продажу билетов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Во всех продажах кинотеатров используется временная блокировка мест на короткое время, позволяющее пользователю совершить покупку.
    Кто первый кликнул - тот забронирован. При этом место помечается как "временно заблокировано", чтобы другой пользователь видел, что возможно через минуту оно освободится. Потом помечается уже как "продано".

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Почти все файлы хранят метаданные в самом начале. Поэтому шифруйте первый килобайт - более чем достаточно практически для любого типа файлов.

    Плееры, которые проверяют валидность файлов, такой открывать не будут.
    Ответ написан
    5 комментариев