
What exactly is the difference between Wordle and Mastermind?

The white and black pins indicate correct letter / correct letter and placement.

Hm…. wait, I think there are some licensing issues: The original game in JS has no license AFAICT, so I’m not sure we are allowed to use that particular list of words. We could provide our own list of words and merely say where to find the original list. There’s an open source clone with the list of words: https://github.com/hannahcode/wordle/tree/main/src/constants but probably they are the same words and so the same issues apply?

No. We just accept entries as a GitHub link - we are not publishing

We are not the first - many others have published solvers

If we want participants, I believe we should ease the effort required to enter. > We are not the first - many others have published solvers That’s not a good reason to do things wrong :slightly_smiling_face:

An app to play a game is distinct from an app to implement a game

I don’t think that counts. As long as you reuse parts of a source code, that’s copying

It’s pretty similar. There are more letters than colours, but there are more constraints on possible words than possible Mastermind codes

Also in hard mode, it’s like you can only play consistent guesses

Mastermind came in several versions. I am thinking of the letter version on the picture. (I think, you are describing the color version) But I think you are right that Mastermind didn’t require the hidden code to be a word.

Ok. Only entries that work without the wordle dictionary?

That doesn’t help, it makes the entrance bar a little too high. We should try to provide our own list or point to a free-to-use list

Unless lists of words cannot be licensed? (that’d be surprising)

OED would like to speak with you:rolling_on_the_floor_laughing:

The nature of the problem is you can’t write a solver without a word list.

sure, but does that entail that you can use the list of words freely? Problably not I’d guess

I think the risk is low but I have more important things to worry about.

I wonder what others think

Ah, I didn’t know about this version!

If Wordle never makes a physical game, you know why :wink:

heh

So, @spdegabrielle and I are thinking of proposing a Wordle Hackarty (hacking party), but I’m a little worried about licensing issue for the list of words. Stephen thinks it should be fine, or that we can ask participants to not use the original list (in which case I think it sets the bar too high to enter, as one would have to come up with their own list). Ideally we would provide a list ourselves maybe?

@mark.piffer has joined the channel

I was thinking of using the list of 5-letter words from the Racket source code (after removing non-alpha characters), but it may be a little too hard: "bytes"
"close"
"error"
"start"
"quote"
"table"
"block"
"bfodd"
"blame"
"given"
"owner"
"rxplt"
"local"
"shape"
"scale"
"listc"
"sound"
"event"
"curve"
"frame"
"topic"
"debug"
"ufset"
...

Although…. I mean it’s a solver, right, so it should be fine?

@laurent.orseau Write Josh Wardle (Wardle!) and ask. I think there are good chances you can use the actual word list. https://www.powerlanguage.co.uk/

(There’s only 500 words or so though)

email sent. Thanks for pointing it out!

Use bfodd in a sentence

I just bfodd the cat


“Blue Fcreen of D-Death”?

hm, looks like the cat bfodd you, rather

but you can rxplt it anyway

Lol. There are good chances he never got rights for the list he is using but just scraped it from various webpages

Maybe, but we can’t track the source higher than Wordle, so it’s the best we can do I think.

Next time a Common Lisper complains about the Racket repl I’m going to say racket doesn’t have a repl
it has a rxplt

IIRC, in Mastermind you don’t know which positions are correct. You just get 1 piece of information back: how many pegs are correct. So, often times your follow-ups are nothing but an attempt to lock down what’s actually in the correct position and what isn’t.
Put another way, Wordle’s “hard mode” isn’t possible in Mastermind, because you have no idea what’s correct.

True

What are you guys talking about? No one has exclusive rights to a list of words.

As much as I would like to trust you, I’d rather have a legitimate source that says so :slightly_smiling_face:

In other words, there is no issue with using the same list of words that Wordle uses.

Words are “natural” - like PI or DNA - and cannot be copyrighted, etc.

I’m sorry, but some of those words in your last sentence are in the Wordle list, so please remove them from your message. ;)

Tell that to J.K.Rowling…

No problem, I sorted my word lists, so they’re in a different order than Wordle :)

Hasbro begs to differ: > The definition-free _OWL_ and a words-only version of the _OSPD_ might be said to resemble the phone book. The facts in them—the individual words themselves—wouldn’t be considered “original” and likely couldn’t be copyrighted. But the lists might represent “an original selection or arrangement of facts,” as Justice Sandra Day O’Connor wrote in _Feist_. “These choices as to selection and arrangement, so long as they are made independently by the compiler and entail a minimal degree of creativity,” she wrote, “are sufficiently original that Congress may protect such compilations through the copyright laws.” Source: https://slate.com/human-interest/2014/09/scrabble-copyright-dispute-hasbro-says-it-owns-the-scrabble-dictionary-players-beg-to-differ.html

A company attempting to grab hold of anything that could possibly make them money and extend their influence, and stomp on people w/o enough resources to fight back (easily). Shocking. That hardly makes it legal. Although I can sympathize w/ not wanting to “poke the bear” so-to-speak.

> Although I can sympathize w/ not wanting to “poke the bear” so-to-speak. That’s the idea.

“entail a minimal degree of creativity” ’nuff said

Didn’t read the scrabble thing in detail, but I think that - if the “dictionary” in question contains tile values + maximum possible scorings, etc. WRT copyrighted rules of Scrabble and board tiles/setup, then Hasbro may have something (in court, I personally think the idea is silly, tho).

Oh wow, have you guys done today’s Wordle with your solvers?!?!?! It’s one of the “trap” words!

I was lucky and got it in 6 :)

Wordle 226 6/6
:white_large_square::white_large_square::white_large_square::white_large_square::white_large_square: :white_large_square::white_large_square::white_large_square::large_yellow_square::white_large_square: :white_large_square::large_green_square::large_green_square::large_green_square::large_green_square: :white_large_square::large_green_square::large_green_square::large_green_square::large_green_square: :white_large_square::large_green_square::large_green_square::large_green_square::large_green_square: :large_green_square::large_green_square::large_green_square::large_green_square::large_green_square:

I was too lazy to code up a defensive measure for that one.

I wonder how much the words count as Wordle’s API surface in the sense of Google vs Oracle. Probably depends on how a judge feels about the transformativeness of Wordle solver programs.

Got it in 5 (that’s my second game) after using a non-hard mode word

Manually, or with a program?

manually

I haven’t written the solver yet, will do! :slightly_smiling_face:

Ah, yeah, I don’t think it’s too hard manually, but a problem for my program which only does hard mode.

I think non-hard mode is actually more interesting

I agree 100% - not sure if I’m motivated to code it up though :)

I think I’m de-motivated by the fact that the type of feedback used seems very different than what you’d have in a typical AI program, so the solver is too niche for me to get super excited by it.

I mean, chess is niche also, but I think it warrants more effort.

You can basically use the same tools, deep down, since it’s a planning problem with a clear objective function

Manually: Wordle 226 4/6
:black_large_square::black_large_square::black_large_square::large_yellow_square::black_large_square: :large_yellow_square::black_large_square::black_large_square::black_large_square::black_large_square: :black_large_square::large_yellow_square::black_large_square::large_yellow_square::black_large_square: :large_green_square::large_green_square::large_green_square::large_green_square::large_green_square:

were you lucky on the last one or was it the only solution?

i got mine in 4, but happened to have picked the 1st letter in an earlier try.
Wordle 226 4/6
:white_large_square::white_large_square::white_large_square::white_large_square::white_large_square: :white_large_square::large_yellow_square::large_yellow_square::white_large_square::large_yellow_square: :white_large_square::large_green_square::large_yellow_square::large_yellow_square::white_large_square: :large_green_square::large_green_square::large_green_square::large_green_square::large_green_square:

I can see from the unused letters that there were at least two other possible words.

if you had all but the 1st letter there were a good 5–15 possible words it could be based on what you had eliminated previously.

I seem to remember hearing professional Scrabble players pay lots of attention to word list updates for strategy purposes. It’s potentially a game balance issue, and the words that are admitted are probably contested among players, not just for enabling uncompetitive strategies but for changing how accessible the game is to people who don’t memorize dictionaries. I’m not a fan of copyright in general, but I would consider that selection process to easily involve more than a minimal degree of creativity.

@massung when you said your solver got it in 3 guesses usually except for one time taking 4, are you saying that your solver’s 3rd guess is right? If so, that seems really good.

My solver this time around failed to get it in 6 (got it in 7).

Working on a new solver tho, which I hope to chat about later today. :slightly_smiling_face:

(something more “fun”)

Without special purpose code for today’s trap, it just depends on the order of words tried, so mine was just lucky.

I’m debating on whether to make an easy mode solver.

Today’s “trap” could have been avoided with earlier guesses. The first letter is quite common, so should have been chosen by an algorithm in an earlier guess. This is one where “hard mode” likely screwed many people, though.

Also, it doesn’t seem fair to know the target list, and use it for testing :)

Luckily most of the first possible letters were eliminated.

I’m using this wordlist (500 of the most common 5-letter words) for testing and another purpose ATM.

@badkins What did you mean by trap?

*ight

@soegaard2 my program (unintentionally) works in hard mode, so on the 3rd guess it tried “dight” and got the last 4 letters right. That means, the next guesses have to use those same last 4 letters which means I don’t get much new info since I can only vary the 1st letter.

I see. Then luck is needed.

Well, you can add code to circumvent the problem I think.

I’m curious how many instances of N words differing by only 1 letter in the same spot there are, where N > 3, or so.

is the *ight family the worst?

About the rules: Say the target word is “happy”, and you write “mamas”, will the two “a” be in orange, or only the first one?

ixnay on the luck part. Given that “L” appears far more frequently in words (esp. in the first position) than “G”, “W”, “M”, …, it should have been the guess made over “dight”, because - if wrong - it would reveal far more information (by eliminating words) than any of the other guesses possible.

That said, my solver failed to do that as well. :stuck_out_tongue:

It will be green. You won’t be given information saying that there’s another.

Err… I misread, flipped it thinking you meant “mamas” was the solution

If you wrote “mamas” then you’d get green and yellow

oops, yeah it should be green. But say the target is “arrow” instead

@massung I switched from a global letter frequency to a per position letter frequency, and surprisingly, at first, it made it worse! Anyway, I’m currently using a per slot frequency, so apparently D is more common in position 1 than L (or I have a bug).

I guess there’ll be only one orange “a” in “mamas”?

Then two yellow

Oh, that is, it’s more common in the remaining list of words that match the criteria (i.e. hard mode).

If the solution was “arrow” and you typed “mamas”, you’d get a yellow box for each “a”

hm, that’s weird

So mine guessed: CARES PONTY DIGHT WIGHT MIGHT LIGHT

thanks

> I switched from a global letter frequency to a per position letter frequency, and surprisingly, at first, it made it worse It needs to be (IMO) the frequency of all positions where it could possibly be still.

It is. I have a vector of 5 vectors where the latter is a 26 element vector of frequencies per letter. So I score a guess word based on the frequency of a letter in the spot I’m checking.

In this case, with the last 4 positions known, all that matters (to my program) is choosing the unused letter with the highest frequency in the 1st slot.

Sorry, maybe a lack of knowledge on my part.
Assuming you don’t already know that “ight” is correct (and is just part of your guess) - or at least part of it is still part of the “guess”, then even though you’re guessing a letter for the first position, it’s still possible that letter might be in one of the other positions. So you want to eliminate - when wrong - as many possible downstream words as you can.

So, I think to avoid the trap, you’d want to know all the “families” of words that differ by 1 letter, and choose guesses to avoid getting into the *ight situation.

So, if you know that “ig” is correct, even tho you’re picking a first position letter, you want words where that letter might appear in slots: 0, 3, or 4 as well.

> the “families” of words that differ by 1 letter That’s an interesting idea, too.

You may be right, and that may be why I saw a decrease when switching to per slot frequencies!! I then made a few other algorithmic improvements that beat my original performance, but maybe switching back to global freq with those other improvements would be even better. I was basically in stream of consciousness coding mode :)

I’d be more interested in coding an easy mode solver though.

Been there, done that. Worst for me are things like AoC where I stick to my initial idea and only 2 hours later after making no headway do I stop and re-eval. :stuck_out_tongue_winking_eye:

Yes - I did that a lot. Sometimes that kind of bulldog tenacity pays off, but if it’s in the wrong direction, it can be bad :)

A “todo” list item I didn’t get to for my solver, was to make use of info indicating a letter occurred at least N times vs. my current knowledge of only whether it occurs, or not. I’m pretty sure that would provide a significant boost in effectiveness.

Just deleted the comments on this because I reversed my opinion like 3 times in 30 seconds. I should think about this more…

Averaging out the likely bugs, I’ve finished a first draft of my solver. It finds “light” in 4 guesses

I just realized that when using “Rename variable”, we can actually use any string such as a function call (handy for turning variables into parameters) or even several identifiers (handy to change a single value to several?)

I don’t think that’s meant to work though. It renames both binding and bound occurrences. A general expression at bound occurrences makes sense. But that’s not the case for binding occurrences.

Yes, that can fail indeed :slightly_smiling_face:

I think it’s good enough though, and doesn’t need to be fixed

On the 2315 target words, in ‘easy’ mode and using the additional list of allowed words, my solver finds all words in at most 5 moves except for 2 where it takes 6 moves: #guesses #words
1 1
2 52
3 982
4 1182
5 96
6 2
The two “hard” words are corer
and mover
.

I’m moderately certain that while each word by itself is (essentially) in the public domain, the compilation of a list can be considered a copyrighted work. I can’t think of citations for that right now, though.

In hard mode (still allowing additional words), it’s not so nice though: #guesses #words
1 1
2 93
3 908
4 1033
5 222
6 42
7 13
8 3

and finally in hard mode without the additional list of words, there’s even a 9 steps guess :disappointed: #guesses #words
1 1
2 122
3 889
4 981
5 256
6 49
7 12
8 4
9 1

I think the hard mode requires some plan ahead to reduce the worst cases. That may be pretty time consuming though.

You’re probably right - I’m just being difficult. Regardless, I think we all know that using the same list of 5 letter words as Wordle uses will likely never land in any court :)

I have to stick it up on github, but my “fun” wordle solution…
I built a reinforcement/q-learning model that learned to play the game. Clocks in at 185 LOC. It uses a good amount of RAM and time to build the model, so I decided to - instead - grab a much smaller wordlist of 500 common, 5-letter words and use that as my setup. It’s possible to just swap out one wordlist for another and it’s fine, but I didn’t feel like training it for 13,000 words.
Example output of training: > (learn-common-words)
Learning (1/500) "about"... Won 996 of 1000 games.
Learning (2/500) "above"... Won 999 of 1000 games.
Learning (3/500) "abuse"... Won 990 of 1000 games.
Learning (4/500) "actor"... Won 995 of 1000 games.
Learning (5/500) "acute"... Won 997 of 1000 games.
Learning (6/500) "admit"... Won 1000 of 1000 games.
Learning (7/500) "adopt"... Won 997 of 1000 games.
Learning (8/500) "adult"... Won 997 of 1000 games.
...
And playing: > (play "light")
Turn 1. "leave"
Turn 2. "light"
#t
> (play "light")
Turn 1. "begun"
Turn 2. "logic"
Turn 3. "light"
#t
> (play "light")
Turn 1. "these"
Turn 2. "forum"
Turn 3. "dying"
Turn 4. "vital"
Turn 5. "light"
#t
>
---
> (play "house")
Turn 1. "think"
Turn 2. "clear"
Turn 3. "mouse"
Turn 4. "house"
#t
It learns using hard mode, but plays in easy mode.
The model takes ~1.5 GB of RAM to build and - when saved using s-exp->fasl
- clocks in at ~225 MB. Zipped it’s only 15 MB, though. I’d love to chat about the solution if anyone is interested. Would love to play around with it more and see what other models for the state/reward people can come up with!

As long as the lists remain on our personal laptops, there can hardly be any real problem. But the issue may arise if we create a public repo with the list of words and give it a license.


I have a suspicion they’ll regret the price tag in a few months when the fad dies down. Good for Mr. Wardle, though.

Not just fad, but no one I know will subscribe to the times to play.

What do you think about https://drewdevault.com/2021/12/28/Dont-use-Discord-for-FOSS.html ?

I’m not sure if I buy the criticism that Discord is not accessible, when one of the suggested alternatives is IRC.

I have positive experience with Zulip though.

I wonder if the price for Wordle is more or less than the amount of money the NYT pays crossword puzzle makers annually.

I dislike that discord is a walled garden, so I often push posters in #show-and-tell to post on Discourse.(which is FOSS & not a walled garden)

I then link back to the discourse post from Reddit, Twitter & mastodon.

I think if there is a platform where racket users congregate we should endeavour to reach out and build bridges. (In the human sense not automated message bridges that platform owners sabotage - I’m looking at you @Slack)

I even try with facebook sometimes but it feels like a ghost town

I’m waiting for racket TikTok :scream:

We should leave that for the youths.

The thing would be to (crowd?) source our own list of words so you know it doesn’t contain a ‘trap street’.

Also, it seems like not the hardest thing to implement, but not scale. How long until free to play, no ads wordle clones appear all over the place?

I’m probably not going to get a reply anytime soon then :sweat_smile: