/*
 *  This file is part of Empirical, https://github.com/devosoft/Empirical
 *  Copyright (C) Michigan State University, MIT Software license; see doc/LICENSE.md
 *  date: 2020.
*/
/**
 *  @file
 *  @brief A method for mapping hash values to intuitive names.
 */

#ifndef EMP_TOOLS_HASH_NAMIFY_HPP_INCLUDE
#define EMP_TOOLS_HASH_NAMIFY_HPP_INCLUDE

#include <stddef.h>
#include <string>

#include "../base/vector.hpp"

#include "string_utils.hpp"

namespace emp {

#ifndef DOXYGEN_SHOULD_SKIP_THIS
namespace internal {

  const emp::vector<std::string> adjectives{
    "aback",
    "abaft",
    "abandoned",
    "abashed",
    "aberrant",
    "abhorrent",
    "abiding",
    "abject",
    "ablaze",
    "able",
    "abnormal",
    "aboard",
    "aboriginal",
    "abortive",
    "abounding",
    "abrasive",
    "abrupt",
    "absent",
    "absolute",
    "absorbed",
    "absorbing",
    "abstracted",
    "abstruse",
    "absurd",
    "abundant",
    "abusive",
    "academic",
    "acceptable",
    "accessible",
    "accidental",
    "acclaimed",
    "accomplished",
    "accurate",
    "acerbic",
    "aching",
    "acid",
    "acidic",
    "acoustic",
    "acrid",
    "acrobatic",
    "active",
    "actual",
    "actually",
    "adamant",
    "adaptable",
    "addicted",
    "adept",
    "adhesive",
    "adhoc",
    "adjoining",
    "admirable",
    "admired",
    "adolescent",
    "adorable",
    "adored",
    "advanced",
    "adventurous",
    "affectionate",
    "affordable",
    "afraid",
    "aged",
    "aggravating",
    "aggressive",
    "agile",
    "agitated",
    "agonizing",
    "agreeable",
    "ahead",
    "ajar",
    "alarmed",
    "alarming",
    "alcoholic",
    "alert",
    "alien",
    "alienated",
    "alike",
    "alive",
    "all",
    "alleged",
    "alluring",
    "aloof",
    "altruistic",
    "amazed",
    "amazing",
    "ambiguous",
    "ambitious",
    "amiable",
    "amicable",
    "ample",
    "amuck",
    "amused",
    "amusing",
    "anchored",
    "ancient",
    "angelic",
    "angry",
    "anguished",
    "animated",
    "annoyed",
    "annoying",
    "annual",
    "another",
    "antique",
    "antsy",
    "anxious",
    "any",
    "apathetic",
    "appetizing",
    "appreciative",
    "apprehensive",
    "appropriate",
    "apt",
    "aquatic",
    "arctic",
    "arid",
    "aromatic",
    "arrogant",
    "artificial",
    "artistic",
    "ashamed",
    "ashy",
    "aspiring",
    "assertive",
    "assorted",
    "assured",
    "astonishing",
    "athletic",
    "attached",
    "attentive",
    "attracted",
    "attractive",
    "auspicious",
    "austere",
    "authentic",
    "authorized",
    "automatic",
    "available",
    "avaricious",
    "average",
    "awake",
    "aware",
    "awesome",
    "awful",
    "awkward",
    "axiomatic",
    "babyish",
    "back",
    "bad",
    "baggy",
    "balanced",
    "bald",
    "barbaric",
    "barbarous",
    "barbecued",
    "bare",
    "barren",
    "bashful",
    "basic",
    "batty",
    "bawdy",
    "beatable",
    "beaten",
    "beautiful",
    "beefy",
    "befitting",
    "belated",
    "believing",
    "belligerent",
    "beloved",
    "beneficent",
    "beneficial",
    "bent",
    "berserk",
    "best",
    "better",
    "bewildered",
    "bewitched",
    "big",
    "bigheaded",
    "bighearted",
    "billowy",
    "biodegradable",
    "bionic",
    "biting",
    "bitter",
    "biweekly",
    "bizarre",
    "black",
    "bland",
    "blank",
    "blaring",
    "bleak",
    "blessed",
    "blind",
    "blindfolded",
    "blinding",
    "blissful",
    "blond",
    "bloodcurdling",
    "blue",
    "blunt",
    "blushing",
    "bogus",
    "boiling",
    "boisterous",
    "bold",
    "boney",
    "bony",
    "boorish",
    "borderline",
    "bored",
    "boring",
    "bossy",
    "both",
    "bouncy",
    "boundless",
    "bountiful",
    "bowed",
    "brainy",
    "brash",
    "brave",
    "brawny",
    "breakable",
    "breathless",
    "breeze",
    "breezy",
    "brief",
    "bright",
    "brilliant",
    "brisk",
    "british",
    "broad",
    "broken",
    "brokenhearted",
    "bronze",
    "brown",
    "bruised",
    "bubbly",
    "buff",
    "bulky",
    "bullying",
    "bumpy",
    "bungling",
    "buoyant",
    "burdensome",
    "burly",
    "bushy",
    "businesslike",
    "bustling",
    "busy",
    "buttery",
    "buzzing",
    "cagey",
    "calculating",
    "callous",
    "calm",
    "candid",
    "candy",
    "canine",
    "cantankerous",
    "capable",
    "capital",
    "capricious",
    "carefree",
    "careful",
    "careless",
    "caring",
    "carved",
    "caustic",
    "cautious",
    "cavernous",
    "ceaseless",
    "celebrated",
    "center",
    "centralized",
    "certain",
    "certifiable",
    "chainlike",
    "chancy",
    "changeable",
    "chaotic",
    "charming",
    "cheap",
    "cheeky",
    "cheerful",
    "cheering",
    "cheery",
    "cheesy",
    "chemical",
    "chewable",
    "chic",
    "chicken",
    "chief",
    "childish",
    "childlike",
    "chilling",
    "chilly",
    "chintzy",
    "chivalrous",
    "chubby",
    "chunky",
    "churlish",
    "circular",
    "circumspect",
    "civil",
    "clammy",
    "classic",
    "classy",
    "clean",
    "clear",
    "clenched",
    "clever",
    "clinical",
    "cloistered",
    "close",
    "closed",
    "cloudy",
    "clueless",
    "clumsy",
    "cluttered",
    "coarse",
    "cobwebby",
    "coherent",
    "coincidental",
    "cold",
    "coldhearted",
    "colorful",
    "colorless",
    "colossal",
    "comatose",
    "combatant",
    "combative",
    "combinable",
    "combinatory",
    "combined",
    "combustible",
    "combustive",
    "comfortable",
    "comforted",
    "comfortless",
    "common",
    "communicative",
    "compassionate",
    "competent",
    "complete",
    "complex",
    "complicated",
    "composed",
    "conceited",
    "concerned",
    "concrete",
    "condemned",
    "condescending",
    "confident",
    "confused",
    "conscientious",
    "conscious",
    "considerate",
    "constant",
    "contemplative",
    "content",
    "controlling",
    "conventional",
    "convincing",
    "convivial",
    "convoluted",
    "cooing",
    "cooked",
    "cool",
    "cooperative",
    "coordinated",
    "cordial",
    "corny",
    "corrupt",
    "costly",
    "courageous",
    "course",
    "courteous",
    "cowardly",
    "crabby",
    "crafty",
    "cranky",
    "crashing",
    "craven",
    "crazy",
    "creamy",
    "creative",
    "credal",
    "credible",
    "credulous",
    "creepy",
    "criminal",
    "crisp",
    "critical",
    "crooked",
    "crowded",
    "crucial",
    "cruel",
    "crushing",
    "cuddly",
    "cultivated",
    "cultured",
    "cumbersome",
    "curious",
    "curly",
    "curved",
    "curvy",
    "cut",
    "cute",
    "cylindrical",
    "cynical",
    "daffy",
    "daily",
    "dainty",
    "damaged",
    "damaging",
    "damn",
    "damned",
    "damp",
    "dangerous",
    "dapper",
    "daredevil",
    "daring",
    "dark",
    "darkish",
    "darling",
    "dashing",
    "dated",
    "dazzling",
    "dead",
    "deadly",
    "deadpan",
    "deafening",
    "dear",
    "dearest",
    "debonair",
    "decayed",
    "deceitful",
    "decent",
    "decimal",
    "decisive",
    "decorous",
    "deep",
    "deeply",
    "defeated",
    "defective",
    "defenseless",
    "defensive",
    "defiant",
    "deficient",
    "definite",
    "definitive",
    "delayed",
    "delectable",
    "delicate",
    "delicious",
    "delightful",
    "delirious",
    "demanding",
    "demolished",
    "demonic",
    "demoralized",
    "demure",
    "dense",
    "dental",
    "dependable",
    "dependent",
    "depraved",
    "depressed",
    "deranged",
    "descriptive",
    "deserted",
    "despicable",
    "detailed",
    "determined",
    "deviant",
    "devilish",
    "devoted",
    "dextrous",
    "didactic",
    "different",
    "difficult",
    "digital",
    "dilapidated",
    "diligent",
    "dim",
    "diminutive",
    "dimpled",
    "dimwitted",
    "diplomatic",
    "direct",
    "direful",
    "dirty",
    "disagreeable",
    "disappointed",
    "disastrous",
    "discerning",
    "discreet",
    "discrete",
    "disfigured",
    "disguised",
    "disgusted",
    "disgusting",
    "dishonest",
    "disillusioned",
    "disloyal",
    "dismal",
    "dispensable",
    "disruptive",
    "distant",
    "distinct",
    "distorted",
    "distracted",
    "distraught",
    "distressed",
    "distrustful",
    "disturbed",
    "divergent",
    "divine",
    "dizzy",
    "domineering",
    "dopey",
    "doting",
    "double",
    "doubtful",
    "dowdy",
    "downright",
    "drab",
    "draconian",
    "drafty",
    "drained",
    "dramatic",
    "dreadful",
    "dreary",
    "drooling",
    "droopy",
    "drowsy",
    "drugged",
    "drunk",
    "dry",
    "dual",
    "dull",
    "dusty",
    "dutiful",
    "dynamic",
    "dysfunctional",
    "each",
    "eager",
    "early",
    "earnest",
    "earsplitting",
    "earthy",
    "easy",
    "easygoing",
    "eatable",
    "echoing",
    "economic",
    "ecstatic",
    "edible",
    "educated",
    "eerie",
    "efficacious",
    "efficient",
    "eight",
    "elaborate",
    "elastic",
    "elated",
    "elderly",
    "electric",
    "elegant",
    "elementary",
    "elfin",
    "elite",
    "elliptical",
    "emaciated",
    "embarrassed",
    "embellished",
    "eminent",
    "emotional",
    "empowered",
    "empowering",
    "empty",
    "enchanted",
    "enchanting",
    "encouraging",
    "endurable",
    "energetic",
    "engrossed",
    "enlightened",
    "enormous",
    "enraged",
    "enterprising",
    "entertaining",
    "enthusiastic",
    "entire",
    "envious",
    "equable",
    "equal",
    "equatorial",
    "erect",
    "erratic",
    "essential",
    "esteemed",
    "ethereal",
    "ethical",
    "euphoric",
    "evanescent",
    "evasive",
    "even",
    "evergreen",
    "everlasting",
    "every",
    "evil",
    "exacting",
    "exalted",
    "exasperated",
    "exasperating",
    "excellent",
    "exceptionable",
    "excitable",
    "excited",
    "exciting",
    "exclusive",
    "exemplary",
    "exhausted",
    "exhilarated",
    "exotic",
    "expectant",
    "expedient",
    "expensive",
    "experienced",
    "expert",
    "extensive",
    "extraneous",
    "extraordinary",
    "extreme",
    "extroverted",
    "exuberant",
    "exultant",
    "fabulous",
    "faded",
    "failing",
    "faint",
    "fainthearted",
    "fair",
    "faith",
    "faithful",
    "fake",
    "fallacious",
    "false",
    "familiar",
    "famous",
    "fanatical",
    "fanciful",
    "fancy",
    "fanlike",
    "fantabulous",
    "fantastic",
    "far",
    "faraway",
    "farming",
    "fascinated",
    "fast",
    "fastidious",
    "fat",
    "fatal",
    "fatherly",
    "faulty",
    "favorable",
    "favorite",
    "fearful",
    "fearless",
    "feeble",
    "feigned",
    "feisty",
    "feline",
    "female",
    "feminine",
    "ferocious",
    "fertile",
    "fervent",
    "festive",
    "few",
    "fickle",
    "fierce",
    "fiery",
    "fighting",
    "filthy",
    "fine",
    "finicky",
    "finished",
    "firm",
    "first",
    "firsthand",
    "fit",
    "fitting",
    "five",
    "fixed",
    "flabby",
    "flagrant",
    "flaky",
    "flamboyant",
    "flashy",
    "flat",
    "flawed",
    "flawless",
    "flickering",
    "flighty",
    "flimsy",
    "flippant",
    "floppy",
    "flowery",
    "flowing",
    "fluffy",
    "flufy",
    "fluid",
    "flustered",
    "fluttering",
    "foamy",
    "focused",
    "fond",
    "foolhardy",
    "foolish",
    "forceful",
    "foregoing",
    "forgetful",
    "forked",
    "formal",
    "forsaken",
    "forthright",
    "fortunate",
    "four",
    "fragile",
    "fragrant",
    "frail",
    "frank",
    "frantic",
    "frayed",
    "free",
    "freezing",
    "French",
    "frequent",
    "fresh",
    "fretful",
    "friendly",
    "frightened",
    "frightening",
    "frightful",
    "frigid",
    "frilly",
    "frivolous",
    "frizzy",
    "front",
    "frosty",
    "frothy",
    "frozen",
    "frugal",
    "fruitful",
    "frustrating",
    "full",
    "fumbling",
    "functional",
    "funny",
    "furry",
    "furtive",
    "fusion",
    "fussy",
    "future",
    "futuristic",
    "fuzzy",
    "gabby",
    "gainful",
    "gamy",
    "gaping",
    "gargantuan",
    "garrulous",
    "gaseous",
    "gasping",
    "gaudy",
    "general",
    "generous",
    "gentle",
    "genuine",
    "geographic",
    "geometrical",
    "ghastly",
    "ghostly",
    "ghoulish",
    "giant",
    "giddy",
    "gifted",
    "gigantic",
    "giving",
    "glamorous",
    "glaring",
    "glass",
    "gleaming",
    "gleeful",
    "glib",
    "glinting",
    "glistening",
    "glittering",
    "gloomy",
    "glorious",
    "glossy",
    "glottal",
    "glued",
    "glum",
    "glutinous",
    "gobsmacked",
    "godly",
    "golden",
    "good",
    "goofy",
    "goosey",
    "gorgeous",
    "gory",
    "gossipy",
    "graceful",
    "gracious",
    "grand",
    "grandiose",
    "granular",
    "grateful",
    "gratis",
    "grave",
    "gray",
    "greasy",
    "great",
    "greedy",
    "green",
    "gregarious",
    "grey",
    "grieving",
    "grim",
    "grimy",
    "gripping",
    "grisly",
    "gritty",
    "grizzled",
    "groggy",
    "groovy",
    "groping",
    "gross",
    "grotesque",
    "grouchy",
    "grounded",
    "groveling",
    "growing",
    "growling",
    "grown",
    "grubby",
    "gruesome",
    "grumpy",
    "guarded",
    "guiltless",
    "guilty",
    "gullible",
    "gummy",
    "gusty",
    "guttural",
    "habitual",
    "hairless",
    "hairy",
    "half",
    "hallowed",
    "hallucinating",
    "hallucinogenic",
    "halting",
    "handmade",
    "handsewn",
    "handsome",
    "handsomely",
    "handwritten",
    "handy",
    "hanging",
    "hapless",
    "happy",
    "hard",
    "hardheaded",
    "harebrained",
    "harmful",
    "harmless",
    "harmonious",
    "harsh",
    "hasty",
    "hateful",
    "haunted",
    "haunting",
    "hawaiian",
    "heady",
    "healing",
    "healthful",
    "healthy",
    "heartbreaking",
    "heartbroken",
    "heartfelt",
    "heartsick",
    "hearty",
    "heavenly",
    "heavy",
    "hefty",
    "hellish",
    "helpful",
    "helpless",
    "hesitant",
    "hidden",
    "hideous",
    "high",
    "highfalutin",
    "hilarious",
    "hippie",
    "hissing",
    "historical",
    "hoarse",
    "holistic",
    "hollow",
    "homeless",
    "homely",
    "honest",
    "honorable",
    "honored",
    "hope",
    "hopeful",
    "horrible",
    "horrific",
    "hospitable",
    "hot",
    "howling",
    "huge",
    "hulking",
    "humble",
    "humdrum",
    "humiliating",
    "humming",
    "humongous",
    "humorous",
    "hungry",
    "hurried",
    "hurt",
    "hurtful",
    "hushed",
    "husky",
    "hypercritical",
    "hypnotic",
    "hysterical",
    "icky",
    "icy",
    "ideal",
    "idealistic",
    "identical",
    "idiotic",
    "idle",
    "idolized",
    "ignorant",
    "ill",
    "illegal",
    "illiterate",
    "illogical",
    "illustrious",
    "imaginary",
    "imaginative",
    "immaculate",
    "immaterial",
    "immature",
    "immediate",
    "immense",
    "imminent",
    "immodest",
    "impartial",
    "impassioned",
    "impatient",
    "impeccable",
    "imperfect",
    "imperturbable",
    "impish",
    "impolite",
    "important",
    "imported",
    "impossible",
    "impractical",
    "impressionable",
    "impressive",
    "improbable",
    "impulsive",
    "impure",
    "inactive",
    "inappropriate",
    "inborn",
    "incandescent",
    "incisive",
    "incomparable",
    "incompatible",
    "incompetent",
    "incomplete",
    "inconclusive",
    "inconsequential",
    "inconsiderate",
    "inconsistent",
    "incredible",
    "indefatigable",
    "indelible",
    "independent",
    "indiscreet",
    "indolent",
    "industrious",
    "inexpensive",
    "inexperienced",
    "infamous",
    "infantile",
    "infatuated",
    "inferior",
    "infinite",
    "informal",
    "innate",
    "innocent",
    "inquisitive",
    "insane",
    "insecure",
    "insensitive",
    "insidious",
    "insignificant",
    "insistent",
    "inspiring",
    "instinctive",
    "instructive",
    "insubstantial",
    "intelligent",
    "intent",
    "intentional",
    "interesting",
    "internal",
    "international",
    "intolerant",
    "intrepid",
    "intrigued",
    "intuitive",
    "inventive",
    "invincible",
    "involved",
    "irascible",
    "irate",
    "ironclad",
    "irresistible",
    "irresponsible",
    "irritable",
    "irritating",
    "itchy",
    "jaded",
    "jagged",
    "jaunty",
    "jazzy",
    "jealous",
    "jittery",
    "jobless",
    "joint",
    "jolly",
    "jovial",
    "joyful",
    "joyous",
    "jubilant",
    "judgmental",
    "judicious",
    "juicy",
    "jumbled",
    "jumbo",
    "jumpy",
    "junior",
    "juvenile",
    "kaleidoscopic",
    "kaput",
    "keen",
    "key",
    "kind",
    "kindhearted",
    "kindly",
    "klutzy",
    "knobby",
    "knotty",
    "knowing",
    "knowledgeable",
    "known",
    "kooky",
    "kosher",
    "labored",
    "lackadaisical",
    "lacking",
    "lame",
    "lamentable",
    "languid",
    "lanky",
    "large",
    "last",
    "lasting",
    "late",
    "laughable",
    "lavish",
    "lawful",
    "lazy",
    "leading",
    "leafy",
    "lean",
    "learned",
    "leery",
    "left",
    "legal",
    "legitimate",
    "lemon",
    "lethal",
    "lethargic",
    "level",
    "lewd",
    "light",
    "lighthearted",
    "likable",
    "like",
    "likeable",
    "likely",
    "liking",
    "limited",
    "limp",
    "limping",
    "linear",
    "lined",
    "liquid",
    "listless",
    "literate",
    "lithe",
    "little",
    "live",
    "lively",
    "livid",
    "living",
    "loathsome",
    "local",
    "logical",
    "lone",
    "lonely",
    "long",
    "longing",
    "loose",
    "lopsided",
    "lost",
    "loud",
    "loutish",
    "lovable",
    "lovely",
    "loving",
    "low",
    "lowly",
    "loyal",
    "lucky",
    "ludicrous",
    "lumbering",
    "luminous",
    "lumpy",
    "lush",
    "lusting",
    "lustrous",
    "luxuriant",
    "luxurious",
    "lying",
    "lyrical",
    "macabre",
    "macho",
    "mad",
    "maddening",
    "madly",
    "magenta",
    "magic",
    "magical",
    "magnificent",
    "majestic",
    "major",
    "makeshift",
    "male",
    "malicious",
    "mammoth",
    "mango",
    "maniacal",
    "many",
    "marked",
    "married",
    "marvelous",
    "masculine",
    "masked",
    "massive",
    "material",
    "materialistic",
    "maternal",
    "mature",
    "meager",
    "mealy",
    "mean",
    "measly",
    "meaty",
    "meddlesome",
    "medical",
    "mediocre",
    "medium",
    "meek",
    "melancholy",
    "mellow",
    "melodic",
    "melted",
    "memorable",
    "menacing",
    "merciful",
    "mercurial",
    "mere",
    "merry",
    "messy",
    "metallic",
    "methodical",
    "meticulous",
    "microscopic",
    "mighty",
    "mild",
    "military",
    "milky",
    "mindless",
    "miniature",
    "minor",
    "minty",
    "minute",
    "misbehaving",
    "miscreant",
    "miserable",
    "miserly",
    "misguided",
    "mistaken",
    "misty",
    "mixed",
    "moaning",
    "modern",
    "modest",
    "moist",
    "moldy",
    "momentous",
    "monster",
    "monstrous",
    "monthly",
    "monumental",
    "moody",
    "moonlit",
    "moral",
    "morbid",
    "moronic",
    "morose",
    "mortified",
    "motherly",
    "motionless",
    "motivated",
    "mountainous",
    "muddled",
    "muddy",
    "muffled",
    "multicolored",
    "mundane",
    "murky",
    "muscular",
    "mushy",
    "musical",
    "musty",
    "mute",
    "muted",
    "mysterious",
    "naive",
    "naked",
    "nappy",
    "narrow",
    "nasty",
    "natural",
    "naughty",
    "nauseating",
    "nautical",
    "near",
    "neat",
    "nebulous",
    "necessary",
    "needless",
    "needy",
    "negative",
    "neglected",
    "negligible",
    "neighboring",
    "neighborly",
    "nervous",
    "new",
    "next",
    "nice",
    "nifty",
    "nimble",
    "nine",
    "nippy",
    "nocturnal",
    "noiseless",
    "noisy",
    "nonchalant",
    "nondescript",
    "nonsensical",
    "nonstop",
    "normal",
    "nostalgic",
    "nosy",
    "notable",
    "noted",
    "noteworthy",
    "novel",
    "noxious",
    "null",
    "numb",
    "numberless",
    "numerous",
    "nutritious",
    "nutty",
    "oafish",
    "obedient",
    "obeisant",
    "obese",
    "oblivious",
    "oblong",
    "obnoxious",
    "obscene",
    "obsequious",
    "observant",
    "obsolete",
    "obtainable",
    "obvious",
    "occasional",
    "oceanic",
    "odd",
    "oddball",
    "offbeat",
    "offensive",
    "official",
    "oily",
    "old",
    "omniscient",
    "one",
    "onerous",
    "only",
    "open",
    "opposite",
    "optimal",
    "optimistic",
    "opulent",
    "orange",
    "orderly",
    "ordinary",
    "organic",
    "original",
    "ornate",
    "ornery",
    "ossified",
    "ostentatious",
    "other",
    "otherworldly",
    "our",
    "outgoing",
    "outlandish",
    "outlying",
    "outrageous",
    "outspoken",
    "outstanding",
    "oval",
    "overcome",
    "overconfident",
    "overcooked",
    "overdue",
    "overjoyed",
    "overlooked",
    "overrated",
    "overt",
    "overwrought",
    "painful",
    "painstaking",
    "palatable",
    "pale",
    "paltry",
    "panicky",
    "panoramic",
    "parallel",
    "parched",
    "parsimonious",
    "partial",
    "passionate",
    "passive",
    "past",
    "pastel",
    "pastoral",
    "paternalistic",
    "pathetic",
    "patient",
    "peaceful",
    "peevish",
    "penitent",
    "pensive",
    "peppery",
    "perfect",
    "perfumed",
    "periodic",
    "perky",
    "permissible",
    "perpetual",
    "perplexed",
    "persevering",
    "persistent",
    "persnickety",
    "personal",
    "pertinent",
    "pesky",
    "pessimistic",
    "petite",
    "petty",
    "petulant",
    "philosophical",
    "phobic",
    "phony",
    "physical",
    "picayune",
    "picky",
    "piercing",
    "pink",
    "pioneering",
    "piquant",
    "pitiful",
    "placid",
    "plain",
    "plaintive",
    "plant",
    "plastic",
    "plausible",
    "playful",
    "pleasant",
    "pleased",
    "pleasing",
    "plucky",
    "plump",
    "plush",
    "pointed",
    "pointless",
    "poised",
    "pokey",
    "polished",
    "polite",
    "political",
    "pompous",
    "poor",
    "popular",
    "portly",
    "posh",
    "positive",
    "possessive",
    "possible",
    "potable",
    "powerful",
    "powerless",
    "practical",
    "precious",
    "prehistoric",
    "prejudiced",
    "premium",
    "present",
    "prestigious",
    "pretend",
    "pretty",
    "previous",
    "pricey",
    "prickly",
    "pride",
    "primary",
    "prime",
    "pristine",
    "private",
    "prize",
    "probable",
    "productive",
    "proficient",
    "profitable",
    "profuse",
    "proper",
    "protective",
    "proud",
    "provocative",
    "prudent",
    "psychedelic",
    "psychotic",
    "public",
    "puffy",
    "pumped",
    "punctual",
    "pungent",
    "puny",
    "pure",
    "purple",
    "purring",
    "pushy",
    "putrid",
    "puzzled",
    "puzzling",
    "quack",
    "quaint",
    "qualified",
    "quarrelsome",
    "quarterly",
    "queasy",
    "querulous",
    "questionable",
    "quick",
    "quickest",
    "quiet",
    "quintessential",
    "quirky",
    "quixotic",
    "quizzical",
    "rabid",
    "racial",
    "radiant",
    "ragged",
    "rainy",
    "rambunctious",
    "rampant",
    "rapid",
    "rapping",
    "rare",
    "rash",
    "raspy",
    "rational",
    "ratty",
    "raw",
    "ready",
    "real",
    "realistic",
    "reasonable",
    "reassuring",
    "rebel",
    "recent",
    "receptive",
    "reckless",
    "reclusive",
    "recondite",
    "rectangular",
    "red",
    "redundant",
    "refined",
    "reflecting",
    "reflective",
    "regal",
    "regular",
    "reliable",
    "relieved",
    "reluctant",
    "remarkable",
    "reminiscent",
    "remorseful",
    "remote",
    "repentant",
    "repulsive",
    "required",
    "resentful",
    "reserved",
    "resigned",
    "resolute",
    "resonant",
    "resourceful",
    "respected",
    "respectful",
    "responsible",
    "responsive",
    "restless",
    "revered",
    "revolting",
    "revolving",
    "rewarding",
    "rhetorical",
    "rhythmic",
    "rich",
    "ridiculous",
    "right",
    "righteous",
    "rightful",
    "rigid",
    "ringed",
    "ripe",
    "ritzy",
    "roasted",
    "robust",
    "romantic",
    "roomy",
    "rosy",
    "rotating",
    "rotten",
    "rotund",
    "rough",
    "round",
    "rowdy",
    "royal",
    "rubbery",
    "ruddy",
    "rude",
    "rundown",
    "runny",
    "rural",
    "rustic",
    "rusty",
    "ruthless",
    "sable",
    "sad",
    "safe",
    "salmon",
    "salty",
    "same",
    "sandy",
    "sane",
    "sarcastic",
    "sardonic",
    "sassy",
    "satisfied",
    "satisfying",
    "saucy",
    "savory",
    "scaly",
    "scandalous",
    "scant",
    "scarce",
    "scared",
    "scary",
    "scattered",
    "scented",
    "scholarly",
    "scientific",
    "scintillating",
    "scornful",
    "scratchy",
    "scrawny",
    "screaming",
    "screeching",
    "scruffy",
    "second",
    "secondary",
    "secret",
    "secretive",
    "sedate",
    "seemly",
    "selective",
    "selfish",
    "sensible",
    "sensitive",
    "sentimental",
    "separate",
    "serene",
    "serious",
    "serpentine",
    "several",
    "severe",
    "shabby",
    "shadowy",
    "shady",
    "shaggy",
    "shaky",
    "shallow",
    "shameful",
    "shameless",
    "shapely",
    "sharp",
    "shimmering",
    "shiny",
    "shivering",
    "shocked",
    "shocking",
    "shoddy",
    "short",
    "showy",
    "shrewd",
    "shrill",
    "shrilling",
    "shut",
    "shy",
    "sick",
    "silent",
    "silky",
    "silly",
    "silver",
    "similar",
    "simple",
    "simplistic",
    "sincere",
    "sinful",
    "single",
    "six",
    "sizzling",
    "skeletal",
    "skillful",
    "skinny",
    "sleepy",
    "slight",
    "slim",
    "slimy",
    "slippery",
    "sloppy",
    "slothful",
    "slovenly",
    "slow",
    "slushy",
    "small",
    "smarmy",
    "smart",
    "smelly",
    "smiling",
    "smoggy",
    "smokey",
    "smooth",
    "smug",
    "snappy",
    "snarling",
    "snazzy",
    "sneaky",
    "sneering",
    "sniveling",
    "snobbish",
    "snobby",
    "snooping",
    "snoopy",
    "snotty",
    "sociable",
    "soft",
    "soggy",
    "solid",
    "somber",
    "some",
    "sophisticated",
    "sordid",
    "sore",
    "sorrowful",
    "soulful",
    "soulless",
    "soupy",
    "sour",
    "Spanish",
    "sparkling",
    "sparse",
    "spastic",
    "special",
    "specific",
    "spectacular",
    "speedy",
    "spherical",
    "spicy",
    "spiffy",
    "spiky",
    "spinning",
    "spirited",
    "spiritual",
    "spiteful",
    "splendid",
    "spontaneous",
    "spooky",
    "spotless",
    "spotted",
    "spotty",
    "spry",
    "spurious",
    "squalid",
    "square",
    "squeaking",
    "squeaky",
    "squealing",
    "squeamish",
    "squiggly",
    "stable",
    "staid",
    "stained",
    "staking",
    "stale",
    "standard",
    "standing",
    "starchy",
    "staring",
    "stark",
    "starry",
    "startling",
    "statuesque",
    "steadfast",
    "steady",
    "steel",
    "steep",
    "stereotyped",
    "stern",
    "sticky",
    "stiff",
    "stimulating",
    "stingy",
    "stinky",
    "stocky",
    "stoic",
    "stormy",
    "stout",
    "straight",
    "straightforward",
    "strange",
    "strict",
    "strident",
    "striking",
    "striped",
    "strong",
    "studious",
    "stunning",
    "stupendous",
    "stupid",
    "sturdy",
    "stylish",
    "subdued",
    "submissive",
    "subsequent",
    "substantial",
    "subtle",
    "suburban",
    "successful",
    "succinct",
    "succulent",
    "sudden",
    "sugary",
    "sulky",
    "sullen",
    "sunny",
    "super",
    "superb",
    "supercilious",
    "superficial",
    "superior",
    "supernatural",
    "superstitious",
    "supportive",
    "supreme",
    "surly",
    "surprised",
    "suspicious",
    "svelte",
    "swanky",
    "sweaty",
    "sweet",
    "sweltering",
    "swift",
    "sympathetic",
    "symptomatic",
    "synonymous",
    "taboo",
    "tacit",
    "tacky",
    "tactful",
    "tactless",
    "talented",
    "talkative",
    "tall",
    "tame",
    "tan",
    "tangible",
    "tangy",
    "tart",
    "tasteful",
    "tasteless",
    "tasty",
    "tattered",
    "taut",
    "tawdry",
    "tearful",
    "teasing",
    "tedious",
    "teeming",
    "teeny",
    "telling",
    "temporary",
    "tempting",
    "ten",
    "tender",
    "tense",
    "tenuous",
    "tepid",
    "terrible",
    "terrific",
    "terrifying",
    "tested",
    "testy",
    "thankful",
    "that",
    "therapeutic",
    "these",
    "thick",
    "thin",
    "thinkable",
    "thinking",
    "third",
    "thirsty",
    "this",
    "thorny",
    "thorough",
    "those",
    "thoughtful",
    "thoughtless",
    "threadbare",
    "threatening",
    "three",
    "thrifty",
    "thrilled",
    "thrilling",
    "thundering",
    "thunderous",
    "tidy",
    "tight",
    "tightfisted",
    "timely",
    "timid",
    "tinkling",
    "tinted",
    "tiny",
    "tired",
    "tiresome",
    "tolerant",
    "toothsome",
    "torn",
    "torpid",
    "total",
    "touchy",
    "tough",
    "towering",
    "tragic",
    "trained",
    "tranquil",
    "trashy",
    "traumatic",
    "treasured",
    "tremendous",
    "triangular",
    "tricky",
    "trifling",
    "trim",
    "triple",
    "trite",
    "trivial",
    "troubled",
    "truculent",
    "TRUE",
    "true",
    "trusting",
    "trustworthy",
    "trusty",
    "truthful",
    "tubby",
    "turbulent",
    "twin",
    "twisted",
    "two",
    "typical",
    "ubiquitous",
    "ugliest",
    "ugly",
    "ultimate",
    "ultra",
    "unable",
    "unacceptable",
    "unaccountable",
    "unarmed",
    "unassuming",
    "unaware",
    "unbalanced",
    "unbecoming",
    "unbiased",
    "uncertain",
    "uncomfortable",
    "uncommon",
    "unconscious",
    "uncooperative",
    "uncovered",
    "undependable",
    "understanding",
    "understated",
    "understood",
    "undesirable",
    "unearthly",
    "unemotional",
    "unequal",
    "unequaled",
    "uneven",
    "unfinished",
    "unfit",
    "unfolded",
    "unfortunate",
    "unfriendly",
    "unguarded",
    "unhappy",
    "unhealthy",
    "unhelpful",
    "uniform",
    "unimaginative",
    "unimportant",
    "uninterested",
    "unique",
    "united",
    "unkempt",
    "unknown",
    "unlawful",
    "unlined",
    "unlucky",
    "unmotivated",
    "unnatural",
    "unnerving",
    "unpleasant",
    "unpopular",
    "unrealistic",
    "unreliable",
    "unripe",
    "unruly",
    "unselfish",
    "unsightly",
    "unsophisticated",
    "unstable",
    "unsteady",
    "unsuitable",
    "unsung",
    "unsure",
    "unthinking",
    "untidy",
    "untimely",
    "untried",
    "untrue",
    "unused",
    "unusual",
    "unwelcome",
    "unwieldy",
    "unwilling",
    "unwitting",
    "unwritten",
    "upbeat",
    "uppity",
    "upright",
    "upset",
    "uptight",
    "urban",
    "usable",
    "used",
    "useful",
    "useless",
    "utilized",
    "utopian",
    "utter",
    "uttermost",
    "vacant",
    "vacuous",
    "vagabond",
    "vague",
    "vain",
    "valid",
    "valuable",
    "vapid",
    "variable",
    "various",
    "vast",
    "velvety",
    "venerated",
    "vengeful",
    "venomous",
    "verdant",
    "verifiable",
    "versatile",
    "versed",
    "vexed",
    "vibrant",
    "vicious",
    "victorious",
    "vigilant",
    "vigorous",
    "villainous",
    "violent",
    "violet",
    "virtual",
    "virtuous",
    "visible",
    "vital",
    "vivacious",
    "vivid",
    "voiceless",
    "volatile",
    "volcanic",
    "voluminous",
    "voracious",
    "vulgar",
    "vulnerable",
    "wacky",
    "waggish",
    "wailing",
    "waiting",
    "wakeful",
    "wan",
    "wandering",
    "wanting",
    "warlike",
    "warm",
    "warmhearted",
    "warming",
    "warped",
    "wary",
    "wasteful",
    "watchful",
    "waterlogged",
    "watery",
    "wavy",
    "weak",
    "wealthy",
    "weary",
    "webbed",
    "wee",
    "weekly",
    "weepy",
    "weighty",
    "weird",
    "welcome",
    "well",
    "wet",
    "which",
    "whimsical",
    "whining",
    "whirlwind",
    "whispered",
    "whispering",
    "white",
    "whole",
    "wholesale",
    "whopping",
    "wicked",
    "wide",
    "wiggly",
    "wild",
    "willing",
    "wilted",
    "winding",
    "windy",
    "winged",
    "wiry",
    "wise",
    "wistful",
    "witty",
    "wobbly",
    "woebegone",
    "woeful",
    "womanly",
    "wonderful",
    "wooden",
    "woozy",
    "wordy",
    "workable",
    "worldly",
    "worn",
    "worried",
    "worrisome",
    "worse",
    "worst",
    "worthless",
    "worthwhile",
    "worthy",
    "wrathful",
    "wretched",
    "writhing",
    "wrong",
    "wry",
    "xenophobic",
    "yawning",
    "yearly",
    "yellow",
    "yellowish",
    "yielding",
    "young",
    "youthful",
    "yummy",
    "zany",
    "zealous",
    "zesty",
    "zigzag",
    "zippy",
    "zonked"
  };

  const emp::vector<std::string> animals{
    "aardvark",
    "addax",
    "agouti",
    "albatross",
    "alligator",
    "alpaca",
    "amoeba",
    "anaconda",
    "anemone",
    "angelfish",
    "ani",
    "anole",
    "ant",
    "anteater",
    "antelope",
    "arachnid",
    "armadillo",
    "auk",
    "axolotl",
    "badger",
    "balanus",
    "barb",
    "barnacle",
    "bass",
    "bat",
    "batfish",
    "beagle",
    "bear",
    "beaver",
    "bee",
    "beetle",
    "bengal",
    "bettong",
    "binturong",
    "bird",
    "bison",
    "bittern",
    "blobfish",
    "bloodhound",
    "boa",
    "boar",
    "booby",
    "borer",
    "budgrerigar",
    "bug",
    "bulbul",
    "bulldog",
    "butterfly",
    "buzzard",
    "caecilian",
    "caiman",
    "caimans",
    "camel",
    "camels",
    "capercaillie",
    "capybara",
    "caracal",
    "cardinal",
    "caribou",
    "carp",
    "caterpillar",
    "cats",
    "centipede",
    "cheetah",
    "chickadee",
    "chickaree",
    "chicken",
    "chihuahua",
    "chimpanzee",
    "chinchilla",
    "chipmunk",
    "chital",
    "chiton",
    "civet",
    "coati",
    "coatimundi",
    "cobra",
    "cockroach",
    "collie",
    "coot",
    "copperhead",
    "corgi",
    "cormorant",
    "corncrake",
    "cottonmouth",
    "cow",
    "cowfish",
    "coyote",
    "coypu",
    "crab",
    "crayfish",
    "cricket",
    "crocodile",
    "crossbill",
    "crow",
    "crustacean",
    "cuckoo",
    "curlew",
    "cusimanse",
    "cygini",
    "dachshund",
    "dalmatian",
    "dane",
    "darter",
    "dassie",
    "dauber",
    "deer",
    "degu",
    "dik",
    "dingo",
    "dobermann",
    "dog",
    "dolphin",
    "donkey",
    "dormouse",
    "dove",
    "dragon",
    "dragonfly",
    "duck",
    "dugong",
    "duiker",
    "eagle",
    "earthworm",
    "earwig",
    "eel",
    "eland",
    "elephant",
    "elk",
    "emu",
    "fairy",
    "falcon",
    "fennec",
    "ferret",
    "finch",
    "finfoot",
    "firefly",
    "fish",
    "flamingo",
    "flatworm",
    "flea",
    "flounder",
    "fly",
    "flycatcher",
    "fowl",
    "fox",
    "francolin",
    "frigate",
    "frog",
    "frogmouth",
    "fungus",
    "galago",
    "gastrotrich",
    "gayal",
    "gazelle",
    "gecko",
    "gemsbok",
    "genet",
    "gentoo",
    "gerbil",
    "gerenuk",
    "gharial",
    "gibbon",
    "giraffe",
    "glider",
    "gnat",
    "goat",
    "goldeneye",
    "goldfish",
    "goose",
    "gorilla",
    "gorillas",
    "gourami",
    "grasshopper",
    "grebe",
    "grenadier",
    "greyhound",
    "grizzly",
    "grouse",
    "guanaco",
    "guineafowl",
    "gull",
    "guppy",
    "hamerkop",
    "hammerhead",
    "hamster",
    "hare",
    "harp",
    "hawk",
    "hedgehog",
    "hermit",
    "heron",
    "hippopotamus",
    "hog",
    "hoopoe",
    "hornbill",
    "hornet",
    "horse",
    "horseshoe",
    "hound",
    "housefly",
    "howler",
    "human",
    "humboldt",
    "hummingbird",
    "humpback",
    "huntsman",
    "husky",
    "hyena",
    "hyrax",
    "ibex",
    "ibis",
    "ibisbill",
    "iguana",
    "impala",
    "insect",
    "jackal",
    "jaguar",
    "jellyfish",
    "jerboa",
    "kaffir",
    "kangaroo",
    "katipo",
    "katydid",
    "kea",
    "kestrel",
    "king",
    "kingfisher",
    "kinkajou",
    "kite",
    "kitten",
    "kiwi",
    "koala",
    "koi",
    "komodo",
    "kongoni",
    "kookaburra",
    "kori",
    "kudu",
    "ladybird",
    "langur",
    "laridae",
    "lechwe",
    "legaan",
    "lemming",
    "lemur",
    "leopard",
    "lightfoot",
    "limpet",
    "lion",
    "lizard",
    "llama",
    "lobster",
    "locifera",
    "loerie",
    "lorikeet",
    "loris",
    "lottia",
    "louse",
    "lynx",
    "macaque",
    "macaroni",
    "macaw",
    "magellanic",
    "magpie",
    "manatee",
    "mantis",
    "manx",
    "mara",
    "markhor",
    "marmot",
    "marten",
    "mayfly",
    "mealworm",
    "meerkat",
    "millipede",
    "mink",
    "mite",
    "moa",
    "mockingbird",
    "mole",
    "mongoose",
    "monitor",
    "monkey",
    "moose",
    "morpho",
    "mosquito",
    "moth",
    "mouse",
    "mudskipper",
    "mule",
    "murex",
    "mushroom",
    "muskox",
    "muskrat",
    "mussel",
    "myna",
    "mynah",
    "narwhal",
    "natterjack",
    "nematode",
    "newt",
    "nighthawk",
    "nudibranch",
    "numbat",
    "nurse",
    "nutcracker",
    "nuthatch",
    "ocelot",
    "octopus",
    "okapi",
    "opossums",
    "orangutan",
    "oryx",
    "osprey",
    "ostrich",
    "otter",
    "owl",
    "ox",
    "oystercatcher",
    "paca",
    "palawan",
    "panda",
    "parrot",
    "partridge",
    "peafowl",
    "peccary",
    "pelican",
    "penguin",
    "periwinkle",
    "person",
    "petrel",
    "phalarope",
    "phascogale",
    "pheasant",
    "pig",
    "pigeon",
    "pike",
    "pilot",
    "pinscher",
    "pintail",
    "piranha",
    "plankton",
    "platypus",
    "plover",
    "pointer",
    "polecat",
    "pollan",
    "pomeranian",
    "poodle",
    "porcupine",
    "porpoise",
    "possum",
    "potter",
    "prevost",
    "pufferfish",
    "puffin",
    "puma",
    "quagga",
    "quail",
    "quoll",
    "rabbit",
    "raccoon",
    "racoon",
    "ragdoll",
    "rail",
    "rat",
    "rattlesnakes",
    "reptile",
    "retriever",
    "rhea",
    "rhino",
    "rhinoceros",
    "right",
    "ringtail",
    "roach",
    "robin",
    "roborovski",
    "rock",
    "rockhopper",
    "rodent",
    "rotifer",
    "rottweiler",
    "saki",
    "salamander",
    "salmon",
    "sandpiper",
    "scarab",
    "scorpion",
    "sculpin",
    "seagull",
    "seahorse",
    "seal",
    "sealion",
    "seals",
    "seastar",
    "secretary",
    "seriema",
    "serval",
    "setter",
    "shad",
    "shark",
    "sheathbill",
    "sheep",
    "shelduck",
    "shepherd",
    "shrew",
    "shrike",
    "shrimp",
    "silkworm",
    "siskin",
    "skimmer",
    "skink",
    "skunk",
    "skylark",
    "sloth",
    "slug",
    "snail",
    "snakes",
    "snapper",
    "snare",
    "snowshoe",
    "solenodon",
    "spaniel",
    "sparrow",
    "sphynx",
    "spider",
    "spinner",
    "springbok",
    "springhaas",
    "spurfowl",
    "squirrel",
    "stag",
    "stilt",
    "stingray",
    "stink",
    "stoat",
    "stork",
    "sturgeon",
    "sungazer",
    "swiftlet",
    "tamandua",
    "tamanduas",
    "tamarin",
    "tangle",
    "tapir",
    "tarantula",
    "tardigrade",
    "tayra",
    "tegula",
    "tenrec",
    "termite",
    "tern",
    "terrier",
    "thrip",
    "thrush",
    "tiger",
    "tinamou",
    "titi",
    "toad",
    "toco",
    "tortoise",
    "trapdoor",
    "trout",
    "tsessebe",
    "tuatara",
    "tundra",
    "turaco",
    "turkey",
    "turtle",
    "urchin",
    "vampire",
    "vendace",
    "vicuna",
    "vole",
    "vulture",
    "wallaby",
    "wallaroo",
    "wambenger",
    "wapiti",
    "warbler",
    "wasps",
    "waterbuck",
    "waxbill",
    "waxworm",
    "weasel",
    "weaver",
    "weevil",
    "whale",
    "whelk",
    "whimbrel",
    "wildebeest",
    "willet",
    "wolf",
    "wombat",
    "worm",
    "woylie",
    "wryneck",
    "yacare",
    "yak",
    "zebra",
    "zebu",
    "zorilla",
    "zorro"
  };

} // namespace internal
  #endif // DOXYGEN_SHOULD_SKIP_THIS

  std::string hash_namify( const size_t hash ) {

    const size_t num_adjectives = internal::adjectives.size();
    const size_t num_animals = internal::animals.size();

    const size_t adjective_idx = ( hash / num_animals ) % num_adjectives;
    const size_t animal_idx = hash % num_animals;

    return emp::to_string(
      emp::internal::adjectives[adjective_idx],
      " ",
      emp::internal::animals[animal_idx]
    );

  }

} // namespace emp

#endif // #ifndef EMP_TOOLS_HASH_NAMIFY_HPP_INCLUDE
