| Bytes | Lang | Time | Link |
|---|---|---|---|
| 051 | Vim | 250717T221525Z | DLosc |
| 174 | Google Sheets | 250711T065418Z | doubleun |
| 053 | Vyxal m | 250716T160038Z | pacman25 |
| 050 | Vyxal 3 | 250716T184225Z | Themooni |
| 084 | Python 3 | 250714T040353Z | cd_woomy |
| 167 | Python | 250714T211404Z | corvus_1 |
| 099 | JavaScript V8 | 250711T065253Z | Arnauld |
| 106 | Ruby | 250712T005826Z | Level Ri |
| 098 | Python | 250711T121559Z | Albert.L |
| 045 | Japt | 250711T140856Z | Shaggy |
| 020 | Wolfram Language Mathematica | 250711T150610Z | Greg Mar |
| 081 | Charcoal | 250711T083130Z | Neil |
| 052 | 05AB1E | 250711T082036Z | Kevin Cr |
| 426 | Vyxal 3 | 250711T042407Z | lyxal |
Vim, 63 51 bytes
-12 bytes (and -2 dependencies) thanks to Aaroneous Miller
:h.
153YZZp:%s/\s\+/\r/g
:sor iu|v/^\w\{3,\}$/d
d2k
Explanation
Uses a variant of this technique for retrieving the alphabet from the Vim help file.
:h.
Open the built-in help file to the section on the . command.
153Y
Copy the next 153 lines.
ZZp
Exit the help file and paste.
:%s/\s\+/\r/g
Replace all runs of whitespace with newlines.
:sor iu
Apply the sort command to all lines, case-insensitive, and uniquify the results.
|v/^\w\{3,\}$/d'
Also apply the vglobal command to all lines: match all lines that do not match the regex ^\w{3,}$ (i.e. that do not consist of 3 or more word characters), and delete them.
This results in 203 words and leaves the cursor on the last line, so:
d2k
Delete the last line and the two lines above it.
Google Sheets, 174 bytes
=sortn(let(c,mid("bcdfghjklmnpqrstvwxyz",row(1:21),1),t,map(tocol(torow(c&split("a0e0i0o0u",0))&c),lambda(w,googletranslate(w))),filter(t,regexmatch(t,"^[a-w]{4,}$"))),200,2)
Generates 2205 three-letter gibberish words like bab, bac, bad...zux, zuy, zuz, translates them from "any language" to English, weeds out translations that have less than four letters, or contain uppercase, whitespace, punctuation or [xyz], and finally takes the first 200 uniques. Requires an English spreadsheet locale.
The first ten words in the result are access, accident, adult, afraid, again, against, alien, alone, also, although and the last ten are little, live, load, look, loop, magic, make, male, market, matter. All 200 words appear in the Wordnik list.
Ungolfed:
=sortn(
let(
letters, char(row(97:122)),
vowels, split("a0e0i0o0u", 0),
consonants, filter(letters, isna(match(letters, vowels,))),
words, tocol(torow(consonants & vowels) & consonants),
translated, map(words, lambda(word, googletranslate(word))),
filter(translated, regexmatch(translated, "^[a-w]{4,}$"))
),
200, 2
)
Alternative method, using a Cartesian product of Arnauld's prefixes and suffixes in revision 9 (108 bytes):
=sort(mid(" babebibobucodofafegagihahojulimamemomupepuraresoa",2*row(1:25),2)&split("d0g0n0s0t0ds0gs0ts",0))
Outputs an 8 x 25 array of (more boring) short words like bad, bads, bag, bags, ban, bas, bat, bats. This latter formula is non-competing because Cartesian product is easy and the real work was to find this close to optimal list of prefixes and suffixes.
Vyxal m, 53 bytes (invalid)
₀dʀ₀₀v*J₆~₃↵J₍∆ċ∆o⌈fU:¤vøP⌈fꜝ‛ys‛↲∷vV‛xs«F8«vVJ‛↔⁰¦ḢJ
I figured since the comment got some upvotes, I would explain it and post an answer with the new method. It is non-competing due to several words not being in the wordnik list, as wordnik is missing ordinals past quintillionth(s) but has cardinals up to vigintillion(s). If it was 250,000 words this would likely be a valid answer. The m flag makes implicit ranges start at 0 and end at n inclusive.
₀dʀ₀₀v*J₆~₃↵J₍∆ċ∆o⌈fU:¤vøP⌈fꜝ‛ys‛↲∷vV‛xs«F8«vVJ‛↔⁰¦ḢJ
₀dʀ # range 0-20
₀₀v* # multiples of 10 up to 100
J # join as one list
₆~₃ # all multiples of 3 less than or equal to 64
↵ # 10^n for each of those
J # join to list
₍ # parallel apply wrap
∆ċ # number to cardinal (one, two, three...)
∆o # number to ordinal (first, second, third...)
⌈fU # split on spaces and get unique values to remove leading "one"s
:¤vøP # duplicate that list and pluralize everything with empty string prefix (one -> " ones")
⌈fꜝ # split on spaces and remove empty strings
‛ys vV # replace 'ys' with
‛↲∷ # compressed string 'ies'
‛xs vV # replace 'xs' with
«F8« # compressed string `xes`
J # join it to get 196 different ordinals, cardinals, and their plurals. (
‛↔⁰ # compressed string "hands"
¦Ḣ # headless prefixes ["ha","han","hand","hands"]
J # join that for 200
💎
Created with the help of Luminespire.
Vyxal 3, 50 bytes
"ʎIMDξB‹2Ġ∻Þr=⌊W“ka⊢ƛᏐ$⏚kv⊢mi&w"dgts":ƵX“&'n&fX¨f“
Vyxal 3 port of Arnaud's answer, golfed.
"ʎIMDξB‹2Ġ∻Þr=⌊W“ka⊢ƛᏐ$⏚kv⊢mi&w"dgts":ƵX“&'n&fX¨f“
"ʎIMDξB‹2Ġ∻Þr=⌊W“ # compressed integer 9524838950348700701773904696055446
ka⊢ # to base lowercase alphabet
# yields "bbfbbbcghfgjdmrmlmhtwptpm"
ƛ # map over each char:
& # append to that char...
mi # the vowel indexed by the current char's position in the string
Ꮠ$⏚kv⊢ # vowel generator, yields "oaaeiu"
Ꮠ$⏚ # compressed integer 9414
kv⊢ # to base lowercase vowels
w # wrap in a list for next part
X # cartesian product of prefixes and...
"dgts":ƵX“&'n&f # suffixes list, yields ["d", "g", "t", "s", "ds", "gs", "ts", "n"]
"dgts": # literal string "dgts", duplicated
ƵX“ # pop tail of one copy and append it to each letter
# yields ["ds", "gs", "ts"]
& # append to the original copy, as a list of characters
'n& # append a single "n"
f # flatten the whole thing
¨f“ # flatten each string generated by the cartesian product and join it for display
💎
Created with the help of Luminespire.
<script type="vyxal3">
"ʎIMDξB‹2Ġ∻Þr=⌊W“ka⊢ƛᏐ$⏚kv⊢mi&w"dgts":ƵX“&'n&fX¨f“
</script>
<script>
args=[]
</script>
<script src="https://themoonisacheese.github.io/snippeterpreter/snippet.js" type="module"/>
Python 3, 89 84 bytes
-4 Thanks to kg583
-1 Thanks to Neil
84 Byte
l=license;l.MAXLINES=999;print(sorted(filter(str.isalpha,{*str(l).split()}))[-200:])
89 Byte
l=license;l.MAXLINES=999;print(sorted(filter(str.isalpha,set((repr(l)).split())))[-200:])
No TIO link since this solution does not work there :(
Instead of constructing the words from scratch, I wanted to use existing text builtin to the language, and found the license text to be the adequate for this purpose. There are three main components of this solution.
Firstly, the license text is stored in a file, and python does not read in this file by default. To get this file read, the __setup method of the license._Printer object must be called. Calling license._Printer__setup() ourselves is very costly in terms of bytes, but lucky for us, the __repr__ function of license actually calls this setup function.
Secondly, MAXLINES attribute of license must be set to a number higher than the number of lines in the license, otherwise repr will return the string 'Type license() to see the full license text'. The motivation for this behavior of the license builtin is beyond me, but I think it has something to do with how the license will display by pages in the interactive session.
Finally, with the actual text in hand, we need to perform some manipulation to filter down to nonduplicate, valid words.
The output list is:
['origin', 'original', 'other', 'others', 'otherwise', 'out', 'outside', 'outstanding', 'own', 'owner', 'ownership', 'page', 'part', 'patent', 'percent', 'perform', 'permission', 'permissions', 'permit', 'permitted', 'persistent', 'person', 'persons', 'pertain', 'pertaining', 'plainly', 'platform', 'portions', 'possibility', 'possible', 'preferred', 'prepare', 'prepared', 'prepares', 'previously', 'principal', 'prior', 'product', 'products', 'program', 'programs', 'prominent', 'promote', 'property', 'protect', 'provide', 'provided', 'provides', 'proxy', 'publicity', 'publicly', 'purpose', 'purposes', 'readable', 'reason', 'reasonable', 'received', 'recipients', 'redistributing', 'redistribution', 'regard', 'regarding', 'related', 'relationship', 'released', 'releases', 'remain', 'remains', 'reproduce', 'reproducing', 'require', 'required', 'requirements', 'respect', 'respects', 'responsible', 'restrictions', 'result', 'resulting', 'retain', 'retained', 'rights', 'risks', 'royalty', 'run', 'running', 'same', 'see', 'sell', 'sense', 'sent', 'separable', 'separate', 'server', 'service', 'services', 'several', 'shall', 'software', 'sole', 'solely', 'source', 'specific', 'specifically', 'specified', 'sponsoring', 'state', 'stated', 'statement', 'stating', 'subject', 'submit', 'submitted', 'subsequently', 'substantial', 'substitute', 'successor', 'such', 'suggests', 'summarizes', 'summary', 'supersede', 'supporting', 'systems', 'table', 'team', 'technologies', 'terminate', 'terms', 'text', 'than', 'that', 'the', 'their', 'then', 'thereof', 'these', 'they', 'third', 'this', 'those', 'through', 'thru', 'to', 'together', 'told', 'tools', 'tort', 'tracking', 'trade', 'trademark', 'trademarks', 'transfer', 'transformation', 'translation', 'under', 'union', 'unlawful', 'unless', 'unlike', 'upon', 'use', 'used', 'users', 'uses', 'using', 'van', 'various', 'venture', 'verbatim', 'version', 'versions', 'volunteers', 'wants', 'warranties', 'warranty', 'was', 'way', 'web', 'website', 'where', 'wherever', 'whether', 'which', 'who', 'whom', 'will', 'with', 'within', 'without', 'work', 'worked', 'works', 'would', 'writing', 'written', 'wrote', 'yes', 'you', 'your']
On TIO, we get the output ['See']. I'm assuming that the attempt to read in the license file during the call to __setup results in an OSError which then defaults to returning the string, 'See https://www.python.org/psf/license/'.
As Neil points out in a comment, the Attempt This Online! will let us read the license text and produce an output of 200 words. The output is different than the list I get when I run locally, and includes the invalid word 'internet' leaving us at only 199 valid entries with this method.
After checking the diff between the license I have and the one from ATO, the license I have is longer, containing a few extra sections, including "Additional conditions for this windows binary build" and an Apache License, among other things.
I had some failed attempts at using other builtin words, such as those found in the __doc__ attributes of the builtins, the Zen of Python, copyright text, help text, and even the python keywords and names of the builtins. In the end, the license text was the only one I could wrangle to a manageable number of bytes.
Python, 167 bytes
sorted(set([x for x in" ".join(str(v.__doc__)for v in __builtins__.__dict__.values()).split()if str.isalpha(x)and str.islower(x)and 3<len(x)<7and not "f"in x]))[-200:]
JavaScript (V8), 99 bytes
A full program printing 200 words in lower case.
for(n in p="bbfbbbcghfgjdmrmlmhtwptpm")"sdgntdsgsts".replace(/.s?/g,s=>print(p[n]+"oaaeiu"[n%6]+s))
Method
This is the Cartesian product of 25 prefixes and 8 suffixes, chosen in such a way that all resulting words exist in the Wordnik listing.
The prefixes are:
bo ba fa be bi bu co ga ha fe gi ju do ma ra me li mu ho ta wa pe ti pu mo
Only consonants are stored in the outer lookup string "bbfb..pm". Vowels follow the pattern o,a,a,e,i,u.
The suffixes are:
s d g n t ds gs ts
They are are extracted from the inner lookup string "sdgntdsgsts" with the regular expression /.s?/g.
Words
Below are the generated words, along with the line number at which they appear in the file.
bos 19600
bod 18688
bog 18779
bon 19063
bot 19659
bods 18720
bogs 18817
bots 19721
bas 13508
bad 12328
bag 12391
ban 12796
bat 13730
bads 12366
bags 12431
bats 13820
fas 61465
fad 60817
fag 60869
fan 61154
fat 61567
fads 60855
fags 60892
fats 61640
bes 15596
bed 14371
beg 14763
ben 15255
bet 15808
beds 14546
begs 14863
bets 15888
bis 17228
bid 16236
big 16335
bin 16617
bit 17305
bids 16273
bigs 16405
bits 17339
bus 22526
bud 21724
bug 21814
bun 22131
but 22686
buds 21767
bugs 21852
buts 22727
cos 36965
cod 31752
cog 32065
con 33912
cot 37148
cods 31872
cogs 32128
cots 37204
gas 69239
gad 68408
gag 68468
gan 68921
gat 69405
gads 68448
gags 68489
gats 69455
has 76323
had 75026
hag 75115
han 75642
hat 76379
hads 75051
hags 75182
hats 76441
fes 62487
fed 61935
feg 62035
fen 62231
fet 62529
feds 61971
fegs 62036
fets 62595
gis 70925
gid 70605
gig 70646
gin 70769
git 70934
gids 70619
gigs 70690
gits 70941
jus 91178
jud 90894
jug 90947
jun 91070
jut 91217
juds 90945
jugs 90969
juts 91221
dos 50633
dod 49923
dog 49990
don 50335
dot 50674
dods 49971
dogs 50107
dots 50696
mas 101468
mad 99646
mag 99762
man 100522
mat 101704
mads 99719
mags 99926
mats 101870
ras 141090
rad 140225
rag 140482
ran 140838
rat 141151
rads 140444
rags 140535
rats 141280
mes 103330
med 102312
meg 102527
men 102944
met 103534
meds 102477
megs 102657
mets 103990
lis 97215
lid 96367
lig 96472
lin 96805
lit 97269
lids 96377
ligs 96580
lits 97413
mus 109880
mud 109087
mug 109196
mun 109705
mut 110083
muds 109151
mugs 109222
muts 110158
hos 80126
hod 78979
hog 79008
hon 79591
hot 80212
hods 78996
hogs 79043
hots 80276
tas 174440
tad 173572
tag 173607
tan 174028
tat 174503
tads 173575
tags 173634
tats 174520
was 193156
wad 192451
wag 192540
wan 192851
wat 193274
wads 192492
wags 192590
wats 193451
pes 127063
ped 125366
peg 125581
pen 125741
pet 127126
peds 125498
pegs 125597
pets 127246
tis 178237
tid 177704
tig 177789
tin 178009
tit 178248
tids 177744
tigs 177834
tits 178338
pus 138648
pud 137924
pug 137998
pun 138252
put 138725
puds 137958
pugs 138034
puts 138766
mos 108498
mod 107073
mog 107217
mon 107449
mot 108565
mods 107184
mogs 107226
mots 108729
Ruby, 106 bytes
680.times{|i|"e@k@pPI@@Pmf`@N@Fsv"[k=i/36].ord[c=i/6%6]>0&&p((k+66).chr+"aeo"[i%6/2]+'ywtpng'[c]+?s*i%=2)}
Outputs selected groups of three 3 letter words which are identical apart from the vowel (in second position) being a e or o, and also the same three words with an s added at the end (total 6 words in each group, except the last one which is truncated to give exactly 200 words.)
The 3 letter words all end in one of the letters ywtpng. Sufficient words can be found by varying the first letter in the range B..T. The magic string contains one character for each first letter. Its ascii code encodes bitwise for the last letters ywtpng that form valid words with that first letter.
Ruby, 125 bytes
301.times{|i|('swkw7wAyw+wQwwxy.NU%vvwwwW8aud8xw<owwoxxG~w'[i/7].ord+8)[i%7]>0&&(p (66+i/14).chr+'ao'[i/7%2]+'ngwsypt'[i%7])}
Outputs nearly all 3 letter words with a or o as the middle letter and any of ngwsypt as the final letter. A complete list of such words (including those not used) is given below. The ascii code for each character in the magic string encodes bitwise for one column of the table balow. Words alphabetically before B and after Way are not used.
One word in the middle of the table, ios, is skipped for golfing reasons. This is because the characters in the program are 8 less than the actual bitwise encoding, to allow the value 127 (not a printable ascii character) to be encoded for, and to wrap around to some small numbers for eon and vog/vow. Including both ion and ios would requre addition of an offset larger than 8 (specifically at least hex 89-7E = 11 decimal) which would add an extra byte for a 201st word that is not required by the challenge.
ban bon can con dan don ean eon fan fon gan gon han hon ion kan kon man mon nan non oon pan ran san son tan ton van wan won yon
bag bog cag cog dag dog fag fog gag hag hog jag jog lag log mag mog nag nog rag sag sog tag tog vag vog wag wog yag zag
bow cow daw dow faw gaw haw how jaw jow kaw kow law low maw mow naw now paw pow raw row saw sow taw tow vaw vow waw wow yaw yow
aas bas bos cos das dos eas fas gas gos has hos ios kas kos las los mas mos nas nos oos pas pos ras sos tas vas was wos yas zas zos
bay boy cay coy day doy fay foy gay goy hay hoy jay joy kay lay loy may moy nay noy pay ray say soy tay toy way yay
bap bop cap cop dap dop fap fop gap hap hop jap kop lap lop map mop nap oop pap pop rap sap sop tap top wap wop yap zap
bat bot cat cot dot eat fat gat got hat hot jot kat lat lot mat mot nat not oat oot pat pot qat rat rot sat sot tat tot vat wat wot
Python, 98 bytes
-5 (@xnor)
*a,="Tn"
for z in"TgtRmdMsgBdtHmpDbegn":a[z>'Z']=z;[print(b:=s.join(a),"\n"+b+"s")for s in"aeiou"]
Python, 103 bytes
*a,="Vg"
for z in"gSnTgtRdmMdgsPptNbDepngFrnGetHmpnBstdgLd":a[z>'Z']=z;[print(*a,sep=s)for s in"aeoui"]
Previous Python, 116 bytes
[print(x+s+y)for x,y in zip('vlnslns'+3*'fgprt'+5*"bdhm",'ggtndbgrttttnnsmngepdgtptssnpmngnggemddb')for s in"aeoui"]
How?
Abuses the fact that there are 40 groups of 3-letter words of the form x + [ieauo] + y in the list, i.e. words like big,beg,bag,bug,bog or nit,net,nat,nut,not.
Japt, 45 bytes
Uses a previous version of Arnauld's prefixes & suffixes with some manual resorting, of the prefixes in particular, to optimise compression.
`n¡gd`
¬c¢ïs¬)ïi`¼¾¿ßðÜ™•—jå)Õ‹a´é)”œè@œa`ò
`...`\n¬c¢ïs¬)ïi`...`ò
`...` :Compressed string "nstgd"
\n :Assign to variable U
¬ :Split U
c :Concat
¢ : U with first 2 characters removed
ï : Cartesian product with
s¬ : "s" split to an array
) :End concat
ï :Cartesian product with
`...` : Compressed string "bebobubicodofehahojugabalimamegimomupepurasofarea"
ò : Partitions of length 2, giving us a lone "a" at the end.
i :Reduce each pair by prepending
Wolfram Language (Mathematica), 20 bytes
WordList[][[2;;201]]
Takes the 2nd through 201th words from the builtin dictionary WordList[] (the 1st word, "a", isn't in Wordnik). The output is:
{"aah", "aardvark", "aback", "abacus", "abaft", "abalone", "abandon",
"abandoned", "abandonment", "abase", "abasement", "abash", "abashed",
"abashment", "abate", "abatement", "abattoir", "abbe", "abbess",
"abbey", "abbot", "abbreviate", "abbreviated", "abbreviation",
"abdicate", "abdication", "abdomen", "abdominal", "abduct",
"abducting", "abduction", "abductor", "abeam", "abed", "aberrant",
"aberration", "abet", "abettor", "abeyance", "abhor", "abhorrence",
"abhorrent", "abidance", "abide", "abiding", "ability", "abject",
"abjection", "abjectly", "abjuration", "abjure", "ablate", "ablated",
"ablation", "ablative", "ablaze", "able", "abloom", "ablution",
"ably", "abnegate", "abnegation", "abnormal", "abnormality",
"abnormally", "aboard", "abode", "abolish", "abolition",
"abolitionism", "abolitionist", "abominable", "abominably",
"abominate", "abomination", "aboriginal", "aborigine", "abort",
"abortion", "abortionist", "abortive", "abortively", "abound",
"abounding", "about", "above", "aboveboard", "abracadabra", "abrade",
"abrasion", "abrasive", "abrasiveness", "abreast", "abridge",
"abridged", "abridgment", "abroad", "abrogate", "abrogation",
"abrupt", "abruptly", "abruptness", "abscess", "abscessed",
"abscissa", "abscission", "abscond", "absconder", "abseil",
"absence", "absent", "absentee", "absenteeism", "absently",
"absentminded", "absentmindedly", "absentmindedness", "absinthe",
"absolute", "absolutely", "absoluteness", "absolution", "absolutism",
"absolutist", "absolve", "absolved", "absorb", "absorbed",
"absorbency", "absorbent", "absorber", "absorbing", "absorption",
"absorptive", "absorptivity", "abstain", "abstainer", "abstemious",
"abstemiously", "abstemiousness", "abstention", "abstinence",
"abstinent", "abstract", "abstracted", "abstractedly",
"abstractedness", "abstracter", "abstraction", "abstractly",
"abstractness", "abstruse", "abstrusely", "abstruseness", "absurd",
"absurdity", "absurdly", "abundance", "abundant", "abundantly",
"abuse", "abused", "abuser", "abusive", "abusively", "abut",
"abutment", "abuzz", "abysmal", "abysmally", "abyss", "abyssal",
"acacia", "academe", "academia", "academic", "academically",
"academician", "academy", "acanthus", "accede", "accelerate",
"accelerated", "acceleration", "accelerator", "accelerometer",
"accent", "accented", "accenting", "accentual", "accentuate",
"accentuation", "accept", "acceptability", "acceptable",
"acceptableness", "acceptably", "acceptance", "acceptation", "accepted"}
Charcoal, 81 bytes
F⪪”{&^v¡↑Kp⁺#*-J¶AθWΠ⁼≧⁻23⎇zCU⊖↶dζ)⁻>_+↨ξχb…WvAVE9ε⦄7i⟲g|⟦jΦU⬤⁺⪫ιa⪪asaedaing¦a
Try it online! Link is to verbose version of code. Explanation:
F⪪”...”²
Split a compressed 100-letter string into pairs of letters.
⁺⪫ιa⪪asaedaing¦a
Join each pair with an a, then output the string plus with the suffixes s, ed and ing.
Of the words in the list, there are exactly 50 which satisfy the following criteria:
- Exactly 3 letters long
- Middle letter is
a - Does not otherwise contain any of the letters
aefhjkoqvxz - When suffixed with
s,edoring, remains a word in the list
Excluding the rarer letters rather than simply taking the first 50 saved me a byte.
05AB1E, 52 bytes
žĆ99Å12•edôú•₆вǝ7TÌǝ.¥ƵR+èãJ''ì€.VASK“€Ö‚¾‚惖“#Kт·£
Explanation:
žĆ # Push the 05AB1E codepage string
99Å1 # Push a list of 99 1s
2 # Push a 2
•edôú• # Push compressed integer 665853189
₆в # Convert it to base-36 as list: [11,0,15,19,21,33]
ǝ # Replace the 1s in the list at those indices with 2s
7TÌǝ # Also replace the 1 at index 12 (10+2) with a 7
.¥ # Undelta the list
žy+ # Add constant integer 128 to each
è # Get the characters at those indices in the codepage string
ã # Cartesian product to get all possible pairs
J # Join each inner pair of characters together
''ì # Prepend a "'" before each
€.V # Evaluate and execute each as 05AB1E code, to get its dictionary strings
AS # Push the alphabet-string and convert it to a list of characters
K # Remove all those single letter words from the list
“€Ö‚¾‚惖“ # Push dictionary string "jan pm january ebay"
# # Split it on spaces: ["jan","pm","january","ebay"]
K # Remove those from the list as well
т· # Push 200 (100*2)
£ # Only keep that many words from the list
# (after which the result is output implicitly)
Note: The 05AB1E dictionary words ["jan","pm","january","ebay"] are among the 204 first generated words, but are not in the provided Wordnik-list, hence why I had to remove those manually before getting the first 200.
See this 05AB1E tip of mine (sections How to use the dictionary?, How to compress large integers?, and How to compress integer lists?) to understand why •edôú• is 665853189; •edôú•₆в is [11,0,15,19,21,33]; and “€Ö‚¾‚惖“ is "jan pm january ebay".
Vyxal 3, 426 bytes
"ƵvϢwξᏜ]:ʎB⌊ḧ⊣≛¤Þt³▲∻X↸⑤⨪»∨+Π⍰⍨£«pdϾJʈ∺⑶⑵+S∨½ℳ3⑴K≛#◌]8ɾ⎊5↜⊠TĠ! √Q⇧ʁᴥĿ†lṪ⇄kɠ¿★⊐⤺≛⁜⧢,z⇩⎙æ⊣~⊍0ᴥ⑶r⁰¿Ꮠ2∨aAᐵϾʈ ▦⊖ξʁ½£⊞O>¤‹Ꮠ÷⇩≥±!÷⎋①^≠Zᛞℂ.∺²*:⧢3★↯Ͼ⍾Jw<⍰B☷'p≤⇧ġ!‰^≥x≠∦▲d⧖l⌹⎙③Sδ⇧+≡H①{Ka,¹★a⌊xs@¶o6⑥⎋o⩔≈XᑂᏐ1γ|B5λ⧢[g⤻±?ᐵlQƵℳ½σ6∪yæℂR&ġ⇄⍨w⑦j⊖⁜℗Ɠ⎋ᐵḧλ<o⊞Ŀ☷≥☷⎄Oσᛞhʁ↝⦰☷ƛ②◌δ≊f℈9⑥⇩ŁWṬ⎄⚅>⍢ᴥĿD≥ᛞ⍨≥≜ɾ⎇-Þ⎘γ③kĿ¤ϢΠU⟒⑥↺{7±Ẅ▲^÷q•④δ*★⍢ᑂ∺øδ!›↝≓Ꮠ¥≊w⊖⎘@⍢℈¬S⍨)ʁƶ⊞ꜝ⧖Ġ u◌¨⇧⇧JVɠɾ⏚※×⎄ᑂṪ⍨γ½0⎙u⊞r(∧yʀĠ£⑷∩ξt⏚¥⍨¥.Q{U↝⌈⎂t⇄ḧᏐR∑Ƶ⎂Fġ⑶⧢j⑧D⊖r^ʁv⧖⑥,⊍↯|⎇ᏜFff∻¤∨Þ⍨<»øʈ«×-bʀƛ”⌈
Simply a compressed string containing the first 200 words in the short dictionary that also appear in the wordnik list.