wcheat Code
Brought to you by:
sbrothy
This project bypasses all build systems and simply calls g++ directly from buildall.sh. It builds a precompiled header shared among
all modules and builds each cpp module into a static library with the option of skipping one or all of them and finally combines them
all into the executable.
--------------------------------------------------------------
sbrothy@PAULINE:~/wcheat/wcheat-code$ ./wcheat
SYNOPSIS
./wcheat [OPTION]... PATTERN
DESCRIPTION
./wcheat applies the specified regex PATTERN to the words found in newline seperated word-containing wordfile specified by '-w' or '--wordfile'.
OPTIONS
-cFILE or --configfileFILE
Use specified config XML file.
-wFILE or --wordfileFILE
Specify newline seperated word file.
-lN or --lengthN
Specify word length.
-d or --dictionary
Do dictionary lookup of found words.
sbrothy@PAULINE:~/wcheat/wcheat-code$
--------------------------------------------------------------
TODO:
--------------------------------------------------------------
CLEAN UP HUMONGOUS PCH!
--------------------------------------------------------------
Sorry for all the superflous code. I cannibalized an old IRC wordguess bot I once wrote. I couldn't have written this
from scratch in 6 hours otherwise.
Example run for wordle (Sep. 6, 2024, "RERUN") "?er??":
./wcheat -l5 -w./csw.txt '[^chawrtod]{2}ain'
./wcheat -l5 -w./csw.txt '[^chawrtod]{2}ain'
[ABCDEFGHIJKLMNOPQRSTUVXW]
[BCDEFGHJKLMNOPQSUVXWV]
./wcheat -l 5 '^([^ABCD^EFGH^IJKLMNOPQRS^TUVXWV]{1}[^ABCD^EFGH^IJKLMNOPQ^RS^TUVXWV]{1}[^ABCDEFGH^IJKLMNOPQRS^TUVXWV]{2}[^ABCDEFGH^IJKLMNOPQRS^TUVXWV]{1})$' -w csw.txt
./wcheat -l 5 '^([BCDEFGHJKLMNOPQRSUVWX]{1}[BCDEFGHJKLMNOPQSUVWX]{1}[BCDEFGHJKLMNOPQRSUVWX]{2}[BCDFGHJKLMNOPRQSUVWX]{1})$' -w csw.txt
./wcheat -l5 '([BCDEFGHJKLMNOPQRSUVWX]{2}[LOD]{2}){5}$' -d./csw.txt
./wcheat -l5 '^[LOD]{3}$' -d./csw.txt
./wcheat -l5 '^[^ERUIACBNO][L]{1}[O]{1}[D]{1}$' -d./csw.txt
./wcheat -l5 '^[^ERUIACBNO][QWTYPSFGHJKZXVM]{2}[L]{1}[O]{1}[D]{1}$' -d./csw.txt
./wcheat -l5 -w./csw.txt '(?=\w*e)....'
./wcheat -l5 -w./csw.txt '(?=\w*[L])(?=\w*[O])(?=\w*[D])[^ERUIACBNO][QWTYPSFGHJKZXVM]{2}'
./wcheat -l5 -w./csw.txt '(?=\w*[L])(?=\w*[O])(?=\w*[D])[^ERUIACBNO]'
./wcheat -l5 -w./csw.txt '^(?=\w*[L]{1})(?=\w*[O]{1})(?=\w*[D]{1})'
./wcheat -l5 '^[BCDEFGHJKLMNOPQRSUVWX]+[L]+[O]+[D]+$' -w./csw.txt
./wcheat -l5 'L{1,1}+O{1,1}+D{1,1}+{3,3}+' -w./csw.txt
./wcheat -l5 '([BCDEFGHJKLMNOPQRSUVWX]{2}[LOD]{2}){5}$' -w./csw.txt
./wcheat -l5 '^([A-Z][^IAT]{1}[A-Z][^IATR]{1}[A-Z][^IAT]{2}[A-Z][^IATE]{1})$' -w./csw.txt
|([FGH])([KLMNOPQRSUVWX]){1}
([F-Q])|(E|R)){1})([ABCDEFGHIJKLMNOPQ]{1})[A-Z]{2}^E{1}$'' -w csw.txt
./wcheat -l 5 ''^[A-Z]{1}[^R]{1}[A-Z]{2}[^E]{1}$'' -w csw.txt
BCDEFGHJKLMPQRSUVWX
./wcheat -l5 '^REC[BCDEFGHJLMPQRUVWX]{2}$' -wcsw.txt
[BCDEFGHLMNOPQUVWX]
./wcheat -l 5 '^[BCDEFGHLMNOPQUVWX]{1}O[BCDEFGHLMNOPQUVWX]{1}E[BCDEFGHLMNOPQUVWX]{1}$' -w csw.txt
./wcheat -l 5 '^[ABCEFGHJMNOPQTUVXW]{1}EA[ABCEFGHJMNOPQTUVXW]{1}T$' -w csw.txt
./wcheat -l 5 '^[ABCEFGHJOPQTUVXW]{1}EA[ABCEFGHJOPQTUVXW]{1}T$' -w csw.txt
[BCEFGHJKLMNOQSUVXW]
[BCEFGHJKLMNOQSUVXW]
./wcheat -l5 -wcsw.txt '^S[ABCEFGHJOPQTUVXW]{1}[BCEFGHJKLMNOQSUVXW]{3}$'
abcdefghijklmnopqrstuvxyz
./wcheat -l5 -w./csw.txt '[?=abcdfghijklmnopqrstuvxyz]{3,4}[?=\w*e+\w*]'
./wcheat -l5 -w./csw.txt '[?=\w*^e][^e]{4}'
./wcheat -l5 -w./csw.txt '[^chawrtod]{2}ain'
./wcheat -l5 -w./csw.txt '^[qweityupsfghjklzxcvbnm]+r{1,}[qwetyupsfghjklzxcvbnm]{1,3}[qwetyupsfghjklzxcvbnm]+i{1,}$'
[aqweityupsfghjklzxcvbnm]
./wcheat -l5 -w./csw.txt '^[^kadbor]{2}[^kadboui]{3}$''
./wcheat -l5 -w./csw.txt '^[qetyupafghjklzxcvbm]{1}a{1}([qetyupafghjklzxcvbm]{0,2}r{1}[qetyupafghjklzxcvbm]{0,2})$'
./wcheat -l5 -w./csw.txt '^[qyupafghjklzxcvbm]{1}a[qyupafghjklzxcvbm]{1}er$'
./wcheat -l5 -w./csw.txt '^[qyuafgjklzxcvbm]{1}aler$'
./wcheat -l5 -w./csw.txt '^a.r[qyuafgjklzxcvbm]{1}aler$'
AUREI
./wcheat -l5 -w./csw.txt '^a[^ue]+r[^ue]*i+[^uie]+$'
sbrothy@PAULINE:~/cheat/cheat/1/wordle-regex-code$./wcheat -l5 -w./csw.txt '^a[^ue]+r[^ue]*i+[^uie]+$'
11 total matches as per regex.
11 total matches as per specified length.
[WORD=ABRIM][FREQ=45]
[WORD=ABRIN][FREQ=37]
[WORD=ABRIS][FREQ=38]
[WORD=ACRID][FREQ=34]
[WORD=AFRIT][FREQ=28]
[WORD=AGRIA][FREQ=32]
[WORD=AGRIN][FREQ=35]
[WORD=AMRIT][FREQ=27]
[WORD=ARRIS][FREQ=26]
[WORD=ATRIA][FREQ=16]
[WORD=ATRIP][FREQ=32]
Word containing most frquent letters: [ATRIA]. Overall letter frequency: 16
sbrothy@PAULINE:~/cheat/cheat/1/wordle-regex-code$
./wcheat -l5 -w./csw.txt '^[qwyupsfghjklzxcvbnmade]{1}r([^d]|[ae]){3}$'
./wcheat -l5 -c./main.xml -w./csw.txt '^[^radits]{1}o[^radits]{1}e[^radits]{1}$'
./wcheat -l5 -c./main.xml -w./csw.txt '^no[^raditschymn]{1}e[^raditschymn]{1}$'
[^raditschymn]{1}
[ISPOILER]NOMEN[/ISPOILER]? Come on, what was I thinking there?