Skip to main content

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

nyt_digits_solver-0.2.1.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nyt_digits_solver-0.2.1-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

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

Hashes for nyt_digits_solver-0.2.1.tar.gz
Algorithm Hash digest
SHA256 d9d5fb05d00ab31709fe81bfdc640c1fc0a54d730ea169613d12472d38c73be8
MD5 4ce84873bc5f94bd9c396c8994b8eade
BLAKE2b-256 b25935a1592d9f5c96ca754ba98004a9303ac0458ee29f29dc75d3938afa8897

See more details on using hashes here.

File details

Details for the file nyt_digits_solver-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for nyt_digits_solver-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9a09847a6bf146d2233ca25bb78f563740399eccdc560ce7c2037c0d75cd64fa
MD5 813fb98ae8acd86c1aa731d835d1da5a
BLAKE2b-256 0cadf8ef06264b5f6cd1d9c0ada4e9f3025bb4661ce8389c5b84078fa643207b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page