как найти комбинации чисел в списке python, которые суммируют до заданного числа в n комбинациях? - PullRequest
0 голосов
/ 06 марта 2020

Вопрос, который я пытаюсь

Описание функции

Завершите функцию бонетрора в редакторе ниже. Он должен возвращать массив целых чисел.

bonetrousle имеет следующие параметры:

n: целое число палочек, чтобы купить k: целое число размеров коробок, которые хранит магазин b : целое число коробок для покупки

Редактировать:

  • Функция принимает n как количество палочек сфагетти для суммирования от всех коробок, купленных Papyrus.
  • b - это количество коробок, которые будут приобретены Papyrus, а затем все сфагетти в них будут добавлены в форму n
  • k будет общим количеством ящиков в магазине, каждое из которых содержит и увеличивает количество sphagetti, например, 8 ящиков будут в порядке 1 ящика == 1 sphagetti, 2 ящика == sphagetti ... 8-я коробка.

, если число n коробок, требуемых для Papyrus, больше по сравнению с теми, которые есть в наличии, тогда вы возвращаете -1.

Надеюсь, это прояснит вопрос еще немного

Также этот вопрос можно лучше понять через HackerRack https://www.hackerrank.com/challenges/bonetrousle/problem

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

Пример ввода

  • 4
  • 12 8 3
  • 10 3 3
  • 9 10 2
  • 9 10 2

Пример вывода

  • 2 3 7
  • -1
  • 5 4
  • 1 8

** Это мое решение **

Это должно сработать в первом тестовом примере, но я знаю, что нет Я не могу использовать b (количество коробок, которое скелетон хочет купить), потому что я не совсем понимаю, как это сделать go.

def bonetrousle(n, k, b):
    # list the range for the store boxes {done}
    # find if the number of boxes required by skeleton are accessible from the store
    # find a combination that gives me the number of sphagetti required by skeleton
    inventory=[item for item in range(1,k+1)]
    list_of_outcome=[]
    # if sum of the items in the store is greater than the number of 
    # individual sphagetti's wanted, this means,is possible to get
    # what skeleton came looking for
    if sum(inventory)>n:
        if b==2:
            for i in inventory:
                for j in inventory:
                    if i+j==n:
                            list_of_outcome.append("{}{}".format(
                                i,j
                            ))
        else:
            for i in inventory:
                for j in inventory:
                    for k in inventory:
                        if i+j+k==n:
                            list_of_outcome.append("{}{}{}".format(
                                i,j,k
                            ))
    else:
        return ("-1")
    if list_of_outcome!=[]:
        return ((random.choice(list_of_outcome)).strip())
Compiler Message
Wrong Answer
Input (stdin)
Download
4
12 8 3
10 3 3
9 10 2
9 10 2
Your Output (stdout)
3 5 4
- 1
8 1
8 1

Expected Output
Download
2 3 7
-1
5 4
1 8


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...