ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANAOAPAQ
1
NOTE: THIS LIST MAY BE INCOMPLETE! IF YOU NOTICE MISSING ENTRIES OR MISTAKES, PLEASE CONTACT ME AT BENJAMIN.PAASSEN@DFKI.DE ! NOTE: EXPERIMENTAL METADATA LISTED IN NEXT TAB
These last four columns refer to the 'time' function in linux. Please refer to the hyperfine mean time for a more accurate reference.
2
NameNicknameLanguage
graph representation
represents words as character sets (bitwise)
filters anagrams
words indexed by contained characters
uses character frequency
pruning character sets that were already tried
recursive
parallelized
Knuth's Algorithm X
Approach/Tricks
lines of code (including comments)
Source Code URL
tweet/form of announcement
timestamp of announcement [CEST]
github version timestamp for evaluation [CEST]
hyperfine mean time [ms]
hyperfine std [ms]
hyperfine min [ms]
hyperfine max[ms]
Median execution time [ms]
Execution time trial 1 [s]
Execution time trial 2 [s]
Execution time trial 3 [s]
3
Matt ParkerstandupmathsPython001000000
anagram filtering; building pairs of words, then merging pairs; used reported execution time by Matt
110
https://github.com/standupmaths/fiveletterworda
https://twitter.com/AProblemSquared/status/1548948689229594624
2022-07-18 10:322022-08-03 22:11
too long, not executed
2,760,670,3002,760,670
Just for reference! I did not actually run this implementation. This is the number released by Matt Parker himself.
4
Benjamin PaassenbpaassenPython100000000
graph representation; pruning symmetric pairs; no anagram filtering!
133
https://gitlab.com/bpaassen/five_clique
https://twitter.com/bpaassen1/status/1549326759505559558
2022-07-19 11:342022-07-19 16:59
too long, not executed
1,338,0001.34E+03
5
Neil CoffeyneilcoffeyJava011000000
representation of words via bitwise sets of letters; separate handling between loops 1/2 and 3/4/5
207
https://github.com/neilcoffey/FunStuff/tree/main/WordleFiveWordFinder
https://twitter.com/BitterCoffey/status/1553297093334388736
2022-07-30 10:312022-07-29 17:4415,33658814,79316,66815,0261.50E+011.50E+011.50E+01
6
PhirephirePython111001000
graph representation + more pruning (starting from bpaassen's solution)
154
https://github.com/phire/five_clique
https://twitter.com/phirenz/status/1555072727534694400
2022-08-04 08:062022-08-04 13:2815,52721415,30016,03016,7141.57E+011.73E+011.67E+01
7
David van den BergAzuzlPython010111000
iterative implementation that goes over the alphabet once and keeps a list of candidates to which this character could be added (or the character could be skipped); binary representation of words and indexing tricks
173
https://github.com/Azuzl/parker-word-square
https://twitter.com/4z4i/status/1555138929640226817
2022-08-04 12:292022-08-04 11:052,7353242,2783,1792,1362.39E+002.14E+002.12E+00
8
Sylvester HespoisynC++011110100
representation of words via bitwise sets of letters; an index to quickly find words which contain a certain letter; start with words which contain infrequent letters and work to frequent letters
178
https://github.com/oisyn/parkerwords
https://twitter.com/oisyn/status/1555152956097437696
2022-08-04 13:252022-08-04 13:2251,22375249,45852,05752,8365.28E+015.27E+015.34E+01
9
IlyaNikolaevskyIlyaNikolaevskyC++011000100
representation of words via bitwise sets of letters; recursion; dynamic programming
99
https://github.com/ilyanikolaevsky/five_words
https://twitter.com/IlyaNikolaevsky/status/1555262027752407041
2022-08-04 20:382022-08-04 20:046,104456,0416,1805,8605.85E+005.88E+005.86E+00
10
Gé WeijersgweijersC011000101
Donald Knuth's Algorithm X for the set cover problem
511
https://github.com/gweijers/wordle_cover
reconstructed from github2022-08-04 20:572022-08-04 08:572,467182,4492,5022,5802.51E+002.58E+002.60E+00
11
Kristin PagetKristinPagetC011000010parallelization299
https://github.com/kristinpaget/fivewords
https://twitter.com/KristinPaget/status/1555281153455624192
2022-08-04 21:542022-08-04 21:501,042231,0221,0911,0451.03E+001.07E+001.05E+00
12
Bryan Reddae6nrPython001011000
backtracking perspective; add characters, starting from the most infrequent one
222
https://github.com/ae6nr/25letters
reconstructed from github2022-08-04 23:132022-08-04 23:1338,24298436,24539,31137,2263.75E+013.72E+013.67E+01
13
Tomáš PavlíksavlikPython111110000
Fork of graph solution, incorporating several further optimizations, in particular bitwise representation, character fequency, and indexing
92
https://github.com/Savlik/six_clique
https://twitter.com/Savlik5/status/1555340245247434752
2022-08-05 1:492022-08-05 9:445348168509056244,8844.69E+004.88E+005.08E+00
14
Pablo YaggipyaggiC++111001010
graph representation; representation of words via bitwise sets of letters; parallelization
412
https://github.com/pyaggi/WordStats
reconstructed from github2022-08-05 02:272022-08-04 22:26247,7053,227239,244250,680242,9742.37E+022.45E+022.43E+02
15
Orson PetersorlpRust110001000
no description, but appears to use graph representation, bit representation, and pruning
112
https://github.com/orlp/matt-parker-five-letter-clique
reconstructed from github2022-08-05 03:012022-08-05 02:57437114264654774.77E-014.54E-014.77E-01
16
Alex Recuencorecuenco_alexPython111001100
fork from phire with recursion
167
https://github.com/alexrecuenco/five_clique
https://twitter.com/recuenco_alex/status/1555391372596719616
2022-08-05 05:122022-08-05 05:0413,8397113,73713,92414,3501.55E+011.43E+011.44E+01
17
JacobencodyRust111101000
representation of words via bitwise sets of letters; directed graph representation; shortest path index; prunning character sets that were already tried
446
https://github.com/encody/jotto-problem
https://twitter.com/sudo_build/status/1555564934515138560
2022-08-05 16:372022-08-06 09:311,035121,0151,0569989.70E-011.00E+019.98E-01
18
Richard EbelingHe3lixxxC++011000110
graph representation; recursion; multithreading
147
https://github.com/He3lixxx/five-words-five-letters
email2022-08-05 22:132022-08-06 14:0286688618899309.30E-019.25E-019.30E-01
19
Sylvester HespoisynC++011110100
representation of words via bitwise sets of letters; an index to quickly find words which contain a certain letter; start with words which contain infrequent letters and work to frequent letters
178
https://github.com/oisyn/parkerwords
https://twitter.com/oisyn/status/1555723685557944321
2022-08-06 03:132022-08-06 15:325725570706.90E-029.10E-027.00E-02
20
David A. DalrympledaviddadRust011001101
Donald Knuth's Algorithm X for the set cover problem
395
https://github.com/davidad/five-letters
https://twitter.com/davidad/status/1555770747473301506
2022-08-06 06:202022-08-06 02:2265856536707407.40E-017.36E-017.43E-01
21
Diggory BlakeDiggseyRust101000100
directed graph representation; representation of words as bitwise character sets; parralelization of outer loop
118
https://github.com/Diggsey/five_words/tree/master
reconstructed from github2022-08-06 20:482022-08-06 20:2870957037177557.55E-017.45E-017.67E-01
22
Phillip AldaypaldayJulia111000000
no description; appears to use graph representation and potentially some further tricks
447
https://github.com/palday/FiveLetterWorda.jl
reconstructed from github2022-08-07 03:282022-08-07 03:2840,9561,15039,25142,72738,7307.71E+013.87E+013.87E+01
23
Stefan PochmannpochmannPython001010100
no description; appears to be recursive and makes massive use of builtin python functions for speedup; very short solution
18
https://replit.com/@pochmann/5words538?v=1
https://twitter.com/StefanP08342519/status/1556203368917393410
2022-08-07 11:172022-08-07 11:173,868303,8073,9093,6523.64E+003.65E+003.91E+00
24
Nathan BaulchNathanBaulchGo111010010
no description; but appears to use parallelization and the graph representation
231
https://gist.github.com/NathanBaulch/cc26755dc89685fa209bf958e484c60d
reconstructed from github2022-08-07 15:302022-08-07 15:303,922593,8554,0473,9183.89E+003.92E+003.92E+00
25
Leonardo TaglialegneminiBillRust011110100
description appears to be a copy of oisyn
133
https://github.com/miniBill/parkerrust
https://twitter.com/miniBill/status/1556279304182448132
2022-08-07 16:012022-08-07 17:452412228282.60E-022.80E-023.80E-02
26
David Malonedwmal1C010000100
represents words as character sets (bitwise); recursive solution;
135
https://maths.tcd.ie/~dwmalone/5word.c
https://twitter.com/dwmal1/status/1556747072170246145
2022-08-08 22:592022-08-08 22:59176,9532,941172,500179,376182,4771.87E+021.82E+021.82E+02
27
Sylvester HespoisynC++011110110
refinement of prior solution with AVX2 and hardware stuff
278
https://github.com/oisyn/parkerwords/tree/sse
https://twitter.com/oisyn/status/1556423303480451073
2022-08-08 1:332022-08-08 18:591731431161.50E-021.60E-021.60E-02
28
Neil CoffeyneilcoffeyJava011010010
parallelized version of the prior implementation
253
https://github.com/neilcoffey/FunStuff/tree/main/WordleFiveWordFinder
https://twitter.com/BitterCoffey/status/1557056684715130881
2022-08-09 19:302022-08-08 19:25813.824.3781.6862.57867.90E-017.79E-017.86E-01
29
FredfredoverflowJava111000000
nicely visualized version with bitwise representation and graph structure; nice trick with a skip counter to keep track how many words do not need to be considered in the word list
185
https://gist.github.com/fredoverflow/e3e0b5be677fd44500071356faabcf27
https://www.youtube.com/watch?v=GTsP8ss5gjk
2022-08-10 0:002022-08-09 20:124907827409662864,6054.61E+004.88E+004.52E+00
30
(intentionally blank)jojo2357Javascript101010100
flexible javascript version which can change the word size and word count
362
https://github.com/jojo2357/five-clique/tree/node.js
email2022-10-19 3:142022-08-10 5:51234460227924332,3852.31E+002.39E+002.69E+00
31
Utkarsh Guptautkarshgupta137Python001110100
recursive python implementation which explicitly skips through one character
96
https://github.com/utkarshgupta137/fiveletterworda
email2022-10-21 1:052022-08-16 16:4514758409143611554213,8981.38E+011.39E+011.40E+01
32
Stew Forsterstew675C011110110
incidentally, an almost copy of oisyn's solution, but developed in parallel; three variants are offered, here I evaluated only the fastest one, v25
704
https://github.com/stew675/standup5x5/
email2022-08-14 15:502022-08-18 22:163.10.72.5756.00E-035.00E-033.00E-03
33
Landon KrygerGuiltyBystanderC++011110100
I arrived at my algorithm independent of everyone but it's shocking how similar the others appear to be. I think the biggest difference in my code is that I sort the incoming words into buckets based on lowest bit AND highest few bits. This way, when I loop to pick the next word, I can filter out huge chunks of the list at once.
233
https://github.com/GuiltyBystander/5words
email2022-08-22 16:002022-08-22 15:1216.9214.922.8231.70E-022.30E-023.30E-02
34
FredfredoverflowGo111010010
parallelized update in Go of the previous submission; note: I used the version with words_alpha.txt to be fair
306
https://github.com/fredoverflow/wordle/blob/master/wordle.go
email2022-10-17 10:422022-08-27 15:1174.23.568.185.4858.50E-027.90E-029.90E-02
35
Leonardo TaglialegneminiBillRust011110100see above196
https://github.com/miniBill/parkerrust
https://twitter.com/miniBill/status/1562209509900275712
2022-08-24 0:452022-08-23 22:518.62.27.116.7141.00E-021.40E-022.60E-02
36
Stew Forster & Landon Kryger
stew675 & GuiltyBystander
C011110110
Extension of the algorithm of GuiltyBystander with several further tricks that are beyond my skill to review; according to Stew's info, they went down to machine code level for further optimizations and had to factor in things like caching and SSD loading speeds.
1152
https://github.com/stew675/standup5x5/
https://twitter.com/stew6752/status/1567221440721698819
2022-09-06 20:412022-09-06 20:340.50.90.211.511.00E-031.00E-032.00E-03
37
Roy van RijnroyvanrijnJava011010100
Recursive bitwise solution where the alphabet with explicit character skipping
154
https://gist.github.com/royvanrijn/c3dbcc6a8c5f2eea93c453af2ecca266
https://twitter.com/royvanrijn/status/1582369954879635456
2022-10-18 15:562022-10-18 15:50165.16.7157.2180.31741.74E-011.68E-011.96E-01
38
Andreas Källberganka-213Haskell010010100
Functional programming implementation with bitwise representation
183
https://github.com/anka-213/five-five-letter-words-haskell
https://twitter.com/Anka213/status/1582492030889885696
2022-10-19 0:012022-10-19 6:5164.66.357.584585.30E-026.30E-025.80E-02
39
Simonsh1bootPython011010100
Compact python implementation with quite a few creative uses of python notation and concepts
60
https://github.com/sh1boot/fivewords
email2022-10-21 7:452022-10-21 7:22652.616.8627.9679.26296.20E-016.29E-016.41E-01
40
Thomas ReicherttrichiePython011010100
Extremely compact recursive python implementation with only 11 lines
11
https://github.com/trichie/matts_wordle
email2022-10-21 18:142022-10-21 19:41368942317346704053435,3393.61E+013.53E+013.48E+01
41
Ose PredroOsePedroHaskell010010100
Functional programming implementation with bitwise representation; partially inspired by anka-213
https://github.com/OsePedro/FiveFiveLetterWords
https://twitter.com/rawmoose/status/1584036702758150144
2022-10-23 6:192022-10-23 17:57312.34.8304.2318.63022.99E-013.35E-013.02E-01
42
Alex GunningagunningPython011010000
Python solution that uses concepts from taboo search and has separate functions for adding words to an existing set and tabooing words.
71
https://github.com/agunning/fiveletterclique
email2022-10-23 6:302022-10-23 8:34246.47.1236.62642452.55E-012.43E-012.45E-01
43
Mathias RetzlaffplexcaliburJava011110100
splits the dictionary into buckets by the characters they contain
259
https://github.com/Plexcalibur/5Words25Letters/
email2022-10-29 18:532022-10-29 18:0681.44.176.297.3919.10E-028.90E-021.05E-01
44
Zane DuffieldzaneduffieldRust111000110
parallelized, recursive implementation with quite a bit of Rust software architecture (modules, objects, inheritance logic, etc.)
669
https://github.com/zaneduffield/five_clique/
email2022-11-01 1:192022-11-01 0:50242877230625732,2082.19E+002.21E+002.23E+00
45
Yaroslav SamchukyarcatRust011110110
Rust-Port of oisyns solution
249
https://github.com/yarcat/parkerwords-rs
email2022-11-27 14:582022-11-25 18:359.91.38.714.3101.50E-021.00E-021.00E-02
46
Yaroslav SamchukyarcatGo011110110
Go-Port of oisyns solution
136
https://github.com/yarcat/parkerwords-go
email2022-11-27 14:582022-11-27 14:11111.96.31011311061.07E-011.03E-011.06E-01
47
Gordon CutlerPrettyFlowerC#011110100
Recursive implementation with letter frequency indexing and bitwise comparisons, similar to many others on this list
262
https://github.com/PrettyFlower/Wordle5x5CSharp
email2022-12-22 17:332022-12-22 18:4453.10.851.855.6646.30E-026.40E-026.60E-02
48
Gordon CutlerPrettyFlowerC011110100
C version of the implementation
735
https://github.com/PrettyFlower/Wordle5x5C
email2023-01-01 23:292022-12-28 0:432.10.51.34.7111.10E-021.10E-021.10E-02
49
Aden Koperczak AdenKoperczak zig010000100
zig version with some buffering and compiler optimizations (main_v4 used for evaluation)
227
https://github.com/AdenKoperczak/StandUpMaths5x5Words/tree/main
email2024-04-13 20:422024-04-13 20:2613,72611413,53213,94713,7771.38E+011.39E+011.37E+01
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100