How many unique ways are there to achieve a score in Football?

2

1

Challenge: given a number, calculate how many unique, order-independent ways there are to achieve a score of that number in American Football.

Let's see how few characters can be used in each of your favorite languages! The usual rules apply. Input and output in a way that is natural to your language.

Recall that the ways to score in Football are safety (2 points), field goal (3 points), touchdown (6 points), touchdown + extra point (7 points), and touchdown + 2-point conversion (8 points).

For example, given 9 as input, the program should return 4, since you could score:

  • 1 touchdown + extra point and 1 safety
  • 1 touchdown and 1 field goal
  • 3 field goals
  • 3 safeties and 1 field goal

Note that order does not matter.

Ben Reich

Posted 2014-01-06T22:28:55.987

Reputation: 1 577

Question was closed 2014-01-08T15:56:03.517

3I'm not familiar with American Football. Is the question just about ways of partitioning the number using 2,3,6,7 and 8? – swish – 2014-01-06T22:35:26.583

@swish yup! Just an actual version of the problem I found myself thinking about. – Ben Reich – 2014-01-06T22:43:42.843

4

This is essentially identical to Need change of 78 cents except for the values of some constants. (Although on reflection, since this question is better posed, it might be preferable to close the other one as a duplicate of this one).

– Peter Taylor – 2014-01-06T23:48:59.917

Awhh. I watch the Canadian Football League. I want my 1 point for punting into the endzone! – Cruncher – 2014-01-07T14:22:31.500

Answers

4

Mathematica - 42

Length@IntegerPartitions[#,∞,{2,3,6,7,8}]&

Prolog - 140

Never wrote anything in Prolog before, just knew that this problem should be quite nice for it.

p(0,_,[]).
p(N,[H|T],O):- N>=H,p(N,T,O). 
p(N,[H|S],[H|T]):- N>=H,M is N-H,p(M,[H|S],T).
f(N,C):- aggregate(count,X^p(N,[2,3,6,7,8],X),C).

?- f(9,C).
C = 4.

swish

Posted 2014-01-06T22:28:55.987

Reputation: 7 484

I only see 42 chars. Does this have something to do with the unicode character? – Cruncher – 2014-01-07T14:25:21.557

@Cruncher Oh, I forgot to put f= at the start, so it would be a function definition. – swish – 2014-01-07T15:23:20.843

0

Python - 146

t=int(input())
from itertools import*
print len([a for a in chain(*(combinations_with_replacement([2,3,6,7,8],n) for n in range(t)))if sum(a)==t])

aquavitae

Posted 2014-01-06T22:28:55.987

Reputation: 136

Instead of from itertools import ..., you can use from itertools import*. You only use combinations_with_replacement once, so having to use it wouldn't cost you after this change. – Konrad Borowski – 2014-01-07T13:19:40.860

True, I'll change it, thanks! – aquavitae – 2014-01-07T14:05:08.403