import random as _random

_adjectives = [
    "ace",
    "aloof",
    "amazing",
    "antsy",
    "astonishing",
    "astounding",
    "awesome",
    "badass",
    "bashful",
    "beautiful",
    "bossy",
    "breathtaking",
    "brilliant",
    "busy",
    ("candid", "k"),
    ("captivating", "k"),
    ("careless", "k"),
    ("cautious", "k"),
    ("charming", "ch"),
    ("cheeky", "ch"),
    ("chic", "sh"),
    ("churlish", "ch"),
    ("classy", "cl"),
    ("clever", "cl"),
    ("clumsy", "cl"),
    ("cool", "k"),
    ("crabby", "cr"),
    ("cranky", "cr"),
    ("creepy", "cr"),
    ("crucial", "cr"),
    ("cryptic", "cr"),
    "dandy",
    "dazzling",
    "defiant",
    "delightful",
    "delinquent",
    "devious",
    "digressive",
    "dire",
    "distracted",
    "distraught",
    "divine",
    "dogmatic",
    "droll",
    "dressy",
    "epic",
    "excellent",
    "exceptional",
    "exquisite",
    "extraordinary",
    "fabulous",
    "fantastic",
    "fine",
    "finest",
    "first-rate",
    ("flaky", "fl"),
    ("flamboyant", "fl"),
    ("flawless", "fl"),
    "foolish",
    "funkadelic",
    "galloping",
    ("geometric", "j"),
    "glorious",
    ("gnarly", "n"),
    "good",
    ("grand", "gr"),
    ("great", "gr"),
    ("groovy", "gr"),
    ("groundbreaking", "gr"),
    "handy",
    "harebrained",
    "heroic",
    "hungry",
    "hunky-dory",
    "impeccable",
    "impressive",
    "incredible",
    "jaded",
    "jaunty",
    "jealous",
    "kickass",
    "kooky",
    "klutzy",
    "kind-hearted",
    "kinetic",
    "laudable",
    "lazy",
    "learned",
    "legendary",
    "limber",
    "listless",
    "litigious",
    "livid",
    "long-winded",
    "lovely",
    "luminous",
    "magnificent",
    "majestic",
    "marvelous",
    "mathematical",
    "mind-blowing",
    "neat",
    "noisy",
    "oafish",
    "obligatory",
    "oblivious",
    "obvious",
    "off-putting",
    "oracular",
    "outstanding",
    "peachy",
    "pensive",
    "perfect",
    ("phenomenal", "f"),
    "pioneering",
    "polished",
    "posh",
    "premium",
    "priceless",
    "prime",
    "primo",
    ("quality", "kw"),
    ("queasy", "kw"),
    ("quirky", "kw"),
    ("quixotic", "kw"),
    ("quizzical", "kw"),
    ("quotable", "kw"),
    "radical",
    "rebellious",
    "remarkable",
    "riveting",
    "salty",
    "sassy",
    "saucy",
    ("scrappy", "sk"),
    "sensational",
    ("shabby", "sh"),
    ("shady", "sh"),
    ("shaven", "sh"),
    ("sheepish", "sh"),
    ("shining", "sh"),
    ("sketchy", "sk"),
    ("skeptical", "sk"),
    ("skittish", "sk"),
    ("snarky", "sn"),
    ("snazzy", "sn"),
    ("sneaky", "sn"),
    ("snide", "sn"),
    ("snobby", "sn"),
    ("snooty", "sn"),
    "solid",
    ("spacy", "sp"),
    ("spectacular", "sp"),
    ("splendid", "sp"),
    ("spooky", "sp"),
    ("stellar", "st"),
    ("stingy", "st"),
    ("striking", "st"),
    ("stubborn", "st"),
    ("stunning", "st"),
    ("stupendous", "st"),
    ("stylish", "st"),
    "sublime",
    "super",
    "super-duper",
    "superb",
    "superior",
    "supreme",
    ("swanky", "sw"),
    ("sweet", "sw"),
    ("swell", "sw"),
    ("swift", "sw"),
    "terrific",
    "tiptop",
    "top-notch",
    "transcendent",
    "tremendous",
    "ultimate",
    "unreal",
    "valiant",
    "versatile",
    "wacky",
    "wicked",
    "witty",
    "wonderful",
    "wondrous",
    "world-class",
    "yearnful",
    "yonder",
    "youthful",
    "zany",
    "zazzy",
    "zealous",
    "zesty",
]

_things = [
    "android",
    "apparatus",
    "application",
    "automaton",
    "bot",
    "box",
    ("cog", "k"),
    ("component", "k"),
    ("contraption", "k"),
    "device",
    "dingus",
    "doodad",
    "doohickey",
    "droid",
    "drone",
    "engine",
    "entity",
    "gadget",
    "gizmo",
    "hardware",
    "instrument",
    "item",
    "machine",
    "mechanism",
    "object",
    "process",
    "processor",
    "program",
    "robot",
    "server",
    "system",
    # "thing",
    # "thingamajig",
    # "thingamabob",
    "widget",
    "worker",
    ("computer", "k"),
    ("cyborg", "s"),
    ("unit", "y"),
]

def generate_thing_id():
    _random.seed()

    thing = _random.choice(_things)

    if type(thing) is tuple:
        thing, thing_initial = thing
    else:
        thing_initial = thing[0]

    def match(adjective):
        if type(adjective) is tuple:
            adjective, adjective_initial = adjective
        else:
            adjective_initial = adjective[0]

        return adjective_initial == thing_initial

    try:
        adjective = _random.choice([x for x in _adjectives if match(x)])
    except IndexError:
        adjective = _random.choice(_adjectives)

    if type(adjective) is tuple:
        adjective, _ = adjective

    return "-".join((adjective, thing))

if __name__ == "__main__":
    for i in range(100):
        print(generate_thing_id())
