Find words which contain the most consonants: Difference between revisions

Added C++ solution
(Added C++ solution)
Line 233:
9 1 comprehensible
347 words
</pre>
 
=={{header|C++}}==
<lang cpp>#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.
int consonants(const std::string& word) {
int total = 0;
int count[26] = {};
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:
if (count[ch - 'a']++ != 0)
return 0;
++total;
break;
}
}
return total;
}
 
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<int, std::vector<std::string>, std::greater<int>> map;
while (getline(in, word)) {
if (word.size() <= 10)
continue;
int 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;
}</lang>
 
{{out}}
<pre style="height: 40em">
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
 
</pre>
 
1,777

edits