71 comments

[ 2.6 ms ] story [ 142 ms ] thread
I love this collection. There are also excellent mobile versions with no ads that I love for basic puzzles to kill some time
An excellent free Android version is also available: https://play.google.com/store/apps/details?id=name.boyle.chr...

These are wonderful logic puzzles and particularly good implementations of them. For instance, their Minesweeper guarantees that it is solvable - you will never have a 50/50 choice you cannot identify.

> For instance, their Minesweeper guarantees that it is solvable - you will never have a 50/50 choice you cannot identify.

Alas, I've backed myself into a corner a couple of times and triggered "just gotta guess" choices in it - while it's generally good at this, it's not a 100% implementation based on my playing.

I find "Net" way more fun though for quick casual gaming, a 7x11 grid (depends on exact screen size) with wraparound enabled is a favorite for easy to tap but enough squares to make it take some time to solve (about 5 minutes per game, give or take).

Sure it's not something you're overlooking? Haven't encountered it myself.

Sometimes in constraint puzzles, one clue is also that there is a unique solution. So if doing one choice implies that some other choice can be arbitrary, that's not the solution.

(comment deleted)
> backed myself into a corner a couple of times and triggered "just gotta guess" choices

At least for me sometimes a situation that looked like "just gotta guess" was actually solvable by knowing the total number of remaining mines, as one choice in the "guess" would imply more mines than the other.

Once I had a field where the last place to uncover was completely surrounded by mines, revealing the digit 8 underneath.
Isn't it known how many mines are on the board, so that is not actually a problem since you could count that all of the exposed/marked mines == total # of mines?
Sorry, it was meant as an example for that, not as a counterpoint. I did solve the field without guessing, so it wasn't a problem.
> Alas, I've backed myself into a corner a couple of times and triggered "just gotta guess" choices in it - while it's generally good at this, it's not a 100% implementation based on my playing.

This should not happen because the current implementation [1] always tries to solve a randomly generated puzzle deductively, and never generates a puzzle that hasn't passed the check. (There are some shortcuts, including dynamically "perturbing" the current puzzle to make it uniquely solvable.) "Solvable" puzzles do not guarantee no backtracking though, so that's probably where you gave up. Also note that you should take account for the number of remaining mines, which can frequently be the sole information left for the very last mines.

[1] https://git.tartarus.org/?p=simon/puzzles.git;a=blob;f=mines...

I think you may have overlooked a logical solve. I dug into the code for his Minesweeper at one point and IIRC it works by generating random boards and putting them through a deterministic backtracking solver that gives up when faced with one of these choices. I think it then has a way of changing the board to be solvable. Or it just generates a new one, I don't remember.

I've also played it quite a bit and can't remember having any undecidable boards.

This port is awesome, I remember getting it on the very first android phone (HTC G1/Dream with the little trackball, and I remember the gain actually supported that very well, as well as left/right click with the two button. I've had this game on every phone ever since, for the past decade. It's the one constant on my phones.
If you like these puzzles, consider giving Nikoli some money, as they are a relatively small Japanese puzzle magazine and invented many of them. I find their handmade puzzles a lot more fun than the autogenerated ones this program makes.

https://www.nikoli.co.jp/en/puzzles/

https://nikolibookshop.stores.jp/

I recommend 'The Pencil Puzzle 2022' (and other years) which has puzzles from their entire range. English instructions are included.

My absolute favourite is Slitherlink. I've never been more addicted to a puzzle game than the DS version: https://www.eurogamer.net/puzzle-series-vol-5-slitherlink-re...

I'm also a fan of Nikoli-style puzzles. (My favorite is Nurikabe.) Nikoli themselves used to offer an iPhone app with lots of good ones, but it's sadly unavailable now.

https://puzz.link/db/ is a great source of community-made puzzles in this style that are playable in a browser. Also worth a look is https://www.gmpuzzles.com/blog/ if printing and playing on paper is okay.

I agree with you that human-made puzzles are much more interesting. The generated ones become boring quickly.

>playing on paper

Printing is no longer necessary! GMPuzzles have been providing Penpa+ (a Javascript puzzle tool) links for all new puzzles for a while now and are in the process of backporting all their backlog puzzles for digital solving, too. It's really awesome :)

Thanks, it's been a while since the last time I played GMPuzzles... clearly I should do it again.
I just checked Nikoli, and now I am getting a definite desire to play Shakashaka ( https://www.nikoli.co.jp/en/puzzles/shakashaka/ ).

Which is not in Simon Tatham's Portable Puzzle Collection. Guess I will have to code it one day. Edit: or just use web implementations - there are many...

Most implementations probably use algorithmically generated puzzles, which are less fun than human-created puzzles.
There's Slant in the collection, which seems similar... haven't played Shakashaka though, might be mistaking.
Here's Slitherlink and a ton of other puzzles playable on the browser: https://www.puzzle-loop.com/

I enjoy this collection, they all have a similar and consistent UI. I enjoy their Nonograms, Star Battle, Tents, Hashi and I've just tried their new Mosaic puzzle, seems fun enough.

Note that you can encode hand made (or other externally generated) puzzles in a format that Simon Tanthams app accepts, and share them.

I'm not aware of anyone actually doing this for most puzzles, but the crossword world often lets you download puzzles in a generic format to play in different apps, and the apps often have ways of regularly downloading new puzzles from the web.

I believe there's also apps that can prefill a soduko grid from a photograph of a grid, so maybe a translator could be built to pass those to the Puzzles app in the appropriate format.

I really enjoy these. A screen-sized "slant" puzzle, or a "net" puzzle, can be quite relaxing. And it's fun to work out higher-level logical rules for making several related moves at once.
I enjoy this collection really much, and play many of them regularly using the Android port. https://play.google.com/store/apps/details?id=name.boyle.chr...

Some other similar games I recommend. Feel free to expand, I'm always looking for more!

Slitherlink, same as Loopy, but I prefer the generated puzzles here https://play.google.com/store/apps/details?id=com.ejelta.sli...

Instead of Pattern in the collection, play a variant of picross/nonogram with hand made levels, much more satisfying. Picross3d is similar but 3d, really good.

Sherlock and Honeycomb, two variants of hint games where you deduce what is where. Like "x is to the left of y".

Willa's Walk. Create a loop through rooms, but can never walk straight. All three can be found here for desktop and mobile https://www.kaser.com/mobile.html (they look funky but play well)

Hexcells, a bit like minesweeper but multiple different kind of clues. On Steam, but also a mobile variant called Sixcells. https://store.steampowered.com/app/265890/Hexcells/

https://0hh1.com/ fill a grid with yellow and blue, but never three in a row.

As for a non-constraint type of game, Snakebird is really clever, and really hard. https://play.google.com/store/apps/details?id=com.NoumenonGa...

> https://0hh1.com/ fill a grid with yellow and blue, but never three in a row.

The authors of that also did https://0hn0.com/ (Oh no!, to go along with Oh hi!), which is also fun.

These are both in OP's puzzle collection, or at least in the android app.
Ah, interesting—they're not in the iOS port, although they both have nice & small iOS apps themselves.
I guess Ohh1 is the same as Unruly. But 0hn0 is not the exact same as Range in the collection. Range includes the extra rules that the blockers cannot touch, and the remaining must be continuous.
Love it - and also hacked it quite a bit (e.g. extra shapes and controls for Loopy).
Frankly, once you have some practice, most of these games come down to a few rules that you apply mechanistically. However, I couldn't figure out ‘Cube’, and never in my life had luck with ‘Pegs’.
There's a easily memorisable solution to pegs that once learnt makes the whole game devoid of any interest.
Simon is also the programmer of PuTTY, the SSH/telnet client for Windows..
The developer documentation is absolutely top notch: https://www.chiark.greenend.org.uk/~sgtatham/puzzles/devel/

And I think the code is a masterclass of how to write C. Take a look at the source for the tents puzzle, it’s amazing. https://git.tartarus.org/?p=simon/puzzles.git;a=blob;f=tents...

I'll 2nd the code quality. I dug into the Mines code a while back as I wanted to use its puzzle generation algorithm to throw together a text-based version of the game. This turned out to be very easy to do.
Regarding Tents the puzzle itself, I know it under a different (arguably much better) formulation, as Heating The Houses.

The story goes that to heat each of the given houses you need to build exactly one gas tank for it. Tank can only heat one house. Tank square and house square need to share a side (and you draw a "pipe" connecting them). Tanks cannot touch other tanks, even diagonally.

And to be honest, the implementation lacks any way to "annotate" the situation in any way. This restricts the player to relatively small and unsatisfying puzzles. I do these on paper only, and I routinely do 35x25 problems, which I could have no hope to keep in my head - the chains of reasoning can span a hundred or more houses. They are published in booklets called "Logi-Mix" (a Polish publication per se, but digestible even if you don't know the language).

This collection is truly amazing.

* There is an own creation algorithm for each game, sometimes including parameters like difficulty

* For every game there must be only one possible solution. This means that you never have to guess. Otherwise, it's a bug. For Mines (Minesweeper clone), this is an outstanding feature.

* The solution for almost every game is implemented with a respective solving algorithm. You can learn a lot from the source code.

* Each generated game comes along with a seed which you can share with others, or for a bug report.

* The project cross-compiles out of the box for many platforms, including Android, Windows and Web. And the resulting Windows binaries are tiny, because it does not use a bloated GUI framework.

* It provides a well-thought framework in case you want to add another game.

* Icons of the game are created on-the-fly during the building process

I've played Simon Tatham's Puzzle Collection on so many devices. I even included it in a keychain Debian variant: https://www.neilvandyke.org/lildeb/

A large "Net", with wrapping, is probably my most often go-to game on smartphone, when waiting somewhere, for transit or an appointment. Sometimes I think about the rules and heuristics I'm using, and how they might be generalized, or more might be learned. Other times, I'm just enjoying how they let me make progress.

Net is actually the one game I prefer to play on a computer, as I find the keyboard controls particularly useful for it. I think Signpost or Magnets are my favourite to play on mobile.
I really love seeing the ethos of the old internet shine through with new ideas.
There's something really awesome about learning a new game, it's ruleset, then techniques and tricks. Like once you play a game for a long time, you go into automatic mode and you're not really learning anything anymore, like most people who play normal sudoku or minesweeper. I much prefer the learning phase than the doing phase of a puzzle, which is why I love this. I also love The Witness but that's getting offtopic.
> Puzzle implementations written in this framework are self-testing as far as I could make them

> Textual game and move descriptions, for example, are generated and parsed as part of the normal process of play. Therefore, if you can make moves in the game at all you can be reasonably confident that the mid-end serialisation interface will function correctly and you will be able to save your game. (By contrast, if I'd stuck with a single make_move() function performing the jobs of both interpret_move() and execute_move(), and had separate functions to encode and decode a game state in string form, then those functions would not be used during normal play; so they could have been completely broken, and you'd never know it until you tried to save the game – which would have meant you'd have to test game saving extensively and make sure to test every possible type of game state. As an added bonus, doing it the way I did leads to smaller save files.)

Is there a general name for code like this that deliberately makes use of functions it doesn't necessarily need to so that bugs are noticed early? I haven't heard it called self-testing but I don't have a name of it. I've done this before when features/functions are added that I know are rarely going to get called and I want an early warning if they break later by making sure they're called during regular usage.

These games are good for testing intelligent systems. Many of these games can be solved using optimization strategies or search.
Great stuff, but I really wish the author would have the decency to charge money for it
Last Call BBS vives :)
I was just thinking that dungeons and diagrams would make a great addition to this collection. Maybe a fun weekend project to implement that.
Simon Tatham? SIMON TATHAM!

Thank you for writing PuTtY, a Windows-based SSH client.

Totally made our day, months, years, and decades!

You rock, Simon!

Now I am going to play your games … for the first time. Thank you for raising awareness here, HN.

Many of these puzzles, and others, can be played in the browser at https://www.puzzle-loop.com/.

There are multiple puzzle sites, connected with common user accounts to keep track of scores. Random puzzles with varying difficulty, and daily challenges.

All of them can be played in the browser at OP's link.
I get antsy/fidgety while listening to podcasts (even interesting ones!), so I like to solve 5x5 Signpost while I listen. It's difficult enough to keep my fingers occupied, but simple enough to not distract me from the content of the podcast.
I played a lot of these games around ~2007. Excellent collection.
If anyone wants to crank the difficulty up to 11, I suggest the puzzle types "Towers" and "Unequal" at max size/difficulty. These puzzles can get hard much faster than they have any right to - I play them whenever I feel worried that perhaps P = NP.
The first prc I loaded in every Palm PDA I had :-)