_______ __ _______
| | |.---.-..----.| |--..-----..----. | | |.-----..--.--.--..-----.
| || _ || __|| < | -__|| _| | || -__|| | | ||__ --|
|___|___||___._||____||__|__||_____||__| |__|____||_____||________||_____|
on Gopher (inofficial)
URI Visit Hacker News on the Web
COMMENT PAGE FOR:
URI enclose.horse
omgmajk wrote 58 min ago:
Very enjoyable work pastime!
Great stuff :)
eithed wrote 17 hours 57 min ago:
A nice easter egg - click on a horse, when enclosed, on mobile
falloutx wrote 1 day ago:
Great game
dyigitpolat wrote 1 day ago:
just vibe-coded an optimizer for this game that takes in the screenshot
of the grid and the number of walls as input, and spits out the optimal
wall configuration (supports cherries too!)
algorithm:
1. infer grid dimensions
2. color histogram analysis to designate grasses, water, cherries and
horse
3. apply mixed-integer linear programming to determine optimized wall
placements
4. profit!
try: [1] source:
URI [1]: https://dyigitpolat.github.io/enclose-horse-solver
URI [2]: https://github.com/dyigitpolat/enclose-horse-solver
SteveJS wrote 1 day ago:
Wifeâs comment:
âCherries? It needs to be an apple.â
genekwame wrote 1 day ago:
Raaarhh. Perfect solution yesterday, perfect solution today! I'm really
on a roll. Love love the game
genekwame wrote 1 day ago:
Raaarrrhh. Perfect solution yesterday, perfect solution today! I'm
really on a roll lmao. Love it
hotsalad wrote 1 day ago:
Does each day's challenge come out at a certain time in your local
timezone? I have a friend who is seeing day 9 when I can only see day
8. I'd request having new daily maps come out at a consistent global
time for the purpose of competing with friends who live in different
timezones.
the_shivers wrote 1 day ago:
I tried to match what Wordle does, so it should come out midnight in
your local timezone.
athrowaway3z wrote 1 day ago:
Great little game. For the community levels, I'd suggest adding filters
based on size & walls.
I'd even go so far as to deny any submission with more than sqrt(size)
walls.
zachallaun wrote 1 day ago:
Ton of fun! Was interesting to see how my strategy evolved as well. I
started out trying to make a large pen, but quickly realized that
wouldn't work, so I made a small pen and then started moving it out.
This allowed me to see individual optimizations and try alternatives.
Even at the end, about to hit submit, I wasn't sure my solution was
optimal, but ended up with the optimal sizse-86 solution for today's
challenge. Will try again tomorrow!
Aardwolf wrote 1 day ago:
Nice puzzle! But I'd like a button to go back to your most optimal
solution so far: it's tedious to try other options but then have to
convert it back to your better solution again...
xp84 wrote 1 day ago:
There is one! Or maybe dev is just that fast. Tap where it says
âBest: 67â and it reverts to previous best.
elestor wrote 19 hours 20 min ago:
Say that again
wirtzdan wrote 1 day ago:
So fun!
I wonder how the wiggle animation is implemented in for the buttons and
modal.
komodo99 wrote 1 day ago:
Usability, i'd like either a 'save/restore state' button, or a 'restore
current best'. Right now, experimenting after finding a solution seems
like a punishment if I can't recall exactly what I did to hit my
rolling 'best'. Good game though!
abetusk wrote 1 day ago:
There is a button that restores your best, it's right under the
current score.
MagicMoonlight wrote 1 day ago:
This is a really fun game. And I just realised you can make your own
levels!
Lammy wrote 1 day ago:
It's like ChuChu Rocket! + JezzBall; two of my favorite games!
godisdad wrote 1 day ago:
Looking forward to the AI enabled subscription version
theo1996 wrote 1 day ago:
I dont understand what is the goal of this game
pests wrote 1 day ago:
Enclose the horse. Horse likes most space.
DougN7 wrote 1 day ago:
Wow, thatâs a lot more challenging than it looks. I agree with
another commenter that the 3d blocks look confusing - they appear to
cover two spaces.
DuncanCoffee wrote 1 day ago:
Nice game, I'm going to sink some time on these! Got 86 points today
[1] Day 8
PERFECT! 100%
URI [1]: https://enclose.horse
croemer wrote 1 day ago:
I didn't realize level 1 gave me 11 (eleven) walls at first. I thought
it stood for II = roman 2. Maybe use a font that makes the difference
between 1 and I clearer.
sublinear wrote 1 day ago:
Fun game, but the animation style is too distracting for me. Maybe
there should be an option to disable it or have it stop automatically.
I didn't initially expect it would be a problem, but the constant
squiggly movement gets very annoying.
Narushia wrote 1 day ago:
Happy Year of the Horse!
sambuccid wrote 1 day ago:
I want a tool that visualizes code paths in this way
atticus_ wrote 1 day ago:
[1] Day 8
PERFECT! 100%
URI [1]: https://enclose.horse
DonThomasitos wrote 1 day ago:
I love it! I miss a way to see the reference solution, would be nice in
order to learn. Or maybe get a hint.
alexjplant wrote 1 day ago:
Fantastic fun! My humble level contribution is here [1]
URI [1]: https://enclose.horse/play/44wCCO
nickponline wrote 1 day ago:
I think this problem is called the maximum-weight closure and can be
solved as max flow. You want to find a cut between source (horse) so
they were no out-going edges not in the cut (escape routes).
emil-lp wrote 1 day ago:
It's not the same problem. First, it's not directed, second it's a
vertex separation problem.
nickponline wrote 1 day ago:
Ah yes quite right.
grugdev42 wrote 2 days ago:
Love this! I feel like this would get a lot of traction as a mobile
app. It's a perfect "I've got five minutes free" game.
Doesn't feel outrageously difficult to put inside a webview?
arthurjj wrote 2 days ago:
My 10 year old loves this game. He started playing it Wednesday or
Thursday of last week and basically all of his screen time. Both trying
to optimize and the level design scratch an itch that few games do
xg15 wrote 2 days ago:
I'm pretty sure the author got the domain first and then designed an
(awesome) game around it.
xg15 wrote 2 days ago:
Looks like some people have discovered the first "accidental" game
mechanic: The horse can walk over cherry fields, but the player cannot
place walls on them - so if a level designer places cherries
strategically, they can create unblockable paths.
Right now, this is only used for troll levels, but I wonder if you
could also use it for some actual puzzles.
Majromax wrote 1 day ago:
It's not just troll levels, see
URI [1]: https://enclose.horse/play/n9YDZm
Arubis wrote 2 days ago:
Each time I see a `horse` domain, particularly for entertainment, I
remember to `traceroute bad.horse` and smile again.
ZeWaka wrote 1 day ago:
lmao, this is beautiful
scrumper wrote 2 days ago:
This is nice, I enjoyed it. Was a couple points off the optimal score
for day 8 but when I clicked "Show optimal" I couldn't then go back to
see mine to compare. Either way, stretched the brain a bit.
Only nit: fix the walls. They take up one and a half spaces so are
confusing, and they're sci-fi steel with flashing red lights. Turn them
into one-square-only fences. You use fences to enclose horses, not
raptor walls from Jurassic Park.
xp84 wrote 1 day ago:
This is my feedback too. Turn âshow optimalâ into a toggle that
persists on the page and toggles between yours and the optimal.
And same about the walls. Especially on mobile itâs hard enough to
tap the right square, and having a wall poking up from the square
below just makes things worse.
But overall I love the game!
Groxx wrote 1 day ago:
Yeah, it needs to add a toggle button to let you switch between yours
and optimal quickly.
I did figure out that you can get back to yours by going through the
past-days menu though.
xg15 wrote 2 days ago:
I mean, the horse does sometimes talk about the demon god if you
click on it, so who knows...
naedish wrote 2 days ago:
A very fun game - it took quite a bit of fiddling to get an optimal
solution using an LLM. Interesting as I haven't tried using them for
'unique' algo problems much. And then the day 9 puzzle broke my
original solver (I had bounded areas that were unreachable to the horse
so didn't actually score). Will be interesting to see whether the
solver works on day 10.
It would be interesting to be able to change the wall budget for each
puzzle to add some variation (with a max limit).
zwaps wrote 2 days ago:
Which AI am I training here?
sandyarmstrong wrote 2 days ago:
Is there guaranteed to be a solution that encloses the cherry? Is Day 8
the first day to have a cherry?
the_shivers wrote 1 day ago:
So far, I haven't had the heart to deceive people with red cherrings.
All levels with cherries use at least some of them in the solution.
lionkor wrote 2 days ago:
I found the optimal solution for day 8 by hand, that was fun!
My algorithm, by hand, was as such:
1. Start with the smallest possible valid solution (1)
2. Expand slowly, and each "step" (like, moving a wall or two around to
"obvious" spaces) must be a valid solution (this brings you to 40-60
score, depending on your choices, on day 8). Continue to step 3 once
you can't see anything obvious.
3. Look at possible places where you could expand, but need 1 more
block. You'll find one eventually.
4. See if you can spare any walls anywhere, using diagonals for
example. If so, place the solution from 3 and go to 3 (repeat). If not,
go to 5.
5. Count or estimate the squares gained by doing your improvement from
3. See if you can reduce your score by less than that, pessimizing your
solution, to gain 1 wall. Once you've found one, go to 3.
That got me to the optimal score within 15 mins or so.
sambuccid wrote 1 day ago:
This feels strangely similar to TDD with the Tranformation Priority
Premise
ChrisbyMe wrote 1 day ago:
I found the same algorithm! The top down solution didn't really work.
Very fun game
adonovan wrote 2 days ago:
I think you should change the cherries to a battery and call the game
Correct Horse Battery Stable.
tetris11 wrote 1 day ago:
Or turn the cherries into sugar lumps, and call the game My Lovely
Horse
layer8 wrote 1 day ago:
Use staples instead of walls as barriers.
gwern wrote 2 days ago:
Or the cherries could be a delicious pastry or PBJ-like treat:
_Collect Horse Buttery Stable_...
MildlySerious wrote 2 days ago:
That is just delightful.
Reference[1] for anyone wondering.
URI [1]: https://xkcd.com/936/
keepamovin wrote 2 days ago:
I imagine you went searching for domain names and came up with this? I
resisted clicking on this top story all day because I thought "how good
could that be? "enclose horse" what is that?" Yet, the experience was
genuine-slow-forming-smile-of-understanding. This is really good.
rhymemini wrote 2 days ago:
Score init should say N/EIGH instead of N/A, otherwise great.
snackdex wrote 2 days ago:
dead. how in the world does a thought like that come into your mind.
i feel like i got 0 in creativity
ronbenton wrote 2 days ago:
Reminds me of a comic I saw a couple years back about a horse
parliament where the horses only voted âneighâ
_1 wrote 2 days ago:
That's from the Far Side. My mom has had this on her fridge for at
least 30 years.
inanutshellus wrote 2 days ago:
This appears to be it. :)
URI [1]: https://i.pinimg.com/736x/4f/51/e0/4f51e04263a89a008e296...
langarus wrote 2 days ago:
lovely, I've created a solution finder for it.
1. Do a screenshot of the grid (try to include walls as well)
2. Open [1] 3. Make sure the number of walls are correct in the input
(bottom left)
4. Press "Solve"
PS: It might crash as it's on the free version of render. I've added a
caching layer.
Here's the github so you can run it locally: [2] clone it and run
make init // make web
URI [1]: https://enclosure-horse-solution.onrender.com/
URI [2]: https://github.com/langarus/enclosure.horse-solution
g4zj wrote 2 days ago:
There is a level editor with the ability to show the optimal result
for a custom level. In theory, one could recreate any official level
and reveal the best solution that way. However, I haven't tried this
to verify any intentional roadblocks by the developer.
ronbenton wrote 2 days ago:
You caching in memory or disk? Redis or db might survive the crashes
and reduce future ones
langarus wrote 2 days ago:
on disk, so basically I'm trying to save the image of a solution
and reuse it if the same quiz is required. So instead of
recomputing the result just return the same image.
slashyellow wrote 2 days ago:
curious question from a non-programmer - are you checking against
the exact same image (i.e. hashed), or is there an easy way of
trying to match an image to a very similar one you've seen
before?
flexagoon wrote 2 days ago:
Not OP, so I don't know what their website does, but there is a
technique called "locality-sensitive hashing" that gives the
same hash for similar items instead of exactly the same ones
URI [1]: https://en.wikipedia.org/wiki/Locality-sensitive_hashi...
ronbenton wrote 2 days ago:
Got it. Is that cache surviving the crashes?
langarus wrote 2 days ago:
I'd have to host it somewhere (s3?). Right now I only commit
the solution png to github. OFC it's not a good option but it's
free and fast.
ronbenton wrote 2 days ago:
I think Cloudflare r2 has a generous free tier. You can also
technically store images in redis I think. anyways, thank you
for making this, really cool!
langarus wrote 2 days ago:
I see some of you are already crashing the server. :melting: try to
run it locally if you can't get the result via render
posed wrote 2 days ago:
I enjoyed it, thanks for making it!
rob001 wrote 2 days ago:
This is a very cool and enjoyable game. I'd be really interested in
knowing what framework/library was used to make it. I inspected the
source and can see the game is done on canvas, but can't work out more
than that.
the_shivers wrote 1 day ago:
Just vanilla canvas + Typescript.
tasuki wrote 19 hours 37 min ago:
Thank you for an interesting game! Is the code also available in a
nicer-to-read way?
daneel_w wrote 2 days ago:
The canvas API itself is pretty basic. It's not complicated at all to
slap graphical tiles onto the screen.
Retr0id wrote 2 days ago:
I wouldn't be surprised if they're just rawdogging the canvas API
niemandhier wrote 2 days ago:
This is surprisingly similar to a subset of the ARC II puzzles.
The collected answered could probably be used to teach an AI to
approach this type of problem thereby gaining some of the cognitive
biases that humans have, which is exactly what you want in some cases:
An AI that generates human like solutions to hard problems .
dvh wrote 2 days ago:
> Horses can't move diagonally or over water.
Ah the famous spherical horse in vacuum
n4r9 wrote 2 days ago:
Nice game! Out of curiosity, are the daily levels built by hand or
algorithmically? Is there some way to measure their difficulty
computationally, other than just trying to do it yourself or seeing how
many people get a perfect score? I'm also working on a grid-based
browser game and both those questions have come up for me, I'm keen to
see how other people tackle it.
the_shivers wrote 1 day ago:
All the daily levels are built by hand. I struggled to come up with a
good random level generator. You can see my feeble attempts in the
Edit page (via the hamburger menu) by giving the dice button a few
sad clicks.
I did originally try to measure the difficulty computationally by
running the solver and timing it, but it didn't really line up with
what humans would find difficult. Now I'm just eyeballing it.
pests wrote 1 day ago:
There is a built in map editor, click the hamburger menu.
abhi555shek wrote 2 days ago:
Nice game! I could only play one game but wish I could play previous
days' games as well
wseqyrku wrote 2 days ago:
You can. Checkout the Past Puzzles in the menu (top-right).
menzoic wrote 2 days ago:
Leetcode problem
g0ran wrote 2 days ago:
Seeing tile animations immediately reminded me of Godzilla 2: War of
the Monsters on NES.
nirolo wrote 2 days ago:
Very cool game. Immediately reminded me of pathery, which I can also
recommend to everyone who enjoys this.
gorgoiler wrote 2 days ago:
Great game, I love it! I hope the author is collecting juicy
analytics. They would be useful if they ever want to bundle 100 levels
in order of difficulty and release this as a Steam game (which I would
absolutely buy!)
I donât think the gates should animate up into the air. It breaks
the visual logic of 2D for no benefit. Itâs subconsciously confusing
to see a gate I place in one cell move to occupy pixels in the cell
âaboveâ it.
I look forward to future days introducing new mechanics as well. Can I
suggest a few, based on dynamics?
- Food! The horse moves on every turn towards an attractor. Have a
hay bale / giant sugar cube in one corner fall off the back of a truck
/ helicopter :) Horses start out dumb and move directly towards the
goal before backtracking. Smarter horses path find the shortest route
to the goal.
- Goals! Now that the horse is moving, get the horse into a static
horse box / cattle pen cell by strategically placing fences so that the
path it takes towards the food involves walking onto the goal square.
- Floods! Water encroaches from the edges on a turn by turn basis.
Not only do you have to contain the horse, you also have to hold back
the flood.
plastic3169 wrote 6 hours 31 min ago:
Great game, I returned back to play next day.
> I donât think the gates should animate up into the air. It breaks
the visual logic of 2D for no benefit.
I also feel it would make more sense either for everything to be 2.5D
or pure top down. Having appear / disappear animation is nice
feedback to user though.
Other thing is that maybe the hitbox should change when the wall
comes up. Now to remove it you need to press the grid, essentially
the root of the wall. Unintuitive to me.
Thanks for the game, looking forward to when there is multiple horses
or sheep to enclose.
banannaise wrote 1 day ago:
The turn-based version sounds interesting, but I think it falls on
its face in practice. The game then becomes:
1. lure the horse to an optimal point on the map.
2. trap it in a small circle of fences.
3. build part of your final wall with the remaining fences.
4. one by one, move the fences trapping the horse in place into
position.
tgtweak wrote 1 day ago:
There is definitely a turn-based minigame here - get the most
"distance" travelled by the horse, every turn the horse moves one
block towards it's closest escape and you can drop walls to cause it
to find a new path - in this one you actually lose when the horse
can't get out but the goal is to get the horse to move as many blocks
as possible using your limited number of walls (or apples which can
attract it).
dllu wrote 1 day ago:
That reminds me of Paquerette Down the Bunburrows [1] which is a
very fun pathfinding game where the bunnies will pathfind to try to
run away from you. It's not exactly what you described, but it is
very fun and surprisingly deep and challenging.
URI [1]: https://store.steampowered.com/app/1628610/Paquerette_Down...
mbreese wrote 1 day ago:
I was initially expecting the horse to move after each turn. As it
is, this is a logic game, similar to what I'd expect to see in the
NYT Games app. Quite entertaining, but something that you could
look at and reason about to solve.
But, you absolutely could make this a turn based game where the
horse is trying to escape and you (playing as the farmer), work to
fence it in as it meanders towards a gate.
xg15 wrote 2 days ago:
And of course: Buy additional walls using in-game purchases!
(jk)
xg15 wrote 2 days ago:
> I donât think the gates should animate up into the air. It breaks
the visual logic of 2D for no benefit. Itâs subconsciously
confusing to see a gate I place in one cell move to occupy pixels in
the cell âaboveâ it.
I interpreted it as standard "top-down" RPG graphics, where the Y
axis always doubles as the Z axis. As such, I didn't find it visually
confusing - but it did made playing on mobile annoying, because you
often end up targeting the wrong field.
gwbas1c wrote 2 days ago:
Sometimes simple things are best. I really like the game as-is.
This is a rather simple game to program. IMO, if you can program,
take a few weekends to make your own game based on your ideas. If you
can't program, your ideas will lead you to a wonderful learning
project.
anticorporate wrote 2 days ago:
> I hope the author is collecting juicy analytics.
I hope they're not. Can't we have a few things in this world that are
just fun without going and sticking surveillance on them?
alpha-male-swe wrote 1 day ago:
yeah man what a horrible world we live in man. thats so profound of
you to say, truly. well said man
helle253 wrote 2 days ago:
'analytics' and 'surveillance' are not the same thing
trying to understand player behavior in the context of a board or
video game (though there is some overlap!) is not the same as
trying to understand user behavior in the context of social media
or purchasing behavior - the data of both of which derive their
value from being sold to THIRD PARTIES as a commodity.
being able to tune a fun little video game is not the same thing at
all
badtuple wrote 1 day ago:
Does your opinion change if they use it to train a commercial
program to do a similar task?
lblume wrote 1 day ago:
For me at least, no. Making money by training a model from user
data on such a game seems like a perfectly fine thing to do.
BloodyIron wrote 2 days ago:
Collecting analytics like this is effectively the same as
play-testing physical board games in-development. People play a
game, information is gathered, and the game is tuned in response to
that. If zero information were ever gathered, games could not be
balanced or tuned for other things like unforeseen problems.
Please, show me a piece of software, or game, that is perfect the
first time it is made.
wat10000 wrote 2 days ago:
It's effectively the same, except people volunteer or are paid to
play test.
This whole industry really needs a lesson on consent.
jelder wrote 1 day ago:
Indie games donât have a budget for playtesting, but they can
probably swing a GA account.
BloodyIron wrote 1 day ago:
There are games that let you opt-out, hell even ones that ask
you when you first open the game. There are bad apples, but
there are plenty of good ones too.
jader201 wrote 1 day ago:
I think the argument is that they shouldn't be opt-out, but
opt-in.
If I want to play a game and provide my feedback, the default
should be that that doesn't happen unless I explicitly say it
should.
Opt-out means that, by default, you're collecting metrics
from my plays, until I find the means to opt-out.
llmslave2 wrote 1 day ago:
If the game asks you when you first open it, does it matter
if the question is to "opt out" or "opt in"?
wat10000 wrote 1 day ago:
If it asks you then it's neither opt-in nor opt-out. Then
it depends on how it asks you. If it's a simple yes/no,
it's fine. If it's typical tech bullshit where your
options are a big "I want to make the world a better
place and save the whales by sending my data" or a tiny
button in the corner labeled "maybe later" that takes you
to another screen saying "please confirm you want to opt
out of data collection and kill a bunch of kittens" then
not so good.
adventured wrote 2 days ago:
So long as personal information is not collected, consent is
not morally necessary.
If I collect information on how often a coin-op Street Fighter
II game is played in an arcade, while collecting no personal
information, consent is not needed.
wat10000 wrote 2 days ago:
Because using someone else's hardware in a public space is
clearly equivalent to using your own hardware in the privacy
of your own home.
Sardtok wrote 1 day ago:
If the data gathered is only on gameplay, and not something
that can be used as PII like IP addresses or device
information, then it should be fine. Gathering things like
the score and time spent completing the level, isn't a
problem. This could be used to rank the levels, without
gathering any user information.
wat10000 wrote 1 day ago:
If gathering the data should be fine, then asking for
permission should also be fine.
Zetaphor wrote 1 day ago:
You are not entitled to play the game, which is hosted on
their server which requires bandwidth and other resources.
In the same way that you are free to make demands about how
software runs on your machine, the author is free to make
demands about the use of their software.
crazygringo wrote 2 days ago:
This is software coming from a server, not hardware. It
doesn't matter which device it's run on, or whether it's in
your home or not.
snackdex wrote 2 days ago:
if the analytics lead to an actual game on steam im down
butlike wrote 2 days ago:
You could just package an arbitrary 100 levels, let the player
play them in any order, then give rewards for 10, 20, 30, 40,
etc. levels completed/mastered.
snackdex wrote 1 day ago:
something in me loves progressively harder levels
Forgeties79 wrote 2 days ago:
Or go full on kaizo Mario and make it a random room out of the
100
snackdex wrote 1 day ago:
naw im looking to have fun, not cry
Feathercrown wrote 2 days ago:
This would still benefit from a difficulty rating system or
order
oliwary wrote 2 days ago:
Another thing to try could be to rank people in realtime instead of
the one-off submission approach. I do this in [1] (create tight
crosswords using 21 letters), and I think it's quite motivating to
see how you compare to others as you improve your solution. On the
other hand, its a bit more taxing on the server, and then you also
could not show the optimal solution.
URI [1]: https://spaceword.org
layer8 wrote 1 day ago:
I would prefer not being distracted by that, and not having
information on possible solutions before submitting. Trying to find
the best solution with added hints like that is a different game.
So it should be opt-in.
michaelmior wrote 2 days ago:
Cool game! One minor feature request. It would be helpful to have
some way to move the entire block of placed tiles around at once to
give myself more room in a particular direction.
oliwary wrote 2 days ago:
Thank you! :) If you click the three dots on the left top side of
the letters area, you can shift all tiles in a direction.
doctordoctor2 wrote 2 days ago:
IMO, the game is great to keep simple, but Iâd like to play more
levels than just daily, so could see people paying for the ability to
play more, like NYT games, and could be part of a suite of game if
curated daily by expert vs social curation. The blocks are small
though for a small phone with big fingers.
I also wonder if making it GPL and submitting to various *NIX distros
would be best. Then it may need to be standalone with random maps
created by ML or similar.
47282847 wrote 1 day ago:
You can play the previous days and hundreds of user contributed
maps! Check out the menu. Enjoy :)
webstrand wrote 1 day ago:
Ah I did not see the menu at all
maartin0 wrote 2 days ago:
It has a very pleasant editor to make + share custom maps, e.g.
URI [1]: https://enclose.horse/play/a3OGcW
emregucerr wrote 2 days ago:
> I donât think the gates should animate up into the air.
I agree! It feels off compared to the overall aesthetic of the game.
Awesome game though! Loved it.
cubefox wrote 2 days ago:
> I donât think the gates should animate up into the air.
I think it should go up, otherwise it doesn't look like a wall. It
would look like something the horse can step on and run over. For the
water it makes sense to be flat flat and that the horse doesn't want
to touch it: it is water-shy.
stevage wrote 2 days ago:
To me the current design doesn't look like anything at all. I don't
see a gate or a wall, just two rectangles.
layer8 wrote 1 day ago:
It also conceals the cherries when itâs on the field below
them.
snewman wrote 2 days ago:
+1 to this. It's also visually confusing, the gate looks like
it's covering two cells.
Great game! Feature request: add a button that shows my submitted
solution. I'd like to be able to compare it with the optimal
solution (so it'd be nice if a single tap could toggle between my
submission and the optimal).
ianstormtaylor wrote 2 days ago:
It would be nice if the âoptimalâ view visualized both my
solution and the optimal one at the same time, like a Venn
diagram.
the_shivers wrote 1 day ago:
Just added this, check out "Optimal as overlay" in the
settings.
valleyer wrote 2 days ago:
Nice. Reminds me of Rodent's Revenge.
jerbearito wrote 2 days ago:
Very fun
29athrowaway wrote 2 days ago:
A good game. Possibly the 2048 of 2026.
kanemcgrath wrote 2 days ago:
I am curious on how you would algorithmically find the optimal solution
for this kind of problem for much bigger grids.
I wanted to do some seed finding in Factorio for the same exact problem
using the generated map images, but never found a good solution that
was fast enough.
emil-lp wrote 1 day ago:
Someone asked about this very problem here:
URI [1]: https://cs.stackexchange.com/questions/176005/how-to-remove-...
emil-lp wrote 1 day ago:
There's probably an FPT algorithm using important separators (4^k).
sunrunner wrote 2 days ago:
> algorithmically find the optimal solution for this kind of problem
for much bigger grids.
Great, now I've been double nerd-sniped - once for the thing itself
and another for 'What would an optimiser for this look like? Graph
cuts? SAT/SMT? [AC]SP?'
qsort wrote 2 days ago:
I'd bet it's NP-hard. The standard reduction to a flow problem only
tells you if a cut exists (by min-cut max-flow duality), but here
we want the cut of size at most N that maximizes enclosed area.
The Leetcode version of this is "find articulation points", which
is just a DFS, but it's less general than what is presented here.
qwertyforce wrote 2 days ago:
I think there should be some graph algorithm for this, to find a
bottleneck in a graph
johanvts wrote 2 days ago:
I think it's NP hard, maybe from Sparsest Cut. But you could probably
find the min-cut and then iterate by adding capacity on edges in the
min cut until you find a cut of the right size. (if the desired
cut-size is close to the min cut size at least).
emil-lp wrote 1 day ago:
It's NP-hard from Minimum sât Cut with at least k Vertices.
That's the edge version, but since the grid graph is
4-regular(-ish), the problem is trivially convertible to the vertex
version.
Edit: apex-4-regular
sltkr wrote 18 hours 36 min ago:
Also I don't think the equivalence between edge/vertex versions
is trivial at all (though maybe we just have different standards
of triviality).
For example, in a grid like this:
..####
.....#
#.#..#
#...H#
######
A single wall placed (i.e. vertex removed) can block two edges,
and it's not obvious what graph transformation can turn that into
a single edge.
emil-lp wrote 5 hours 20 min ago:
You transform it into the directed case and then you turn each
vertex into an arc.
There is a standard construction for going between vertex and
edge cuts.
sltkr wrote 18 hours 44 min ago:
That conclusion may be too hasty. If min cut with k vertices is
NP-hard on arbitrary graphs, that doesn't automatically mean that
that applies to a 2D grid too.
Is NP hardness proven for just planar graphs? Those are closer to
the 2D grid, but still slightly more general. All I could find
was a reduction to densest k subgraphs, but Wikipedia tells me
that whether that problem is NP hard for planar graphs is an open
question.
To be clear, I would be very surprised if the problem turns out
to be _not_ NP hard, but there is no trivial equivalence to min
cut in general graphs to show that it is.
emil-lp wrote 5 hours 18 min ago:
I agree, that is a good point. Although it is (induced)
subgraphs of 2D grids, which gets you a bit closer to the
planar case (albeit with bounded degree).
It might be polytime on planar graphs, but that would be
surprising.
Scaevolus wrote 2 days ago:
The site uses Answer Set Programming with the Clingo engine to
compute the optimal solutions for smaller grids. Maximizing grids
like this is probably NP-hard.
Note that traditional SAT and SMT solvers are quite inefficient at
computing flood-fills.
The ASP specifications it uses to compute optimal solutions are
surprisingly short and readable, and look like:
#const budget=11.
horse(4,4).
cell(0,0).
boundary(0,0).
cell(0,1).
boundary(0,1).
% ...truncated for brevity...
cell(3,1).
water(3,1).
% ...
% Adjacent cells (4-way connectivity)
adj(R,C, R+1,C) :- cell(R,C), cell(R+1,C).
adj(R,C, R-1,C) :- cell(R,C), cell(R-1,C).
adj(R,C, R,C+1) :- cell(R,C), cell(R,C+1).
adj(R,C, R,C-1) :- cell(R,C), cell(R,C-1).
% Walkable = not water
walkable(R,C) :- cell(R,C), not water(R,C).
% Choice: place wall on any walkable cell except horse and cherries
{ wall(R,C) } :- walkable(R,C), not horse(R,C), not cherry(R,C).
% Budget constraint (native counting - no bit-blasting!)
:- #count { R,C : wall(R,C) } > budget.
% Reachability from horse (z = enclosed/reachable cells)
z(R,C) :- horse(R,C).
z(R2,C2) :- z(R1,C1), adj(R1,C1, R2,C2), walkable(R2,C2), not wall(
R2,C2).
% Horse cannot reach boundary (would escape)
:- z(R,C), boundary(R,C).
% Maximize enclosed area (cherries worth +3 bonus = 4 total)
#maximize { 4,R,C : z(R,C), cherry(R,C) ; 1,R,C : z(R,C), not
cherry( R,C) }.
% Only output wall positions
#show wall/2.
freakynit wrote 2 days ago:
Im over 35 years of age. I have 15+ years of programming
experience. And I generally consider myself as someone who has good
breadth of tech in general. Yet, this is the first time in my life
I've heard of ASP. And gosh. I was completely blown away by this as
I read more about it and went through some examples ( [1] )
Therefore, like a good little llm bitch that I have become
recently, I straight away went to chatgpt/sonnet/gemini and asked
them to compile me a list of more such "whatever this is known as".
And holy cow!! This is a whole new world.
My ask to HN community: any good book recommendations related to
"such stuff"? Not those research kinds as I don't have enough brain
cells for it. But, a little easier and practical ones?
Thanks..
URI [1]: https://github.com/domoritz/clingo-wasm/blob/main/examples...
tgamblin wrote 1 day ago:
The more recent Lifschitz book is the easiest to learn from IMO:
- [1] It starts with basics of using ASP and gives examples in
clingo, not math.
The Potassco book is more comprehensive and will help you
understand better what is going on:
- [2] Things I don't like include that it's more dense, doesn't
use clingo examples (mostly math-style examples so you kind of
have to translate them in your head), and while the proofs of how
grounding works are interesting, the explanations are kind of
short and don't always have the intuition I want.
I still think this is the authoritative reference.
The "how to build your own ASP system" paper is a good breakdown
of how to integrate ASP into other projects:
- [3] The Potassco folks are doing amazing work maintaining these
tools. I also wish more people knew about them.
EDIT: I forgot to mention that specifically for games stuff like
enclose.horse, look at Adam Smith's Applied ASP Course from UCSC:
- [4] Forgot to mention that one... we use clingo in Spack for
dependency solving and other applications frequently slip my
mind.
URI [1]: https://www.cs.utexas.edu/~vl/teaching/378/ASP.pdf
URI [2]: https://potassco.org/book/
URI [3]: https://arxiv.org/abs/2008.06692
URI [4]: https://canvas.ucsc.edu/courses/1338
freakynit wrote 1 day ago:
Thank you.. Have noted these down.
Scaevolus wrote 2 days ago:
The pre-machine-learning formulations of AI focused on symbolic
reasoning through the dual problems of search and logic. Many
problems can be reduced to enumerating legal steps, and
SAT/SMT/ASP and related systems can churn through those in a
highly optimized and genetic manner.
freakynit wrote 1 day ago:
Thanks... noted a few keywords to expand on further:
1. Symbolic reasoning
2. SAT/SMT/ASP
3. pre-machine-learning formulations of AI
sfink wrote 1 day ago:
"Logic programming"[0] is what I've always heard this stuff
called. I was introduced to it with Prolog.
"Declarative programming"[1] is kind of a superset of logic
programming, which may or may not be the aspect that piques
your interest.
"Constraint programming"[2] and "Constraint logic
programming"[3] are also a perspective on it.
[0] [1] [2] [3]
URI [1]: https://en.wikipedia.org/wiki/Logic_programming
URI [2]: https://en.wikipedia.org/wiki/Declarative_programmin...
URI [3]: https://en.wikipedia.org/wiki/Constraint_programming
URI [4]: https://en.wikipedia.org/wiki/Constraint_logic_progr...
freakynit wrote 1 day ago:
Thanks a lot. These are what I was hoping to know.
ctxc wrote 2 days ago:
Has to be my favourite comment, haha!
freakynit wrote 1 day ago:
:)
stabbles wrote 2 days ago:
Nice, you don't see clingo mentioned often. We use it in the Spack
package manager for resolving dependencies [1]
URI [1]: https://github.com/spack/spack/blob/develop/lib/spack/spac...
Zobody wrote 2 days ago:
Constraint programming seems to be a fitting approach. Input would be
number of walls, and the location of lakes.
The decision variables would be the positions of walls.
In order to encode the horse being enclosed, additional variables for
whether horse can reach a given square can be given. Finally,
constraints for reachability and that edges cannot be reached should
ensure correctness.
Macuyiko wrote 2 days ago:
Yes. CP SAT crunches through it in no time, but of course larger
grids would quickly make it take much longer.
See
URI [1]: https://gist.github.com/Macuyiko/86299dc120478fdff529cab38...
ooopdddddd wrote 2 days ago:
I don't believe this works in general. If you have a set of tiles
that connect to neither the horse nor to an exit, they can still
keep each other reachable in this formulation.
Macuyiko wrote 1 day ago:
Good point. I don't think the puzzles do this and if they
would, I would run a pre-solve pass over the puzzle first to
flood fill such horseless pockets up with water, no?
ooopdddddd wrote 1 day ago:
It's not quite that easy. For the simplest example, look at
[1] , where the naive solution will waste two walls to fence
in the large area. Obviously, you can construct puzzles that
have lots of these "bait" areas.
Like the other comment suggested, running a loop where you
keep adding constraints that eliminate invalid solutions will
probably work for any puzzle that a human would want to
solve.
URI [1]: https://enclose.horse/play/dlctud
Macuyiko wrote 1 day ago:
Oh I see what you mean now, indeed:
Score: 7
~~~~~~
~····~
~·~~·~
.#..#.
......
..#...
.#H#..
..#...
However, I think that you do not need 'time' based
variables in the form of
reachable(x,y,t) = reachable(nx,ny,t-1)
Enforcing connectivity through single-commodity flows is
IMO better to enforce flood fill (also introduces
additional variables but is typically easier to solve with
CP heuristics):
Score: 2
~~~~~~
~....~
~.~~.~
......
......
..##..
.#H·#.
..##..
Cool puzzle!
Scaevolus wrote 2 days ago:
Yes, this is the major challenge with solving them with SAT.
You can make your solver check and reject these horseless
pockets (incrementally rejecting solutions with new clauses),
which might be the easiest method, since you might need
iteration for maximizing anyways (bare SAT doesn't do
"maximize"). To correctly track the flood-fill flow from the
horse, you generally need a constraint like reachable(x,y,t) =
reachable(nx,ny,t-1) ^ walkable(x,y), and
reachable(x,y,0)=is_horse_cell, which adds N^2 additional
variables to each cell.
You can more precisely track flows and do maximization with
ILP, but that often loses conflict-driven clause learning
advantages.
ryandrake wrote 2 days ago:
Cool game, but I don't like how you get only one chance. Even returning
to the page, you can't try again to beat your previous score. No
replayability value at all.
gs17 wrote 1 day ago:
IMO they should have a (second) pop-up that warns you that you only
get one submit. Not sure if it should let you know if you've made an
optimal solution or not, but since it's not timed there's no cost in
slowing people down. I've seen similar daily puzzles where you get to
see the leaderboard and then can go back and optimize further. Yes,
it says it at the beginning, but it's still easy to forget.
goodmatt wrote 2 days ago:
Clear cookies?
matsemann wrote 2 days ago:
You can just remove/change walls after having placed all. You see
your current score, but can keep iterating.
hn8726 wrote 2 days ago:
Yes but it would be nice to see the targets, so you know how far
off from an optimal solution you are. I know I'd spend more time
looking for better solves if I knew the current one can be improved
zwnow wrote 2 days ago:
You can just test without submitting though?
hombre_fatal wrote 2 days ago:
The one shot per day provides a reason to sink your teeth into one
board.
I love Wordle but I found it unplayable when I used that Wordle
archive site to play infinite games since there was no reason to
think deeply about the 10th+ round I was playing in one sitting.
geoffschmidt wrote 2 days ago:
Click the sandwich icon in the top right, then either Past Puzzles or
Browse, and you can play more puzzles. (Or even create and submit
your own.)
QuantumNomad_ wrote 2 days ago:
You get one submit but you can press reset and find better solutions
even though you canât submit it to the leaderboard
klohto wrote 2 days ago:
bruh itâs like Wordle, come back tomorrow
anigbrowl wrote 2 days ago:
It shows you what the exit routes are, what your score will be, and
you can move the gates around as long as you want, so the means of
finding the maximum area are entirely within your grasp.
sceptic123 wrote 2 days ago:
But you have no idea what the optimal solution is, are you 1,10,50
away from it. Would be nice to have some indicator of how close you
are before you submit, though I guess that's intentional.
butlike wrote 2 days ago:
If it told you how close you were then you could just brute force
your way to a perfect score every board by trying each square.
sceptic123 wrote 1 day ago:
But if you remember the best score isn't that approach still
possible?
ryanjshaw wrote 2 days ago:
I believe thatâs the point. I had the optimal solution for some
time but was convinced there was something better. Eventually I
submitted, and seeing the perfect score was more thrilling after
convincing myself I was an idiot.
MrGilbert wrote 2 days ago:
I disagree about the replayability aspect. Itâs a daily challenge,
so come back tomorrow. I quite like it.
bgbntty2 wrote 2 days ago:
I seriously don't get the idea behind daily challenges unless you
want to keep users hooked to extract some value from them, but that
doesn't seem to be the case here, as there are no ads.
Just show all the different levels at once.
sfink wrote 1 day ago:
> you want to keep users hooked to extract some value from them
Ironically, that's what I initially liked about the daily puzzles
like Wordle: they forcibly prevented you from sinking too much
time into them. It was sort of like, "hey here's something cool,
and I'm going to make sure it's a positive addition to your life
by preventing you from succumbing to your own addictive
impulses". You could call that condescending or infantilizing,
but to me it's just part of the look and feel of a thing.
Especially if the author isn't charging money, they get to use
whatever tools are at their disposal to craft the users'
experience of it. Wordle Over And Over Again is a different game
than Wordle Once Daily. (And WOAOA done properly would probably
have a progression of difficulties, or themes, or something,
whereas WOD makes more sense with pure randomness.)
rbits wrote 2 days ago:
If you click the menu button in the top right you can play all
the past puzzles
Skeime wrote 2 days ago:
I assume that "all the different levels" might not exist yet. The
author is probably creating them a bit in advance, and will keep
going as long as they're motivated. Having a regular schedule for
new releases helps, and doing it daily seems as sensible as any
other schedule.
MrGilbert wrote 2 days ago:
That's fine. So these kind of games aren't for you, then.
Remember crosswords in newspapers? Yeah, think of it like that.
You don't get hooked until you cannot let go, you get a limited
chunk served each day. Same with Wordle.
bgbntty2 wrote 2 days ago:
I remember buying a magazine full of crosswords and similar
puzzles when I was in the mood.
And when there were sites with unlimited Wordle, I played a few
in a row.
On the internet, unlike with newspapers, you're not limited to
how many levels/games you can make per day. Making it once per
day doesn't make any sense whatsoever. It's condescending to
the users and feels like a power trip.
sunrunner wrote 2 days ago:
> It's condescending to the users and feels like a power
trip.
condescending (adjective): having or showing an attitude of
patronizing superiority.
I don't really see how a once-a-day puzzle is condescending,
unless it's a "You can't be trusted to regulate yourself so
I'll do it for you" type thing. Adding a dictionary
definition like above, however, probably is condescending :)
But I like the one-a-day format because, as other comments
have said, you can spend an entire day with just one puzzle
feeling important (relative to things that are important).
rtgfhyuj wrote 2 days ago:
so donât? others have said they like it, you donât, move
on
anonymous908213 wrote 2 days ago:
You can freely make levels and browse other people's levels.
The complaining about power trips seems as uncharitable a
perspective as you could possibly conceive of, not to mention
a bit theatric.
roskelld wrote 2 days ago:
I did Day 8 - I don't know if Perfect means I got the most optimal
score, I do show up at the top of the graph. [1] Day 8
PERFECT! 100%
URI [1]: https://enclose.horse
zimpenfish wrote 2 days ago:
If you click on "View Optimal", it shows you the optimal solution
which should be identical[0] to yours for "Perfect".
[0] I'm assuming, possibly quite wrongly, that there's only one
optimal solution per day.
grodriguez100 wrote 2 days ago:
I donât see any View Optimal button. Is it present in Mobile ?
toxik wrote 2 days ago:
Results, then scroll down a tiny bit.
culi wrote 2 days ago:
I don't see this button either (desktop) but searching the HTML
gives a that says
window.__LEVEL__ = null; window.__DAILY_MODE__ = true;
window.__DAILY_LEVELS__ =
[{"id":"FswXDo","date":"2026-01-06","dayNumber":8,"optimalScore":
86},{"id":"6UV4Yw","date":"2026-01-05","dayNumber":7,"optimalScor
e":95},{"id":"VfWi_1","date":"2026-01-04","dayNumber":6,"optimalS
core":77},{"id":"CNtGPI","date":"2026-01-03","dayNumber":5,"optim
alScore":116},{"id":"tnLvlG","date":"2026-01-02","dayNumber":4,"o
ptimalScore":51},{"id":"Qn9vLs","date":"2026-01-01","dayNumber":3
,"optimalScore":74},{"id":"Kj7mXp","date":"2025-12-31","dayNumber
":2,"optimalScore":90},{"id":"E03KkY","date":"2025-12-30","dayNum
ber":1,"optimalScore":68}];
EDIT: the view optimal button appears after submission
fwipsy wrote 2 days ago:
I expected the horse to move one tile for each block you placed. I had
an elaborate plan to lure it towards one exit and then close it at the
last minute... Nope!
Biganon wrote 2 days ago:
John Conway studied similar problems
URI [1]: https://en.wikipedia.org/wiki/Angel_problem
zimpenfish wrote 2 days ago:
I did see a game recently which did that (you place a tile, the
animal moves a tile, etc.) - possibly on itch.io. I'll see if I can
dig it out.
netsharc wrote 2 days ago:
A Windows 3.1 game called Rodent's Revenge: [1] Video: [2] Damn,
the good old days when games didn't have loot boxes, ads, etc...
URI [1]: https://classicreload.com/win3x-rodents-revenge.html
URI [2]: https://www.youtube.com/watch?v=-r6CnPzTXKE
OscarCunningham wrote 2 days ago:
There's an old Flash game called 'Chat Noir' where you have to trap
a cat on a hexagonal grid. Here's a copy of it:
URI [1]: https://www.hoodamath.com/games/chatnoir.html
zimpenfish wrote 2 days ago:
Ah, yes, the one I played recently was basically that (except it
was a horse, I think.)
matsemann wrote 2 days ago:
I remember a game I played on my phone ~15 years ago called "Greedy
Spiders". The spiders would move greedily towards something every
move, but you could cut strings in their web so they would have to
start a new route. So you would kinda have to lure them into going
one direction while slowly chipping away at the web, until you
could completely cut them off or force them to have to take a
longer detour giving you more time to cut more of the web. Quite
challenging after a while.
zem wrote 2 days ago:
lots of fun! the fact that the walls spill over the square boundaries
is very annoying though, i would love to have an option to just make a
wall a filled in square without the 3d effect.
savolai wrote 2 days ago:
I would like to be able to compare/switch optimal with my solution with
single click.
the_shivers wrote 1 day ago:
This is now implemented on daily levels! Click the link below your
score after submission.
savolai wrote 4 hours 33 min ago:
Thanks for the pleasant experience of providing a feedback loop for
my suggestion, felt rewarding and the implementation works nicely.
merelysounds wrote 1 day ago:
Same.
I took a screenshot of my solution and the optimal one - and then I
could compare like this.
zimpenfish wrote 2 days ago:
Side by side or a diff view would be great.
zimpenfish wrote 5 hours 59 min ago:
Happy to see there's now a toggle between "your solution" and
"optimal" once you've submitted. Makes it much easier to see what
you missed.
rob001 wrote 2 days ago:
I agree. Also, knowing the max score in advance would be better,
so you know when to stop/whether to keep going.
ahahahahah wrote 1 day ago:
that gives away too much information, instead i'd go with
something that tells you that you've found the best solution.
you'll still be able to know whether or not to keep going, but
you get no information that makes finding the ideal solution
easier.
naedish wrote 2 days ago:
I'm happy not knowing myself but the answer can be found easily
in DevTools. All the max scores are there (for current and
previous days only).
roskelld wrote 2 days ago:
Enjoyed that.
Removing a block was a bit fiddly on FireFox (Floorp) due to the right
click menu appearing when I tried to click on a tile.
Looking forward to tomorrows!
porphyra wrote 2 days ago:
I thought so too at first but you can just left click to remove the
wall actually.
divbzero wrote 2 days ago:
The game dynamic feels a bit like Wordle: One puzzle per day and
different solutions that you can compare with others.
lukebechtel wrote 2 days ago:
Which came first -- the game or the domain name?
hk__2 wrote 2 days ago:
Generally the idea of the game, then the domain name, then the game.
sneak wrote 2 days ago:
i have soooo many domains iâve paid for for years that will now get
sites because of the fact i can code at 10x+ now.
cdelsolar wrote 2 days ago:
i like how this was mildly downvoted for some reason
DIR <- back to front page