package net.torvald.terrarum.utils

/**
 * Created by minjaesong on 2021-09-29.
 */
object RandomWordsName {

    operator fun invoke(wordCount: Int): String {
        val sb = StringBuilder()
        repeat(wordCount) {
            sb.append(words.random())
        }
        return "$sb"
    }

    // wordlist cannot be too long as there's 64 kb limit for a Java class
    private val words = """Acid
Acorn
Acre
Acts
Afar
Affix
Aged
Agent
Agile
Aging
Agony
Ahead
Aide
Aids
Aim
Ajar
Alarm
Alias
Alibi
Alien
Alike
Alive
Aloe
Aloft
Aloha
Alone
Amend
Amino
Ample
Amuse
Angel
Anger
Angle
Ankle
Apple
April
Apron
Aqua
Area
Arena
Argue
Arise
Armed
Armor
Army
Aroma
Array
Arson
Art
Ashen
Ashes
Atlas
Atom
Attic
Audio
Avert
Avoid
Awake
Award
Awoke
Axis
Bacon
Badge
Bagel
Baggy
Baked
Baker
Balmy
Banjo
Barge
Barn
Bash
Basil
Bask
Batch
Bath
Baton
Bats
Blade
Blank
Blast
Blaze
Bleak
Blend
Bless
Blimp
Blink
Bloat
Blob
Blog
Blot
Blunt
Blurt
Blush
Boast
Boat
Body
Boil
Bok
Bolt
Boned
Boney
Bonus
Bony
Book
Booth
Boots
Boss
Botch
Both
Boxer
Breed
Bribe
Brick
Bride
Brim
Bring
Brink
Brisk
Broad
Broil
Broke
Brook
Broom
Brush
Buck
Bud
Buggy
Bulge
Bulk
Bully
Bunch
Bunny
Bunt
Bush
Bust
Busy
Buzz
Cable
Cache
Cadet
Cage
Cake
Calm
Cameo
Canal
Candy
Cane
Canon
Cape
Card
Cargo
Carol
Carry
Carve
Case
Cash
Cause
Cedar
Chain
Chair
Chant
Chaos
Charm
Chase
Cheek
Cheer
Chef
Chess
Chest
Chew
Chief
Chili
Chill
Chip
Chomp
Chop
Chow
Chuck
Chump
Chunk
Churn
Chute
Cider
Cinch
City
Civic
Civil
Clad
Claim
Clamp
Clap
Clash
Clasp
Class
Claw
Clay
Clean
Clear
Cleat
Cleft
Clerk
Click
Cling
Clink
Clip
Cloak
Clock
Clone
Cloth
Cloud
Clump
Coach
Coast
Coat
Cod
Coil
Coke
Cola
Cold
Colt
Coma
Come
Comic
Comma
Cone
Cope
Copy
Coral
Cork
Cost
Cot
Couch
Cough
Cover
Cozy
Craft
Cramp
Crane
Crank
Crate
Crave
Crawl
Crazy
Creme
Crepe
Crept
Crib
Cried
Crisp
Crook
Crop
Cross
Crowd
Crown
Crumb
Crush
Crust
Cub
Cult
Cupid
Cure
Curl
Curry
Curse
Curve
Curvy
Cushy
Cut
Cycle
Dab
Dad
Daily
Dairy
Daisy
Dance
Dandy
Darn
Dart
Dash
Data
Date
Dawn
Deaf
Deal
Dean
Debit
Debt
Debug
Decaf
Decal
Decay
Deck
Decor
Decoy
Deed
Delay
Denim
Dense
Dent
Depth
Derby
Desk
Dial
Diary
Dice
Dig
Dill
Dime
Dimly
Diner
Dingy
Disco
Dish
Disk
Ditch
Ditzy
Dizzy
Dock
Dodge
Doing
Doll
Dome
Donor
Donut
Dose
Dot
Dove
Down
Dowry
Doze
Drab
Drama
Drank
Draw
Dress
Dried
Drift
Drill
Drive
Drone
Droop
Drove
Drown
Drum
Dry
Duck
Duct
Dude
Dug
Duke
Duo
Dusk
Dust
Duty
Dwarf
Dwell
Eagle
Early
Earth
Easel
East
Eaten
Eats
Ebay
Ebony
Ebook
Echo
Edge
Eel
Eject
Elbow
Elder
Elf
Elk
Elm
Elope
Elude
Elves
Email
Emit
Empty
Emu
Enter
Entry
Envoy
Equal
Erase
Error
Erupt
Essay
Etch
Evade
Even
Evict
Evil
Evoke
Exact
Exit
Fable
Faced
Fact
Fade
Fall
False
Fancy
Fang
Fax
Feast
Feed
Femur
Fence
Fend
Ferry
Fetal
Fetch
Fever
Fiber
Fifth
Fifty
Film
Filth
Final
Finch
Fit
Five
Flag
Flaky
Flame
Flap
Flask
Fled
Flick
Fling
Flint
Flip
Flirt
Float
Flock
Flop
Floss
Flyer
Foam
Foe
Fog
Foil
Folic
Folk
Food
Fool
Found
Fox
Foyer
Frail
Frame
Fray
Fresh
Fried
Frill
Frisk
From
Front
Frost
Froth
Frown
Froze
Fruit
Gag
Gains
Gala
Game
Gap
Gas
Gave
Gear
Gecko
Geek
Gem
Genre
Gift
Gig
Gills
Given
Giver
Glad
Glass
Glide
Gloss
Glove
Glow
Glue
Goal
Going
Golf
Gong
Good
Gooey
Goofy
Gore
Gown
Grab
Grain
Grant
Grape
Graph
Grasp
Grass
Grave
Gravy
Gray
Green
Greet
Grew
Grid
Grief
Grill
Grip
Grit
Groom
Grope
Growl
Grub
Grunt
Guide
Gulf
Gulp
Gummy
Guru
Gush
Gut
Guy
Habit
Half
Halo
Halt
Happy
Harm
Hash
Hasty
Hatch
Hate
Haven
Hazel
Hazy
Heap
Heat
Heave
Hedge
Hefty
Help
Herbs
Hers
Hub
Hug
Hula
Hull
Human
Humid
Hump
Hung
Hunk
Hunt
Hurry
Hurt
Hush
Hut
Ice
Icing
Icon
Icy
Igloo
Image
Ion
Iron
Isles
Issue
Item
Ivory
Ivy
Jab
Jam
Jaws
Jazz
Jeep
Jelly
Jet
Jiffy
Job
Jog
Jolly
Jolt
Jot
Joy
Judge
Juice
Juicy
July
Jumbo
Jump
Junky
Juror
Jury
Keep
Keg
Kept
Kick
Kilt
King
Kite
Kitty
Kiwi
Knee
Knelt
Koala
Kung
Ladle
Lady
Lair
Lake
Lance
Land
Lapel
Large
Lash
Lasso
Last
Latch
Late
Lazy
Left
Legal
Lemon
Lend
Lens
Lent
Level
Lever
Lid
Life
Lift
Lilac
Lily
Limb
Limes
Line
Lint
Lion
Lip
List
Lived
Liver
Lunar
Lunch
Lung
Lurch
Lure
Lurk
Lying
Lyric
Mace
Maker
Malt
Mama
Mango
Manor
Many
Map
March
Mardi
Marry
Mash
Match
Mate
Math
Moan
Mocha
Moist
Mold
Mom
Moody
Mop
Morse
Most
Motor
Motto
Mount
Mouse
Mousy
Mouth
Move
Movie
Mower
Mud
Mug
Mulch
Mule
Mull
Mumbo
Mummy
Mural
Muse
Music
Musky
Mute
Nacho
Nag
Nail
Name
Nanny
Nap
Navy
Near
Neat
Neon
Nerd
Nest
Net
Next
Niece
Ninth
Nutty
Oak
Oasis
Oat
Ocean
Oil
Old
Olive
Omen
Onion
Only
Ooze
Opal
Open
Opera
Opt
Otter
Ouch
Ounce
Outer
Oval
Oven
Owl
Ozone
Pace
Pagan
Pager
Palm
Panda
Panic
Pants
Panty
Paper
Park
Party
Pasta
Patch
Path
Patio
Payer
Pecan
Penny
Pep
Perch
Perky
Perm
Pest
Petal
Petri
Petty
Photo
Plank
Plant
Plaza
Plead
Plot
Plow
Pluck
Plug
Plus
Poach
Pod
Poem
Poet
Pogo
Point
Poise
Poker
Polar
Polio
Polka
Polo
Pond
Pony
Poppy
Pork
Poser
Pouch
Pound
Pout
Power
Prank
Press
Print
Prior
Prism
Prize
Probe
Prong
Proof
Props
Prude
Prune
Pry
Pug
Pull
Pulp
Pulse
Puma
Punch
Punk
Pupil
Puppy
Purr
Purse
Push
Putt
Quack
Quake
Query
Quiet
Quill
Quilt
Quit
Quota
Quote
Rabid
Race
Rack
Radar
Radio
Raft
Rage
Raid
Rail
Rake
Rally
Ramp
Ranch
Range
Rank
Rant
Rash
Raven
Reach
React
Ream
Rebel
Recap
Relax
Relay
Relic
Remix
Repay
Repel
Reply
Rerun
Reset
Rhyme
Rice
Rich
Ride
Rigid
Rigor
Rinse
Riot
Ripen
Rise
Risk
Ritzy
Rival
River
Roast
Robe
Robin
Rock
Rogue
Roman
Romp
Rope
Rover
Royal
Ruby
Rug
Ruin
Rule
Runny
Rush
Rust
Rut
Sadly
Sage
Said
Saint
Salad
Salon
Salsa
Salt
Same
Sandy
Santa
Satin
Sauna
Saved
Savor
Sax
Say
Scale
Scam
Scan
Scare
Scarf
Scary
Scoff
Scold
Scoop
Scoot
Scope
Score
Scorn
Scout
Scowl
Scrap
Scrub
Scuba
Scuff
Sect
Sedan
Self
Send
Sepia
Serve
Set
Seven
Shack
Shade
Shady
Shaft
Shaky
Sham
Shape
Share
Sharp
Shed
Sheep
Sheet
Shelf
Shell
Shine
Shiny
Ship
Shirt
Shock
Shop
Shore
Shout
Shove
Shown
Showy
Shred
Shrug
Shun
Shush
Shut
Shy
Sift
Silk
Silly
Silo
Sip
Siren
Sixth
Size
Skate
Skew
Skid
Skier
Skies
Skip
Skirt
Skit
Sky
Slab
Slack
Slain
Slam
Slang
Slash
Slate
Slaw
Sled
Sleek
Sleep
Sleet
Slept
Slice
Slick
Slimy
Sling
Slip
Slit
Slob
Slot
Slug
Slum
Slurp
Slush
Small
Smash
Smell
Smile
Smirk
Smog
Snack
Snap
Snare
Snarl
Sneak
Sneer
Sniff
Snore
Snort
Snout
Snowy
Snub
Snuff
Speak
Speed
Spend
Spent
Spew
Spied
Spill
Spiny
Spoil
Spoke
Spoof
Spool
Spoon
Sport
Spot
Spout
Spray
Spree
Spur
Squad
Squat
Squid
Stack
Staff
Stage
Stain
Stall
Stamp
Stand
Stank
Stark
Start
Stash
State
Stays
Steam
Steep
Stem
Step
Stew
Stick
Sting
Stir
Stock
Stole
Stomp
Stony
Stood
Stool
Stoop
Stop
Storm
Stout
Stove
Straw
Stray
Strut
Stuck
Stud
Stuff
Stump
Stung
Stunt
Suds
Sugar
Sulk
Surf
Sushi
Swab
Swan
Swarm
Sway
Swear
Sweat
Sweep
Swell
Swept
Swim
Swing
Swipe
Swirl
Swoop
Swore
Syrup
Tacky
Taco
Tag
Take
Tall
Talon
Tamer
Tank
Taper
Taps
Tarot
Tart
Task
Taste
Tasty
Taunt
Thank
Thaw
Theft
Theme
Thigh
Thing
Think
Thong
Thorn
Those
Throb
Thud
Thumb
Thump
Thus
Tiara
Tidal
Tidy
Tiger
Tile
Tilt
Tint
Tiny
Trace
Track
Trade
Train
Trait
Trap
Trash
Tray
Treat
Tree
Trek
Trend
Trial
Tribe
Trick
Trio
Trout
Truce
Truck
Trump
Trunk
Try
Tug
Tulip
Tummy
Turf
Tusk
Tutor
Tutu
Tux
Tweak
Tweet
Twice
Twine
Twins
Twirl
Twist
Uncle
Uncut
Undo
Unify
Union
Unit
Untie
Upon
Upper
Urban
Used
User
Usher
Utter
Value
Vapor
Vegan
Venue
Verse
Vest
Veto
Vice
Video
View
Viral
Virus
Visa
Visor
Vixen
Vocal
Voice
Void
Volt
Voter
Vowel
Wad
Wafer
Wager
Wages
Wagon
Wake
Walk
Wand
Wasp
Watch
Water
Wavy
Wheat
Whiff
Whole
Whoop
Wick
Widen
Widow
Width
Wife
Wifi
Wilt
Wimp
Wind
Wing
Wink
Wipe
Wired
Wiry
Wise
Wish
Wispy
Wok
Wolf
Womb
Wool
Woozy
Word
Work
Worry
Wound
Woven
Wrath
Wreck
Wrist
Xerox
Yahoo
Yam
Yard
Year
Yeast
Yelp
Yield
Yoyo
Yodel
Yoga
Yoyo
Yummy
Zebra
Zero
Zesty
Zippy
Zone
Zoom""".split('\n').toHashSet()

}