This repository contains three standalone programs that implement a weighted-entropy heuristic for the classic Mastermind game, achieving an average of 4.3488 guesses for the full game set.
Program | Purpose | Hardware |
---|---|---|
kernel.cu |
CUDA-accelerated optimiser that computes stage-based weights | NVIDIA GPU |
treeGenFixedWeights.cpp |
CPU-based generator using fixed weights | any x86-64 CPU |
treeGenStageWeights.cpp |
CPU-based generator using stage-based weights | any x86-64 CPU |
See the author’s paper for a full description of the algorithm and benchmarks.
Pre-compiled binaries are attached to every GitHub release:
Archive | Contents |
---|---|
mastermind-windows.zip |
Windows 10/11 64-bit executables (CUDA 12.4, built for compute ≥ 5.2) |
mastermind-linux.tar.gz |
Linux x86-64 executables (CUDA 11.8, glibc ≥ 2.35) |
- Download & extract.
- Run
mastermind_cuda_windows.exe
(Win) ormastermind_cuda_linux
(Linux).
OS | Required tool-chain | GPU driver |
---|---|---|
Windows | CUDA Toolkit 12.4 + Visual Studio 2022 (MSVC 14.4x) | NVIDIA driver ≥ 531 |
Linux | CUDA Toolkit 11.8 + GCC 11+ | NVIDIA driver ≥ 470 |
git clone https://github.com/obsessivecompulsiveaudiophile/mastermind.git
cd mastermind
Windows (Visual Studio Developer Prompt)
cmd
:: CUDA program
nvcc -arch=sm_52 -O3 -o mastermind_cuda_windows.exe kernel.cu
Replace -arch=sm_52 with -arch=sm_86 (or your GPU’s compute capability) for maximum performance on newer cards.
:: CPU programs
cl /EHsc /O2 treeGenFixedWeights.cpp /Fe:treeGenFixedWeights_windows.exe
cl /EHsc /O2 treeGenStageWeights.cpp /Fe:treeGenStageWeights_windows.exe
Linux
bash
# CUDA program
nvcc -arch=sm_52 -O3 -o mastermind_cuda_linux kernel.cu
# CPU programs
g++ -O3 -std=c++17 treeGenFixedWeights.cpp -o treeGenFixedWeights_linux
g++ -O3 -std=c++17 treeGenStageWeights.cpp -o treeGenStageWeights_linux