Output any 200 words fromWordnik without using external sources. Any case. No repeated or extra words. Code golf.
- 2\$\begingroup\$It'd be great if people voting to close for lack of details would leave comments about what details they think are missing.\$\endgroup\$Steve Bennett– Steve Bennett2025-07-11 05:01:18 +00:00CommentedJul 11 at 5:01
- 10\$\begingroup\$@mousetaill This isn't a duplicate of the Rickroll. The Rickroll requires output of specific text with very little to do except standard compression. This isn't asking for the full wordlist, a major part of the challenge is to pick the best 200 words. Also VERY occasionally a song comes along whose lyrics have such a strong pattern that alternatives to simple compression works better, Seecodegolf.meta.stackexchange.com/q/6956/15599 and I'm disappointed that nobody except me has taken full advantage of the structure of that song. I have the shortest answers in both Ruby and Golfscript\$\endgroup\$Level River St– Level River St2025-07-11 06:45:12 +00:00CommentedJul 11 at 6:45
- 6\$\begingroup\$Even the question is code golfed :)\$\endgroup\$MaxD– MaxD2025-07-12 14:12:45 +00:00CommentedJul 12 at 14:12
- 3\$\begingroup\$57 byte noncompeting with no prefix/suffix stuff\$\endgroup\$pacman256– pacman2562025-07-14 19:44:15 +00:00CommentedJul 14 at 19:44
- 1\$\begingroup\$If it weren't for the "no repeats or extras", I was thinking of cheating with Python's
license(), which outputs about 2000 dictionary words. Or to see if somehelp("something")happened to consist of the right number of words.\$\endgroup\$Nate Eldredge– Nate Eldredge2025-07-16 18:36:50 +00:00CommentedJul 16 at 18:36
13 Answers13
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 moOnly consonants are stored in the outer lookup string"bbfb..pm". Vowels follow the patterno,a,a,e,i,u.
The suffixes are:
s d g n t ds gs tsThey 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 19600bod 18688bog 18779bon 19063bot 19659bods 18720bogs 18817bots 19721bas 13508bad 12328bag 12391ban 12796bat 13730bads 12366bags 12431bats 13820fas 61465fad 60817fag 60869fan 61154fat 61567fads 60855fags 60892fats 61640bes 15596bed 14371beg 14763ben 15255bet 15808beds 14546begs 14863bets 15888bis 17228bid 16236big 16335bin 16617bit 17305bids 16273bigs 16405bits 17339bus 22526bud 21724bug 21814bun 22131but 22686buds 21767bugs 21852buts 22727cos 36965cod 31752cog 32065con 33912cot 37148cods 31872cogs 32128cots 37204gas 69239gad 68408gag 68468gan 68921gat 69405gads 68448gags 68489gats 69455has 76323had 75026hag 75115han 75642hat 76379hads 75051hags 75182hats 76441fes 62487fed 61935feg 62035fen 62231fet 62529feds 61971fegs 62036fets 62595gis 70925gid 70605gig 70646gin 70769git 70934gids 70619gigs 70690gits 70941jus 91178jud 90894jug 90947jun 91070jut 91217juds 90945jugs 90969juts 91221dos 50633dod 49923dog 49990don 50335dot 50674dods 49971dogs 50107dots 50696mas 101468mad 99646mag 99762man 100522mat 101704mads 99719mags 99926mats 101870ras 141090rad 140225rag 140482ran 140838rat 141151rads 140444rags 140535rats 141280mes 103330med 102312meg 102527men 102944met 103534meds 102477megs 102657mets 103990lis 97215lid 96367lig 96472lin 96805lit 97269lids 96377ligs 96580lits 97413mus 109880mud 109087mug 109196mun 109705mut 110083muds 109151mugs 109222muts 110158hos 80126hod 78979hog 79008hon 79591hot 80212hods 78996hogs 79043hots 80276tas 174440tad 173572tag 173607tan 174028tat 174503tads 173575tags 173634tats 174520was 193156wad 192451wag 192540wan 192851wat 193274wads 192492wags 192590wats 193451pes 127063ped 125366peg 125581pen 125741pet 127126peds 125498pegs 125597pets 127246tis 178237tid 177704tig 177789tin 178009tit 178248tids 177744tigs 177834tits 178338pus 138648pud 137924pug 137998pun 138252put 138725puds 137958pugs 138034puts 138766mos 108498mod 107073mog 107217mon 107449mot 108565mods 107184mogs 107226mots 108729- \$\begingroup\$Unupvoted this so I could upvote it again; well done on getting it down under 100 bytes.\$\endgroup\$Shaggy– Shaggy2025-07-12 21:19:38 +00:00CommentedJul 12 at 21:19
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 likebab, 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 areaccess, accident, adult, afraid, again, against, alien, alone, also, although and the last ten arelittle, 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 ofArnauld's prefixes and suffixes inrevision 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 likebad, 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.
- 1\$\begingroup\$that's actually very smart\$\endgroup\$Themoonisacheese– Themoonisacheese2025-07-11 07:09:15 +00:00CommentedJul 11 at 7:09
- 2\$\begingroup\$Out of curiosity: have you checked all your 200 words are in the Wordnik list? Some completely valid English words like
"internet"aren't in the provided Wordnik-list for example, so I had to manually check and remove some of the generated words in my answer.\$\endgroup\$Kevin Cruijssen– Kevin Cruijssen2025-07-11 08:23:03 +00:00CommentedJul 11 at 8:23 - 1\$\begingroup\$@KevinCruijssen thanks, I didn't catch
approxinitially. Fixed that at no byte cost.\$\endgroup\$doubleunary– doubleunary2025-07-11 09:58:20 +00:00CommentedJul 11 at 9:58 - 2\$\begingroup\$@Shaggy the formula uses
sort()as a shortcut to enable array processing. It's shorter thanindex()orarrayformula()or friends.\$\endgroup\$doubleunary– doubleunary2025-07-11 14:49:03 +00:00CommentedJul 11 at 14:49 - 2\$\begingroup\$🤔 I'm torn as to whether the use of
googletranslatehere can be considered an external resource or a built-in. I'm leaning towards built-in, though, because your code isn'tretrieving anything external.\$\endgroup\$Shaggy– Shaggy2025-07-11 15:48:35 +00:00CommentedJul 11 at 15:48
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"]PreviousPython, 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 formx + [ieauo] + y in the list, i.e. words likebig,beg,bag,bug,bog ornit,net,nat,nut,not.
- \$\begingroup\$Could you maybe find half of them that can optionally take an -s ending?\$\endgroup\$xnor– xnor2025-07-11 18:12:34 +00:00CommentedJul 11 at 18:12
- \$\begingroup\$@xnor Good idea. Saved me 5 even though my implementation feels super-clumsy.\$\endgroup\$Albert.Lang– Albert.Lang2025-07-11 19:41:29 +00:00CommentedJul 11 at 19:41
- \$\begingroup\$I like your method to update each pair using only 1 letter. Might be useful onPrint all 2 letter Scrabble Words.\$\endgroup\$xnor– xnor2025-07-11 21:50:31 +00:00CommentedJul 11 at 21:50
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) beingae oro, and also the same three words with ans 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 lettersywtpng. Sufficient words can be found by varying the first letter in the rangeB..T. The magic string contains one character for each first letter. Its ascii code encodes bitwise for the last lettersywtpng 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 witha oro as the middle letter and any ofngwsypt 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 beforeB and afterWay 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 foreon andvog/vow. Including bothion andios would requre addition of an offset larger than 8 (specifically at least hex89-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 yowaas 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- 1\$\begingroup\$Drop a space with
p((66+i...[i%7])Try it online!\$\endgroup\$Value Ink– Value Ink2025-07-12 01:04:18 +00:00CommentedJul 12 at 1:04 - \$\begingroup\$@ValueInk thanks, I've used that in my improved answer with a better approach.\$\endgroup\$Level River St– Level River St2025-07-12 04:35:37 +00:00CommentedJul 12 at 4:35
Vim,63 51 bytes
-12 bytes (and -2 dependencies) thanks toAaroneous Miller
:h.153YZZp:%s/\s\+/\r/g:sor iu|v/^\w\{3,\}$/dd2kExplanation
Uses a variant ofthis technique for retrieving the alphabet from the Vim help file.
:h.Open the built-in help file to the section on the. command.
153YCopy the next 153 lines.
ZZpExit the help file and paste.
:%s/\s\+/\r/gReplace all runs of whitespace with newlines.
:sor iuApply thesort command to all lines, case-insensitive, anduniquify the results.
|v/^\w\{3,\}$/d'Also apply thevglobal command to all lines: match all lines that donot match the regex^\w{3,}$ (i.e. that do not consist of 3 or more word characters), anddelete them.
This results in 203 words and leaves the cursor on the last line, so:
d2kDelete the last line and the two lines above it.
- \$\begingroup\$51 bytes w/o shell commands, also TIL Vim has a built-in sort command!\$\endgroup\$Aaroneous Miller– Aaroneous Miller2025-09-22 20:17:35 +00:00CommentedSep 22 at 20:17
- 1\$\begingroup\$TIL also--I recall I googled "how to sort in Vim" and the top results said "use shell commands"!\$\endgroup\$DLosc– DLosc2025-09-23 22:04:59 +00:00CommentedSep 23 at 22:04
Charcoal, 81 bytes
F⪪”{&^v¡↑Kp⁺#*-J¶AθWΠ⁼≧⁻23⎇zCU⊖↶dζ)⁻>_+↨ξχb…WvAVE9ε⦄7i⟲g|⟦jΦU⬤⁺⪫ιa⪪asaedaing¦aTry it online! Link is to verbose version of code. Explanation:
F⪪”...”²Split a compressed 100-letter string into pairs of letters.
⁺⪫ιa⪪asaedaing¦aJoin each pair with ana, then output the string plus with the suffixess,ed anding.
Of the words in the list, there are exactly50 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 first50 saved me a byte.
- 1\$\begingroup\$A port of @Shaggy's Japt answer is only 51 bytes:Try it online!\$\endgroup\$Neil– Neil2025-07-11 15:09:59 +00:00CommentedJul 11 at 15:09
- \$\begingroup\$A port of @Arnauld's latest JavaScript answer is only 48 bytes:Try it online!\$\endgroup\$Neil– Neil2025-07-13 00:41:15 +00:00CommentedJul 13 at 0:41
05AB1E, 52bytes
žĆ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 stringsAS # 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 (sectionsHow to use the dictionary?,How to compress large integers?, andHow to compress integer lists?) to understand why•edôú• is665853189;•edôú•₆в is[11,0,15,19,21,33]; and“€Ö‚¾‚惖“ is"jan pm january ebay".
Wolfram Language (Mathematica), 20 bytes
WordList[][[2;;201]]Takes the 2nd through 201th words from the builtin dictionaryWordList[] (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"}- \$\begingroup\$Gnaw, beat me to it (+1)\$\endgroup\$infinitezero– infinitezero2025-07-11 16:07:27 +00:00CommentedJul 11 at 16:07
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 thelicense._Printer object must be called. Callinglicense._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 oflicense must be set to a number higher than the number of lines in the license, otherwiserepr 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 anOSError which then defaults to returning the string, 'Seehttps://www.python.org/psf/license/'.
As Neil points out in a comment, theAttempt 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.
- \$\begingroup\$-4:
set((repr(l)).split())->{*repr(l).split()}\$\endgroup\$kg583– kg5832025-07-14 06:15:12 +00:00CommentedJul 14 at 6:15 - \$\begingroup\$Seems to work fine onAttempt This Online! although I didn't verify the output.\$\endgroup\$Neil– Neil2025-07-14 09:08:44 +00:00CommentedJul 14 at 9:08
Japt, 45bytes
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 prependingPython, 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:]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 ofLuminespire.
<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"/>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.
- 1\$\begingroup\$Vyxal 3, 423 bytes:Vyxal It Online! first 200 common words by length\$\endgroup\$Themoonisacheese– Themoonisacheese2025-07-11 07:06:59 +00:00CommentedJul 11 at 7:06
- 1\$\begingroup\$@Themoonisacheese that's interesting, I would have thought that taking words in order from the short dictionary would have been shorter.\$\endgroup\$2025-07-11 07:14:27 +00:00CommentedJul 11 at 7:14
- 1\$\begingroup\$Interesting that a language specifically developed for code golf is by far the worst!\$\endgroup\$Matt– Matt2025-07-11 20:30:52 +00:00CommentedJul 11 at 20:30
- 5\$\begingroup\$Sorry, lyxal, I felt I had to downvote this 'cause it shows no effort. I know you were probably going for a baseline score but I also know Vyxal is well able to batter Japt at challenges like this.\$\endgroup\$Shaggy– Shaggy2025-07-11 20:59:59 +00:00CommentedJul 11 at 20:59
Explore related questions
See similar questions with these tags.





