
Wordle 232 3/6
:large_green_square::black_large_square::large_yellow_square::black_large_square::black_large_square: :black_large_square::black_large_square::black_large_square::black_large_square::large_yellow_square: :large_green_square::large_green_square::large_green_square::large_green_square::large_green_square:

Just a little bit of luck probably

Wordle 232 5/6*
:black_large_square::black_large_square::large_green_square::large_yellow_square::black_large_square: :large_green_square::large_yellow_square::large_green_square::black_large_square::black_large_square: :large_green_square::black_large_square::large_green_square::large_green_square::large_green_square: :large_green_square::black_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:

To punctuate this Wordle week, here’s my solver as a package: https://pkgd.racket-lang.org/pkgn/package/wordle-solver

If you’re not sure where to get the list of words, pm me or send me an email

aha, I beat my solver today :muscle: Wordle 232 4/6 :black_large_square::black_large_square::black_large_square::black_large_square::black_large_square: :large_green_square::large_yellow_square::large_green_square::black_large_square::black_large_square: :black_large_square::large_yellow_square::black_large_square::black_large_square::large_yellow_square: :large_green_square::large_green_square::large_green_square::large_green_square::large_green_square: same for easy and hard mode today.

There are two lists: the guess list and the solution list. Do you use both?

yes, the flags are --goals
and --allowed
and the lists shouldn’t intersect (they can, but it’s less efficient)

Oh, so the eventual guess list is the union of both lists, I suppose?

yes

This is actually how the lists are split in the original game

Wordle 232 5/6
:black_large_square::black_large_square::black_large_square::large_green_square::black_large_square: :black_large_square::black_large_square::large_yellow_square::large_yellow_square::black_large_square: :black_large_square::black_large_square::black_large_square::black_large_square::black_large_square: :large_green_square::black_large_square::black_large_square::black_large_square::black_large_square: :large_green_square::large_green_square::large_green_square::large_green_square::large_green_square:

@laurent.orseau Just read your blog post on Wordle. Very nice write-up.

Haha, that’s not mine, although he has the same firstname :) I don’t have time to dive into Wordle that much

Oh! Sorry for the mixup. His last name is Poirrier.

I was looking at your Wordle solver and then somehow got to the blog post.

Should have noticed the .ca and put 2 and 2 together.

No worries at all!

Strange, some direct deps were not caught by --fix-pkg-deps
. Is it broken?


Wordle 232 4/6
:large_green_square::white_large_square::white_large_square::white_large_square::white_large_square: :large_green_square::white_large_square::white_large_square::large_yellow_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:

Thanks for that link @soegaard2 - I love 3Blue1Brown tutorial videos :)

I find it interesting that although Grant Sanderson (the guy behind 3Blue1Brown) is “one of the creators and lecturers” of a computational thinking course at MIT that uses Julia, he chose Python for his Wordle solver.

That could be due to the fact that his animation library is written in Python though. The guy seems wicked smart, and could likely code up a fine Wordle solver in any language :)

Has more to do w/ his audience than his personal choice most likely.

I dunno, I bet it’s due to using his Manim library. And choosing Python for that is likely due to the huge ecosystem.

It’s kind of a shame he doesn’t cover the actual optimal strategy for Wordle, and how to obtain it :confused: He hints at it around the end but it leaves a taste of being unfinished. Maybe in a future video—hopefully.

Because while information gain is certainly interesting, it’s not necessarily linked to the optimal strategy, neither in a greedy nor in a multi-step sense.

I thought he ended up with an average number of guesses that’s similar to the various “optimal” algorithms I’ve seen explained.

it’s similar but still not optimal.

The objective function is “minimize the expected number of guesses per word of the solution list”, not “maximize the information gain […]”. It’s similar but not equal

So he’s using a “proxy” objective function to design his algorithm instead of the actual objective function. Kind of a X/Y problem. (that would be fine if the actual objective function was not suitable to use, but it turns out it’s just as suitable as the proxy one, so there’s no particularly good reason to use the proxy)

Sure. On the other hand, the 3Blue1Brown video was about the only thing that I’ve found valuable about the Wordle thing :) In other words, I learned a little about information theory that I might put to use later on.

Sure

Working within the narrow confines of the specific Wordle use case was boring to me.

That animation library he has is killer!

> the 3Blue1Brown video was about the only thing that I’ve found valuable about the Wordle thing :slightly_smiling_face: I would expect a similar video on how to obtain algorithms to be just as valuable (if not more) :slightly_smiling_face:

Wordle 232 4/6
:large_green_square::white_large_square::white_large_square::white_large_square::white_large_square: :large_green_square::white_large_square::large_yellow_square::white_large_square::white_large_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:

I believe Julia interfaces w/ Python, so I’m not sure how much of an impediment the library would be? I’ve only dabbled in Julia tho

We need to convince Alex to write a similar animation library for Racket :stuck_out_tongue:

So, my Wordle dive has led me to implement deep neural networks in racket so i can then implement deep Q networks in racket… I’ll get these cleaned up into nice packages, but thought everyone might enjoy a little video of the test DQN learning to play pong (single player):

The above requires a special shout-out to @soegaard2, though, for his flomat
module allowing me to use CBLAS. There’s enough to program w/o having to worry if my linear algebra is correct, too (and it’s performant!).

Wouldn’t that be similar to a “how to think” video?

I can certainly see some overlap but also some big differences, since thinking is about the human brain, not a computer

Got bitten again by > (take '(a b c) (min 2 +inf.0))
take: contract violation
expected: exact-nonnegative-integer?
given: 2.0