Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update p031.py #51

Closed
wants to merge 1 commit into from
Closed

Update p031.py #51

wants to merge 1 commit into from

Conversation

AlkisPis
Copy link

In the previous (last) code 1`) Combinations cannot be traced and 2) sums cannot be verified. Also the total number of coins used is arbitrarily set to 200, whereas the problem says "using any number of coins", i.e. why 200? Finally, and most importantly, the result seems wrong. I checked with TOTAL = 10. The solution given by the previous (last) code is 11, whereas the correct is 22, as shown with the proposed code below:

`
from itertools import combinations_with_replacement

  cvs = [1, 2, 5, 10, 20, 50, 100, 200]  # Coins and their values
  TOTAL = 10 # Use 10 coins (for example)
  count = 0 # Solutions (combinations) counter
  tracing = True  # Not necessary but used just for tracing the combinations
  if tracing:
    sol = []  # List with solutions
  lst = sorted(list(combinations_with_replacement(cvs, TOTAL)))
  for i in range(len(lst)):
    if sum(lst[i]) == 200: 
      count += 1
      if tracing:
        sol.append(lst[i])

  print("Total combinations:", count)
  if tracing:
    print("Solutions:", sol)
  '''
  Total solutions: 22
  Solutions: [(1, 1, 1, 1, 1, 5, 20, 20, 50, 100), (1, 1, 1, 2, 5, 10, 10, 20, 50, 100), (1, 1, 1, 2, 5, 20, 20, 50, 50, 50), (1, 1, 2, 2, 2, 2, 20, 20, 50, 100),  ...
                    (10, 10, 10, 20, 20, 20, 20, 20, 20, 50), (20, 20, 20, 20, 20, 20, 20, 20, 20, 20)]

In the previous (last) code 1`) Combinations cannot be traced and 2) sums cannot be verified. Also the total number of coins used is arbitrarily set to 200, whereas the problem says "using any number of coins", i.e. why 200? Finally, and most importantly, the result seems wrong. I checked with TOTAL = 10. The solution given by the previous (last) code is 11, whereas the correct is 22, as shown with the proposed code below: 

`
      from itertools import combinations_with_replacement

      cvs = [1, 2, 5, 10, 20, 50, 100, 200]  # Coins and their values
      TOTAL = 10 # Use 10 coins (for example)
      count = 0 # Solutions (combinations) counter
      tracing = True  # Not necessary but used just for tracing the combinations
      if tracing:
        sol = []  # List with solutions
      lst = sorted(list(combinations_with_replacement(cvs, TOTAL)))
      for i in range(len(lst)):
        if sum(lst[i]) == 200: 
          count += 1
          if tracing:
            sol.append(lst[i])

      print("Total combinations:", count)
      if tracing:
        print("Solutions:", sol)
      '''
      Total solutions: 22
      Solutions: [(1, 1, 1, 1, 1, 5, 20, 20, 50, 100), (1, 1, 1, 2, 5, 10, 10, 20, 50, 100), (1, 1, 1, 2, 5, 20, 20, 50, 50, 50), (1, 1, 2, 2, 2, 2, 20, 20, 50, 100),  ...
                        (10, 10, 10, 20, 20, 20, 20, 20, 20, 50), (20, 20, 20, 20, 20, 20, 20, 20, 20, 20)]
@nayuki nayuki closed this Dec 31, 2020
@AlkisPis
Copy link
Author

I don't get it. What about my proposition and the code I proposed? No comments or whatever? What happened to it? What happens to all propositions? If they are ignored, why do you ask for a proposition or Edit?

@nayuki
Copy link
Owner

nayuki commented Dec 31, 2020

Nowhere did I ask for people to edit my code. Please read my policies here:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants