Riddle solver algorithms for the NYT Digits game
Project description
nyt-digits-solver
Puzzle solver for the NYT Digits game (no longer active).
Given a set of numbers and a target, finds the sequence of arithmetic operations (+, -, *, /) that produces the target. Also lets you explore all values reachable from a given input, with the steps to get there.
Installation
pip install nyt-digits-solver
Usage
solve
Returns a list of solutions. Each solution is a list of Step(numbers, operation) where operation is the step that produced that state (None for the initial state).
import nyt_digits_solver as ds
solutions = ds.solve([1, 2, 3], target=6)
# [
# [
# Step(numbers=[1, 2, 3], operation=None),
# Step(numbers=[3, 3], operation='2+1'),
# Step(numbers=[6], operation='3+3'),
# ]
# ]
for step in solutions[0]:
if step.operation:
print(f"{step.operation} → {step.numbers}")
# 2+1 → [3, 3]
# 3+3 → [6]
Find all solutions instead of just the first:
all_solutions = ds.solve([1, 2, 3, 4, 5, 25], target=452, how_many_sols=None)
explore
Returns a dict mapping every reachable value to the shortest list of Steps that produces it.
result = ds.explore([2, 3])
# {
# 5: [Step(numbers=[2, 3], operation=None), Step(numbers=[5], operation='3+2')],
# 1: [Step(numbers=[2, 3], operation=None), Step(numbers=[1], operation='3-2')],
# 6: [Step(numbers=[2, 3], operation=None), Step(numbers=[6], operation='3*2')],
# }
# Check if a target is reachable
if 452 in ds.explore([1, 2, 3, 4, 5, 25]):
print("reachable!")
# Get the steps to a specific value
steps = ds.explore([1, 2, 3, 4, 5, 25])[452]
for step in steps:
if step.operation:
print(f"{step.operation} → {step.numbers}")
CLI
nyt-digits-solver -n 1,2,3 -t 6
# Found 1 solution. Took 0.0 seconds.
# Start: [1, 2, 3]
# 2+1 → [3, 3]
# 3+3 → [6]
# Find all solutions
nyt-digits-solver -n 1,2,3,4,5,25 -t 452 -c 0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nyt_digits_solver-0.2.1.tar.gz.
File metadata
- Download URL: nyt_digits_solver-0.2.1.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9d5fb05d00ab31709fe81bfdc640c1fc0a54d730ea169613d12472d38c73be8
|
|
| MD5 |
4ce84873bc5f94bd9c396c8994b8eade
|
|
| BLAKE2b-256 |
b25935a1592d9f5c96ca754ba98004a9303ac0458ee29f29dc75d3938afa8897
|
File details
Details for the file nyt_digits_solver-0.2.1-py3-none-any.whl.
File metadata
- Download URL: nyt_digits_solver-0.2.1-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a09847a6bf146d2233ca25bb78f563740399eccdc560ce7c2037c0d75cd64fa
|
|
| MD5 |
813fb98ae8acd86c1aa731d835d1da5a
|
|
| BLAKE2b-256 |
0cadf8ef06264b5f6cd1d9c0ada4e9f3025bb4661ce8389c5b84078fa643207b
|