exitexit / countdown-numbers-solver

Python function for solving the numbers game problems in the British game show Countdown.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Countdown Numbers Solver

Like my code? donate or consider donating to my Ether wallet: 0x3c2f57171FBc82D1F54de74f20Ce174ca4874298

A Python function for solving the numbers game problems in the British game show Countdown. The program is written in Python 3. If you are interested in learning about the game, check out here. Episodes of the game show can be found on YouTube.

Content

countdown_numbers_solver.py

The file contains a set of utilities for exploring the solution space of a given numbers problem and optimizing the output in a human readable format. The code is written mostly in procedural format for ease of comprehension.

Install PyPI Package

pip3 install countdown_numbers_solver

More documentation can be found at: https://pypi.org/project/countdown-numbers-solver/

Sample Usage

Example: numbers = [ 100, 25, 8, 3, 1, 1 ] and target = 984.
By default, the results were properly de-duplicated to eliminate the trivial variations of the same solutions.

>>> import countdown_numbers_solver
>>> countdown_numbers_solver.solve([ 100, 25, 8, 3, 1, 1 ], 984)
( 100 + 25 + 1 - 3 ) x 8
( 100 + 25 - 1 - 1 ) x 8
( 100 + 1 ) x ( 8 + 1 ) + 25 x 3
( ( 100 - 1 ) / 3 + 8 ) x ( 25 - 1 )
Total: 4 solutions.

To turn off de-duplication, set countdown_numbers_solver.OPTIMIZE = 0.
For example:

>>> countdown_numbers_solver.OPTIMIZE = 0
>>> countdown_numbers_solver.solve([ 100, 25, 8, 3, 1, 1 ], 984)
( 100 + 25 - ( 3 - 1 ) ) x 8
( 100 + 25 - 3 + 1 ) x 8
( 100 + 25 - ( 1 + 1 ) ) x 8
( 100 + 25 + 1 - 3 ) x 8
( 100 + 25 - 1 - 1 ) x 8
( 100 - ( 3 - 1 ) + 25 ) x 8
( 100 - 3 + 25 + 1 ) x 8
( 100 - 3 + 1 + 25 ) x 8
( 100 - ( 1 + 1 ) + 25 ) x 8
( 100 + 1 + 25 - 3 ) x 8
( 100 + 1 ) x ( 8 + 1 ) + 25 x 3
( 100 + 1 - 3 + 25 ) x 8
( 100 - 1 + 25 - 1 ) x 8
( ( 100 - 1 ) / 3 + 8 ) x ( 25 - 1 )
( 100 - 1 - 1 + 25 ) x 8
Total: 15 solutions.

About

Python function for solving the numbers game problems in the British game show Countdown.

License:Apache License 2.0


Languages

Language:Python 100.0%