Ответы пользователя по тегу Python
  • Почему не работает map?

    @Sayonji
    Потому что map вычисляет элементы лениво. Т. е. пока по нему не проитерироваться, он функцию применять не будет. Если очень хочется его использовать в этой задаче, можно, например, написать

    list(map(newsParser,links))
    Ответ написан
    4 комментария
  • Не устанавливается библиотека, почему?

    @Sayonji
    Качаете вот отсюда подходящий файл: python unofficial binaries, например, numpy_fgsfds.whl, и устанавливаете:
    pip install numpy_fgsfds.whl
    Ответ написан
    Комментировать
  • Как выбрать элементы массива, сумма которых максимально приближенна к заданному значению?

    @Sayonji
    Сложите все элементы массива (сумма S), отнимите сотню, и для полученного числа решите задачу о рюкзаке (стоимости предметов равны их весам). Получите набор элементов, в сумме ближе всего к (S - 100) снизу. Следовательно оставшиеся будут ближе всего к 100 сверху.
    В решении динамическим программированием при записи максимума в очередную ячейку также записывайте минимальное количество использованных предметов.
    Ответ написан
    Комментировать
  • Что не так в коде (Python3)?

    @Sayonji
    У вас не учитываются отрицательные а: не пройдёт тест -5x-5=0, например.
    Ответ написан
    Комментировать
  • Решение задачио рюкзаке с использованием PuLP?

    @Sayonji
    Жаль, что я не знаю ни палп, ни питон, но всё-таки могу посоветовать кое-что попробовать.
    Ваша задача вроде бы и есть задача о рюкзаке практически.
    Проблема видна в бесконечном количестве переменных (в статье, на которую вы ссылаетесь, переменных всего три), но, скорее всего, библиотека позволяет что-то вроде такого:
    LpVariable cond = LpVariable(«cond», ...) // это будет цена набора
    LpVariable cond_num = LpVariable(«cond_num», ...) // это будет размер набора
    for each cocktail:
    .. tmp = LpVariable(cocktail.name, ...)
    .. cond = cond + tmp * cocktail.price // складываем цены
    .. cond_num = cond_num + tmp // складываем количества
    .. problem += tmp <= MAX, concat(«c», i) // каждый коктейль входит столько-то раз (или там <= cocktail.max, я не знаю)
    // я не знаю, как в питоне клеить строчки, i — это счетчик, пусть он начинается с 3, номера 1 и 2 зарезервируем

    Наверное, у cond должен быть какой-то другой тип, что-то типо Expression, надо документацию читать.

    Потом,
    problem += cond == CASH, «c1»
    problem += cond_num == CHECK_LEN, «c2»
    и, например,
    problem += 5, «obj»

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

    Я честно не знаю, имеет ли всё что я написал какой-то смысл (не разбираюсь, код копировал из статьи по ссылке), можете попробовать, если вариантов больше не будет. Надеюсь, как-то поможет.
    Ответ написан
    Комментировать