“A Symbolic-Probabilistic Artificial Intelligence Agent for Minesweeper.”
This paper presents a Prolog-based Minesweeper player implemented using symbolic artificial
intelligence. The system models the game board as a dynamic knowledge base containing cell
states, mine locations, board dimensions, and game status. It combines deterministic rule execution
with bounded model enumeration and probability estimation. Deterministic operations support
board construction, cell opening, flagging, recursive expansion of empty regions, and win/loss
detection. For decision-making, the agent identifies frontier cells adjacent to revealed clues,
enumerates legal mine assignments for sufficiently small frontiers, and derives mine probabilities
from the resulting models. When exact enumeration becomes computationally expensive, it falls
back to local or global probability estimates. The resulting architecture is interpretable and data-
independent, but its scalability, probability calibration, and treatment of unconstrained cells impose
important limitations. The implementation demonstrates how declarative logic programming can
express both the rules of Minesweeper and a practical uncertainty-aware solving strategy.
The original paper can be found here.
Keywords: symbolic artificial intelligence, artificial intelligence, constraint satisfaction, probabilistic reasoning, logic programming, model enumeration, Prolog, Minesweeper
“Simple Linear Regression example with scikit-learn.”
This article demonstrates how to implement simple linear regression using
scikit-learn. You will learn how to prepare the data, train a regression model,
make predictions, and evaluate its performance. The example provides a clear
introduction to applying linear regression in Python.
“Customer Churn Classification with Logistic Regression.”
This article demonstrates how to build a customer churn classification model
using logistic regression. You will learn how to prepare customer data, train
the model, predict whether customers are likely to leave, and evaluate its
performance using common classification metrics.
“CipherUnit: Breaking encryption of classical cipher algorithms using frequency analysis.”
This article introduces CipherUnit, a project that explores how classical
cipher algorithms can be analysed and broken using frequency analysis. You will
learn how patterns in letter frequencies can reveal weaknesses in traditional
encryption methods and help recover the original message.