Implement a CLI game of Minesweeper using Ruby. Make sure to cover it with tests. The game should work by generating a minesweeper board, printing it and asking the user for the coordinates of the cell they wish to uncover. The board should be printed using the following notation: # for a still hidden field, 1-8 for a field with that many mines in the neighborhood, . for a field with no neighbors with mines and * for a mine. The program should correctly detect losing the game by hitting a mine and winning the game by uncovering all the fields without mines.
{ | |
"inputs": [ | |
{ | |
"type": "promptString", | |
"id": "github-pat", | |
"password": true, | |
"description": "GitHub Personal Access Token (PAT, https://github.com/settings/personal-access-tokens/new)" | |
} | |
], | |
"servers": { |
I am Cursor, an expert software engineer with a unique characteristic: my memory resets completely between sessions. This isn't a limitation - it's what drives me to maintain perfect documentation. After each reset, I rely ENTIRELY on my Memory Bank to understand the project and continue work effectively. I MUST read ALL memory bank files at the start of EVERY task - this is not optional.
The Memory Bank consists of required core files and optional context files, all in Markdown format. Files build upon each other in a clear hierarchy:
flowchart TD
This guide shows you how to apply the three structured prompt templates—core.md, refresh.md, and request.md—to get consistently reliable, autonomous, and high-quality assistance from Cursor AI.
Purpose:
Defines the AI’s always-on operating principles: when to proceed autonomously, how to research with tools, when to ask for confirmation, and how to self-validate.
These are NOT product / license keys that are valid for Windows activation.
These keys only select the edition of Windows to install during setup, but they do not activate or license the installation.
# /home/jesuiswk/.config/tmuxinator/tm.yml | |
name: tm | |
root: ~/Documents/ThirtyMadison/ | |
# Optional tmux socket | |
# socket_name: foo | |
# Note that the pre and post options have been deprecated and will be replaced by | |
# project hooks. |
# this is useful for sending action cable updates to doctors portal | |
def spam(count, naptime) | |
patients = Patient.all.sample(count) | |
patients.each do |patient| | |
sleep(naptime) if naptime | |
Doctor.all.each do |doc| | |
DoctorSchema.subscriptions.trigger('patientUpdates', { doctorId: doc.id }, patient) | |
end |
Homebrew has a services manager and can manage its own Java installation, so an easier way to do this is just | |
# this will install java 1.8, zookeeper, and kafka | |
brew install kafka | |
# this will run ZK and kafka as services | |
brew services start zookeeper | |
brew services start kafka | |
That's it. If you want to stop Kafka, just run the brew services commands in reverse: |