Hacker News new | ask | show | jobs
by dontwordle 1482 days ago
Hello! I am the creator of Don’t Wordle. Really excited to see this took off today.

I thought I would share some background about the game, some of the iterations I went through, and some of the future features I would like to add.

Background: Like many others, I have been playing Wordle daily. Recently, my Wordle win streak hit 99. I was admittedly very careful with my guesses on Day 100, not wanting to ruin my streak. Then I began to wonder…even if I wanted to lose intentionally, could I do it? Obviously, I could make intentionally bad guesses, but that would take the fun out of it. So I decided to build Don’t Wordle.

Iterations I have gone through:

The first version of the game was simpler and much worse IMO. I did not display the “Valid Words Remaining” at the top, and there was no concept of “Undos". Initially, I actually displayed the Wordle word at the top throughout the entire game! To be honest, that doesn’t change the difficulty of the game that much. However, given that the spirit of the game is not to guess the Wordle word, it seemed like the right decision to hide it.

I created the “Valid Words Remaining” feature when I realized how challenging the game was. I kept getting stuck and wondering whether there were even any words left besides to Wordle word. When I saw how fast the count shrinks, I felt the game was a lot more interesting.

I then added the concept of “Undos” when I realized the game was still too challenging. It’s particulary lame if you’re playing the game for the first time and you get eliminated after just 1 or 2 guesses.

Current Tech Stack:

-Route53 + Cloudfront + S3 + Create React App

Unexpected challenges:

1. The animations. I obviously copied all the concepts from the original Wordle, but I failed to appreciate the complexity.

2. The nuances of the repeat letter words.

3. What makes a Wordle square yellow? The answer is not so simple

4. Trying to get www.dontwordle.com and dontwordle.com to take you to the same URL (either www.dontwordle.com or dontwordle.com) and still support TLS and only use the tech I mentioned above. I actually still don’t have it working perfectly. I know of a solution, but it’s overly complicated

Features I would like to still add:

1. I have heard from multiple people that it’s annoying how you could get the game in an unwinnable state without realizing it. For example, maybe 20 valid words remain, but there is no valid sequence of words remaining to finish the puzzle. While the “Valid Words Remaining” feature is nice, it would also be cool to have a “Valid Solutions Remaining” feature

2. I would like to build a brute force solver that you can watch attempt to play the game in real-time. I have built something similar for a crossword puzzle and really enjoyed watching the computer try to fill the grid. I think it would be cool to do that same thing with this game.

Question I don’t yet know the answer to:

Do any words exist that would not have a single valid solution in this game?

17 comments

For #4, this is actually frustratingly difficult, but if your constraints are not adding to the complexity, your best bet is to not, and just set your cookies to the domain. But if you like, one approach that would work: - Cert with SAN - CNAME's on the CF distribution - S3 Bucket And the sneaky bit: Use a cloudfront lambda to redirect "wrong" Hosts - comes with a cost, but it's super marginal.

Otherwise, your best approach is sadly a second cloudfront distribution with a different bucket (or bucket path) that just hosts a redirecting index key because you end up fighting stupid AWS design decisions.

Not that I've ever wasted stupid amounts of time on this particular problem...

These days my solution is to put cloudflare in front of it and walk away.

Good game to add to my current daily routine (heardle, Wordle, quordle, worldle), but man is it hard!

surely the answer is just an HTTP redirect?

thanks for heardle! have you tried nerdle?

If you’re statically hosting on s3 then that isn’t an option while also supporting tls. You need something in front. You can go the cloudfront route but last time I looked it was all a bit of a pain. Cloudflare takes minutes to set up and the whole thing will be done and maintenance free.
thanks for the info. I use letsencrypt and have never had to touch it since setup, cloudflare must work in a similar way but handling DNS aswell
> thanks for heardle! have you tried nerdle?

https://www.samandfuzzy.com/3138

> For #4, this is actually frustratingly difficult, but if your constraints are not adding to the complexity, your best bet is to not, and just set your cookies to the domain. But if you like, one approach that would work: - Cert with SAN - CNAME's on the CF distribution - S3 Bucket And the sneaky bit: Use a cloudfront lambda to redirect "wrong" Hosts - comes with a cost, but it's super marginal.

> Otherwise, your best approach is sadly a second cloudfront distribution with a different bucket (or bucket path) that just hosts a redirecting index key because you end up fighting stupid AWS design decisions.

> Not that I've ever wasted stupid amounts of time on this particular problem...

Doesn't this document[0] cover dealing with ssl on cloud front? Plus Amazon's Cert Manager? Or is it missing something?

Pair that with an redirect/alias of www=>@ and you should be golden?

[0]https://docs.aws.amazon.com/AmazonCloudFront/latest/Develope...

> Not that I've ever wasted stupid amounts of time on this particular problem...

I have also spent _too much time_ trying to get this to work. Gave up and used nginx instead.

It's a problem with going `serverless', for sure. To anyone running a proper http server, it's trivial.
Could do a JS redirect, falling back to an iframe of the whole page?
I love the premise! It really pokes fun at how Wordle (and other popular games) are actually pretty hard to lose if you play anywhere above some very low threshold of effort/ability.

> it would also be cool to have a “Valid Solutions Remaining” feature

That would be awesome. I suppose the biggest challenge would be to enumerate possible solutions in tree form to allow DFS or BFS searching.

Thanks for sharing!

I think that's actually what makes Wordle such a genius game - it's hard, you work for it, and it can happen, but you're very unlikely to actually lose!
Set a max 4 tries limit for yourself and see if you can maintain a 100% win streak. I've slipped to 5th on 16% of my wins with the 50% at 4, and 24% at 3 (and two (lucky) hits at 2. which I don't count.)
> 4. Trying to get www.dontwordle.com and dontwordle.com to take you to the same URL (either www.dontwordle.com or dontwordle.com) and still support TLS and only use the tech I mentioned above. I actually still don’t have it working perfectly. I know of a solution, but it’s overly complicated

If you use Cloudfront with an S3 bucket as origin for _dontwordle.com_, just create a second Cloudfront with an S3 Bucket for _www.dontwordle.com_ and enable "static website hosting" to redirect to "dontwordle.com" on the second bucket.

So you can do this, but it won't support TLS to my knowledge. At least in my testing, it will work to navigate to www.dontwordle.com (you will get redirected to https://dontwordle.com). However, if you tried navigating _directly_ to https://www.dontwordle.com, that would not work. In fact, you can try clicking on https://www.dontwordle.com right now, and it won't work :) To be fair, currently I do not have it implemented exactly the way you described, but I encountered this exact same behavior when I tried it that way
Yup, been there. Have a look to see if cloudflare will do what you need within the free plan. You just point it at the bucket, add a rule for the redirect and all the tls is handled for you. It’s pretty painless. Feel free to ping me if you want to run through the steps.
I use the setup described.

It was some tinkering around with bucket name (has to match the subdomain.domain.tld) and the cloudfront origin settings. But it works flawlessly. Feel free to ping me if you need details.

See links below.

coindex.de www.coindex.de

Could try serving a client side redirect. Just an index.html page that has a script that redirects the browser to the https version

    <script>document.location.href = https://dontwordle.com</script>
Assuming that works, I don't see the need for Javascript when a meta refresh achieves the same with just HTML.
Well the game needs JavaScript to run anyway so...

Haven't heard of meta refresh though, thanks for sharing

This is really cool! I've wondered about exactly this same thing. Showing the valid solutions remaining would be really neat as well, because I'm really not sure how to interpret valid words remaining or when to use my undos in the current implementation. (If it's too computationally intensive, I would think you could memoize it across all users' games and that should make it feasible).

One other suggestion, is maybe the win condition shouldn't be exactly the same as in wordle. Instead of only allowing one game per day but using undos to make it easier, maybe allow 5 attempts per day instead? As a player I think it's simpler to be able to retry from the beginning if I lose rather than try to figure out the optimal time to use my undo.

As a message I prefer 'not in word list' rather than 'invalid'

As it's very unlikely you have every word in your list.

Great game. Doesn't it push players towards a strategy of working out the solution 'offline', though?

I mean, you start by playing almost the same as standard Wordle, just to guess the answer, without entering it. Then undo everything. Next, figure out a solution which avoids that word. Finally, type in your entire solution.

This could be a bit grindy, and not in the spirit of the game, but it seems like almost assured to win, or am I wrong?

Edit: If there are fewer undos allowed, this strategy gets more difficult

I agree with your take. It's definitely a problem with the current game format. I have thought through some different alternatives, but not a fan of any of them up to this point.
What if you had to earn your undos? As opposed to starting with N of them in the beginning.

What if you scored like wordle but based on undos? 1 undo used, 2 undos used... Up to 5 undos used. This incentivizes the user to try and not undo if possible.

I think the eliminated score method is kind of redundant with the wordled scoring, just make the player guess the 1 word left and be wordled?

Really cool and fun idea, we had a great time playing with it and probably will add it to our daily rotation.

Maybe just give the player the word and no undos? There's no mystery then, it's just chess, but it would further cement the game as the opposite of wordle.
Reducing the Undos to about 3 could be enough to make that strategy less of a certain win

But you're smart to be generous with the Undos while introducing the game, because it helps users get familiar with it

Maybe add a "hard mode" that reduces undos to 2-3

... as if it isn't hard enough already :-D

> What makes a Wordle square yellow? The answer is not so simple

Well, I would say the question is poorly posed. The answer to the question as posed is simple as can be if the guess contains no duplicate letters. But if the guess does contain duplicate letters, the question as posed doesn't necessarily have any answer. It may - if all duplicates should be yellow, or if some of them should be green while all the rest are yellow, there's only one valid way to color the guess. But in the general case, you have some number of green squares, some number of yellow squares, and some number of dead squares, and you can swap yellow for dead without affecting the validity of the coloring.

So the question you should be asking is not "should this square be yellow?" but rather "how many yellow squares should this guess receive?". Then you can just choose appropriate squares to color yellow arbitrarily.

I love the twist on the game, as well as the implementation automagically calling out when I've been defeated. Well done!
A bug (warning: spoilers): repeated letters don’t work quite right. I have an O at spot 2 thats correct and I had it in the wrong place before. Any word like “XOXOX” reports that O has already been tried in the fourth spot, even though it hasn’t.

Well done!

If you wouldn't mind sharing a screen if you encounter that bug again, that would be helpful! Trying to reproduce it right now but cannot.

Is it possible that in an earlier word, you had tried using an O in the 4th spot? That should be the only time that error message appears.

>What makes a Wordle square yellow

One thing I had wondered--but not enough to figure out what the code does...

Let's say you enter Mamma for example. And there is one M in the word but in the second position. Which M square does Wordle choose to turn yellow? (But maybe it doesn't matter?) There may be other cases like that as well.

Here’s the algorithm of the game’s letter marking system, based on my experience reproducing its logic for a script I wrote that computes remaining words from your guesses and their corresponding marks.

Suppose the target word is “polar” and you guess “banal”.

A submitted word is marked in 3 passes.

0. Initial state: (“banal”, “polar”)

1. Zip together the letters of the guess and target words, and loop through the zipped list. When both letters at a position are the same, replace the guess letter with the symbol for “correct” (green) and remove the target letter from the target word. State: (“banGl”, “polr”)

2. Loop through the target word’s letters, replacing the first occurrence (if any) of each one in the guess word with the symbol for “present” (yellow). State: (“banGY”, “polr”)

3. Replace any remaining letters in the guess word with the symbol for “not present” (black). State: (“BBBGY”, “polr”)

Return the marked guess word.

---

Other examples:

0. (“mamma”, “amaze”)

1. (“mamma”, “amaze”)

2. (“YYmmY”, “amaze”)

3. (“YYBBY”, “amaze”)

---

0. (“nieto”, “otoño”)

1. (“nietG”, “otoñ”)

2. (“nieYG”, “otoñ”)

3. (“BBBYG”, “otoñ”)

edit: fixing formatting issues. Sorry, first time posting a comment on here.

For yellow squares, the particular order in which they turn yellow doesn't matter.

The remaining grey Ms tell you the same thing (that those positions don't have an M).

That's true for Wordle, but I think according to the dontwordle rules you are allowed to make a guess with an em on one of the grey squares anyway.
No you are not allowed to do that. A grey square excludes the letter from the position, regardless of any yellow squares.
You are correct. Words with repeated letters are not a good strategy in this game.
Words with repeated letters are a great strategy, as long as you know or strongly suspect the letter isn't in the target word, and the letter is rare so eliminating it doesn't eliminate much.
They are a fantastic strategy, though if one happens to rob you of a lot of remaining words, you should undo it.
I'm not sure about your conclusion here. If we don't repeat the letter then we're going to have information about another letter, which we don't want.
> Let's say you enter Mamma for example. And there is one M in the word but in the second position. Which M square does Wordle choose to turn yellow? (But maybe it doesn't matter?)

I don’t think it matters, it should just default to the first M.

From experience, the first M.
Yep, it's the first M.

I think in general the rule is this: - Any Ms in the correct position turn green (duh) - If there are X Ms remaining in the answer, turn the first X (non-green) Ms in the guess yellow

Thanks for the fun. Your valid words are a very small subset of the English dictionary, why is that? I recently wrote a simple Wordle 'solver' (https://github.com/beyazhilal/wordle-solver) and although my list contains some invalid words like acronyms, when I was searching for the English dictionary words I always got a list of at least 120k+; but you only have 12k! That obviously makes the game impossible to win.

Don't know about Route53 + Cloudfront combination but your #4 challenge would be super simple with a webserver like apache or nginx.

It’s probably because wordle’s word list is known and about 12k words long.

The wordlist can be found on GitHub or by viewing source, so you can probably just discount 90% of the words in your guesser before you even start.

Hi.

I don’t know if this is a bug or intentional, but playing today, I was eliminated on the last guess when there was a valid word that was not the wordle word. However, I had used that word previously and it had forced an undo. This came as a surprise, because I knew the word was safe and planned the 5th word to leave that word available.

Would you mind sharing a screen of your board? I just tried reproducing what you described, but was unable to do so.
Would it be possible to support high contrast colours? I'm red/green colourblind and find it very hard to distinguish the "right in right place" and "right in wrong place" colours. Thanks!
I tried playing. I really did. It just wasn't fun for me. Thanks for making a new game to try!
Screen size is slightly too high for iPhone SE, wanna slice off about 50px?
Shameless plug: I recently updated https://www.redirect2www.com to support https, so set the A record for root pointing to 50.17.181.25
for #4 does setting the a record for the naked domain to 174.129.25.170 not support tls?