Sprawdzanie czy z wartosci w liscie mozna wyliczyc konkretna liczbe

0

ak sprawdzić czy z wartości w liście można utworzyć dana liczbę,korzystajac tylko z tych konkretnych wartosci.

Załóżmy:

list=[1,1,3,3,3,3,5,10,23,53]

Chcemy otrzymać liczbę np. 9, jak widać można utworzyć ja z liczb [1,3,5],[3,3,3] wiec te elementy usuwam z listy i zostaje nam

list=[1,3,3,3,10,23,53]

1

W sumie to wspomniałeś o usunięciu 3, 3, 3. A tego nie usunąłeś ;P.
Przy okazji może wysil się chociaż trochę przy pytaniu żeby coś samemu spróbować napisać, to ci ktoś by chętniej pomógł, doradził gdzie masz błąd oparł by się o twój kod.

Zakładam że te liczby podałeś nie bez powodu jako dwa unikalne rozwiązania. Więc podrzucam ci kod który również rozwiąże problem jak go ująłeś, ale w inny sposób, nie uwzględniając unikalności.
Może ci to pomoże, ale pobaw się sam nad finalnym rozwiązaniem :).

def main():
  #Define list and sort for raise values
  Num_list = [1, 1, 3, 3, 3, 3, 5, 10, 23, 53];
  Num_list.sort()
  #Define how many args to arrive number in list.
  n = 3; #Your example
  #Define number to arrive
  to_arrive = 9;
  print("Input list:",Num_list);
  temp_list = check_combine(Num_list, n, to_arrive);
  print("");
  while temp_list:
    print("Temp list:",Num_list,"\nTo delete:",temp_list);
    for i in temp_list:
      Num_list.pop(i);
    temp_list = check_combine(Num_list, n, to_arrive);
    print("Succes");
  print("");
  print("Output list:",Num_list);

def check_combine(entry_list, combination, result):
  find_combinate = [];
  temp_check = result;
  for j in entry_list[::-i]:
    if j <= temp_check:
      temp_check -= j;
      find_combinate.append(j);
      if temp_check < 0:
        break
      elif temp_check == 0:
        if len(find_combinate) == combination:
            return find_combinate;
  return False

Program oczywiście można zrobić dużo optymalniejszy i znajdujący unikalne, ale to pierwsza działająca wersja którą napisałem po zobaczeniu twojego problemu, nim 'zratyfikowałem'(?) kod. Jakbyś miał duże problemy z tym, to pisz dokładniej co potrzebujesz i spróbuj samemu coś poprawiać, wtedy spróbuję naprowadzić na kolejne możliwości :).

0

Taka rada dla OPa, pamiętaj że często używanie pętli for w Pythonie to nie jest optymalne rozwiązanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1