Ask your own question, for FREE!
Computer Science 21 Online
OpenStudy (anonymous):

Write a function, called numPens that takes one argument, n, and returns True if it is possible to buy a combination of 5, 8 and 24 pack unit in Python.

OpenStudy (lyrae):

How much python do you know? Do you know how to make a function? Do you have any code?

OpenStudy (anonymous):

Yes I know how to make a function.

OpenStudy (anonymous):

This is the exact question def numPens(n): """ n is a non-negative integer Returns True if some non-negative integer combination of 5, 8 and 24 equals n Otherwise returns False. """

OpenStudy (lyrae):

@Syamantak Are you still there?

OpenStudy (anonymous):

Yes

OpenStudy (lyrae):

I think i might have a solution, but I to be honest with you I have more experience with Java, so i might not be the most optimal one.

OpenStudy (anonymous):

Sorry the solution is not right , but nevertheless Thank You !

OpenStudy (lyrae):

Do you have some kind of answer to compare against?

OpenStudy (anonymous):

No there is no answer to compare against

OpenStudy (lyrae):

Do we have to use all three of them or could we use combinations with only one or two of the diffrent packsizes? for example: n = 15 => 3*5 pack

OpenStudy (anonymous):

We could use combination of any one any two or all three , we could also take a number twice and a number once

OpenStudy (anonymous):

for example a=5,b=8 and c=24 and n can be anything.It must be done like a+b or 2(A+B) OR A+B+C

OpenStudy (anonymous):

This is basically a variation of the old McNugget Problem. I am sure you can find lots on this on google. Here is a link to some related math, hope it helps http://www.mathnerds.com/best/mcnuggets/index.aspx

OpenStudy (anonymous):

And here is McNuggets in Python, found on google. def McNuggets(n): if n == 0: return True for i in (6, 9, 20): if n >= i and McNuggets(n - i): return True return False

OpenStudy (anonymous):

Slight adaption of my other post for fun. def McNuggets(sizes,n): if n == 0: return True for i in (sizes): if n >= i and McNuggets(sizes,n - i): return True return False for i in range(50): print(i,McNuggets((6,9,20),i)) for i in range(50): print(i,McNuggets((5,8,24),i))

OpenStudy (anonymous):

Lyrae, the only difference in output between the two seems to be at 0, mine shows True and yours shows False. Not sure which would be considered more accurate.

OpenStudy (lyrae):

It's probably yours, mine seem to fail at higer values(?) And also, recursive functions are awesome ;)

OpenStudy (lyrae):

Thinking about it, is 0 even considered a possitive integer(?)

OpenStudy (anonymous):

I would think no. Something interesting about the second function I posted is you can send it any set of sizes like below with 4 sizes without changing the function.. for i in range(50): print(i,McNuggets((6,9,25,31),i))

OpenStudy (lyrae):

Here're 3 different implementations of the same problem and they all preform equal. Like @msmithhnova said it's probably a slight modification on the McNuggets Problem. def numPens(n): i = 0 while i <= n: j = i; while j <= n: k = j while k <= n: if k == n: return True k += 24 j += 8 i += 5 return False def numPens(n): if n == 0: return True for i in (5, 8, 24): if n >= i and numPens(n - i): return True return False def numPens(n): if n == 0: return True elif n < 0: return False elif numPens(n - 24) or numPens(n - 8) or numPens(n - 5): return True else: return False

Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!
Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!