# football2_dynamic

football2_dynamic, a Python code which counts the number of ways a given particular score can be achieved in football, respecting the order of events.

To be clear, this code only considers the score of one team. Moreover, in reaching a score, the sequence in which points were made is considered significant. Thus, the two sequences 6 + 3 and 3 + 6, which both achieve a score of 9, and contain the exact same values, are counted as different ways of doing so. They certainly would be experienced differently in live action.

Note that the reference, from the Riddler section of the Five Thirty Eight web site, does not count 6 + 3 and 3 + 6 as different ways of scoring 9. Also, as the Riddler puzzle is posed, it is not possible to get a score of 1 point for a one point safety (returned conversion) after the other team scores a touchdown. The code football_dynamic.py includes that possibility.

For instance, to get a score of 14, there are 63 ways, if we ignore the order in which opportunities are achieved.

### Languages:

football2_dynamic is available in a Python version.

### Related Programs:

change_diophantine, a Python code which sets up a Diophantine equation to solve the change making problem, which counts the number of ways a given sum can be formed using coins of various denominations.

change_dynamic, a Python code which uses dynamic programming to solve the change making problem, which counts the number of ways a given sum can be formed using coins of various denominations.

change_greedy, a Python code which uses the greedy method to seek a solution to the change making problem, which tries to match a given amount by selecting coins of various denominations.

change_polynomial, a Python code which uses a polynomial multiplication algorithm to count the ways of making various sums using a given number of coins.

football_dynamic, a Python code which uses dynamic programming to count the ways of achieving a given score in football.

knapsack_01_brute, a Python code which uses brute force to solve small versions of the 0/1 knapsack problem;

knapsack_greedy, a Python code which uses a greedy algorithm to estimate a solution of the knapsack problem;

mcnuggets, a Python code which counts M(N), the number of ways a given number N of Chicken McNuggets can be assembled, given that they are only available in packages of 6, 9, and 20.

mcnuggets_diophantine, a Python code which uses Diophantine methods to find the ways a given number N of Chicken McNuggets can be assembled, given that they are only available in packages of 6, 9, and 20.

partition_brute, a Python code which uses a brute force method to find solutions of the partition problem, in which a set of integers must be split into two subsets with equal sum.

partition_greedy, a Python code which uses a greedy algorithm to seek a solution of the partition problem, in which a given set of integers is to be split into two groups whose sums are as close as possible.

satisfy_brute, a Python code which uses brute force to find all assignments of values to a set of logical variables which make a complicated logical statement true.

subset_sum, a Python code which seeks solutions of the subset sum problem, in which it is desired to find a subset of a set of integers which has a given sum.

subset_sum_backtrack, a Python code which uses backtracking to solve the subset sum problem, to find a subset of a set of integers which has a given sum.

subset_sum_brute, a Python code which uses brute force to solve the subset sum problem, to find a subset of a set of integers which has a given sum.

tsp_brute, a Python code which reads a file of city-to-city distances and solves the traveling salesperson problem, using brute force.

tsp_descent, a Python code which is given a city-to-city distance table, chooses an initial tour at random, and then tries simple variations, seeking to quickly find a tour of lower cost for the traveling salesperson problem (TSP).

tsp_greedy, a Python code which reads a file of city-to-city distances, and solves a small traveling salesperson problem (TSP) using the greedy algorithm. It picks a starting city at random, and then successively visits the nearest unvisited city.

tsp_random, a Python code which is given a city-to-city distance table, seeks a solution of the Traveling Salesperson Problem (TSP), by randomly generating round trips that visit every city, returning the tour of shortest length.

### Reference

Zach Wissner-Gross,
The Riddler: Can You Take Down All the Bottles of Beer?,
Posted 3 February 2023,
https://fivethirtyeight.com/features/can-you-take-down-all-the-bottles-of-beer/

### Source Code

Last revised on 04 February 2023.