Puzzle (6 blogmarks)

← Blogmarks

Advice for good puzzle design

https://www.reddit.com/r/gamedesign/comments/qgoxql/comment/hi7v47o/

Insightful list of tips on how to approach designing a puzzle. It's all very user-centric. The one that really stands out to me is: "A puzzle is not there to stump the player, it is there to be solved in a way that makes the player feel smart or skilled." That's what makes a puzzle fun and rewarding.

  • Start by designing the most simple, basic puzzles to show players how the mechanics work. You can build from those basic examples to create more complex and difficult puzzles.
  • Complexity and difficulty are not the same thing. A simple puzzle that works well is much more interesting than a very complex puzzle.
  • Think about the aim of a puzzle. A lot of puzzle designers get this wrong. A puzzle is not there to stump the player, it is there to be solved in a way that makes the player feel smart or skilled.
  • Misdirect the player, don't lie to them.
  • Puzzles come from blocking the player. Think of how you can block off the obvious solution to make the player find an alternative
  • Try deconstructing mechanics from popular games. How does Portal use the portals in different ways? How are portals and companion cubes combined to create puzzles?
  • Play The Witness and think about how each section of the game teaches you how each sub-mechanic works by gradually forcing you to understand its different properties. That game is practically a meta exercise in showing how puzzles are created.
  • Keep puzzles efficient. Don't force the player to spend ages doing the easy parts, and don't require the player to have pixel perfect movement or mad platforming skills (unless that's your game). Try to avoid puzzles that can get to an unsolvable state.

Solving Logic Puzzles with Microsoft's z3 SAT Soler

https://www.wdj-consulting.com/blog/logicpuzzle-z3/

This post walks through how to formulate a logic puzzle as the declarative elements that a SAT solver like z3 knows how to take in. It can then determine if the given elements are satisfiable (SAT) or not (UNSAT). It can also produce the set of values that make it SAT which is then a solution to the puzzle.

Here is the GitHub project for z3: https://github.com/Z3Prover/z3

Erich's Puzzle Palace

https://erich-friedman.github.io/puzzle/index.html

This is the kind of site that the internet was created for. A little HTML, a little CSS, a repeating puzzle piece background. Beautiful.

Here is another cool puzzle site that I found linked from the Interactive links: https://pedros.works/kudamono/pages/full-house.html

Skyscrapers Puzzle

https://www.conceptispuzzles.com/index.aspx?uri=puzzle/skyscrapers/rules

I was browsing through this list of puzzles for one that caught my eye. Skyscrapers jumped out and I was curious how to play.

Based on the size of the grid, let's say it is 5, the rules are:
- every row needs to contain the numbers 1 through 5
- every column needs to contain the numbers 1 through 5
- thinking of the numbers in the grid as building heights, the arrowed-numbers indicate exactly how many buildings are in your sightline for that row or column. If the first number is a 5, then the sightline is 1. If there is a sequence of 3 | 2 | 4 | 5 | 1, then the sightline is 3 because you can see 3, then 4, and then 5, while the 2 is obscured by 3, and the 1 is obscured by everything. Viewed from the other side, the sightline is 2 because you can see 1, then 5, and then nothing else.

A starting puzzle looks like this:

             2   1
             ↓   ↓
   +–––+–––+–––+–––+–––+
4→ |   |   |   |   |   |
   +–––+–––+–––+–––+–––+
4→ |   |   |   |   |   |
   +–––+–––+–––+–––+–––+
   |   |   |   |   |   | ←5
   +–––+–––+–––+–––+–––+
   |   |   |   |   |   |
   +–––+–––+–––+–––+–––+
   |   |   |   |   |   |
   +–––+–––+–––+–––+–––+
     ↑       ↑
     2       1

And the solution to that one looks like this:

             2   1
             ↓   ↓
   +–––+–––+–––+–––+–––+
4→ | 1 | 2 | 4 | 5 | 3 |
   +–––+–––+–––+–––+–––+
4→ | 2 | 3 | 1 | 4 | 5 |
   +–––+–––+–––+–––+–––+
   | 5 | 4 | 3 | 2 | 1 | ←5
   +–––+–––+–––+–––+–––+
   | 3 | 5 | 2 | 1 | 4 |
   +–––+–––+–––+–––+–––+
   | 4 | 1 | 5 | 3 | 2 |
   +–––+–––+–––+–––+–––+
     ↑       ↑
     2       1

Other places to find these puzzles:

puzz.link puzzle index

https://puzz.link/db/

I was trying to track down a generalized name for the type of puzzle that LinkedIn's Queens puzzle falls into and I came across a reddit post that linked to this growing database of contributor-submitted puzzles.

I guess it is a variation of the Eight Queens Puzzle.

Here are the names of all the puzzles that you can search by in the database:

  • aho
  • akari
  • akichi
  • amibo
  • angleloop
  • anglers
  • antmill
  • aqre
  • aquapelago
  • aquarium
  • araf
  • armyants
  • arukone
  • ayeheya
  • balance
  • barns
  • battleship
  • bdblock
  • bdwalk
  • bonsan
  • bosanowa
  • box
  • brownies
  • canal
  • castle
  • cave
  • cbanana
  • cbblock
  • chainedb
  • chocona
  • circlesquare
  • cocktail
  • coffeemilk
  • cojun
  • compass
  • context
  • coral
  • country
  • creek
  • crossstitch
  • cts
  • curvedata
  • dbchoco
  • detour
  • disloop
  • dominion
  • doppelblock
  • dosufuwa
  • dotchi
  • doubleback
  • easyasabc
  • evolmino
  • factors
  • familyphoto
  • fillmat
  • fillomino
  • firefly
  • firewalk
  • fivecells
  • fourcells
  • fracdiv
  • geradeweg
  • goishi
  • gokigen
  • guidearrow
  • haisu
  • hakoiri
  • hanare
  • hashi
  • hebi
  • herugolf
  • heteromino
  • heyablock
  • heyabon
  • heyawake
  • hinge
  • hitori
  • icebarn
  • icelom
  • icelom2
  • icewalk
  • ichimaga
  • ichimagam
  • ichimagax
  • interbd
  • juosan
  • kaero
  • kaidan
  • kaisu
  • kakuro
  • kakuru
  • kazunori
  • kinkonkan
  • koburin
  • kouchoku
  • kramma
  • kramman
  • kropki
  • kurochute
  • kuroclone
  • kurodoko
  • kuromenbun
  • kurotto
  • kusabi
  • ladders
  • lapaz
  • lightshadow
  • lither
  • lits
  • lohkous
  • lollipops
  • lookair
  • loopsp
  • loute
  • magnets
  • makaro
  • martini
  • masyu
  • maxi
  • meander
  • mejilink
  • midloop
  • minarism
  • mines
  • mintonette
  • mirrorbk
  • mochikoro
  • mochinyoro
  • moonsun
  • mukkonn
  • myopia
  • nagare
  • nagenawa
  • nanameguri
  • nanro
  • nawabari
  • news
  • nikoji
  • nondango
  • nonogram
  • norinori
  • norinuri
  • nothing
  • nothree
  • numlin
  • numrope
  • nuribou
  • nurikabe
  • nurimaze
  • nurimisaki
  • nuriuzu
  • oneroom
  • onsen
  • ovotovata
  • oyakodori
  • paintarea
  • parquet
  • patchwork
  • pencils
  • pentatouch
  • pentominous
  • pentopia
  • pipelink
  • pipelinkr
  • putteria
  • ququ
  • railpool
  • rassi
  • rectslider
  • reflect
  • remlen
  • renban
  • ringring
  • ripple
  • roma
  • roundtrip
  • sananko
  • sashigane
  • sashikazune
  • sato
  • scrin
  • shakashaka
  • shikaku
  • shimaguni
  • shugaku
  • shwolf
  • simplegako
  • simpleloop
  • skyscrapers (rules)
  • slalom
  • slashpack
  • slitherlink
  • snake
  • snakeegg
  • snakepit
  • squarejam
  • starbattle
  • statuepark
  • stostone
  • sudoku
  • sukoro
  • sukororoom
  • swslither
  • symmarea
  • tajmahal
  • takoyaki
  • tapa
  • tapaloop
  • tasquare
  • tatamibari
  • tateyoko
  • tawa
  • tentaisho
  • tents
  • teri
  • tetrochain
  • tetrominous
  • tilepaint
  • toichika
  • toichika2
  • tontonbeya
  • tontti
  • trainstations
  • tren
  • triplace
  • tslither
  • turnaround
  • uramashu
  • usoone
  • usotatami
  • view
  • voxas
  • vslither
  • wafusuma
  • wagiri
  • walllogic
  • waterwalk
  • wblink
  • wittgen
  • yajikazu
  • yajilin
  • yajilin-regions
  • yajisoko
  • yajitatami
  • yinyang
  • yosenabe

From hours to 360ms: over-engineering a puzzle solution

https://blog.danielh.cc/blog/puzzle

I thought this was going to be a sudoku thing at first, but it appears to be a problem with a bigger problem space that you have solve exhaustively because you need to find every solution in order to guarantee that you've found the largest GCD.

The code/solutions presented by the author are in Rust.