The English language is filled with curiosities. There are more words than you’d expect, and words with very particular combinations of letters.
This article will spotlight the words with the most consonants in a row. You’ll leave this article having learned a lot about some uncommon English words.
Words with most consonants in a row include “tsktsks”, “archronicler”, “catchphrase”, “eschscholtzia”, “knightsbridge” and “latchstring”. These are all terms that have a lot of consecutive consonants. If you want to train your spelling, these are great words to try out.
Here’s a list that compiles all of the terms that we’ll showcase in this article:
- Apple
- Archchronicler
- Backsplash
- Backstretch
- Backstroke
- Birthday
- Birthplace
- Breastroke
- Catchphrase
- Children
- Cycle
- Downstream
- Downthrust
- Dumbstruck
- Dumpster
- Egypt
- Eighths
- Energy
- Erstwhile
- Eschscholtzia
- Everything
- Girlfriend
- Hantzschia
- Happy
- Hundred
- Knightsbridge
- Latchstring
- Monster
- Month
- Mystery
- Postphthisic
- Sixths
- Strength
- Syllable
- System
- Tsktsks
- Twenty
- Weltschmerz
- World
Words With 8 Consonants in a Row
There are no words with 8 consonants in a row.
There used to be, as “cytlyngs” used to be a valid English word. It was a synonym for “kitlings”. However, that term hasn’t been used in several centuries. For this reason, we can’t actually count it.
Words With 7 Consonants in a Row
There is one English word that has 7 consonants in a row. Make no mistake, this is an incredibly rare term. You might go your whole life without discovering this word. The English word with 7 consonants in a row is “tsktsks”.
This word is an onomatopoeia, which explains why it’s such a rare term. People use it to talk about someone who is shushing someone else.
Words With 6 Consonants in a Row
There are a few English words that have 6 consonants in a row. Make no mistake, there aren’t a lot of these.
Some words with 6 consonants in a row are “archchronicler”, “catchphrase”, and “eschscholtzia”.
Here are some more words with 6 consonants in a row:
- Archchronicler
- Catchphrase
- Eschscholtzia
- Hantzschia
- Knightsbridge
- Latchstring
- Postphthisic
- Weltschmerz
Words With 5 Consonants in a Row
There are several words with 5 consonants in a row. Naturally, these are still somewhat rare terms. However, they can be found, and you might know some of these words already.
Some words with 5 consonants in a row are “backsplash”, “backstretch”, “backstroke”, and “birthplace”.
Here is a more complete list of words with 5 consonants in a row:
- Backsplash
- Backstretch
- Backstroke
- Birthplace
- Breastroke
- Downstream
- Downthrust
- Dumbstruck
- Eighths
- Erstwhile
Words With 4 Consonants in a Row
It’s not too hard to find terms with 4 consonants in a row. These words are fairly common, because putting four consonants in a row is not a complicated process.
Some words with 4 consonants in a row are “sixths”, “dumpster”, “girlfriend” and “Egypt”.
Here is a list that has some more words with 4 consonants in a row:
- Sixths
- Dumpster
- Girlfriend
- Egypt
- Everything
- System
- Syllable
- Strength
- Cycle
- Mystery
Words With 3 Consonants in a Row
There are a lot of words with three consonants in a row. There are words that end with 3 consonants in a row and words that start with 3 consonants in a row. Moreover, there are 5 letter words with 3 consonants in a row.
Some examples are “world”, “apple”, and “monster”.
Here are some more words with 3 consonants in a row:
- World
- Apple
- Monster
- Happy
- Children
- Birthday
- Energy
- Twenty
- Month
- Hundred
Martin holds a Master’s degree in Finance and International Business. He has six years of experience in professional communication with clients, executives, and colleagues. Furthermore, he has teaching experience from Aarhus University. Martin has been featured as an expert in communication and teaching on Forbes and Shopify. Read more about Martin here.
Which word has the most consecutive consonants?
The most consecutive consonants in a word is six. This occurs in a number of words, the most familiar being catchphrase, sightscreen, and watchstrap.
Is there a word with 4 consonants in a row?
To the best of my knowledge, there are no English words which are actually pronounced with four or more vowels in a row. The 5th consonant of the Hindi alphabet is used in words with the nasal sound (n/m) with other letters along with other letter of the series — ka, kha, ga and gha.
Which name has more consonant?
3 Answers. Archchronicler, catchphrase, eschscholtzia, latchstring, lengthsman, and postphthisic each have six consonants in a row. HIRSCHSPRUNG’S (DISEASE) has seven consecutive consonants, as does SCHTSCHUROWSKIA. The shortest such word is TSKTSKS.
Which language has the most consonants?
The language ! Xóõ (also known as Ta’a; formerly called “southern Khoisan”) is spoken by a small community of around 3,000 semi-nomadic people in southern Botswana and eastern Namibia. It has a total of 130 consonants (plus 28 vowels and three tones to give a total segment inventory of 161).
What is the hardest language to learn?
The Hardest Languages To Learn For English Speakers
- Mandarin Chinese. Interestingly, the hardest language to learn is also the most widely spoken native language in the world.
- Arabic.
- Polish.
- Russian.
- Turkish.
- Danish.
Which language is the easiest to learn?
And The Easiest Language To Learn Is…
- Norwegian. This may come as a surprise, but we have ranked Norwegian as the easiest language to learn for English speakers.
- Swedish.
- Spanish.
- Dutch.
- Portuguese.
- Indonesian.
- Italian.
- French.
Which language has the hardest grammar?
Turkish. Originally Answered: Which language has the hardest grammar to learn? A language that’s spoken in the Basque Country of Spain and France. This language is not even related to Spanish or French, it’s not even related to ANY Indo-European language.
What language is closest to English?
Dutch
Which Romance language has the easiest grammar?
- Spanish (easy grammar and easy speaking)
- French (easy grammar but moderate speaking)
- Italian (moderate grammar but easy speaking)
- Portuguese (moderate speaking but difficult grammar)
- Romanian (difficult speaking and difficult grammar)
What is the hardest Germanic language?
German
What is the hardest Romance language?
Romanian
What is the hardest Latin language?
Romanian = Hardest Latin language
- Plurals. Spanish – adding “s” Romanian – adding “i”, “e” or “uri” pretty randomly.
- Genders. Spanish – 2 genders: o=masculine and a=feminine.
- Conjugation. Spanish – 3 verb conjugations and very regular.
- Grammatical cases. Spanish – no cases.
- Spelling.
What is the hardest word to say?
The Most Difficult English Word To Pronounce
- Rural.
- Otorhinolaryngologist.
- Colonel.
- Penguin.
- Sixth.
- Isthmus.
- Anemone.
- Squirrel.
What order should I learn Romance languages?
Between Spanish and Romanian, order the others (French, Italian, Portuguese, Catalan and Occitan) based on your strengths, weaknesses and interests. Note that many people choose to learn Spanish, Italian and French first with Portuguese close behind. Some people plan on learning Romance languages simultaneously.
What’s the hardest thing in the world?
Although diamonds commonly known as the hardest material in the world, there are actually six materials that are harder. Diamonds are still one of the hardest naturally occurring and abundant materials on Earth, but these six materials all have it beat.
What is the world’s hardest rock?
Diamond is the hardest known mineral, Mohs’ 10.
What is the hardest thing a human can do?
What is hardest thing we do with our brains in a lifetime?
- Speaking a foreign language.
- Learning to speak in the first place.
- Learning to write.
- Learning to walk/ride a bike.
- Dealing with death of a loved one, divorce, lose job, other such life challenges.
- Fighting in a war (fortunately most of us don’t have to do this)
What is the strongest thing in the world?
Topping the list, graphene is the strongest materials known to humans. The transparent material is composed of a single layer carbon atom arranged in a triangular lattice and it’s the basic structural element in charcoal, graphite and carbon nanotubes.
What is difficult in life?
We simply cannot do without friends because we aren’t made to survive alone. We seek and keep friends to help us grow. So a changing friendship can be a difficult thing to deal with. Letting go of friends and adapting to new faces as you leave behind what you had come to love can be challenging.
What is the toughest moment in your life?
The five most challenging moments in life can include failures, losing a job, getting older, getting sick or injured, and the death of a loved one. Hiring managers often ask job seekers about their “toughest challenges” and how they handled them, but no one should feel obligated to share too many personal details.
How can I be happy in hard times?
10 reader tips to stay happy in tough times
- Remain optimistic. Tough times call for stamina and endurance.
- See the big picture.
- Unwind with cheap or free entertainment.
- Cook — and even grow — your own food.
- Go into ‘survival mode’ if necessary.
- Give to others in need.
- Remain focused on what really matters.
What can you not control in your life?
You cannot control their actions, reactions, thoughts, feelings, beliefs, etc. And to put this into perspective, you are also not RESPONSIBLE for other people’s actions, reactions, thoughts, feelings, beliefs, etc (excluding your non-adult children). We don’t usually try to control people on purpose.
How do you feel in control of yourself?
Here is what we recommend.
- Control stimuli. Agency begins with what you let into your mind—meaning what comes in from your environment.
- Associate selectively.
- Move.
- Position yourself as a learner.
- Manage your emotions and beliefs.
- Check your intuition.
- Deliberate, then act.
How do you control everyone?
Use these seven strategies wisely.
- Do all the thinking for them.
- Start an avalanche.
- Ask for an inch, take a mile.
- Always have a real deadline.
- Give ten times more than you take.
- Stand for something greater than yourself.
- Be completely and utterly shameless.
How do I get my life in order?
Here are 10 practical tips on how you can get your life in order – starting today!
- REALIZE that your life is not where you want it to be right now.
- TAKE RESPONSIBILITY for the condition that your life is in right now.
- REPENT.
- REMEMBER what is MOST IMPORTANT to you.
- GET QUIET and determine your TOP 3-5 priorities.
What to do to get a life?
Five Ways To Get A Life
- Shorten your workday by 30 minutes. I promise you’ll get more done than if you put in your usual nine to ten hours.
- Avoid multitasking.
- Break the habit of total self-reliance.
- Capture all your to-dos in one place.
- Schedule one purely joyful activity each week.
How can I get my life together in a week?
The Six-Step Week Plan That’ll Help You Get Your Life Together
- Change your perceptions of time.
- Prioritize.
- Sort out your long term goals.
- Organize with a pretty calendar.
- Cut the things that aren’t important.
- Make sure there’s ‘nothing’ time.
How do I get back on top?
Here are some quick but powerful ways to get unstuck and back on top of life.
- Find The Source.
- Deliberately Leave Your Comfort Zone.
- Change Your Surroundings.
- Work On Accepting All Emotions.
- Get Physical.
- Give Yourself Permission To Dream.
- Identify Patterns.
How do I finally get my life together?
10 Incredible Ideas To Get Your Life Together In 2020
- Review your strengths and weaknesses.
- Make a plan for change.
- Learn from someone else.
- Don’t spend too long thinking.
- Don’t change the actions, change the system.
- Track your progress.
- Change the way you talk about yourself.
- Give yourself the tools you need.
How can I get my life together fast?
30 Ways To Get Your Life Together Once And For All
- Do talk, but stop complaining excessively.
- Live your life proactively instead of reactively.
- Get organized.
- Set short, mid, and long-term goals.
- Cut toxic people out of your life.
- Take better care of your physical health.
All Words: Gypsy, nymph, psych, lynch, crypt, myrrh, wryly, lymph, glyph, tryst, Pygmy, sylph, Gwynn, shyly, FHLMC, dryly, PDFLP, stymy, slyly, and shdsl
Table of Contents Show
- Completed AZ word finder features completed
- In Progress Finder features I’m working on.
- What 5 letter word has the least vowels?
- What 5 letter word has lots of consonants?
- What are the best first 5 words in Wordle?
- What word has the most consonants?
You are searching for all words that do not have vowels. Since a vowel is a,e,i,o,u and sometimes y, you might want to search for words with no vowels that do not have the letter y! But, You Go Words provides abbreviations for the most common word/phrases which makes it difficult to find words with no vowels and no y. What to do, is view the words with no vowels (no aeiou) and determine which words would not classify the letter y as a vowel.
Word | Length | Consonants | Vowels | Syllables | Origin | Favourite |
---|---|---|---|---|---|---|
Gypsy | 5 | 5 | 0 | 2 | Middle English | |
Nymph | 5 | 5 | 0 | 1 | Middle English | |
Psych | 5 | 5 | 0 | 1 | ||
Lynch | 5 | 5 | 0 | 1 | ||
Crypt | 5 | 5 | 0 | 1 | Latin | |
Myrrh | 5 | 5 | 0 | 1 | Old English | |
Wryly | 5 | 5 | 0 | 2 | ||
Lymph | 5 | 5 | 0 | 1 | Latin | |
Glyph | 5 | 5 | 0 | 1 | French | |
Tryst | 5 | 5 | 0 | 1 | Middle English | |
Pygmy | 5 | 5 | 0 | 2 | ||
Sylph | 5 | 5 | 0 | 1 | New Latin | |
Gwynn | 5 | 5 | 0 | 1 | ||
Shyly | 5 | 5 | 0 | 2 | ||
FHLMC | 5 | 5 | 0 | 1 | ||
Dryly | 5 | 5 | 0 | 2 | ||
PDFLP | 5 | 5 | 0 | 1 | ||
Stymy | 5 | 5 | 0 | 2 | ||
Slyly | 5 | 5 | 0 | 2 | ||
Shdsl | 5 | 5 | 0 | 1 |
The largest free 5 letters words list online. Does not include all of the plural forms of five letter words.
Completed AZ word finder features completed
- Word Unscambler has been renamed and will be altered to a complete Anagram Solver
- Syllable counter is now available for text and documents.
- In The Middle / In The Center word finding. Searching «two syllable words with qu in the middle», «ab in the center»,etc. will bring you to a list of words spelled with _a-z_. For «exactly center» use a search like «6 letters with qu in the middle»
- Word unscrambling. For fastest speed possible,
you will now land on the top viewed set of characters for that set of letters. - New search abilities «words with all vowels» or «words with no vowels», «ends in a vowel», or «start with a vowel».
- Puzzle solving using underscores or dashes such as «solve _ _ e _ _ _ _ _ _, singular nouns 4 vowels and 3 syllables»
- Find words or names by their second, third and fourth letter up to the eighth letter
with eazy search like «words with the second letter b». - Puzzle solver & missing letters. Wordbrain Themes, Words With Friends, Scrabble, 4Pics1Word, Word Cookies cheats, answers, and more. Example answers search: «solve the puzzle b_r», complete this 6 letter word from o-e-h, «spelled like out», «words containing out». Use an underscore or dash where the puzzle is
missing a letter. - Length queries including 6 letter words now include quick navigation for speech type and starts/ends letters such as 6 letter words with the second letter c.
- Rhymes and sounds like tool for any word, spelling, or text entered. Different
results appear for sounds and rhymes. - Palindromes word Lists now available by searching palindrome words.
- Unscrambler & Decoder — decode phrases such as «dining table» for «egbindinatl».
- Negative search filters
words that do not have the letter e - Quick word find. Single word searches bring you to the word page. Solving word puzzles using an underscore or dash ( Example: _a_t_i_a ). All words/letters without a dedicated page will be unscrambled.
- Find scrabble words by points! Add «scrabble» in your query, such as Scrabble words with 14 points.
- Favorite words to your account
View All English Words
Any Word finder ideas you want? Send a word find feature request to let me know.
Are you interested in learning Japanese while improving your English with You Go Words!? You can learn Japanese
online and free with Misa of Japanese Ammo including grammer and vocabulary.
In Progress Finder features I’m working on.
- Phonograms searching
coming soon due to many users searching such as «words ending with a multiple phonogram» - Root word search. Show with prefix and suffix options, only if it has a root word.
- Alternative spelling of words from American English to British English. Mouse over example: Color
- Printable & downloadable word lists.
- Frequency of a words appearance in books, and other texts.
- Allow word find such as «words which contain the consonants N, T, and R». This would provide a list of words with letters in a specific order, such as the consonants in the order of ntr.
- Plural and singular words with information and example sentences.
- Word games by school grade from Kindergarten to grade 12.
- Provide words that can be used twice or more in one sentence with example sentences.
- Paraphrasing, pronunciation, and free grammar tools.
- Seperate
words by area of focus. ( Technology, Education, Science, Psychology, etc. )
Did You Find Your Words?
If you could not find the words you were looking for, please submit feedback or leave a comment below. Let me know what word list you could not find, and I’ll be sure to get it fixed up for you.
What 5 letter word has the least vowels?
List of 5-Letter Words With No Vowels.
Byrls..
Chynd..
Crwth..
Crypt..
Cwtch..
Cysts..
Dryly..
Flyby..
What 5 letter word has lots of consonants?
5 Letter Words.
xylyl..
pygmy..
cwtch..
flyby..
hyphy..
lymph..
nymph..
glyph..
What are the best first 5 words in Wordle?
So based on most used letters from top here are the best 5 letter starting words to use when you start your Wordle daily:.
TORSE..
TORSI..
TRAIL..
TRIAL..
TRIES..
TRIOL..
TRIOS..
TROIS..
What word has the most consonants?
The most consecutive consonants in a word is six. This occurs in a number of words, the most familiar being catchphrase, sightscreen, and watchstrap. The word euouae (a mnemonic used in medieval music) is the only word to contain six consecutive vowels, and unsurprisingly is the longest word with no consonants in it.
Categories | |
Nooks and crannies |
|
Yesteryear |
|
Semantic enigmas |
|
The body beautiful |
|
Red tape, white lies |
|
Speculative science |
|
This sceptred isle |
|
Root of all evil |
|
Ethical conundrums |
|
This sporting life |
|
Stage and screen |
|
Birds and the bees |
SEMANTIC ENIGMAS
Which English word has the most consecutive consonants? I cannot beat six — ‘catchphrase’ or ‘watchstrap’ being less elegant than ‘Knightsbridge’ in that category?
- THERE ARE at least two words with seven consecutive consonants: ‘rhythms’ and ‘strychnine’.
Miranda Blayney, Richmond, Surrey.
- UNSYNCHRONISED.
B. N. Tattersall, Prestbury, Lancs.
- IF ‘CONSONANT’ is used in the spelling sense of ‘letter of the alphabet representing (part of) a consonant sound’, the questioner has probably reached the limit. In English STR-, PHR-, -TCH and -GHT are frequent sequences at the beginnings and ends of simple words. You can get six consonants in this sense when two such sequences meet in a compound word, as in the examples quoted. This rarely gives as many actual consonant sounds: ‘watchstrap’, for example, has only four (-tstr-), according to one common way of counting the sounds of English.
Peter Sherwood, School of Slavonic and East European Studies, University of London.
- THERE ARE several words which contain more than six consecutive consonants, although most of them depend on the use of the letters ‘y’ or ‘w’ as surrogate vowels, and many are either obsolete words or obsolete spellings of modern words. Those with seven consecutive consonants include cyttyns (sits), schylds (children), schynds (Orcadian inquests), schyrche (church), schyyds (shides), and thryssce (thrush); all of these are in the OED. For eight consecutive consonants there is the obsolete word cytlyngs (kitlings) (in OED). There are nine consecutive consonants in aspartyltryptophan, the dipeptide formed from the amino acids aspartic acid and tryptophan, and Gardner gives wppwrmwste (an obsolete spelling of uppermost). But perhaps the record, with 12 consecutive consonants, goes to the Welsh village Mynydd-y-Slwyn.
D. G. Tallis, Oxford.
- PSYCHOLOGICAL rapid heart rates are occasionally referred to as tachydysrhythmia.
Dr Peter C. Barnes, Hope Hospital, Salford.
- THE EXAMPLES given by your correspondents are all incorrect. The letter ‘y’ can be either a consonant or a vowel as the context requires. In each of the instances given, it is used as a vowel.
J. G. Stanford, Southwick, Brighton.
- SORRY, D.G. Tallis. In the Welsh alphabet Y (pronounced «uh» or «ee» according to the context), and W (pronounced «oo»), are both vowels. In any case, as dd (pronounced as a hard «th» sound) is actually one letter in Welsh, the combined name has only eleven letters. Didn’t the questioner restrict the query to English words?
Richard Harrold Suratthani, Thailand (mathus@samart.co.th)
- English students of the German language normally have
an outbreak of «cold sweat»
when they try to pronounce
the German equivalent word :
» Angstschweiss » — eight consecutive consonants .Uwe Junge, Niebuell, Germany
- Congenital aganglionosis of the gut goes by the name of Hirschsprung’s disease which has seven consecutive consonants (without y or w).
Neil Bodsworth, Sydney Australia
- In Slovak you can produce an entire sentence with only consonants: «Strc prst skrz krk», meaning «Stick your finger through your neck».
Actually it is not really a vowel-less sentence; the «r» in each of the words is effectively a vowel. But it looks cool.
Geoff, London UK
Add your answer
Find words which contain the most consonants is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
- Task
Use the dictionary unixdict.txt
Find the words which contains most consonants, but each consonant should appear only once in a word.
The length of any word shown should have a length > 10.
Other tasks related to string operations:
11l[edit]
Translation of: Python
V lines = File(‘unixdict.txt’).read().split("n") V words = lines.filter(w -> w.len > 10 & !re:‘[^a-z]’.search(w)) DefaultDict[Int, [String]] good L(word) words V c = word.replace(re:‘[aeiou]’, ‘’) I sorted(Array(c)) == sorted(Array(Set(Array(c)))) good[c.len].append(word) L(k, v) sorted(good.items(), reverse' 1B) I v.len > 30 print(k‘: ’v.len‘ words’) E print(k‘: ’sorted(v).join(‘ ’))
9: comprehensible 8: 39 words 7: 130 words 6: 152 words 5: acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition 4: audiovisual bourgeoisie onomatopoeia
Action![edit]
In the following solution the input file unixdict.txt is loaded from H6 drive. Altirra emulator automatically converts CR/LF character from ASCII into 155 character in ATASCII charset used by Atari 8-bit computer when one from H6-H10 hard drive under DOS 2.5 is used.
CHAR ARRAY line(256) BYTE FUNC ConsonantsCount(CHAR ARRAY word) BYTE len,i,c,count BYTE ARRAY chars(128) len=word(0) IF len<=10 THEN RETURN (0) FI SetBlock(chars,128,0) count=0 FOR i=1 TO len DO c=word(i) IF c#'a AND c#'e AND c#'i AND c#'o AND c#'u THEN IF chars(c) THEN RETURN (0) FI chars(c)=1 count==+1 FI OD RETURN (count) BYTE FUNC FindMostConsonants(CHAR ARRAY fname) BYTE max,count,dev=[1] max=0 Close(dev) Open(dev,fname,4) WHILE Eof(dev)=0 DO InputSD(dev,line) count=ConsonantsCount(line) IF max<count THEN max=count FI OD Close(dev) RETURN (max) PROC FindWords(CHAR ARRAY fname BYTE n) BYTE count,dev=[1] Close(dev) Open(dev,fname,4) WHILE Eof(dev)=0 DO InputSD(dev,line) count=ConsonantsCount(line) IF count=n THEN Print(line) Put(32) FI OD Close(dev) PutE() PutE() RETURN PROC Main() CHAR ARRAY fname="H6:UNIXDICT.TXT" BYTE i,max PrintE("Finding the most consonants...") PutE() max=FindMostConsonants(fname) i=max WHILE i>=max-1 DO PrintF("%B consonants:%E",i) FindWords(fname,i) i==-1 OD RETURN
Screenshot from Atari 8-bit computer
Finding the most consonants... 9 consonants: comprehensible 8 consonants: administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap
Ada[edit]
with Ada.Text_Io; with Ada.Strings.Fixed; with Ada.Containers.Indefinite_Vectors; procedure Most_Consonants is use Ada.Text_Io; package String_Vectors is new Ada.Containers.Indefinite_Vectors (Index_Type => Positive, Element_Type => String); function Is_Vowel (Letter : Character) return Boolean is (Ada.Strings.Fixed.Index ("aeiou", "" & Letter) /= 0); type Consonant_Count is range 0 .. 15; Filename : constant String := "unixdict.txt"; File : File_Type; Words : array (Consonant_Count) of String_Vectors.Vector; begin Open (File, In_File, Filename); while not End_Of_File (File) loop declare Word : constant String := Get_Line (File); Found : array (Character) of Boolean := (others => False); Conso : Consonant_Count := 0; Bad : Boolean := False; begin for Letter of Word loop if Is_Vowel (Letter) then null; elsif Found (Letter) then Bad := True; else Found (Letter) := True; Conso := Conso + 1; end if; end loop; if not Bad and Word'Length > 10 then Words (Conso).Append (Word); end if; end; end loop; Close (File); for Cons in Words'Range loop if not Words (Cons).Is_Empty then Put (Cons'Image & " consonants: "); Put (Words (Cons).Length'Image & " words"); New_Line; end if; declare Column : Natural := 0; Image : String (1 .. 15); begin for Word of Words (Cons) loop Ada.Strings.Fixed.Move (Word, Image); Put (Image); Column := Column + 1; if Column mod 8 = 0 then New_Line; end if; end loop; end; if not Words (Cons).Is_Empty then New_Line; end if; end loop; end Most_Consonants;
4 consonants: 3 words audiovisual bourgeoisie onomatopoeia 5 consonants: 22 words acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition 6 consonants: 152 words aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer 7 consonants: 130 words acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism 8 consonants: 39 words administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap 9 consonants: 1 words comprehensible
ALGOL 68[edit]
# find words longer than 10 characters and sort by the number of consonants # # they contain # IF FILE input file; STRING file name = "unixdict.txt"; open( input file, file name, stand in channel ) /= 0 THEN # failed to open the file # print( ( "Unable to open """ + file name + """", newline ) ) ELSE # file opened OK # BOOL at eof := FALSE; # set the EOF handler for the file # on logical file end( input file , ( REF FILE f )BOOL: BEGIN # note that we reached EOF on the latest read # # and return TRUE so processing can continue # at eof := TRUE END ); # in-place quick sort an array of strings # PROC s quicksort = ( REF[]STRING a, INT lb, ub )VOID: IF ub > lb THEN # more than one element, so must sort # INT left := lb; INT right := ub; # choosing the middle element of the array as the pivot # STRING pivot := a[ left + ( ( right + 1 ) - left ) OVER 2 ]; WHILE WHILE IF left <= ub THEN a[ left ] < pivot ELSE FALSE FI DO left +:= 1 OD; WHILE IF right >= lb THEN a[ right ] > pivot ELSE FALSE FI DO right -:= 1 OD; left <= right DO STRING t := a[ left ]; a[ left ] := a[ right ]; a[ right ] := t; left +:= 1; right -:= 1 OD; s quicksort( a, lb, right ); s quicksort( a, left, ub ) FI # s quicksort # ; # returns the length of s # OP LENGTH = ( STRING s )INT: 1 + ( UPB s - LWB s ); # returns the consonant count of s or 0 if the consonants are not unique # OP UNIQUECONSONANTS = ( STRING s )INT: BEGIN [ 0 : 26 ]INT count; FOR c FROM LWB count TO UPB count DO count[ c ] := 0 OD; FOR i FROM LWB s TO UPB s DO CHAR c := s[ i ]; IF c >= "A" AND c <= "Z" THEN c := REPR ( ABS c + ( ABS "a" - ABS "A" ) ) FI; IF c >= "b" AND c <= "z" THEN IF c /= "e" AND c /= "i" AND c /= "o" AND c /= "u" THEN count[ ABS c - ABS "a" ] +:= 1 FI FI OD; BOOL all unique := TRUE; INT consonants := 0; FOR c FROM LWB count TO UPB count WHILE all unique := count[ c ] < 2 DO consonants +:= count[ c ] OD; IF all unique THEN consonants ELSE 0 FI END # UNIQUECONSONANTS # ; [ 1 : 2 000 ]STRING words; INT w count := 0; INT max length := 0; WHILE NOT at eof DO STRING word; get( input file, ( word, newline ) ); IF NOT at eof THEN # have another word # IF INT w length = LENGTH word; w length > 10 THEN IF INT consonants = UNIQUECONSONANTS word; consonants > 0 THEN # word is long enough to include and contains only uniue # # consonants, store it prefixed by the max abs char # # complement of the number of consonants in it, so we # # can sort the words into reverse consonant count order # words[ w count +:= 1 ] := REPR ( max abs char - consonants ) + word; IF w length > max length THEN max length := w length FI FI FI FI OD; close( input file ); # sort the words # s quicksort( words, 1, w count ); # display the words # INT prev count := 0; INT p count := 0; BOOL need nl := FALSE; FOR w TO w count DO STRING s word = words[ w ]; INT count = max abs char - ABS s word[ 1 ]; STRING word = s word[ 2 : ]; INT w length = LENGTH word; IF count /= prev count THEN IF need nl THEN print( ( newline ) ) FI; print( ( newline, whole( count, 0 ), " consonants:", newline ) ); prev count := count; p count := 0; need nl := FALSE FI; print( ( " ", " " * ( max length - w length ), word ) ); IF NOT ( need nl := ( p count +:= 1 ) MOD 5 /= 0 ) THEN print( ( newline ) ) FI OD FI
9 consonants: comprehensible 8 consonants: administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap 7 consonants: acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism 6 consonants: aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer 5 consonants: acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition 4 consonants: audiovisual bourgeoisie onomatopoeia
ALGOL W[edit]
begin % find the words longer than 10 characters that contain most consonants % % an element of a WordList % record WordListElement ( string(32) w; reference(WordListElement) next ); % structure to hold lists of words % record WordList ( reference(WordListElement) first, last ); % lists of words indexed by number of consonants % reference(WordList) array words ( 1 :: 32 ); string(32) word; integer aCode, aPos, ePos, iPos, oPos, uPos; for wPos := 1 until 32 do words( wPos ) := null; % allow the program to continue after reaching end-of-file % ENDFILE := EXCEPTION( false, 1, 0, false, "EOF" ); % handle the input % aCode := decode( "a" ); aPos := 0; ePos := decode( "e" ) - aCode; iPos := decode( "i" ) - aCode; oPos := decode( "o" ) - aCode; uPos := decode( "u" ) - aCode; readcard( word ); while not XCPNOTED(ENDFILE) do begin integer len; len := 31; while len > 0 and word( len // 1 ) = " " do len := len - 1; len := len + 1; if len > 10 then begin % word is at least 11 characters long % logical noRepeatedletters; integer consonants; integer array letterCount ( 0 :: 25 ); for cPos := 0 until 25 do letterCount( cPos ) := 0; for cPos := 0 until len do begin integer c; c := decode( word( cPos // 1 ) ) - aCode; if c >= 0 and c <= 25 then % have a letter % letterCount( c ) := letterCount( c ) + 1; end for_cPos; % reset the vowel counts % letterCount( aPos ) := letterCount( ePos ) := letterCount( iPos ) := letterCount( oPos ) := letterCOunt( uPos ) := 0; % check at most 1 of each letter and at least one non-vowel % noRepeatedletters := true; consonants := 0; for cPos := 0 until 25 do begin if letterCount( cPos ) = 1 then consonants := consonants + 1 else if letterCount( cPos ) > 1 then begin % a repeated letter % noRepeatedletters := false; goto endLookFOrRepeatedLetters; end if_single_letter__repeated_letter end for_cPos ; endLookFOrRepeatedLetters: if consonants > 0 and noRepeatedLetters then begin % have a word with more than 10 characters that has no repeated consonants % if words( consonants ) not = null then begin % second or subsequent word with this many consonants % last( words( consonants ) ) := next( last( words( consonants ) ) ) := WordListElement( word, null ); end else begin % first word with this many consonants % words( consonants ) := WordList( WordListElement( word, null ), null ); last( words( consonants ) ) := first( words( consonants ) ) end if_words_consonants_ne_null__ end if_have_no_repeated_consonants end if_len_gt_10 ; readcard( word ); end while_not_eof ; % show the words % for wPos := 32 step -1 until 1 do begin if words( wPos ) not = null then begin % have words with wPos consonants % reference(WordListElement) rWord; integer wNumber; write( i_w := 1, s_w := 0,"Words with ", wPos, " consonants:" ); rWord := first( words( wPos ) ); wNumber := 0; while rWord not = null do begin if wNumber rem 5 = 0 then write( " ", w( rWord )( 0 // 18 ) ) else writeon( w( rWord )( 0 // 18 ) ) ; wNumber := wNUmber + 1; rWord := next( rWord ) end while_rWord_ne_null end if_words_wPos_ne_null end for_wPos end.
Words with 9 consonants: comprehensible Words with 8 consonants: administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap Words with 7 consonants: acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism Words with 6 consonants: aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer Words with 5 consonants: acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition Words with 4 consonants: audiovisual bourgeoisie onomatopoeia
Arturo[edit]
words: read.lines relative "unixdict.txt" vowels: ["a" "e" "i" "o" "u"] nofConsonants: function [w][ cons: (split w) -- vowels if? cons = unique cons -> return size cons else -> return 0 ] freqs: array.of: 20 [] loop words 'word [ if 10 < size word [ noc: nofConsonants word if noc > 0 [ freqs[noc]: freqs[noc] ++ word ] ] ] loop.with:'i reverse freqs 'freq [ if not? empty? freq [ print "-----------------------------------------------" print ~"Found |size freq| words with |dec 20-i| different consonants" print "-----------------------------------------------" print join.with:"n" freq print "" ] ]
----------------------------------------------- Found 1 words with 9 different consonants ----------------------------------------------- comprehensible ----------------------------------------------- Found 39 words with 8 different consonants ----------------------------------------------- administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap ----------------------------------------------- Found 130 words with 7 different consonants ----------------------------------------------- acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism ----------------------------------------------- Found 152 words with 6 different consonants ----------------------------------------------- aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer ----------------------------------------------- Found 22 words with 5 different consonants ----------------------------------------------- acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition ----------------------------------------------- Found 3 words with 4 different consonants ----------------------------------------------- audiovisual bourgeoisie onomatopoeia
AutoHotkey[edit]
FileRead, db, % A_Desktop "unixdict.txt" vowels := ["a", "e", "i", "o", "u"] oRes := [] for i, word in StrSplit(db, "`n", "`r") { if StrLen(word) < 11 continue tWord := word for j, v in vowels word := StrReplace(word, v) if !(word ~= "(.)(?=.*?1)") oRes[0-StrLen(word), tword] := 1 ; result .= tword "`n" } for l, obj in oRes { result .= 0-l " Unique consonants, word count: " obj.Count() "`n" for word in obj result .= word (!Mod(A_Index, 9) ? "`n" : "`t") result .= "`n`n" } MsgBox, 262144, , % result
9 Unique consonants, word count: 1 comprehensible 8 Unique consonants, word count: 39 administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap 7 Unique consonants, word count: 130 acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism 6 Unique consonants, word count: 152 aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer 5 Unique consonants, word count: 22 acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition 4 Unique consonants, word count: 3 audiovisual bourgeoisie onomatopoeia
AWK[edit]
# syntax: GAWK -f FIND_WORDS_WHICH_CONTAINS_MOST_CONSONANTS.AWK unixdict.txt # # sorting: # PROCINFO["sorted_in"] is used by GAWK # SORTTYPE is used by Thompson Automation's TAWK # BEGIN { a2z = "abcdefghijklmnopqrstuvwxyz" gsub(/[aeiou]/,"",a2z) # remove vowels leng = length(a2z) } { if (length($0) <= 10) { next } consonants = 0 for (i=1; i<=leng; i++) { c = substr(a2z,i,1) if (gsub(c,"&",$0) > 1) { next } if (gsub(c,"&",$0) == 1) { consonants++ } } arr[consonants][$0] = "" words++ } END { show = 4 PROCINFO["sorted_in"] = "@ind_str_asc" ; SORTTYPE = 1 for (i in arr) { printf("%1d %3d ",i,length(arr[i])) shown = 0 for (j in arr[i]) { if (++shown <= show) { printf("%s ",j) } } printf("%sn",(length(arr[i])>show)?(" ... "j):"") } printf("%5d wordsn",words) exit(0) }
4 3 audiovisual bourgeoisie onomatopoeia 5 22 acquisition acquisitive acrimonious ceremonious ... requisition 6 152 aboveground advantageous adventurous aerodynamic ... wisenheimer 7 130 acknowledge algorithmic alphanumeric ambidextrous ... voluntarism 8 39 administrable anthropology blameworthy bluestocking ... thunderclap 9 1 comprehensible 347 words
C++[edit]
#include <bitset> #include <cctype> #include <cstdlib> #include <fstream> #include <iomanip> #include <iostream> #include <map> #include <string> #include <vector> // Returns number of consonants in the word if they are all unique, // otherwise zero. size_t consonants(const std::string& word) { std::bitset<26> bits; size_t bit = 0; for (char ch : word) { ch = std::tolower(static_cast<unsigned char>(ch)); if (ch < 'a' || ch > 'z') continue; switch (ch) { case 'a': case 'e': case 'i': case 'o': case 'u': break; default: bit = ch - 'a'; if (bits.test(bit)) return 0; bits.set(bit); break; } } return bits.count(); } int main(int argc, char** argv) { const char* filename(argc < 2 ? "unixdict.txt" : argv[1]); std::ifstream in(filename); if (!in) { std::cerr << "Cannot open file '" << filename << "'.n"; return EXIT_FAILURE; } std::string word; std::map<size_t, std::vector<std::string>, std::greater<int>> map; while (getline(in, word)) { if (word.size() <= 10) continue; size_t count = consonants(word); if (count != 0) map[count].push_back(word); } const int columns = 4; for (const auto& p : map) { std::cout << p.first << " consonants (" << p.second.size() << "):n"; int n = 0; for (const auto& word : p.second) { std::cout << std::left << std::setw(18) << word; ++n; if (n % columns == 0) std::cout << 'n'; } if (n % columns != 0) std::cout << 'n'; std::cout << 'n'; } return EXIT_SUCCESS; }
9 consonants (1): comprehensible 8 consonants (39): administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap 7 consonants (130): acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism 6 consonants (152): aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer 5 consonants (22): acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition 4 consonants (3): audiovisual bourgeoisie onomatopoeia
CLU[edit]
% If a word has no repeated consonants, return the amount % of consonants. If it does have repeated consonants, return % -1. consonants = proc (word: string) returns (int) own vowels: string := "aeiou" % shorter than listing all consonants letters: array[int] := array[int]$fill(0,26,0) for c: char in string$chars(word) do if string$indexc(c,vowels) ~= 0 then continue end if c<'a' cor c>'z' then continue end i: int := char$c2i(c) - char$c2i('a') letters[i] := letters[i] + 1 end total: int := 0 for i: int in array[int]$elements(letters) do if i>1 then return(-1) end total := total + i end return(total) end consonants start_up = proc () dictfile: file_name := file_name$parse("unixdict.txt") dict: stream := stream$open(dictfile, "read") words: array[array[string]] := array[array[string]]$fill_copy(0,10,array[string]$[]) while true do word: string := stream$getl(dict) if string$size(word) <= 10 then continue end n: int := consonants(word) array[string]$addh(words[n], word) except when bounds: end end except when end_of_file: stream$close(dict) end po: stream := stream$primary_output() for word_list: array[string] in array[array[string]]$elements(words) do if array[string]$empty(word_list) then continue end size: int := array[string]$size(word_list) cons: int := consonants(array[string]$bottom(word_list)) stream$putl(po, int$unparse(cons) || " consonants - " || int$unparse(size) || " words:") col: int := 0 for word: string in array[string]$elements(word_list) do stream$putleft(po, word, 20) col := col + 1 if col = 4 then stream$putl(po, "") col := 0 end end if col ~= 0 then stream$putl(po, "") end stream$putl(po, "") end end start_up
4 consonants - 3 words: audiovisual bourgeoisie onomatopoeia 5 consonants - 22 words: acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition 6 consonants - 152 words: aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer 7 consonants - 130 words: acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism 8 consonants - 39 words: administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap 9 consonants - 1 words: comprehensible
F#[edit]
// Word(s) containing most consonants. Nigel Galloway: February 18th., 2021 let vowels=set['a';'e';'i';'o';'u'] let fN g=let g=g|>Seq.filter(vowels.Contains>>not)|>Array.ofSeq in if g=(g|>Array.distinct) then g.Length else 0 printfn "%A" (seq{use n=System.IO.File.OpenText("unixdict.txt") in while not n.EndOfStream do yield n.ReadLine()}|>Seq.filter(fun n->n.Length>10)|>Seq.groupBy fN|>Seq.sortBy fst|>Seq.last)
(9, seq ["comprehensible"])
Factor[edit]
USING: assocs formatting io.encodings.ascii io.files kernel math prettyprint prettyprint.config sequences sets sets.extras ; FROM: namespaces => set ; "unixdict.txt" ascii file-lines [ length 10 > ] filter [ "aeiou" without all-unique? ] filter dup length "Found %d words with unique consonants (length > 10).n" printf [ [ "aeiou" member? not ] count ] collect-by >alist reverse 6 length-limit set 100 margin set .
Found 347 words with unique consonants (length > 10). { { 9 V{ "comprehensible" } } { 8 V{ "administrable" "anthropology" "blameworthy" "bluestocking" "boustrophedon" ~34 more~ } } { 7 V{ "acknowledge" "algorithmic" "alphanumeric" "ambidextrous" "amphibology" ~125 more~ } } { 6 V{ "aboveground" "advantageous" "adventurous" "aerodynamic" "anglophobia" ~147 more~ } } { 5 V{ "acquisition" "acquisitive" "acrimonious" "ceremonious" "deleterious" ~17 more~ } } { 4 V{ "audiovisual" "bourgeoisie" "onomatopoeia" } } }
FreeBASIC[edit]
function uniq_cons( s as string ) as integer dim letter( 1 to 26 ) as boolean dim as uinteger n, i dim as string*1 c for i = 1 to len(s) c = lcase(mid(s,i,1)) if c = "a" or c = "e" or c = "i" or c = "o" or c = "u" then continue for if letter(asc(c)-97)=true then return 0 letter(asc(c)-97)=true n+=1 next i return n end function dim as string ln dim as integer u open "unixdict.txt" for input as #1 while not eof(1) line input #1, ln if len(ln)<11 then continue while u=uniq_cons(ln) if u>0 then print ln;": ";u;" distint consonants" wend close #1
FutureBasic[edit]
#build WarnOfScopedVars NO local fn Words as CFArrayRef CFURLRef url = fn URLWithString( @"http://wiki.puzzlers.org/pub/wordlists/unixdict.txt" ) CFStringRef string = fn StringWithContentsOfURL( url, NSUTF8StringEncoding, NULL ) CFArrayRef array = fn StringComponentsSeparatedByCharactersInSet( string, fn CharacterSetNewlineSet ) end fn = fn ArrayFilteredArrayUsingPredicate( array, fn PredicateWithFormat( @"self.length > %d", 10 ) ) local fn StringByDeletingCharactersInSet( inString as CFStringRef, set as CFCharacterSetRef ) as CFStringRef CFMutableStringRef outString = fn MutableStringWithCapacity(0) long i, length = len(inString) for i = 0 to length - 1 unichar c = fn StringCharacterAtIndex( inString, i ) if ( fn CharacterSetCharacterIsMember( set, c ) == NO ) MutableStringAppendFormat( outString, @"%C", c ) end if next end fn = outString void local fn DoIt CFArrayRef words = fn Words CFCharacterSetRef vowelSet = fn CharacterSetWithCharactersInString( @"aeiou" ) CFMutableArrayRef array = fn MutableArrayWithCapacity(0) long maxCons = 0 CFStringRef wd for wd in words CFStringRef wd2 = fn StringByDeletingCharactersInSet( wd, vowelSet )// remove vowels CFMutableSetRef mutSet = fn MutableSetWithCapacity(0) long i, length = len(wd2) for i = 0 to length - 1 MutableSetAddObject( mutSet, mid(wd2,i,1) ) next if ( length == len(mutSet) ) // if equal lengths, there are no duplicate consonants if ( length >= maxCons ) if ( length > maxCons ) // more consonants in current word so clear array MutableArrayRemoveAllObjects( array ) maxCons = length end if MutableArrayAddObject( array, wd ) end if end if next print fn ArrayComponentsJoinedByString( array, @"n" ) end fn fn DoIt HandleEvents
comprehensible
Go[edit]
Translation of: Wren
package main import ( "bytes" "fmt" "io/ioutil" "log" "unicode/utf8" ) func contains(list []int, value int) bool { for _, v := range list { if v == value { return true } } return false } func main() { wordList := "unixdict.txt" b, err := ioutil.ReadFile(wordList) if err != nil { log.Fatal("Error reading file") } bwords := bytes.Fields(b) var words []string for _, bword := range bwords { s := string(bword) if utf8.RuneCountInString(s) > 10 { words = append(words, s) } } vowelIndices := []int{0, 4, 8, 14, 20} wordGroups := make([][]string, 12) for _, word := range words { letters := make([]int, 26) for _, c := range word { index := c - 97 if index >= 0 && index < 26 { letters[index]++ } } eligible := true uc := 0 // number of unique consonants for i := 0; i < 26; i++ { if !contains(vowelIndices, i) { if letters[i] > 1 { eligible = false break } else if letters[i] == 1 { uc++ } } } if eligible { wordGroups[uc] = append(wordGroups[uc], word) } } for i := 11; i >= 0; i-- { count := len(wordGroups[i]) if count > 0 { s := "s" if count == 1 { s = "" } fmt.Printf("%d word%s found with %d unique consonants:n", count, s, i) for j := 0; j < count; j++ { fmt.Printf("%-15s", wordGroups[i][j]) if j > 0 && (j+1)%5 == 0 { fmt.Println() } } fmt.Println() if count%5 != 0 { fmt.Println() } } } }
Same as Wren example.
Haskell[edit]
{-# LANGUAGE LambdaCase #-} -- Given a list of words on stdin, write to stdout the set of words having the -- greatest number of distinct, English consonants. In any given word, each -- consonant may appear only once. We consider Y to always be a consonant. import Data.Bifunctor (first) import Data.Char (toUpper) import Data.Function (on) import Data.List ((\), groupBy, intersect, nub, sortOn) import Data.Ord (Down(..)) -- The consonants. consonants :: String consonants = cons ++ map toUpper cons where cons = ['a'..'z'] \ "aeiou" -- Only the consonants in the argument. onlyConsonants :: String -> String onlyConsonants = (`intersect` consonants) -- The list of all strings having the greatest number of distinct consonants. mostDistinctConsonants :: [String] -> [String] mostDistinctConsonants = map snd . head' . groupBy ((==) `on` fst) . sortOn (Down . fst) . map (first length) . filter (allDistinct . fst) . map (s -> (onlyConsonants s, s)) where head' = case { [] -> []; (xs:_) -> xs; } allDistinct s = s == nub s main :: IO () main = interact (unlines . mostDistinctConsonants . filter longEnough . words) where longEnough xs = length xs > 10
comprehensible
Or, in terms of Data.Set, choosing just one of various possible interpretations of an ambiguous task description.
import Data.Char (toLower) import Data.Function (on) import Data.List (groupBy, sortOn, (\)) import Data.Ord (Down (..)) import qualified Data.Set as S -- WORDS USING LARGEST SUBSET OF GIVEN SET OF CHARACTERS - uniqueGlyphCounts :: S.Set Char -> [String] -> [[(String, Int)]] uniqueGlyphCounts glyphs ws = groupBy (on (==) snd) . sortOn (Down . snd) $ ((,) <*> (S.size . S.intersection glyphs . S.fromList)) <$> ws --------------------------- TEST ------------------------- consonants :: S.Set Char consonants = S.fromList $ ((<>) <*> fmap toLower) (['A' .. 'Z'] \ "AEIOU") main :: IO () main = readFile "unixdict.txt" >>= mapM_ (mapM_ print) . take 1 . uniqueGlyphCounts consonants . lines
("bremsstrahlung",9) ("comprehensible",9) ("crystallographer",9) ("crystallography",9) ("electroencephalogram",9) ("electroencephalography",9) ("handicraftsman",9) ("handicraftsmen",9) ("immunoelectrophoresis",9) ("incomprehensible",9) ("knightsbridge",9)
or adjusting the test above to return only words which use no consonant twice:
main :: IO () main = readFile "unixdict.txt" >>= mapM_ (mapM_ print) . fmap (filter noConsonantTwice) . take 1 . uniqueGlyphCounts consonants . lines noConsonantTwice :: (String, Int) -> Bool noConsonantTwice = uncurry ( (==) . length . filter (`S.member` consonants) )
("comprehensible",9)
J[edit]
>(#~ [: (= >./) #@(~.#~ ~.-:])@-.&'aeiou'@>) cutLF fread'unixdict.txt' comprehensible
JavaScript[edit]
For file IO, this version relies on the macOS ObjC classes exposed to JavaScript for Automation.
(() => { "use strict"; // ----- WORDS USING LARGEST SETS OF CONSONANTS ------ // uniqueGlyphCounts :: Int -> S.Set Char -> // [String] -> [[(String, Int)]] const uniqueGlyphCounts = n => // Words of length greater than n, tupled with the // size of their subset of used glyphs, and grouped // accordingly – sorted by descending set size. glyphSet => ws => groupBy( on(a => b => a === b)(snd) )( sortBy( flip(comparing(snd)) )( ws.flatMap( w => n < w.length ? [[ w, intersection(glyphSet)( new Set([...w]) ).size ]] : [] ) ) ); // noGlyphTwice :: Set Char -> (String, Int) -> Bool const noGlyphTwice = glyphs => // True if the number of characters in the string // that are included in glyphs matches the // precalculated size of the set of glyphs used. sn => sn[1] === [...sn[0]] .filter(c => glyphs.has(c)) .length; // ---------------------- TEST ----------------------- // main :: IO () const main = () => { const upperCs = ( enumFromToChar("A")("Z") ).filter(c => !"AEIOU".includes(c)), consonants = new Set( [...upperCs, ...upperCs.map(toLower)] ), noRepetition = noGlyphTwice(consonants); return take(1)( uniqueGlyphCounts(10)(consonants)( readFile("unixdict.txt").split("n") ) )[0].filter(noRepetition); }; // --------------------- GENERIC --------------------- // Tuple (,) :: a -> b -> (a, b) const Tuple = a => // A pair of values, possibly of // different types. b => ({ type: "Tuple", "0": a, "1": b, length: 2, *[Symbol.iterator]() { for (const k in this) { if (!isNaN(k)) { yield this[k]; } } } }); // comparing :: Ord a => (b -> a) -> b -> b -> Ordering const comparing = f => // The ordering of f(x) and f(y) as a value // drawn from {-1, 0, 1}, representing {LT, EQ, GT}. x => y => { const a = f(x), b = f(y); return a < b ? -1 : (a > b ? 1 : 0); }; // enumFromToChar :: Char -> Char -> [Char] const enumFromToChar = m => n => { const [intM, intN] = [m, n].map( x => x.codePointAt(0) ); return Array.from({ length: Math.floor(intN - intM) + 1 }, (_, i) => String.fromCodePoint(intM + i)); }; // flip :: (a -> b -> c) -> b -> a -> c const flip = op => // The binary function op with // its arguments reversed. 1 !== op.length ? ( (a, b) => op(b, a) ) : (a => b => op(b)(a)); // groupBy :: (a -> a -> Bool) -> [a] -> [[a]] const groupBy = eqOp => // A list of lists, each containing only elements // equal under the given equality operator, // such that the concatenation of these lists is xs. xs => Boolean(xs.length) ? (() => { const [h, ...t] = xs; const [groups, g] = t.reduce( ([gs, a], x) => eqOp(x)(a[0]) ? ( Tuple(gs)([...a, x]) ) : Tuple([...gs, a])([x]), Tuple([])([h]) ); return [...groups, g]; })() : []; // intersection :: Set -> Set -> Set const intersection = a => // The intersection of two sets. b => new Set([...a].filter(i => b.has(i))); // on :: (b -> b -> c) -> (a -> b) -> a -> a -> c const on = f => // e.g. groupBy(on(eq)(length)) g => a => b => f(g(a))(g(b)); // readFile :: FilePath -> IO String const readFile = fp => { // The contents of a text file at the // given file path. const e = $(), ns = $.NSString .stringWithContentsOfFileEncodingError( $(fp).stringByStandardizingPath, $.NSUTF8StringEncoding, e ); return ObjC.unwrap( ns.isNil() ? ( e.localizedDescription ) : ns ); }; // snd :: (a, b) -> b const snd = tpl => // Second member of a pair. tpl[1]; // sortBy :: (a -> a -> Ordering) -> [a] -> [a] const sortBy = f => // A copy of xs sorted by the comparator function f. xs => xs.slice() .sort((a, b) => f(a)(b)); // take :: Int -> [a] -> [a] // take :: Int -> String -> String const take = n => // The first n elements of a list, // string of characters, or stream. xs => "GeneratorFunction" !== xs .constructor.constructor.name ? ( xs.slice(0, n) ) : Array.from({ length: n }, () => { const x = xs.next(); return x.done ? [] : [x.value]; }).flat(); // toLower :: String -> String const toLower = s => // Lower-case version of string. s.toLocaleLowerCase(); // MAIN --- return JSON.stringify(main()); })();
[["comprehensible",9]]
jq[edit]
Works with: jq
Works with gojq, the Go implementation of jq
In this entry, two subtasks are considered:
(a) determine the eligible words with the maximal number of consonants;
(b) group the eligible words by the number of consonants, and show these groups if the number of consonants is greater than 7.
Preliminaries
# "bag of words" def bow(stream): reduce stream as $word ({}; .[($word|tostring)] += 1); # Given an array of values as input, generate a stream of values of the maximal elements as determined by f. # Notes: # 1. If the input is [] then the output stream is empty. # 2. If f evaluates to null for all the input elements, then the output stream will be the stream of all the input items. def maximal_by(f): (map(f) | max) as $mx | .[] | select(f == $mx); def consonants: gsub("[aeiou]";""); def letters_are_distinct: bow(explode[]) | all(.[]; . == 1);
The Tasks
def tasks: def taskA: maximal_by(.[1]) | .[0]; def taskB: map(select(.[1]|length > 7)) | group_by(.[1]) | map( .[0][1] as $m | [$m, map(.[0])] ) | .[] | if .[1]|length==1 then "nThe eligible word with (.[0]) consonants is:" else "nThe eligible words with (.[0]) consonants are:" end, .[1] ; [inputs | select(length>10) | consonants as $c | select($c | letters_are_distinct) | [., ($c|length)] ] | ("Eligible words with the maximal number of consonants:", taskA, taskB) ; tasks
Invocation example: jq -nRrM program.jq unixdict.txt
Eligible words with the maximal number of consonants: comprehensible The eligible words with 8 consonants are: ["administrable","anthropology","blameworthy","bluestocking","boustrophedon","bricklaying","chemisorption","christendom","claustrophobia","compensatory","comprehensive","counterexample","demonstrable","disciplinary","discriminable","geochemistry","hypertensive","indecipherable","indecomposable","indiscoverable","lexicography","manslaughter","misanthropic","mockingbird","monkeyflower","neuropathology","paralinguistic","pharmacology","pitchblende","playwriting","shipbuilding","shortcoming","springfield","stenography","stockholder","switchblade","switchboard","switzerland","thunderclap"] The eligible word with 9 consonants is: ["comprehensible"]
Julia[edit]
Translation of: Phix
consonant(ch) = !(ch in ['a', 'e', 'i', 'o', 'u']) singlec(consonants) = length(unique(consonants)) == length(consonants) over10sc(word) = length(word) > 10 && singlec(filter(consonant, word)) mostc(word) = [-length(filter(consonant, word)), word] const res = sort(map(mostc, filter(over10sc, split(read("unixdict.txt", String), r"s+")))) println(length(res), " words found.nnWord Consonantsn----------------------") foreach(a -> println(rpad(a[2], 16), -a[1]), res)
347 words found. Word Consonants ---------------------- comprehensible 9 administrable 8 anthropology 8 blameworthy 8 bluestocking 8 boustrophedon 8 bricklaying 8 chemisorption 8 christendom 8 claustrophobia 8 compensatory 8 comprehensive 8 counterexample 8 -- multiple lines deleted -- audiovisual 4 bourgeoisie 4 onomatopoeia 4
Mathematica/Wolfram Language[edit]
consonants = DeleteCases[Alphabet[], Alternatives @@ Characters["euioa"]]; dict = Once[Import["https://web.archive.org/web/20180611003215/http://www.puzzlers.org/pub/wordlists/unixdict.txt"]]; dict //= StringSplit[#, "n"] &; dict //= Select[StringLength /* GreaterThan[10]]; dict = {#, Select[Characters[#], MemberQ[consonants, #] &]} & /@ dict; dict //= Select[Last /* DuplicateFreeQ]; SortBy[GatherBy[dict, Last /* Length], First /* Last /* Length][[All, All, 1]] // Column
{audiovisual,bourgeoisie,onomatopoeia} {acquisition,acquisitive,acrimonious,ceremonious,deleterious,diatomaceous,egalitarian,equilibrate,equilibrium,equinoctial,expeditious,hereinabove,homogeneous,inequitable,injudicious,inoperative,inquisitive,interviewee,leeuwenhoek,onomatopoeic,radioactive,requisition} {aboveground,advantageous,adventurous,aerodynamic,anglophobia,anisotropic,archipelago,automorphic,baltimorean,beneficiary,borosilicate,cabinetmake,californium,codetermine,coextensive,comparative,compilation,composition,confabulate,confederate,considerate,consolidate,counterpoise,countervail,decisionmake,declamation,declaration,declarative,deemphasize,deformation,deliverance,demountable,denumerable,deoxyribose,depreciable,deprivation,destabilize,diagnosable,diamagnetic,dichotomize,dichotomous,disambiguate,eigenvector,elizabethan,encapsulate,enforceable,ephemerides,epidemiology,evolutionary,exceptional,exclamation,exercisable,exhaustible,exoskeleton,expenditure,experiential,exploration,fluorescein,geometrician,hemosiderin,hereinbelow,hermeneutic,heterogamous,heterogeneous,heterosexual,hexadecimal,hexafluoride,homebuilder,homogeneity,housebroken,icosahedral,icosahedron,impersonate,imprecision,improvisate,inadvisable,increasable,incredulous,indivisible,indomitable,ineradicable,inescapable,inestimable,inexcusable,infelicitous,informatica,informative,inseparable,insuperable,ionospheric,justiciable,kaleidescope,kaleidoscope,legerdemain,liquefaction,loudspeaker,machinelike,magisterial,maladaptive,mantlepiece,manufacture,masterpiece,meetinghouse,meteorology,minesweeper,ministerial,multifarious,musculature,observation,patrimonial,peasanthood,pediatrician,persecution,pertinacious,picturesque,planetarium,pleistocene,pomegranate,predominate,prejudicial,prohibition,prohibitive,prolegomena,prosecution,provisional,provocation,publication,quasiperiodic,reclamation,religiosity,renegotiable,residential,rooseveltian,safekeeping,saloonkeeper,serviceable,speedometer,subrogation,sulfonamide,superficial,superlative,teaspoonful,trapezoidal,tridiagonal,troublesome,vainglorious,valediction,venturesome,vermiculite,vocabularian,warehouseman,wisenheimer} {acknowledge,algorithmic,alphanumeric,ambidextrous,amphibology,anchoritism,atmospheric,autobiography,bakersfield,bartholomew,bidirectional,bloodstream,boardinghouse,cartilaginous,centrifugal,chamberlain,charlemagne,clairvoyant,combinatorial,compensable,complaisant,conflagrate,conglomerate,conquistador,consumptive,convertible,cosmopolitan,counterflow,countryside,countrywide,declamatory,decomposable,decomposition,deliquescent,description,descriptive,dilogarithm,discernible,discriminate,disturbance,documentary,earthmoving,encephalitis,endothermic,epistemology,everlasting,exchangeable,exclamatory,exclusionary,exculpatory,explanatory,extemporaneous,extravaganza,filamentary,fluorescent,galvanometer,geophysical,glycerinate,groundskeep,herpetology,heterozygous,homebuilding,honeysuckle,hydrogenate,hyperboloid,impenetrable,imperceivable,imperishable,imponderable,impregnable,improvident,improvisation,incomparable,incompatible,incomputable,incredulity,indefatigable,indigestible,indisputable,inexhaustible,inextricable,inhospitable,inscrutable,jurisdiction,lawbreaking,leatherback,leatherneck,leavenworth,logarithmic,loudspeaking,maidservant,malnourished,marketplace,merchandise,methodology,misanthrope,mitochondria,molybdenite,nearsighted,obfuscatory,oceanography,palindromic,paradigmatic,paramagnetic,perfectible,phraseology,politicking,predicament,presidential,problematic,proclamation,promiscuity,providential,purchasable,pythagorean,quasiparticle,quicksilver,radiotelephone,sedimentary,selfadjoint,serendipity,sovereignty,subjunctive,superfluity,terminology,valedictorian,valedictory,verisimilitude,vigilantism,voluntarism} {administrable,anthropology,blameworthy,bluestocking,boustrophedon,bricklaying,chemisorption,christendom,claustrophobia,compensatory,comprehensive,counterexample,demonstrable,disciplinary,discriminable,geochemistry,hypertensive,indecipherable,indecomposable,indiscoverable,lexicography,manslaughter,misanthropic,mockingbird,monkeyflower,neuropathology,paralinguistic,pharmacology,pitchblende,playwriting,shipbuilding,shortcoming,springfield,stenography,stockholder,switchblade,switchboard,switzerland,thunderclap} {comprehensible}
Nim[edit]
import strformat, strutils, tables const Vowels = {'a', 'e', 'i', 'o', 'u'} template plural(n: int): string = (if n > 1: "s" else: "") var results: array[0..9, seq[string]] for word in "unixdict.txt".lines: if word.len <= 10: continue block checkWord: let letterCounts = word.toCountTable var consonantCount = 0 for key, count in letterCounts.pairs: if key notin Vowels: if count > 1: break checkWord if count == 1: inc consonantCount results[consonantCount].add word for n in countdown(9, 4): let count = results[n].len echo &"nFound {count} word{plural(count)} with {n} unique consonants:" for i, word in results[n]: stdout.write word.align(14), if (i + 1) mod 9 == 0: 'n' else: ' ' echo()
Found 1 word with 9 unique consonants: comprehensible Found 39 words with 8 unique consonants: administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap Found 130 words with 7 unique consonants: acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism Found 152 words with 6 unique consonants: aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer Found 22 words with 5 unique consonants: acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition Found 3 words with 4 unique consonants: audiovisual bourgeoisie onomatopoeia
Perl[edit]
#!/usr/bin/perl use strict; # https://rosettacode.org/wiki/Find_words_which_contains_most_consonants use warnings; my @most; @ARGV = 'unixdict.txt'; length > 11 and !/([^aeiou]).*1/ and $most[ tr/aeioun//c ] .= $_ while <>; $most[$_] and printf "%d Unique consonants, word count: %dnn%snn", $_, $most[ $_ ] =~ tr/n//, $most[ $_ ] =~ tr/n/ /r =~ s/.{66}K /n/gr for reverse 0 .. $#most;
9 Unique consonants, word count: 1 comprehensible 8 Unique consonants, word count: 39 administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap 7 Unique consonants, word count: 130 acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism 6 Unique consonants, word count: 152 aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer 5 Unique consonants, word count: 22 acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition 4 Unique consonants, word count: 3 audiovisual bourgeoisie onomatopoeia
Phix[edit]
with javascript_semantics function consonant(integer ch) return find(ch,"aeiou")=0 end function function singlec(string consonants) return length(unique(consonants))=length(consonants) end function function over10sc(string word) return length(word)>10 and singlec(filter(word,consonant)) end function function mostc(string word) return {length(filter(word,consonant)),word} end function sequence res = sort_columns(apply(filter(unix_dict(),over10sc),mostc),{-1,2}) printf(1,"%d most consonant words: %vn",{length(res),shorten(res,"",2)})
It does not escape me that the use of lambda expressions would make this slightly easier to write but much harder to comprehend…
Admittedly adding a dozen or so line breaks to the above might (actually) improve matters, but I’m sure you’ll cope somehow.
347 most consonant words: {{9,"comprehensible"},{8,"administrable"},"...",{4,"bourgeoisie"},{4,"onomatopoeia"}}
Python[edit]
«Use Python,» they say, «it’s comprehensible,» they say.
print('n'.join((f'{x[0]}: {" ".join(sorted(x[1]))}' if len(x[1]) < 30 else f'{x[0]}: {len(x[1])} words' for x in (x for x in ((n, [x[1] for x in l if x[0] == n]) for n in range(maxlen, -1, -1)) if x[1]))) if (maxlen := max(l := [(len(c), w) for w in [l for l in [l.rstrip() for l in open('unixdict.txt')] if len(l) > 10 and all(c >= 'a' and c <= 'z' for c in l)] if sorted(c := w.replace('a', '').replace('e', '').replace('i', '').replace('o', '').replace('u', '')) == sorted(set(c))])[0]) else None)
9: comprehensible 8: 39 words 7: 130 words 6: 152 words 5: acquisition acquisitive ...<snip>... onomatopoeic radioactive requisition 4: audiovisual bourgeoisie onomatopoeia
The above is roughly equivalent to the following:
import re from collections import defaultdict with open('unixdict.txt') as f: lines = [l.rstrip() for l in f] # all lines of text without newline # keep only lines that's long enough and has no non-letters words = [w for w in lines if len(w) > 10 and not re.match(r'[^a-z]', w)] good = defaultdict(list) for word in words: # take all consonants in word c = re.sub(r'[aeiou]', '', word) # check if there are duplicates if sorted(c) == sorted(set(c)): good[len(c)].append(word) for k, v in sorted(good.items(), reverse=True): if len(v) > 30: print(f'{k}: {len(v)} words') else: print(f'{k}:', ' '.join(sorted(v)))
Or, aiming for some degree of legibility, and showing results for two of the possible interpretations of an ambiguous task description:
'''Words using largest sets of consonants''' from itertools import groupby from os.path import expanduser from string import ascii_letters # uniqueGlyphCounts :: Set Char -> [String] -> [[(String, Int)]] def uniqueGlyphCounts(glyphs): '''The words in a given list ordered and grouped by, the descending number of unique consonants which they contain, each word tupled with that number. ''' def go(ws): return [ list(snd(ab)) for ab in groupby( sorted( [ ( w, len(set(w).intersection(glyphs)) ) for w in ws ], key=snd, reverse=True ), key=snd ) ] return go # noGlyphRepeated :: Set Char -> (String, Int) -> Bool def noGlyphRepeated(glyphs): '''True if the string in a given (String, Int) tuple contains no multiple uses of any of the given set of glyphs. ''' def go(sn): s, n = sn return n == len([c for c in s if c in glyphs]) return go # ------------------------- TEST ------------------------- # main :: IO () def main(): '''Words drawn from a given list which use the largest set of consonants, and contain no repeated consonants. ''' consonants = set(ascii_letters).difference( set("AEIOUaeiou") ) largestConsonantSet = uniqueGlyphCounts(consonants)( readFile("unixdict.txt").splitlines() )[0] noConsonantsReused = noGlyphRepeated(consonants) print("Words using largest sets of unique consonants:") for x in largestConsonantSet: print(x) print("nExcluding words which reuse any consonants:") for sn in largestConsonantSet: if noConsonantsReused(sn): print(sn) # ----------------------- GENERIC ------------------------ # readFile :: FilePath -> IO String def readFile(fp): '''The contents of any file at the path derived by expanding any ~ in fp. ''' with open(expanduser(fp), 'r', encoding='utf-8') as f: return f.read() # snd :: (a, b) -> b def snd(tpl): '''Second member of a pair.''' return tpl[1] # MAIN --- if __name__ == '__main__': main()
Words using largest sets of unique consonants: ('bremsstrahlung', 9) ('comprehensible', 9) ('crystallographer', 9) ('crystallography', 9) ('electroencephalogram', 9) ('electroencephalography', 9) ('handicraftsman', 9) ('handicraftsmen', 9) ('immunoelectrophoresis', 9) ('incomprehensible', 9) ('knightsbridge', 9) Excluding words which reuse any consonants: ('comprehensible', 9)
Using generator functions[edit]
"""Find words which contain the most consonants. Requires Python >= 3.7.""" import fileinput import textwrap from itertools import groupby from operator import itemgetter from typing import Iterable from typing import List from typing import Tuple VOWELS = frozenset("aeiou") def read_words(path: str, encoding="utf-8") -> Iterable[str]: for line in fileinput.input(path, encoding=encoding): yield line.strip().lower() def filter_words(words: Iterable[str]) -> Iterable[Tuple[str, int]]: for word in words: if len(word) <= 10: continue consonants = [c for c in word if c not in VOWELS] if len(consonants) != len(set(consonants)): continue yield word, len(consonants) def group_words(words: Iterable[Tuple[str, int]]) -> Iterable[Tuple[int, List[str]]]: for count, group in groupby( sorted(words, key=itemgetter(1), reverse=True), key=itemgetter(1), ): yield count, [word for word, _ in group] def main() -> None: all_words = read_words("unixdict.txt") words = filter_words(all_words) for count, word_group in group_words(words): pretty_words = "n".join( textwrap.wrap(" ".join(word_group)), ) plural = "s" if count > 1 else "" print( f"Found {len(word_group)} word{plural} " f"with {count} unique consonants:n{pretty_words}n" ) if __name__ == "__main__": main()
Found 1 word with 9 unique consonants: comprehensible Found 39 words with 8 unique consonants: administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap Found 130 words with 7 unique consonants: acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism Found 152 words with 6 unique consonants: aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer Found 22 words with 5 unique consonants: acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition Found 3 words with 4 unique consonants: audiovisual bourgeoisie onomatopoeia
R[edit]
Far and away the hardest part of this task is filtering down the dict until it only contains words with no repeated consonants. If we only had to find the word with the most consonants, this would be easy.
dict <- scan("https://web.archive.org/web/20180611003215/http://www.puzzlers.org/pub/wordlists/unixdict.txt", what = character()) dictBig <- dict[nchar(dict) > 10] consonants <- letters[!letters %in% c("a", "e", "i", "o", "u")] #The following line is equivalent to sapply(consonants, function(x) stringr::str_count(dictBig, x)) #As with all things with strings in R, life is easier with stringr or stringi. consonantCount <- sapply(consonants, function(x) lengths(regmatches(dictBig, gregexec(x, dictBig)))) wordsWithNoRepeatedConsts <- dictBig[apply(consonantCount, MARGIN = 1, function(x) all(x <= 1))] uniqueConstCount <- rowSums(sapply(consonants, function(x) grepl(x, wordsWithNoRepeatedConsts))) biggestWords <- function(offset) wordsWithNoRepeatedConsts[which(uniqueConstCount == max(uniqueConstCount) - offset)] cat("Biggest:", paste(biggestWords(0), collapse = ", "), "n n Second biggest:", paste(biggestWords(1), collapse = ", "), "n n Third biggest:", paste(biggestWords(2), collapse = ", "))
Read 25104 items Biggest: comprehensible Second biggest: administrable, anthropology, blameworthy, bluestocking, boustrophedon, bricklaying, chemisorption, christendom, claustrophobia, compensatory, comprehensive, counterexample, demonstrable, disciplinary, discriminable, geochemistry, hypertensive, indecipherable, indecomposable, indiscoverable, lexicography, manslaughter, misanthropic, mockingbird, monkeyflower, neuropathology, paralinguistic, pharmacology, pitchblende, playwriting, shipbuilding, shortcoming, springfield, stenography, stockholder, switchblade, switchboard, switzerland, thunderclap Third biggest: acknowledge, algorithmic, alphanumeric, ambidextrous, amphibology, anchoritism, atmospheric, autobiography, bakersfield, bartholomew, bidirectional, bloodstream, boardinghouse, cartilaginous, centrifugal, chamberlain, charlemagne, clairvoyant, combinatorial, compensable, complaisant, conflagrate, conglomerate, conquistador, consumptive, convertible, cosmopolitan, counterflow, countryside, countrywide, declamatory, decomposable, decomposition, deliquescent, description, descriptive, dilogarithm, discernible, discriminate, disturbance, documentary, earthmoving, encephalitis, endothermic, epistemology, everlasting, exchangeable, exclamatory, exclusionary, exculpatory, explanatory, extemporaneous, extravaganza, filamentary, fluorescent, galvanometer, geophysical, glycerinate, groundskeep, herpetology, heterozygous, homebuilding, honeysuckle, hydrogenate, hyperboloid, impenetrable, imperceivable, imperishable, imponderable, impregnable, improvident, improvisation, incomparable, incompatible, incomputable, incredulity, indefatigable, indigestible, indisputable, inexhaustible, inextricable, inhospitable, inscrutable, jurisdiction, lawbreaking, leatherback, leatherneck, leavenworth, logarithmic, loudspeaking, maidservant, malnourished, marketplace, merchandise, methodology, misanthrope, mitochondria, molybdenite, nearsighted, obfuscatory, oceanography, palindromic, paradigmatic, paramagnetic, perfectible, phraseology, politicking, predicament, presidential, problematic, proclamation, promiscuity, providential, purchasable, pythagorean, quasiparticle, quicksilver, radiotelephone, sedimentary, selfadjoint, serendipity, sovereignty, subjunctive, superfluity, terminology, valedictorian, valedictory, verisimilitude, vigilantism, voluntarism
Racket[edit]
#lang racket (define (consonant-count s) (set-count (set-subtract (list->set (string->list s)) (set #a #e #i #o #u)))) (define words-by-consonant-count (group-by consonant-count (file->lines "../../data/unixdict.txt"))) (module+ main (define group-count (compose consonant-count first)) (define group-with-max-consonant-count (argmax group-count words-by-consonant-count)) (displayln "Group with gratest consonant count:") group-with-max-consonant-count (printf "with: ~a consonants in each word" (group-count group-with-max-consonant-count)))
Group with gratest consonant count: '("bremsstrahlung" "comprehensible" "crystallographer" "crystallography" "electroencephalogram" "electroencephalography" "handicraftsman" "handicraftsmen" "immunoelectrophoresis" "incomprehensible" "knightsbridge") with: 9 consonants in each word
Raku[edit]
Hmm. Depends on how you define «most».
unit sub MAIN ($min = 11); my @vowel = <a e i o u>; my $vowel = rx/ @vowel /; my @consonant = ('a'..'z').grep: { $_ ∉ @vowel }; my $consonant = rx/ @consonant /; say "Minimum characters in a word: $min"; say "Number found, consonant count and list of words with the largest absolute number of unique, unrepeated consonants:"; say +.value, ' @ ', $_ for 'unixdict.txt'.IO.words.grep( {.chars >= $min and so all(.comb.Bag{@consonant}) <= 1} ) .classify( { +.comb(/$consonant/) } ).sort(-*.key).head(2); say "nNumber found, ratio and list of words with the highest ratio of unique, unrepeated consonants to vowels:"; say +.value, ' @ ', $_ for 'unixdict.txt'.IO.slurp.words.grep( {.chars >= $min and so all(.comb.Bag{@consonant}) <= 1} ) .classify( { +.comb(/$vowel/) ?? (+.comb(/$consonant/) / +.comb(/$vowel/) ) !! Inf } ).sort(-*.key).head(3);
Minimum characters in a word: 11 Number found, consonant count and list of words with the largest absolute number of unique, unrepeated consonants: 1 @ 9 => [comprehensible] 39 @ 8 => [administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap] Number found, ratio and list of words with the highest ratio of unique, unrepeated consonants to vowels: 14 @ 2.666667 => [blameworthy bricklaying christendom mockingbird pitchblende playwriting shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap] 13 @ 2 => [anthropology bluestocking compensatory demonstrable disciplinary geochemistry hypertensive lexicography manslaughter misanthropic monkeyflower pharmacology shipbuilding] 1 @ 1.8 => [comprehensible]
Character count of 11 minimum is rather arbitrary. If we feed it a character count minimum of 5, the first one returns a pretty similar answer, 8 additional words at 8 consonants (all with 10 characters.)
The second would actually come up with some infinite ratios (since we somewhat bogusly don’t count ‘y’ as a vowel.):
Minimum characters in a word: 5 Number found, consonant count and list of words with the largest absolute number of unique, unrepeated consonants: 1 @ 9 => [comprehensible] 47 @ 8 => [administrable anthropology bankruptcy blacksmith blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample crankshaft demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography lynchburg manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwright playwriting shipbuilding shortcoming sprightly springfield stenography stockholder strickland stronghold switchblade switchboard switzerland thunderclap] Number found, ratio and list of words with the highest ratio of unique, unrepeated consonants to vowels: 6 @ Inf => [crypt glyph lymph lynch nymph psych] 2 @ 8 => [lynchburg sprightly] 5 @ 7 => [klystron mcknight schwartz skylight splotchy]
REXX[edit]
This REXX version doesn’t care what order the words in the dictionary are in, nor does it care what
case (lower/upper/mixed) the words are in, the search for the words is caseless.
It also allows the minimum length to be specified on the command line (CL) as well as the dictionary file identifier.
/*REXX pgm finds words (within an identified dict.) which contain the most consonants.*/ parse arg minl iFID . /*obtain optional arguments from the CL*/ if minl=='' | minl=="," then minl= 11 /*Not specified? Then use the default.*/ if iFID=='' | iFID=="," then iFID='unixdict.txt' /* " " " " " " */ do #=1 while lines(iFID)==0 /*read each word in the file (word=X).*/ x= strip( linein( iFID) ) /*pick off a word from the input line. */ @.#= x /*save: the original case of the word.*/ end /*#*/ #= # - 1 /*adjust word count because of DO loop.*/ say copies('─', 30) # "words in the dictionary file: " iFID xyz= 'bcdfghjklmnpqrstvwxyz'; upper xyz /*list of the 21 uppercase consonants. */ L= length(xyz) /*number of consonants in the alphabet.*/ maxCnt= 0 /*max # unique consonants in a max set.*/ !.=; !!.= 0 /* " " " " " " word. */ do j=1 for #; $= @.j; upper $ /*obtain an uppercased word from dict. */ if length($)<minl then iterate /*Is word long enough? No, then skip.*/ cnt= 0 /*the number of consonants (so far). */ do k=1 for L; q= substr(xyz, K, 1) /*examine all consonants for uniqueness*/ _= pos(q, $) if _==0 then iterate /*Is this consonant present? No, skip.*/ if pos(q, $, _ + 1)>0 then iterate j /*More than 1 same consonant? Then skip*/ cnt= cnt + 1 /*bump the number of consonants so far.*/ end /*k*/ !.cnt= !.cnt @.j /*append a word to a specific len list.*/ !!.cnt= cnt /*keep track of # of unique consonants.*/ maxCnt= max(maxCNT, cnt) /*save the maximum count (so far). */ end /*j*/ /*show sets of words, unique consonants*/ do m=maxCnt to 1 by -1; n= words(!.m) /*get the number of words in this set. */ if n==0 then iterate /*Any word in this set? No, then skip.*/ say; say /*show some blank lines between sets. */ do y=1 for n /*show individual words in the set. */ say right(y, L#)':' right( left( word(!.m, y), 30), 40) /*indent words.*/ end /*y*/ say copies('─', 30) n " word"s(n) 'found which have ' !!.m " unique" , "consonants and having a minimum word length of: " minl end /*m*/ exit 0 /*stick a fork in it, we're all done. */ /*──────────────────────────────────────────────────────────────────────────────────────*/ s: if arg(1)==1 then return arg(3); return word( arg(2) 's', 1)
- output when using the default inputs:
(Shown at three-quarter size.)
────────────────────────────── 25104 words in the dictionary file: unixdict.txt 1: comprehensible ────────────────────────────── 1 word found which have 9 unique consonants and having a minimum word length of: 11 1: administrable 2: anthropology 3: blameworthy 4: bluestocking 5: boustrophedon 6: bricklaying 7: chemisorption 8: christendom 9: claustrophobia 10: compensatory 11: comprehensive 12: counterexample 13: demonstrable 14: disciplinary 15: discriminable 16: geochemistry 17: hypertensive 18: indecipherable 19: indecomposable 20: indiscoverable 21: lexicography 22: manslaughter 23: misanthropic 24: mockingbird 25: monkeyflower 26: neuropathology 27: paralinguistic 28: pharmacology 29: pitchblende 30: playwriting 31: shipbuilding 32: shortcoming 33: springfield 34: stenography 35: stockholder 36: switchblade 37: switchboard 38: switzerland 39: thunderclap ────────────────────────────── 39 words found which have 8 unique consonants and having a minimum word length of: 11 1: acknowledge 2: algorithmic 3: alphanumeric 4: ambidextrous 5: amphibology 6: anchoritism 7: atmospheric 8: autobiography 9: bakersfield 10: bartholomew 11: bidirectional 12: bloodstream 13: boardinghouse 14: cartilaginous 15: centrifugal 16: chamberlain 17: charlemagne 18: clairvoyant 19: combinatorial 20: compensable 21: complaisant 22: conflagrate 23: conglomerate 24: conquistador 25: consumptive 26: convertible 27: cosmopolitan 28: counterflow 29: countryside 30: countrywide 31: declamatory 32: decomposable 33: decomposition 34: deliquescent 35: description 36: descriptive 37: dilogarithm 38: discernible 39: discriminate 40: disturbance 41: documentary 42: earthmoving 43: encephalitis 44: endothermic 45: epistemology 46: everlasting 47: exchangeable 48: exclamatory 49: exclusionary 50: exculpatory 51: explanatory 52: extemporaneous 53: extravaganza 54: filamentary 55: fluorescent 56: galvanometer 57: geophysical 58: glycerinate 59: groundskeep 60: herpetology 61: heterozygous 62: homebuilding 63: honeysuckle 64: hydrogenate 65: hyperboloid 66: impenetrable 67: imperceivable 68: imperishable 69: imponderable 70: impregnable 71: improvident 72: improvisation 73: incomparable 74: incompatible 75: incomputable 76: incredulity 77: indefatigable 78: indigestible 79: indisputable 80: inexhaustible 81: inextricable 82: inhospitable 83: inscrutable 84: jurisdiction 85: lawbreaking 86: leatherback 87: leatherneck 88: leavenworth 89: logarithmic 90: loudspeaking 91: maidservant 92: malnourished 93: marketplace 94: merchandise 95: methodology 96: misanthrope 97: mitochondria 98: molybdenite 99: nearsighted 100: obfuscatory 101: oceanography 102: palindromic 103: paradigmatic 104: paramagnetic 105: perfectible 106: phraseology 107: politicking 108: predicament 109: presidential 110: problematic 111: proclamation 112: promiscuity 113: providential 114: purchasable 115: pythagorean 116: quasiparticle 117: quicksilver 118: radiotelephone 119: sedimentary 120: selfadjoint 121: serendipity 122: sovereignty 123: subjunctive 124: superfluity 125: terminology 126: valedictorian 127: valedictory 128: verisimilitude 129: vigilantism 130: voluntarism ────────────────────────────── 130 words found which have 7 unique consonants and having a minimum word length of: 11 1: aboveground 2: advantageous 3: adventurous 4: aerodynamic 5: anglophobia 6: anisotropic 7: archipelago 8: automorphic 9: baltimorean 10: beneficiary 11: borosilicate 12: cabinetmake 13: californium 14: codetermine 15: coextensive 16: comparative 17: compilation 18: composition 19: confabulate 20: confederate 21: considerate 22: consolidate 23: counterpoise 24: countervail 25: decisionmake 26: declamation 27: declaration 28: declarative 29: deemphasize 30: deformation 31: deliverance 32: demountable 33: denumerable 34: deoxyribose 35: depreciable 36: deprivation 37: destabilize 38: diagnosable 39: diamagnetic 40: dichotomize 41: dichotomous 42: disambiguate 43: eigenvector 44: elizabethan 45: encapsulate 46: enforceable 47: ephemerides 48: epidemiology 49: evolutionary 50: exceptional 51: exclamation 52: exercisable 53: exhaustible 54: exoskeleton 55: expenditure 56: experiential 57: exploration 58: fluorescein 59: geometrician 60: hemosiderin 61: hereinbelow 62: hermeneutic 63: heterogamous 64: heterogeneous 65: heterosexual 66: hexadecimal 67: hexafluoride 68: homebuilder 69: homogeneity 70: housebroken 71: icosahedral 72: icosahedron 73: impersonate 74: imprecision 75: improvisate 76: inadvisable 77: increasable 78: incredulous 79: indivisible 80: indomitable 81: ineradicable 82: inescapable 83: inestimable 84: inexcusable 85: infelicitous 86: informatica 87: informative 88: inseparable 89: insuperable 90: ionospheric 91: justiciable 92: kaleidescope 93: kaleidoscope 94: legerdemain 95: liquefaction 96: loudspeaker 97: machinelike 98: magisterial 99: maladaptive 100: mantlepiece 101: manufacture 102: masterpiece 103: meetinghouse 104: meteorology 105: minesweeper 106: ministerial 107: multifarious 108: musculature 109: observation 110: patrimonial 111: peasanthood 112: pediatrician 113: persecution 114: pertinacious 115: picturesque 116: planetarium 117: pleistocene 118: pomegranate 119: predominate 120: prejudicial 121: prohibition 122: prohibitive 123: prolegomena 124: prosecution 125: provisional 126: provocation 127: publication 128: quasiperiodic 129: reclamation 130: religiosity 131: renegotiable 132: residential 133: rooseveltian 134: safekeeping 135: saloonkeeper 136: serviceable 137: speedometer 138: subrogation 139: sulfonamide 140: superficial 141: superlative 142: teaspoonful 143: trapezoidal 144: tridiagonal 145: troublesome 146: vainglorious 147: valediction 148: venturesome 149: vermiculite 150: vocabularian 151: warehouseman 152: wisenheimer ────────────────────────────── 152 words found which have 6 unique consonants and having a minimum word length of: 11 1: acquisition 2: acquisitive 3: acrimonious 4: ceremonious 5: deleterious 6: diatomaceous 7: egalitarian 8: equilibrate 9: equilibrium 10: equinoctial 11: expeditious 12: hereinabove 13: homogeneous 14: inequitable 15: injudicious 16: inoperative 17: inquisitive 18: interviewee 19: leeuwenhoek 20: onomatopoeic 21: radioactive 22: requisition ────────────────────────────── 22 words found which have 5 unique consonants and having a minimum word length of: 11 1: audiovisual 2: bourgeoisie 3: onomatopoeia ────────────────────────────── 3 words found which have 4 unique consonants and having a minimum word length of: 11
Ring[edit]
load "stdlib.ring" cStr = read("unixdict.txt") wordList = str2list(cStr) consonants = [] result = [] num = 0 see "working..." + nl ln = len(wordList) for n = ln to 1 step -1 if len(wordList[n]) < 11 del(wordList,n) ok next for n = 1 to len(wordList) flag = 1 numcon = 0 str = wordList[n] for m = 1 to len(str) - 1 for p = m+1 to len(str) if not isvowel(str[m]) and (str[m] = str[p]) flag = 0 exit 2 ok next next if flag = 1 add(consonants,wordList[n]) ok next for n = 1 to len(consonants) con = 0 str = consonants[n] for m = 1 to len(str) if not isvowel(str[m]) con = con + 1 ok next add(result,[consonants[n],con]) next result = sortsecond(result) result = reverse(result) for n = 1 to len(result) see "" + n + ". " + result[n][1] + " " + result[n][2] + nl next see "done..." + nl func sortsecond(alist) aList = sort(alist,2) for n=1 to len(alist)-1 for m=n to len(aList)-1 if alist[m+1][2] = alist[m][2] and strcmp(alist[m+1][1],alist[m][1]) > 0 temp = alist[m+1] alist[m+1] = alist[m] alist[m] = temp ok next next return aList
working... 1. comprehensible 9 2. administrable 8 3. anthropology 8 4. blameworthy 8 5. bluestocking 8 6. boustrophedon 8 7. bricklaying 8 8. chemisorption 8 9. christendom 8 10. claustrophobia 8 ... 50. bartholomew 7 51. bidirectional 7 52. bloodstream 7 53. boardinghouse 7 54. cartilaginous 7 55. centrifugal 7 56. chamberlain 7 57. charlemagne 7 58. clairvoyant 7 59. combinatorial 7 60. compensable 7 ... 180. beneficiary 6 181. borosilicate 6 182. cabinetmake 6 183. californium 6 184. codetermine 6 185. coextensive 6 186. comparative 6 187. compilation 6 188. composition 6 189. confabulate 6 190. confederate 6 ... 330. equilibrate 5 331. equilibrium 5 332. equinoctial 5 333. expeditious 5 334. hereinabove 5 335. interviewee 5 336. leeuwenhoek 5 337. homogeneous 5 338. inequitable 5 339. injudicious 5 340. onomatopoeic 5 ... 345. audiovisual 4 346. bourgeoisie 4 347. onomatopoeia 4 done...
Ruby[edit]
filtered = File.open("unixdict.txt").each( chomp: true).select do |word| next unless word.size > 10 cons = word.delete('aeiou') cons.chars.uniq.join == cons end grouped = filtered.group_by{|word| word.count('^aeiou')} grouped.sort_by{|k,v| -k}.each do |chunk| puts"n#{chunk.first} consonants (#{chunk.last.size}):" puts chunk.last.first(10) puts "..." if chunk.last.size > 10 end
9 consonants (1): comprehensible 8 consonants (39): administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory ... 7 consonants (130): acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew ... 6 consonants (152): aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary ... 5 consonants (22): acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial ... 4 consonants (3): audiovisual bourgeoisie onomatopoeia
TypeScript[edit]
import { readFileSync } from 'node:fs'; const words = readFileSync('unixdict.txt', { encoding: 'utf-8' }) .split('n') .filter(word => word.length > 10) .map(word => ({ word, wordWithoutVowels: word.replaceAll(/[aeiou]/g, '') })) .map(data => ({ ...data, numUniqueConsonants: new Set(data.wordWithoutVowels).size })) .filter(({ wordWithoutVowels, numUniqueConsonants }) => wordWithoutVowels.length === numUniqueConsonants); const groupedWords = groupBy(words, ({ numUniqueConsonants }) => numUniqueConsonants); const countsDescending = Array.from(groupedWords.keys()).sort((a, b) => b - a); for (const count of countsDescending) { const words = groupedWords.get(count)!.map(data => data.word); const output = words.length <= 30 ? words.join(' ') : `${words.length} words`; console.log(`${count}: ${output}`); } function groupBy<T, Group>(items: T[], getGroup: (item: T) => Group) { const result = new Map<Group, T[]>(); for (const item of items) { const group = getGroup(item); let array = result.get(group); if (!array) { array = []; result.set(group, array); } array.push(item); } return result; }
9: comprehensible 8: 39 words 7: 130 words 6: 152 words 5: acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition 4: audiovisual bourgeoisie onomatopoeia
VBScript[edit]
with createobject("ADODB.Stream") .charset ="UTF-8" .open .loadfromfile("unixdict.txt") s=.readtext end with a=split (s,vblf) dim b(25) 'strings with lists of words dim c(128) 'use regexp to count consonants with new regexp .pattern="([^aeiou])" .global=true for each i in a if len(trim(i))>10 then set matches= .execute(i) 'matches.count has the nr of consonants rep=false for each m in matches 'remove words with repeated consonants x=asc(m) c(x)=c(x)+1 if c(x)>1 then rep=true :exit for next erase c if not rep then 'add item to its list x1=matches.count b(x1)=b(x1)&" "&i 'create strings of words with same nr end if end if next end with 'print strings with most consonants first for i=25 to 0 step -1 if b(i)<>"" then wscript.echo i & " "& b(i) & vbcrlf next
9 comprehensible 8 administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap 7 acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable .....
Wren[edit]
import "io" for File import "/fmt" for Fmt import "/seq" for Lst var wordList = "unixdict.txt" // local copy var vowelIndices = [0, 4, 8, 14, 20] var words = File.read(wordList).trimEnd().split("n").where { |w| w.count > 10 } var wordGroups = List.filled(12, null) // should be enough for (i in 0..11) wordGroups[i] = [] for (word in words) { var letters = List.filled(26, 0) for (c in word) { var index = c.bytes[0] - 97 if (index >= 0 && index < 26) letters[index] = letters[index] + 1 } var eligible = true var uc = 0 // number of unique consonants for (i in 0..25) { if (!vowelIndices.contains(i)) { if (letters[i] > 1) { eligible = false break } else if (letters[i] == 1) { uc = uc + 1 } } } if (eligible) wordGroups[uc].add(word) } for (i in 11..0) { var count = wordGroups[i].count if (count > 0) { var s = (count == 1) ? "" : "s" System.print("%(count) word%(s) found with %(i) unique consonants:") for (chunk in Lst.chunks(wordGroups[i], 5)) Fmt.print("$-14s", chunk) System.print() } }
1 word found with 9 unique consonants: comprehensible 39 words found with 8 unique consonants: administrable anthropology blameworthy bluestocking boustrophedon bricklaying chemisorption christendom claustrophobia compensatory comprehensive counterexample demonstrable disciplinary discriminable geochemistry hypertensive indecipherable indecomposable indiscoverable lexicography manslaughter misanthropic mockingbird monkeyflower neuropathology paralinguistic pharmacology pitchblende playwriting shipbuilding shortcoming springfield stenography stockholder switchblade switchboard switzerland thunderclap 130 words found with 7 unique consonants: acknowledge algorithmic alphanumeric ambidextrous amphibology anchoritism atmospheric autobiography bakersfield bartholomew bidirectional bloodstream boardinghouse cartilaginous centrifugal chamberlain charlemagne clairvoyant combinatorial compensable complaisant conflagrate conglomerate conquistador consumptive convertible cosmopolitan counterflow countryside countrywide declamatory decomposable decomposition deliquescent description descriptive dilogarithm discernible discriminate disturbance documentary earthmoving encephalitis endothermic epistemology everlasting exchangeable exclamatory exclusionary exculpatory explanatory extemporaneous extravaganza filamentary fluorescent galvanometer geophysical glycerinate groundskeep herpetology heterozygous homebuilding honeysuckle hydrogenate hyperboloid impenetrable imperceivable imperishable imponderable impregnable improvident improvisation incomparable incompatible incomputable incredulity indefatigable indigestible indisputable inexhaustible inextricable inhospitable inscrutable jurisdiction lawbreaking leatherback leatherneck leavenworth logarithmic loudspeaking maidservant malnourished marketplace merchandise methodology misanthrope mitochondria molybdenite nearsighted obfuscatory oceanography palindromic paradigmatic paramagnetic perfectible phraseology politicking predicament presidential problematic proclamation promiscuity providential purchasable pythagorean quasiparticle quicksilver radiotelephone sedimentary selfadjoint serendipity sovereignty subjunctive superfluity terminology valedictorian valedictory verisimilitude vigilantism voluntarism 152 words found with 6 unique consonants: aboveground advantageous adventurous aerodynamic anglophobia anisotropic archipelago automorphic baltimorean beneficiary borosilicate cabinetmake californium codetermine coextensive comparative compilation composition confabulate confederate considerate consolidate counterpoise countervail decisionmake declamation declaration declarative deemphasize deformation deliverance demountable denumerable deoxyribose depreciable deprivation destabilize diagnosable diamagnetic dichotomize dichotomous disambiguate eigenvector elizabethan encapsulate enforceable ephemerides epidemiology evolutionary exceptional exclamation exercisable exhaustible exoskeleton expenditure experiential exploration fluorescein geometrician hemosiderin hereinbelow hermeneutic heterogamous heterogeneous heterosexual hexadecimal hexafluoride homebuilder homogeneity housebroken icosahedral icosahedron impersonate imprecision improvisate inadvisable increasable incredulous indivisible indomitable ineradicable inescapable inestimable inexcusable infelicitous informatica informative inseparable insuperable ionospheric justiciable kaleidescope kaleidoscope legerdemain liquefaction loudspeaker machinelike magisterial maladaptive mantlepiece manufacture masterpiece meetinghouse meteorology minesweeper ministerial multifarious musculature observation patrimonial peasanthood pediatrician persecution pertinacious picturesque planetarium pleistocene pomegranate predominate prejudicial prohibition prohibitive prolegomena prosecution provisional provocation publication quasiperiodic reclamation religiosity renegotiable residential rooseveltian safekeeping saloonkeeper serviceable speedometer subrogation sulfonamide superficial superlative teaspoonful trapezoidal tridiagonal troublesome vainglorious valediction venturesome vermiculite vocabularian warehouseman wisenheimer 22 words found with 5 unique consonants: acquisition acquisitive acrimonious ceremonious deleterious diatomaceous egalitarian equilibrate equilibrium equinoctial expeditious hereinabove homogeneous inequitable injudicious inoperative inquisitive interviewee leeuwenhoek onomatopoeic radioactive requisition 3 words found with 4 unique consonants: audiovisual bourgeoisie onomatopoeia
XPL0[edit]
string 0; use zero-terminated strings int MaxCon, Con, Set, I, Ch; char Word(25), MaxWord(25); def LF=$0A, CR=$0D, EOF=$1A; [FSet(FOpen("unixdict.txt", 0), ^I); OpenI(3); MaxCon:= 0; repeat I:= 0; Con:= 0; Set:= 0; loop [repeat Ch:= ChIn(3) until Ch # CR; remove possible CR if Ch=LF or Ch=EOF then quit; Word(I):= Ch; I:= I+1; case Ch of ^a,^e,^i,^o,^u: [] assume lowercase words other [Con:= Con+1; count constant if Set & 1<<(Ch-^a) then Con:= 0; reject if not unique Set:= Set ! 1<<(Ch-^a); ]; ]; Word(I):= 0; terminate string if Con > MaxCon then save Word with maximum [MaxCon:= Con; constants CopyMem(MaxWord, Word, 25); ]; until Ch = EOF; Text(0, MaxWord); ]
comprehensible