qwörtle/index.js
2022-02-28 19:31:34 +01:00

468 lines
61 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
const words = "aalen abbau abend abgab abruf abtei abtes abzug achse achte acker äcker adels adern adler affen after agent ahnen ähren akten aktie aktiv akute alarm alben album algen alias alibi alien allee allem aller alles allzu altar altem alten alter älter altes ämter amtes anbau anbot angab angel angst anime ankam anker anruf ansah anzug apfel äpfel april arche areal arena ärger armee ärmel armen armer armut aroma arten ärzte asche asien ästen atlas atmen atome audio augen auges autor autos babys bäche bachs baden bäder bades bälle bande bände bands bänke bären basen basis baten bauch bauen bauer baues bäume baute beben begab beide beige beine bekam belag beleg berät berge bergs beruf beste beten beton beute bevor bezog bezug bibel biber biegt biene biete binde birgt bitte blase blass blatt blaue blech blick blieb blind blitz block blüht blume blüte boden böden bogen bögen bombe bonus boote börse bösen bosse boten boxen boxer boxte brach brand braun braut bravo breit brief bruch brust buche bucht buden bühne bulle bunde bünde bunte büros busch busse büste bytes chaos chöre circa clubs dabei dafür daher dahin damen damit dämme dämon dampf dankt daran darin darum datei daten datum dauer davon davor debüt decke decks deckt degen dehnt deich deine dekan dekor delle delta demos denen denke denkt depot deren derer desto dicht dicke diebe dient diese dinge dolch dorfs dosen dosis draht drama drang drauf dreht dritt droge droht druck duell dünen dünne durch dürfe dürre durst düsen ebene echte ecken edikt edlen ehren eiche eiern eifer eigen eilen eilig einem einen einer eines einig einst eisen eises eklat elend elfen elfte elite empor enden endes endet engel engem engen enger enges enkel enorm enten enzym erben erbes erbin erbte erden erdöl ergab erhob erich erlag erlös ernst ernte erste erwog essen etage ethik etwas ewige exakt extra faden fäden fähig fahne fähre fahrt fährt falke falle fälle falls fällt fängt farbe färbt fasst fauna faust fazit feder fehde fehle fehlt feier feind feine felde felle ferne feste feuer figur filme films final finde firma fisch fjord flach flora floss flöte fluch flüge fluss fokus folge folgt folie foren forst forum fotos frage fragt freie fremd freut frist fromm frost frühe fuchs fugen fügen fügte fühle fühlt führe führt fülle füllt funde funke fürst gabel gaben gänge gänse ganze gänze gasen gasse gäste gatte gebar geben gebet gebot gegen gehen gehör geier geige geist gelbe gelte genau genre genug gerät gerne geste getan geübt ghana gilde ginge glanz glatt gleis glich glied glück gnade gotik grabe grade gramm graue greif griff grill grimm grobe grube grund grüne gummi gunst gutem guten guter güter gutes haare haben hafen häfen hafer haken halbe halde halle halte hände handy hänge hängt harte härte hasen hasst hatte hätte haube hauch haupt hause hebel heben hecht heere hefte hegte heilt helme henne herab heran herde herrn herum heute hexen hielt hilfe hilft hinab hinzu hirte hitze hobby höfen hofes hofft hohem hohen höhen hoher höher hohes höhle holen hölle holte honig hoppe hören hörer hörte hosen hotel hufen hüfte hügel hülle human humor hunde hürde hütte ideal ideen ihnen ihrem ihren ihrer ihres ikone immer indem indes index indiz innen insel intro ionen islam jacke jagen jäger jahre jedem jeden jeder jedes jeher jenem jenen jener jenes jetzt joker jüdin junge jungs kabel kader käfer käfig kahle kalte kälte kamen kämen kamin kampf kanal kanon kante kanus kappe karma karte kasse katze kauft kegel kehle kehrt keine kelch kenne kennt kerne kerns kerze kette keule kinos kiosk kiste klage klagt klang klare klärt kleid klein klima klubs kluft kluge knabe knapp knauf knick knien kniet knopf kohle kokon kombi komet komik komma komme kommt könig könne konto köpfe kopie koran korps kraft krank kranz kraus krebs kreis kreuz krieg krimi krise krone küche kugel kühen kühle kühne küken kunde kunst kuppe kurse kurve kurze kürze küsst küste labor lacht laden läden lagen lager laien lampe lande lange länge längs lanze larve laser lasse lässt laube laufe läufe läuft laune laute leben leber lebte leder ledig leere legal legen legte lehnt lehre lehrt leihe leine leise lenkt lernt lesen leser leute licht liebe liebt liege liegt liest ligen limit linie linke links linse lippe liste liter lobte locke lockt logen logik logos löhne lohnt lokal losen lösen löste löwen loyal lücke lügen lunge luxus lynch lyrik mache macht magen magie malen maler malte manga manns marke markt maske masse mauer mäuse maxim meere meile meine meint meist menge mensa merkt messe meter miete milch milde miliz mimik minen minus misst mitte möbel mobil model modul modus mögen monat mönch monde moore moose moral morde motiv motor motte motto mühen mühle mulde mumie münze musik müsse mutig mütze nacht nackt nadel nagel nägel nahen näher naive namen narbe nässe natur nazis nebel neben nebst neffe nehme neigt nennt netze neuem neuen neuer neues nicht niere nimmt nomen nonne notar noten nötig notiz novum nüsse nutzt obere obhut oblag offen öfter ohren onkel opern opfer optik orbit orden organ orgel orten osten ovale ozean paare pacht packt paket palme panik papst parks passe pässe passt pause pedal pegel pelze penis perle pfade pfahl pfand pfeil pferd pflug pfund phase piano pilze piste pixel pizza pläne plans plant platt platz plaza pokal poker poren porto posen prägt preis prinz probe profi prosa prost prüft pumpe punkt puppe quasi quote raben rache radar räder radio ragen rampe rande range ränge rasch rasen rasse raten rates ratte rauch rauen räume raums räumt raupe reale reben recht reden redet regel regen reger reges regie regte reich reife reihe reims reine reise reist reize rennt rente reste riese rinde ringe rings ringt rinne rippe risse riten ritus roche rohre röhre rolle rollt roman rosen rotem roten roter rotes rotor rückt rudel ruder rufen rügen ruhen ruhig rührt ruhte ruine rumpf runde säbel sache sagen sagte sahen sälen samen sande sanft särge satan sätze sauer säule sauna säure scala schah scham schar schau scheu schon schön schub schuf schuh sechs seele segel segen sehen sehnt seide seien seife seile seine seins seite sekte senat senke senkt sense serie serum setze setzt sicht siege siehe sieht silbe singt sinkt sinne sippe sitte sitze sitzt skala sogar sohle söhne solch solle somit sonde sonne sonst sorge sorgt sorte sowie spalt spart späte speck speer spiel spion spitz sporn sport spott spule spürt staat stäbe stach stadt stahl stall stamm stand starb stark starr start statt staub stehe steht steif steig steil stein stele stern stets stich stieg stiel stier stift still stils stirn stock stoff stolz stopp stört stroh strom stube stück stufe stuhl stumm sturm sturz stute suche sucht süden summe sumpf sünde super suppe szene tabak tafel tagen tages tagte takte taler täler tales tango tanne tante tänze tanzt tarif tasse taste taten täter tätig taube taufe teich teile teils teilt tempo tenor terra tesla tests teuer teure texte thema these thron tiefe tiere tiger tinte tipps tisch titan titel todes tönen tonne toren total toten töten tötet trage trägt trakt traum traut treue trick trieb trios tritt trost trotz truhe trupp tumor turbo türen türme turms typen typus übers übrig übten übung ufern ufers uhren umbau umgab umher umweg umzug unmut unser unten unter urnen vasen vater väter venus verse video viele villa vinyl viola viren virus visum vogel vögel vokal volle vorab voran vorne votum waage wache wachs wacht waffe wagen wagte wählt wahre wälle wände wange wanne waren wären warme wärme warnt warte warum weckt wedel weder wegen weges wehrt weich weide weihe weile weine weint weise weist weite welle wende wenig werde werft werke werks werte wesen wette wider wiege wiegt wiese wieso wilde wille winde wirbt wirft wirke wirkt wirst wirte wisse witwe wobei woche wofür woher wohin wohnt wölfe wolke wolle womit woran worin worte wovon wrack wuchs wucht wunde wurde würde wurst wüste yacht zahlt zählt zähne zaren zarin zäsur zeche zehen zeige zeigt zeile zelle zelte zenit zeuge zeugt ziege zieht ziele ziels zielt ziert zirka zitat zivil zogen zölle zonen zucht zudem zügel zügen zuges zügig zumal zunft zunge zuvor zuzug zwang zweck zweig zwerg zwölf"
.split(" ")
.map(x => x.toUpperCase());
const validGuesses = "aalen aalst aalto abbau abbot abbys abeba abegg abele abels abend abgab abgas abhob abner abort above abram abreu abris abruf abtei äbten abtes abuja abyss abzog abzug accra accum achse achte acker äcker acoma acorn acres acryl actes acton actor acura adami adamo adana adass addie addis adela adels adern adieu adina adler adlig admin adnan adnet adobe adore adorf adult aegyd aelia aeros affen affix after ägäis agave agens agent aggie aggro ägide agile aging agnew agnus agony agrar agree agung ahead ahlem ahnen ahnte ähren ahura aichi aidan aiden aigle aiken aimee aisch aisha aisne akari akers akiba akita akkon akron aksum akten aktes aktie aktiv aktor akute alamo alana aland alang alarm albas alben alber albis album albus alcan alceo alden alder aleja aleph alert alesi alfie algen alias alibi alien alita alken allah allee allel allem aller alles alley allie alloy allzu almas almut aloha alone along aloys alpes alpin alpiq alsos altai altan altar altay altem alten alter älter altes alton altus alves alvis alwin alzey amaia amann amano amara amaro ambon amici amida amiga amigo amina amish ammar ammen ammer amorc amore amors amour ampel amper amram amrum amsel ämter amtes amuse anand anbau anbot andau andel ander andes andor andrä andri andys angab angas angel angie angle anglo angra angry angst anhin anhob anhui anima anime anion anjar anjou ankam anker anmut annan annes annex anode anouk anruf ansah ansar anson antel anten antti antun anvil anzog anzug aorta aosta apels apelt apfel äpfel appia april aquin arago araki arana arani arawe arbgg arbon arbor arche arcos arden areal areas arena arend arens arete aretz areva argen ärger argon argos argus arias aribo ariel arier aries arise arius arlen arles armas armed armee ärmel armen armer ärmer armes armor armoy armut arnau arnis aroma arras array arrow arsch arsen arten artet artie aruba arvid aryan ärzte asada asahi asche ascii ascot asean ashby asher ashes asien asker aslam asmus aspen asper assad assaf assam asser assis assur asten ästen aster astes astor astro asuka asuna asylg äther athol athos atlas atman atmen atmet atoin atoll atome atoms attar audio audis audit auers augen auges augie augst aulus aurea aurel autor autos autry avant avast avers avery avian avion aviso avram awake axial axiom axone äxten ayako ayala ayhan azhar azuma baade babar babel babys bache bäche bachs backe backs bacon baden bader bäder bades badge badis baeck baehr bafta bagan bagel bagge bagno bahai bahia bahnt bahre bahro baird baitz baixo bajau baken balai balch balge bälge balke bälle balme balto bambi bamse banal banat banca banco banda bande bände bands bandy banff bange bangs banja banjo banka bänke banne bantu baran barat barba barby barch barde bardo bären bares barge bärin barke barks barna barop barra barre barta bärte bartl barts basal basar basch basen bases basho basie basin basis basra bassa basse bässe bassi basso basta basti baten baths batic baton bator batta batte bauch baude bauen bauer baues baugb baugh baume bäume baums baute bawag bayou bazar beard beast beata beato beaux bebek bebel beben bebop bebra becca becht becke becks becky beebe beech beere beers beese beete begab begum behle behra beide beige beile beils beine being beinn beith beize bekam belag beleg belge belli bello bells bellt below beltz bembo bence bench benda benet bengt benin benji bense bento bentz benze beppo berat berät beres berga berge bergh bergs beria berit berka berks berna berns bernt beroe berti bertl beruf beryl besar besen beste bests beten beter betet betis beton betsy bette beust beute bevan bever bevor bezog bezug bibel biber bible bibra bican bichl biegt biehl biene biere bieri biers biese biest biete bigge biggi biggs bigod bihar bijou bilal bilbo bilde bilds bilge bilka bille bimbo binde bingo bioko birch birds birgt birka birke birma birne birte birth bisam bison bisse bitch bites bitte biwak bizzy björk blade blaha blain blame bland blane blank blase blass blast bläst blatt blaue blaze blech bleib bleis blend bless bleus blick blieb blies bligg bligh blind bliss blitz block blohm blois blome blond bluff bluhm blüht blume blunt bluse blüte blyth boada böcke boden böden bodes bodin boeck boehm bogen bögen boger boggs bogig bogle bohle böhms bohne bohrt bohun bohus boise bojen böker boldt bolko bolle bolli bölls bolus bomba bombe bonar bondi bonds bondy bönen boney bongo bonin bonne bonns bonny bonus boone boost boote booth boots bootz bopha boran borax borba borch borde börde borea borek borgo borke borna borne borno bornu boron boros börse borst borte bösch bosco bösel bösen böser böses boson bossa bosse bossi boten böten botew botha bothe botho botin boule bound bovet bovis bowen bower bowie bowle bowls boxen boxer boxte boyce boyen boyer boyle brach brack braga bragg bragi brahe brain brake brand brant brass braun braut brava brave bravo brawl bread breck breda brede breed breen brehm breit brels bremm brenz brera brese bretz breve brice brick bride brief brieg brigg brill bring brink brita britt broad broch brody brome brons bronx brood broom brose brote broye bruch brück brüel brugg brühe bruhn brüll brune brüne bruni brunn bruns brush brüsk brust bruun bruyn bryce bubba buben buber bucer bucha buche bucht bucks budde buden buder buemi buena buffy bügel buggy bühel buhle bühne buick build bukit bukow bulla bulle bully bulma bumke bunak bünau bunce bunch bunde bünde bunds bundy bunge bunko bunny bunte bunzl burch burda bürde bures bürge burgh burgk bürgt burma buron büros burow bursa burse burst burts busan busby busch büsch busen bushs buske busse büste büsum butan butch bütow butte butts büyük buzek byrds byrne bytes bytom cabin cable cabot caddy cadet cadre cages caine caird cairn cairo cajun cajus calau calbe calbo caleb calls calvo camel campe campi camus canis canoe cante canto cantz capes capol capra capri capua caput cards carel carew carey carin carle carli carls carly carmo carpi carrs carry carta carte carus cäsar casas casco cassa catch cause cavum cazal cecco celan celia celje cella celli celso cemal cents cerci cerny cervo cesar chaco chaim chain champ chant chaos charm chart chato chaux cheap cheat chedi cheek chefe chens chenu chery chess chiba chick chico chidr chien chili chill chios chiti chlor chlum choir choke chola cholm chong chops chora chöre chrom chuan chung chute cilli cilly circa circo ciros cisco citys civic claas claes claim clair clamp clank cläre claro clary clash clays clean clear clerc clerk cleve cliff cline clint clips clock close clown clube clubs cluny coats cobra codec coeur cohns coins coire cokes colas colby coles colla colle colli cölln color colts combe combo combs comes comet comte comyn conan conde coney congo conny conor conti conus conwy cooke cooks coole coppa coppi coral cords corea corey corky corno corry corsa corse corso corte cosby cosmo coste cotta couch coucy could count coupe coups cours coven cowan cowen coxen coyne crabs crack craft cramm crane cranz cream crean credo creed creme crest cretu creux crewe crews crick cries crisp criss croce croft croix croma crone crook crowd crowe crush crypt cuban cubes cueva cukor cuneo cunha cuntz cupid cupra curie curio curly curry curse curva curve cusco cutts cuzco cyber cycle cymru cynan czech dabei dachs dacia daddy dafür dagny daher dahin dahme dalai daley dalia dalla dalli damas damen dames damit damme dämme damms dämon dampf danau dandy danes dänin danke dankt danni danse dansk danti danza daran daria darin dario darja darko darla darms darth darts darum daryl datei daten dates dathe dativ datum dauer davao davey davie davon davor dawes dawid dawit dayan dazed deane deans debra debus debüt decay decca decke decks deckt decoy deeds deere degas degen dehne dehnt deich deild deine deira dekan dekor delay delia delle dello delta demag demir demon demos demut denar denen deniz denke denki denkt denny denys depot derbe deren derer derix deron derry desai desto deuce deute deutz devid devil devin devis devon dewey dgzrs dhaka dharr diary dibra dicht dicke dicks diddy diebe diehl diele diene dient diese diest dietl digby diggs dijon dilis dimer dinah dinan dinas diner dinge dingo dings dinis diniz diode diogo dions diori dipol dirck dirge dirks dirty disko disks divas diver dives diwan dixie dizzy dnepr dnsap dobbs döben docht docks dodds dodos dogan dogge dogma dohle dohna dolan dolby dolce dolch dölle dolls dolly dolna dolph domus donat donny doors doras dorer dorfe dörfl dorfs doria dorit dorje dorle dorne dorns dorst dörte dosen dosis dosse douai douce douro doves downs doyle drach draco drago draht drain drais drall drama drang drauf drava dread dreck drehs dreht dress drews driem dries drift drill drina drink dritt droge drogo drohe droht droit drone drops drost druck drugs drums drury drüse dsgvo duale duane dübel düben ducks dudek duden duell duffy düfte dukas düker dukes dukla dumas dumme dumpf dünen dunja dunne dünne dunst dupin duque duran duras durch duret dürfe dürre durst düsen dusty duval duvet dvory dwarf dwyer dying dykes dynax dyson dzeko eadie earle eaton ebbte ebene eberl ebern ebnen ebner eboli ebony echos echse echte eckel ecken ecker eckig ecole edeka edens edikt edlen edler edsel eerde effie egbgb egede egert egill egmbh egner egypt ehime ehlen ehren eiben eiche eicke eider eides eidos eiern eifer eigen eight eigne eilat eilen eilig eilte eimer einar einem einen einer eines einig einöd einst einte eirik eisel eisen eises eitel eitle eklat ekzem elbow elche elder eldon elend eleni elert eleve elfen elfer elfie elfte elgin elina eliot elite elkan elkes elkos ellar eller elmar elmer elsas elsen elser elsie elspe elton elwes email emery emesa emine emire emmas emmen emmet emory empor empty emrah emser encke enden ender endes endet endor endre enemy engel engem engen enger enges enkel ennis ennos enoch enorm enten enter entre entry enver enzio enzos enzym eozän epple equal erath erato erbat erben erbes erbin erbte erden erdöl ergab erhob erica erich erick eriks erlag erlau erlen erler erlös erman ernie ernst ernte erpel errol error erste ertel erwan erwog erzen erzes erzog esche eseln esels esens espen espoo essen esser essig esten estes estie estin etage etats ethel ethen ether ethik ethin ethos etsch ettal etter etüde etwas etzel eulen eupen euren eurer euros euter eutin euwes evers evert every ewers ewert ewige ewing exakt exile exils exner exter extra fabel fabio fabre fabri fabry faces fachs facts faden fäden fader fagan fagus fahan fähig fahle fahne fahre fähre fahrt fährt faire fairy falck falco falke falko falks falle fälle falls fällt false falte famfg fancy fände fanes fänge fangs fängt fanon farah farbe färbt farce fargo faria farid farim faris farms farne faruk fasan faser fasst fasti fatah fatal fatih fatma fatwa fauci faule fäule fault fauna faure faust fazio fazit feast fecht fecit feder fedor fehde fehle fehlt fehmi feier feige feile feind feine feist felde felge feliu felle fells femme fendt ferch ferdi ferdl feria ferme fermi ferne ferns ferro ferse feser festa feste fests feten fette feuer fever fiala fibel fiber fibre fidel fides fiege fiera fietz fifth fifty figur files filet filho fille filme films filmt final finch finck finde finke finma finne finns finow finte fiona fiore fipps fires firma firth fisch fiske fitch fiume fives fixed fixen fixer fjord flach flack flade flagg flags flair flake flame flats fleht flers flesh flick flies flims flink flirt float flock flöha flöhe flohr flood floor flora flore flory floss flöte flott flows flöze fluch fluge flüge flugs fluid fluke flume fluor flure flurs fluss flyer focht focke fodor fokus foley folge folgt folie folio folke folks folly foltz fonda fondo fonte foods fools foote förde fords forel foren forge forks forma forms formt forst forte forth forty forum forza fossa föten fotos fötus fouls found fovea fowey fpgas fraas frack frage fragt frans freak frech freda frede fredi freds fredy freed frege freie fremd frese fresh freue freut freya freys frick fried frist frith frits frode frodl frodo frohe frome fromm frose frost frühe fruit frust fryde fryer fuchs fuder fuego fugen fügen fügte fühle fühlt fuhre führe führt fukui fulbe fulko fülle füllt funck funde funds fünft funke funky funny furor fürst furth füsse futar futur fuzzy fylke gabel gaben gäben gaber gable gabor gabun gagel gagen gagne gaier galan galas galba gales galla galle galli gallo gamal gamba gambe gamer gamla gamma gänge gangl gangs ganna gänse gansu ganze gänze garay garbe garbo garda garen gären garne garry garth gartz garza gasag gasen gases gasly gasse gäste gatte gauck gauen gaues gauge gauri gävle gawan geary geäst gebar gebel geben geber gebet gebot gecko geert geeta gegen gehen geher gehör geier geige geisa geiss geist gelbe gelee gelte gemma gemüt genas genau genen genet genfs genio genom genre gente genug genus geoff gerät gerdt gerke gerne gerst gerth gerti gertz gesät geshe gesta geste getan getec getto getty getxo geübt gewog ghana ghazi ghosh giant gibts gicht giese gifte giggs gigue gilda gilde giles gilgi gille gills gilly gilsa gimme ginge ginny gioia gipsy gitta gitte gitti gizeh glade glahn gland glane glanz glänz glatt glaus glehn gleis glems glich glick glide glied glock glonn gloor glory glösa gluck glück glutz gmbhg gmina gnade gneis gnigl gnome goals göbel gödel goden godin godot godoy goetz goghs gogol going golda göldi golds goldt golem golfo golfs golos goltz gomes gonda gongs gonia gonna gönnt gonzo gooch goode goods goody goofy goose gopal göpel goran göran gorch gordy gorge gorki görtz gosda gosse gösta goten göths gotik gotta gotti götze gouda gough govan gower grabe grabs gräbt grade grado grady gräfe graff graft grahl grain gramm grana grape graph grate gratz grätz graue grave grawe grays grebe greco greek greer gregg greif greig grein greis greiz grell grenz greve grewe gribl grief grieg griep gries griet griff grill grimm grind grobe groep groll groos groot grosz grote groth grout grube gruhl gruhn grund grüne grüns grupa grupe grupp gruss guano guben gucci gudea guder guest guidi guise gulag gulch gulde gülen guler gülle gully gummi gunda günni gunst gurke gurte gurus gusle gusti gustl gutem guten guter güter gutes gütig guyon gyges gypsy gyula haage haags haake haare haars habel haben haber habib habit hachi hacke hacks hades hadik hadji hafen häfen hafer hagar hagel hager hagia hague hahne hähne hahns haida haide haien haiku hajek hakan haken hakim hakon halas halbe halde halem halen hales haley halla halle halli hallo halls halme halms halos hälse halte hamar hamdi hamel hamen hamer hamid hamma hamon hampe hamza hände handl hands handy hänel haney hänge hangs hängt hanka hanke hanks hanne hanni hänni hanno hanoi hapag happe haram harem haris harpe harri harro harte härte hartl harts harun harze hasel hasen hasse hasso hasst haste hatch hatje hatte hätte hatto haube hauch hauck haufe hauff hauge hauke häupl haupt hausa hause haute häute haver havoc havre hawes hawke hayek haymo hayum hazel hazen heads healy heaps heard hearn heath hebei hebel heben heber hecht hecke hecks hedda heere heers hefen hefte hefts hegau hegen heger hegte heigl heile heils heilt heime heimo heims heini heino heins heise heiss heitz heizt helck heldt helfe helgi helix hello hells hellt helma helme helms heman hemma hemmt henge henie henke henle henne henny henot henze herab heran herat herbe herde hergt herle herma herms heron heros herre herrn hersh herta herum herzl hesel hesso hetty hetze hetzt heuss heute hexen hexer heyde heydt heyen heyer heyse hicks hidde hiebe hielt hilda hildy hilfe hilft hilke hilla hille hilma hilti hilum himal himes hinab hinde hindi hindu hines hintz hinze hinzu hippe hiram hirns hirse hirte hirth hisar hitze hmong hoare hobbs hobby hobel hoche höcke hockt hoden hodge hofen höfen höfer hofes hoffa hoffe hofft hogan hogar höger hohem hohen höhen hoher höher hohes hohle höhle höhne holck holen holle hölle holme holst holte holtz hölzl homel homes homme hondo honey höngg honig hönig honky hooke hooks hooky hoorn hopes hoppe horak horaz horch horde hörde horen hören hörer hörig horne horns horta horte hörte hörzu hosea hosen hoshi hösle hosts hotel hotte hough hours hövel hoven howes howie hoxha hoyer hoyle hoyos höyük huang hübbe hubei huben huene hufen hufes hüfte hügel hugos hulda hülle hüllt hulme hulot hülse hulst human humer humor humus hunan hunde hundt hunte hunts hürde huron hurst hürth husar hüsch husen hüten huter hüter hutes hütet hütte hutze hwang hyatt hydra hydro hyman hymns hynek iason ibach ibiza ibsen icons ideal ideen ident idiom idiot idole idols idris idyll iglau ihlow ihnen ihrem ihren ihrer ihres ikeda ikone ikuko ilgen ilias iljin iller illig illya iltis imago imame imhof imker imlay immer immun imola indem inden indes index indie indio indiz indra indus infos inger inges inkas inken inlay inlet inman innen inner innes innig innis inoue input insel intim intro ionen ipads iqbal iraks irena irren irrte irvin irwin isang ischl iseut iskra islam islay isler isles isola issue isuzu italo italy itter itzig iulia iuris ivana iveco ivica ivory iwans iwata izmir izmit izumi jabez jacek jacht jacke jacks jacky jaden jaehn jafar jaffa jagen jager jäger jagst jagte jahan jähen jähes jahns jahre jahrs jaime jajce jakes jakow jakub jalta janda jandl janez jango janik janis janka janke janko janne janos jansz janus jared jarek jarno jarod jarre jatho jauer jaume jayne jedem jeden jeder jedes jeeps jeffs jehan jeher jelly jenas jenem jenen jener jenes jenks jenni jeong jeppe jerez jerzy jessy jetta jette jetzt jeune jever jewel jhwhs jiang jilin jills jitsu jobbt jobst jocko jocks jodie jodok joest johor joker jolie jolla jolle jolly jonah jonge jonny joost jorat joris josep joshi josie josse josua joule jovan jozef juana juans jubel judäa judah jüdin juhan juice juist jujuy jumbo jümme junge jungs juras jurek jurij juris juror jurys jusos jussi justa justo justs juwel jyske kabel kabir kaden kader kadri kadua kaede käfer käfig kagan kahle kähne kahun kains kainz kajak kakao kalam kalbe kaleb kalev kalif kälin kalju kalke kalks kalli kalpa kalte kälte kamal kamel kamen kämen kamil kamin kämme kamms kämpe kampf kamps kanal kanda kanes kanis kanji kanna kanne kanon kante kanti kanus kanye kaori kappa kappe kappl karan karat karge karla karli karlo karma karol karos karow karre karsh karst karte karts karwe kasab kasan käses kasey kassa kasse kaste kasus katen kates kathi kathy katia katte katya katyn katze kauen käufe kaufs kauft kauka kauke kautz kaval kawai kayla kazan kdstv keane keats kecil keene kegel kehle kehre kehrt keiko keile keils keime keine keins keita kekse kelag kelch kelle kells kelso kemah kemal kempe kempf kenan kenji kenna kenne kennt kents kenya kerak kerbe keres kerle kerne kerns kerze keton kette keule keyes khans kiara kicks kiehl kiele kiels kiese kietz kills killy kinde kindl kinos kiosk kiowa kippe kippt kirch kirow kisch kisse kiste kitai kitas kittl kitts kitze kjeld kjell kkstb klaas klade klage klagt klahn klamm klang klans klare klärt klass klatt klaue klaut klebt klees kleid klein klemm klenk klett klick klier kliff klima klimt kline kling klink klipp klock klone kloos klose kloss klotz klubs kluft kluge kluth knaak knabe knack knall knapp knast knauf knaur knaus knick knien knies kniet knife knoch knock knodt knoll knoop knopf knopp knows knust knuth kober kobra köche kochs kocht kodak köder kodes kodex kogan kogel kögel kogge kohle kohli kojen kokon kolar kolbe kolin kolja kölle kölln kombi kombo komet komik komma komme kommt kondo konew kongs könig köniz könne könnt konow konto konus konya koons koops kopec koper köpfe kopie köpke koppe kopps koran körbe korbs korda korey korff korfu korps korso korte korth kosak kosel kösel kösen koser kosta kotor kotte kovac kowel kpdsu krabi krach kraft kragt krahe krähe krahn krain krake kramm krane kräne kranj krank krans kranz krapf krapp krass kratz kraus kraut krebs kreis krell kreml krenn krenz kreon kress kreuz krieg krimi kripo krise krist kroch krohn kroll krone krönt kropf kropp kröte krüge kruja krumm kschg kuala kuban kubas kübel kubik kubin kubus küche kuchl kuder kufen kugel kühen kuhle kühle kühlt kühne küken kulis kulte kults kumar kunde kundl kunst kunta kuppa kuppe kuren küren kurse kursk kürte kurth kurti kurts kurtz kurve kurze kürze kusch kusel küsse küsst küste kutte kwjat kyoko kyros laach laage laban labem labil labor lacan lacey lache lachs lacht lacke laden läden lader lagen lägen lager lagig lagoa lagos lahme laibe laich laien laika laila laios laird lajos laken lamar lamas lampe lande lando lands lanes laney lange länge lango langs längs lanza lanze lapin lapis laras laren large largo larve lasen laser laska lasse lasso lasst lässt lasur later latex latif latte laube laude lauer laufe läufe laufs läuft lauge laune laure lauri lauro läuse laute lauth laval laven layer layla layne lazar lazio leach leafs learn leary least leave leben leber lebte lebus lecce lecks leder ledig leduc leela leere legal legen legge legio legte lehne lehnt lehre lehrt leibe leica leide leids leier leihe leiht leila leine leipa leise leite leith leitz lelio lemgo lemke lemma lemmy lemon lemos lemur lemuy lenas lenkt lenne lenny lenox lentz leona leoni lepel lepka lepra lerch lerne lernt leroy lesen leser leske lesum leten lethe letos lette letts letzt leuna leung leute leven lever lewan lewes lewin lexik lexus leyla leyte lhasa lhjmq liane liang libby liber libra libre libri libro liceo liceu licht lidia liebe liebs liebt lieck lieds liege liegt lienz liepe liese liest lietz lifta lifte ligen ligne ligue liiga likör likud lilac lilja lilla limas limit linck lindh lindt lindy linea liner linha linie linke links linse linth lintz linus lioba lippe lippi lipps lisas lisch lisle lissa lissy lista liste lists litas liter litre litze lives livet livia livio livre lizzy löbau lobby löbel loben löben lobes lobos lobte lobus lochs locke locks lockt locle locus loder loewe loewy logen logic logik login logis logos lohan löhes lohne löhne lohns lohnt löhrs lohse loipe loitz lokal lolas lomax lombu longa longo lonza loops loose lorca lorch loren loret loris lorna lorne lösch losem losen lösen loser löser loses losey löste lotse lotta lotti lotto lotze lough louie loved lover loves lovis löwen löwin lowry loyal luang lübbe lüben luber lubin lübke lucca lucha luchs lucio lücke lucys luden luder lüder lüfte lügde lügen lujan luken lüken lukes lully lumen lumia lumpi lunar lunch lunds lünen lüner lunge lupin luppa lupus lurie lüthi lütke luton luxor luxus luzia luzie luzon lydda lyell lyman lynch lynda lynen lynes lynne lyons lyria lyrik maare maass macao mache macho macht machu macon macos madan maddy mädel maden mader mäder madge madhe madre maeda maerz maeve mägde magen mägen mager maggi magia magie magma magna magne magno magoo mahal mahan mahdi maher mahla mähne mahnt mahon maidu maike mains maior mairs majer makah makel maker makes makis malan malek malen maler malik malin malis malko malle malte malus malvo mamas mambo manas manch manco mandi mandl mandy manes manga mango mania manic manja manko manly manne manni manns manny manon manos manta manus maori maple mappe maras marat marca marci marcs marcy mardi maree marfa marge margo marin maris marix marja marke markt marlo marly marne maron marrs marte marti martz marum masao masch masen maser masha maske masse maste matan matas mateo mater matis matra matre matte matti matto matts matty matze mauch maude mauer mauls maura mauro maury mäuse mauss mavis maxen maxim mayas maybe mayen mazda mäzen mazur mbyte mccay mccoy mcgee mckay mckee mcnab mcrae mcree meade means meaux mechs mecke medea meder meera meere meets megan mehdi mehle mehta meike meiko meile meili meine meinl meint meise meist melas meles melis mella melle melli mello melon memel memes menak mende menge menlo menne menon mensa menüs meran mercy meret merit merkt merle merlo merry messa messe messi mesta mesto meter metta mette metze meute mewtu meyen meyns mezzo miani micah micha michi michl micky micro midge mieke miene miete might mihai mikes mikey mikis mikko mikro mikwe milch milde milet miley miliz milla mille milli milly milne milos mimik mimte minde minds mindy minen miner mines mingo mings minne minos minto minus minya mirai miraz mirco mirko mirza misha missa misst missy misty mitch mitis mitra mitre mitte mitzi miura mixer mixte mizzi möbel mobil möbus model modem moden modul modus mofas mögen mogul mohan möhne mohrs moira moisy molar molay molin molke molle molon mommy monas monat mönch monde mondo monet monge moniz monja monks monod month monti monts monty monza moody moore moors moose moped moral moran moraw moray morde mords morel mores moria morin moriz morne moros morra morro morse morte morty morus mosch moshe mosse mosul motel motiv motor motta motte motto mound moura mouse mouth moves möwen mszmp mucha mücke mucki mudau muddy müden muffe mufti mühen mühle mujer mulde multi mumie mumin munch münch munda munde mundi mundl mundo mundt mungo munro münze murad murai murau murer murom murot mursi musch musei musen müsen museu musik musil müsse musso musst muten muter mutes mutet mutig mutti mütze muzio myers myles myrna myron mysql myzel naarn nabel naben nabil nacho nacht nackt nadel nader nadia nadig nadir nadph nadus nagai nagar nagel nägel nagen nager nahen nähen näher nähme nährt nahte nähte naila naina naive naked namen names namib namie namur nance nanda nandi nando nanni nanny naoki naoko narbe narin narva nasal nasen naser nasir nasse nässe nasty natal nativ natur nauen nauru navis naxos nazis neale nebel neben nebra nebst neele neffe negan neger negra negri negro negus neher nehme nehmt nehru neige neigt neill nelke nells nembo nemec nemsi nenad nenne nennt nerds neros nervt nesse nests nette netze neuem neuen neuer neues neven nevis newag nexus niall nicäa nicht nicki nicks nicky nicol nicos nidda niere niers nieuw nigra nihon nikki nikon nikos niles nimmo nimmt ninas ninja ninon ninos nisan nitra nitti nizam nizar noack noahs nobel nobis noble noche nodes noire noirs nokia nolan nölke nolte nomad nomen nomos nonne noone noord noras norge noris norma norra norsk norte noske nossa notar noten nöten notes nötig notiz notre notte notts nouma novae novel novum novus nueva nuevo nufer nunes nunez nuova nuove nuovo nuria nurse nüsse nuten nutze nütze nutzt nützt nylon nyman oasen oasis oates obere obhut obige oblag oboen obras ochoa ochse ocker ödeme odeon odier odile odilo odlum oeder oehme oelde oelze oeser oeste oexle ofens offen offer öfter ogata ogden ogier ognon ogwen ohara ohler ohren ohrid ojeda okada okrug oleds olena olgas ölige oliva olive ölper olson olymp olzog omaha omega omnia onkel opern opfer ophir opitz opium opole oppau oppel oppen optik orale orang orbis orbit orden ordre oreca orell orest orfeo orffs organ orgel orgie orhan orjen orkan orlow ornat oromo orrin orson ortel orten ortiz orton oruro orval oryza osage osamu osann ossip osten oster ostia östra otago otero otmar otomo ottar otten otter ouest ousia outer outet outro ovale overn owain owner oxfam oxide özcan ozean paare paarl paars paart paavo pabst pacht packs packt paddy padma padre pagan pagar pagen pages paget pagus paigc paige paine paint paket pakts palau palin palio palme palos pamir pamuk panax panda panel panik panis panke panne panny panos pansa paola paoli papen papke pappe papst papua parat parco pardi paret parey parke parks parkt pärnu paros parra parry parti parts pasar paseo pasir passe pässe passi passo passt paste patay patel paten patin paton patsy patty pauke paule pauly pause pavia pavie pawlo payer payoh peach peaks peale peary pease pecos pedal peder peene peers peeta pegel peine peitz pelin pelle pelze penck penig penis penna pensa pentz peppy pepys peres perle peron perse perus pesce pesch pesos petar petes petre petro petru petry petto petty peyer pfade pfaff pfahl pfand pfarr pfaus pfeil pferd pfiff pfinz pfirt pflug pfote pfuel pfund phage phare phase philo phnom phone photo piana piano piave picht picks pickt pidax piece pieck piers pieta pieve piggy pikes pilar pille pilon pilze pines piney pinge pinky pinon pinot pinto pinus piotr pipes pippi pirat pires pirro piste pitch pitti pitts piura pixel pizza plage plain plane pläne plank plans plant plass plath plato platt platz plaue plaut playa plays plaza pleas plein pleso pless plots plötz plumb pluto pöbel poche pocht podol poems poets pohle pohls pokal poker polak polar poldi polin polis polje polka polle polly polos polte ponce ponds pongs ponta ponti ponts ponys ponza pooja poole pools popes popow poppe poppi poppo poren poros porös porth porto porus posch posen poser posse poste postl posts potts poule pound powys pozzi pozzo prada prado praga prags prägt praha prahm praia prall prato praun preis presa preto pridi prien pries prima primo prins print prinz prise privy priya probe probt profi pröll promo proof prope prosa pross prost proxy prüfe prüft prunk prutz pryor pudel puget pujol pully pulse pumas pumpe pumps punch punks punkt punta punto punts puppe purdy purem puren purer pusch pussy putti putze pylon qatar qavam quack quade quads qualm quält quans quark quart quarz quasi quast queer quell quere quern quero quest queue quick quiet quine quint quota quote raabs raban rabat raben rabia rabin racer races rache rächt radar radek raden rader räder rades radha radic radio radke radom rafft ragaz ragen ragow ragte rahal rahel rahim rahul rainy rajas rajya rakow ralle rally ramal raman ramas rambo ramin ramla rammt ramon ramos rampe ramus rance rande randi range ränge rania ranke ränke rankl rankt rappe rappt raqqa raren rarer rares raron rasch rasen raspe rasse rasso rasta raste rasul rasur raten räten rates ratio ratte ratti raubt rauch rauem rauen rauer rauhe raume räume raums räumt raupe raute raval ravel rawls rayne rayon razor reach ready reale realm rebel reben reber recht recke reddy reden redet reede reeds reell reese reetz reeve refik regal regan regel regem regen reger reges regia regie regis regte rehau rehen reibe reibt reich reife reift reign reihe reiht reime reims reina reine reino reise reiss reist reith reitz reize reizt reles rempe remus renee rennt rente renzi rerum resch resta reste retro reuse reuss reute reuth reval revan revit reyer reyes rezat rheda rhede rhett rhine rhino rhoda rhone ribot ricas ricci ricco ricki ricks ricos rider rides rieck riede riedl riege riehl rieke riems riepe riese rieth rietz rieux riffe riffs rifle riggs riina rikki rikli rilke rille rinck rinde rindt ringe ringo rings ringt rinke rinko rinne rinnt rione rippe risch rispe risse riten rites ritte ritus rivas rixen rizal rizzo roach roads roark robbi robby röbel roben röber robot robyn rocca rocco rocha roche röcke rocks rodde roddy roden rodeo roder rodin rogge rogue rohan rohde rohem rohen roher rohes röhms rohöl rohre röhre röhrl rohrs rojas rolex rolfe rolle rolli rollo rolls rollt roman romer romeu ronan ronda ronde rondo ronin ronny rooke rooms roope roots roper röpke roque rosas rösch rosel rosen roser roses rosie rosig rosin rossa rosse rosso rotem roten roter rotes rötet rötha rothe roths rotor rotte rough rouse röver rowan rowdy roxie royce royer rsfsr ruben rüben rubio rubus rücke rückt rudel rüden ruder rudge ruedi rüedi rüegg rufen rufer rufes ruffy rügen ruger rüger rügte ruhen rühen ruhig rühle ruhms rühmt rührt ruhte ruine ruins rukia rulle rumer rumpf runde runen runge rural rurik rusch rüsch russo rusty ruten rüter ruths ryans ryder rynek saals saane saara sabel säbel saber sabha sabin sable sabor sabre sabri sacco sacha sache säcke sacks sacra sacro sadat sadie saeed saeki safer säfte sagan sagar sagas sagen sägen sager sagte sahel sahen sähen sahib sahin sahne sainz saito sakai salah salam salas salat salbe saldo saleh sälen salih salim salis salix salsa salto salty salus salut salva salve salvi salze samar samba samen samer samin samir sammy samos sampt samus samut sanaa sanam sanct sande sands sanft sanne sansa santi saori saras särge sarit sarja sarre sarti sasha sassa sasse sassi sasso satan satin satyr sätze sauce saudi sauen sauer saugt säule sauls sault säume sauna saure säure savas saves savoy sawod saxon scala scale scans scapa scary scene schad schah schal scham schar schau schen scheu schin schob schon schön schor schub schuf schuh schuk schul schur schut scone score scots scudi scuol seans sears sechs seder seeds seele seeon segal segel segen segge segni sehen seher sehne sehnt seibt seide seidl seien seife seiji seile seils seine seins seite seiya sekte selby selen seles selex selig selim selle selva semil senat senft senke senkt senne sense sensi sensu senta sepia seppl serie serre serum sesto setae sethe seths seton setra setup setze setzt sexte shack shade shady shaft shaka shake shala shang shape shark shaun shawn shaws shear sheep shehu sheng shiba shift shiki shiml shine shipp ships shire shirt shoah shock shoes shoji shona shoot shops shout sibir sibiu sicht sides sidon sidor siebe siege siegs siegt siehe sieht sieur sigel siggi sight siglo sigma signa signe signs sikhs silas silbe silks silla silly silos silur simba simca simms sinai sinan sindh singe sings singt sinkt sinne sinns sinnt sipho sippe sirup sisis sissi sites sitia sitio sitte sitze sitzt sivan sivas sixth skala skale skara skate skene skien skier skies skins skoda skull skype slade slams slang slash slave slawa sleep slice slick slide sligo sloan slope slots slums smash smaug smile smits smoke smoky smuts smyth snack snake snape snell snoop snowy soden sodom södra sofas sofer sofie sofja sogar sohle söhne sohns sokol solch soler solex solid solle solln solms solna solon solor solos somit somme sonar sonde sonea sonne sonst sonya sonys sopot soran sordo sören sorge sorgt soria sorry sorte soter souci soule souls soult sousa souto souza sowas sowet sowie spade spain spalt späne spare spark sparr spart spass späte späth spatz spaul speak spear speck speer speth spice spiel spier spies spike spina spins spion spira spiro spitz spock spohn spohr spore sporn sport spots spott spray spukt spule spült spüre spurs spurt spürt spyro staab staad staal staat stabe stäbe stabs stach stack stacy stadt stags stahl stahr stain stall stamm stams stand stang stans stapf stapp stara starb stare stari stark starr start stary starz stasi stato statt staub stauf staus staut stech steck steen stege stegs stehe steht steif steig steil stein stele stena steps stern stete stets stich stick stieg stiel stier stiff stift still stils stimm stine sting stirb stirn stock stoff stohr stöhr stoke stoll stolp stolz stomp stony stoop stopp stops stora stord störe stork stört stout strip stroh strom stube stück studi stufe stuff stuft stuhl stumm stump stunt stupa sturm sturz stute stutz stütz stvzo subsp suche sucht sucos sucre süden sufis sühne sujet sulla sully summa summe sumpf sünde sunna sunny super süper suppe suren susie suter sutil sutra suwon svend sveti swain swami swamp swann swapo sweat sweta sweti swift swine sword sybil sydow sykes sylva syrah syria szene tabak table tabor tabus tacon tadel tafel tagen tages tagte tahir taiji tails taira takao takeo takes takte talar taler täler tales tally talon talpa taluk tamar tamas tammy tampa tandy tanga tango tania tanis tanka tanna tanne tante tanya tänze tanzt tapes tarek targa tarif tarik tarnt tartu tasks tasse tasso taste taten täten täter tätig taube taufe tauft taugt tawil tears teatr teens teich teile teils teilt tekke tekle telfs tello tells telos tempe tempi tempo temps tenor tepco terje terme terms terra terre terri tesch tesla tessa testa teste tests tetra teuer teure texel texte texts thaer thais thale thane thani thank thann thaur theel thein their theke thema theme theon theos there these thess theta thies thilo thing think thome thoms thong thöni thora thors those thron thumb thurm tiber tibor tiefe tiefs tiere tiers tietz tiger tight tigre tikal tilia tilla tilly timer timmy timor timur tinte tinto tipps tisch tisza titan titel title titos toast tobel tobey tobin tobte today todds todes todor togos token tolle toman tomas tomba tombs tomek tommi tomoe tomsk tonen tönen tones tonga tonio tonne tonto tonya tonys töpfe topic topik topos torch toren torri torso torte torus tosca toshi total totem toten töten toter totes tötet touch tough tourt toxic toxin trace träfe trage träge trägt trakt tramp trams träne trank trans trapp trash trask traub traum traun traut trave treat treck trees treis trete treue trial trias tribe trick trieb trift trigg trina trios tripp trips trish tritt trixi trnka trois troja troll troms trond tross trost trott trotz trübe trude trudi trudy truhe trunk trupp trutz tryon tubbs tuben tubus tuche tudor tufts tulip tülle tully tulpe tulsa tumor tupel turan turbo turek türen türke turku türme turms tüten tutor tutsi tutti tuxer tuzla twain tweed twice twins twist tyner typen typus tyrol tyros tyson übels übers üblen übler übrig übten übung udine ufern ufers uhlen uhlig uhren ulcus ulloa ulmen ulrik ulsan ultra umbau umgab umher umhin umkam umweg umzog umzug uncle unfug ungar unhcr units unity unkel unmut unrat unruh unser unsre untat unten unter until üppig upton urach uralt uredo uriah uribe uriel urnen urner ursus usaaf uschi usern usher uslar uster utahs uther utica utsch uttar vader vadim vaduz vagen vager valar valby valea valli valls value valve vance varel varga varro varus varzi vasas vasen vater väter vault vdapg veigl veith velde velen vella velma venen venlo venom venus veras verbs verfo verge vergl verne verse verve vespa vesta veste vesuv vetos vetus vevey viale viana vichy vicki vicky vidal video vidya viehs viele viert vieth vieux views viggo vigil vijay viken villa vinci vinyl viola viper viren virus visum vital vitte vixen vlies vliet vlora vocal vodka vogel vögel vögte vogtl vogts vogue voith vokal volga volke volks volle volta vorab voran vorau vorne vorst votum vroni vulgo vulva vwvfg waage wache wachs wacht wader wadim wadis wafer waffe waffg wagen wager wagon wagte wähle wählt wähnt wahre wahrt währt waise waits walch walda walde waldo walen walks walla walle wälle wally waltz walze wälzt wände wange wangs wanna wanne waran waren wären warme wärme warna warne warnt warst warte warum wasen waser waste wastl watts waugh waves webbs weben weckt wedel weder wedge weeks wegen weges wehen wehre wehrs wehrt wehte weibe weich weida weide weigl weihe weiht weile weill weilt weine weins weint weird weise weist weisz weite welch welda welle welse welte welti wende wendt wenig werde werfe werft werke werks werle werne werre werte werth werts wesen wesir wespe weste wests wette weyer weyhe wharf wheat wheel where whigs whole whyte wiang wicca wider widin widor wieck wiege wiegt wiehl wiesa wiese wieso wiest wight wikis wilde wildi wildt wiler wiles wiley wilke willa wille wills wilma wilms wilna wiltz winde windy winkl winni wippe wirbt wirft wirke wirkt wirst wirte wirts wirtz wisch wisse witch witwe witze wives wobei woche wodka wofür wogen woher wohin wohne wohnt wölbt wolde wolfe wölfe wolfs wolke wolle wollt womit wonka woody woolf woran words wörgl worin worry worte wörtl worts worum wotan would wovon wrack wreck wrede wrist write wrong wuchs wucht wuhan wühlt wulff wulst wümme wunde wundt wurde würde würfe würgt wurst würth würtz würze wusch wüste wütet wyman xenia xenon xerox xxiii xxvii xxxvi xylem yacht yadin yahoo yahya yarra yasin yates yavuz yorck yorke yoshi yours ypern yucca yücel yukio yukon yunis yunus yusuf zabel zacks zadar zafer zähen zäher zahle zähle zahlt zählt zahna zähne zahns zaire zandt zange zappa zaren zarin zarte zäsur zäune zebra zeche zehen zehnt zehrt zeige zeigt zeile zeise zelda zelle zelte zenit zenon zerrt zeuge zeugt zeven zheng zhong zhuge ziege ziehe zieht ziele ziels zielt ziert zille zinke zinna zirka zitat zivil znaim zobel zofia zogen zögen zohar zölle zolls zonen zöpfe zoran zorns zorro zorzi zubau zucht zückt zudem zugab zügel zügen zuges zügig zukam zumal zunft zunge zupft zuruf zutat zutun zuvor zuzog zuzug zwang zwart zweck zweig zwerg zwick zwist zwölf zwota"
.split(" ")
.map(x => x.toUpperCase());
const valid = "abcdefghijklmnopqrstuvwxyzäöü".toUpperCase();
function xmur3(str) {
for(var i = 0, h = 1779033703 ^ str.length; i < str.length; i++) {
h = Math.imul(h ^ str.charCodeAt(i), 3432918353);
h = h << 13 | h >>> 19;
} return function() {
h = Math.imul(h ^ (h >>> 16), 2246822507);
h = Math.imul(h ^ (h >>> 13), 3266489909);
return (h ^= h >>> 16) >>> 0;
}
}
function mulberry32(a) {
return function() {
var t = a += 0x6D2B79F5;
t = Math.imul(t ^ t >>> 15, t | 1);
t ^= t + Math.imul(t ^ t >>> 7, t | 61);
return ((t ^ t >>> 14) >>> 0) / 4294967296;
}
}
const LOCALSTORAGE_KEY = "qwörtle.data";
let saveData = JSON.parse(localStorage.getItem(LOCALSTORAGE_KEY) || "{}");
function saveLocalStorage() {
localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(saveData));
}
const inputAmount = document.getElementById("puzzles");
const NUMBER_OF_WORDS = Number(inputAmount.value) || 4;
const daysSinceEpoch = Math.floor(new Date()/8.64e7);
const startDay = 19046;
const daysSinceStart = daysSinceEpoch - startDay + 1;
const rngSeed = NUMBER_OF_WORDS === 4 ? daysSinceEpoch : (daysSinceEpoch*daysSinceEpoch*NUMBER_OF_WORDS);
const rng = mulberry32(rngSeed);
const chosenWords = [];
for (let i = 0; i < NUMBER_OF_WORDS; i++) {
while (true) {
const idx = Math.floor((rng() * words.length) % words.length);
const chosen = words[idx];
if (chosenWords.indexOf(chosen) !== -1) {
continue;
}
chosenWords.push(chosen);
break;
}
}
const WORD_LENGTH = 5;
const MAX_GUESSES = 5 + NUMBER_OF_WORDS;
const URL = "https://studwww.informatik.kit.edu/~s_keller/qwörtle/";
const guessed = [];
let input = "";
const data = [];
const solutions = [];
const done = Array(NUMBER_OF_WORDS).fill(false);
let shareText = "";
function gameOver() {
for (const el of solutions) {
el.style.display = "block";
}
const NUMBERS = "0⃣1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣";
const FAIL = "❌";
const SOLVED = "✅";
const ANY = "⬜";
const POSITION = "🟨";
const CORRECT = "🟩";
const DONE = "⬛⬛⬛⬛⬛";
let text = "";
text += "Tägliches Qwörtle #" + daysSinceStart + "\n";
let summary = "";
for (let i = 0; i < NUMBER_OF_WORDS; i++) {
if (done[i]) {
if (done[i] <= 9) {
summary += NUMBERS.slice(done[i] * 3, done[i] * 3 + 3);
} else {
summary += SOLVED;
}
} else {
summary += FAIL;
}
if (i % 2 === 1) {
summary += "\n";
}
}
document.getElementById("summary").innerText = summary;
document.getElementById("summary").style.display = "block";
text += summary + URL + "\n";
for (let i = 0; i < NUMBER_OF_WORDS / 2; i++) {
for (let j = 0; j < MAX_GUESSES; j++) {
const rowA = data[2*i * MAX_GUESSES + j];
const rowB = data[(2*i+1) * MAX_GUESSES + j];
let part1 = "";
let part2 = "";
for (let k = 0; k < WORD_LENGTH; k++) {
if (rowA[k].classList.contains("correct")) {
part1 += CORRECT;
} else if (rowA[k].classList.contains("wrong-position")) {
part1 += POSITION;
} else {
part1 += ANY;
}
if (rowB[k].classList.contains("correct")) {
part2 += CORRECT;
} else if (rowB[k].classList.contains("wrong-position")) {
part2 += POSITION;
} else {
part2 += ANY;
}
}
if (done[2*i] && done[2*i] <= j) {
part1 = DONE;
}
if (done[2*i+1] && done[2*i+1] <= j) {
part2 = DONE;
}
if (part1 === DONE && part2 === DONE) {
break;
}
text += part1 + " " + part2 + "\n";
}
if (i % 2 === 0) {
text += "\n";
}
}
shareText = text;
document.getElementById("share").style.display = "block";
}
function desktopShare() {
const textarea = document.getElementById("copyarea");
textarea.style.display = "block";
textarea.value = shareText;
textarea.select();
document.execCommand("copy");
setTimeout(() => {
textarea.value = shareText; // not sure why this is needed..
}, 0);
}
document.getElementById("share").addEventListener("click", () => {
if (navigator.clipboard) {
navigator.clipboard.writeText(shareText);
document.getElementById("copied-to-clipboard").style.display = "block";
} else {
desktopShare();
}
});
let keys = {};
let characters = [];
for (let i = 0; i < NUMBER_OF_WORDS; i++) {
characters.push({});
}
function makeGradient(a, b, c, d, allNope) {
const CORRECT = "rgb(0 204 136)";
const POSITION = "rgb(255 204 0)";
const OTHER = "rgb(156, 163, 175)";
const color = {
"correct": CORRECT,
"position": POSITION
};
if (allNope) {
return "rgb(21 94 117)";
}
const style = "conic-gradient(" +
(color[b] || OTHER) + " 0deg," +
(color[b] || OTHER) + " 90deg," +
(color[d] || OTHER) + " 90deg," +
(color[d] || OTHER) + " 180deg," +
(color[c] || OTHER) + " 180deg," +
(color[c] || OTHER) + " 270deg," +
(color[a] || OTHER) + " 270deg," +
(color[a] || OTHER) + " 360deg)";
return style;
}
function processKey(e) {
if (e.key === "Enter" && guessed.length < MAX_GUESSES) {
if (input.length < 5) {
console.error("input not long enough");
return;
}
if (validGuesses.indexOf(input) === -1) {
console.error("word not in list");
return;
}
for (let pos = 0; pos < NUMBER_OF_WORDS; pos++) {
if (done[pos]) {
for (let i = 0; i < WORD_LENGTH; i++) {
const el = data[pos * MAX_GUESSES + guessed.length][i];
el.className = "cell done";
}
continue;
}
let used = [];
let hints = [];
let word = chosenWords[pos];
for (let i = 0; i < WORD_LENGTH; i++) {
// check whether character i of input is correct
if (word[i] === input[i]) {
hints[i] = "correct";
used[i] = true;
characters[pos][input[i]] = "correct";
}
}
for (let i = 0; i < WORD_LENGTH; i++) {
// check whether character i of input is positioned incorrectly
if (hints[i]) {
continue;
}
for (let j = 0; j < WORD_LENGTH; j++) {
if (used[j]) {
continue;
}
if (input[i] === word[j]) {
hints[i] = "position";
used[j] = true;
if (characters[pos][input[i]] !== "correct") {
characters[pos][input[i]] = "position";
}
break;
}
}
}
for (let i = 0; i < WORD_LENGTH; i++) {
if (!characters[pos][input[i]]) {
characters[pos][input[i]] = "nope";
}
}
for (let i = 0; i < WORD_LENGTH; i++) {
const el = data[pos * MAX_GUESSES + guessed.length][i];
if (hints[i] === "correct") {
el.className = "correct cell done";
// add count for easy mode
const count = word.length - word.replaceAll(input[i], "").length;
if (count > 1) {
const counter = document.createElement("span");
counter.className = "counter";
counter.innerText = count;
data[pos * MAX_GUESSES + guessed.length][i].appendChild(counter);
}
} else if (hints[i] === "position") {
el.className = "wrong-position cell done";
// add count for easy mode
const count = word.length - word.replaceAll(input[i], "").length;
if (count > 1) {
const counter = document.createElement("span");
counter.className = "counter";
counter.innerText = count;
data[pos * MAX_GUESSES + guessed.length][i].appendChild(counter);
}
} else {
el.className = "cell done";
}
}
if (input === word) {
done[pos] = guessed.length + 1;
for (let char in keys) {
if (word.indexOf(char.toUpperCase()) === -1) {
characters[pos][char.toUpperCase()] = "nope";
}
}
}
}
guessed.push(input);
if (daysSinceEpoch in saveData) {
saveData[daysSinceEpoch].guesses.push(input);
} else {
saveData[daysSinceEpoch] = { guesses: [input] };
}
saveLocalStorage();
input = "";
for (let char in keys) {
if (char.length > 1) {
continue;
}
const c = char.toUpperCase();
let anyNotNope = false;
for (let i = 0; i < NUMBER_OF_WORDS; i++) {
anyNotNope |= (characters[i][c] && characters[i][c] !== "nope");
if (anyNotNope) {
break;
}
}
if (anyNotNope || (characters[0][c] === "nope" && characters[1][c] === "nope" && characters[2][c] === "nope" && characters[3][c] === "nope")) {
let allNope = true;
for (let i = 0; i < NUMBER_OF_WORDS; i++) {
if (characters[i][c] !== "nope") {
allNope = false;
break;
}
}
keys[char].style.background = makeGradient(characters[0][c], characters[1][c], characters[2][c], characters[3][c], allNope);
if (allNope) {
keys[char].style.color = "#fff";
keys[char].style.opacity = "0.5";
} else if (anyNotNope) {
keys[char].style.color = "#000";
}
}
}
if (guessed.length == MAX_GUESSES || done.indexOf(false) === -1) {
gameOver();
}
return;
} else if (e.key === "Backspace" && input.length > 0) {
for (let pos = 0; pos < NUMBER_OF_WORDS; pos++) {
data[pos * MAX_GUESSES + guessed.length][input.length - 1].innerText = "";
}
input = input.substring(0, input.length - 1);
} else {
if (e.key.length > 1) {
return;
}
const key = e.key.toUpperCase();
if (valid.indexOf(key) === -1) {
console.error("invalid key");
return;
}
if (input.length == 5) {
console.error("input full");
return;
}
for (let pos = 0; pos < NUMBER_OF_WORDS; pos++) {
if (done[pos]) {
continue;
}
data[pos * MAX_GUESSES + guessed.length][input.length].innerText = key;
}
input += key;
}
const validGuess = input.length < 5 || validGuesses.indexOf(input) !== -1;
for (let pos = 0; pos < NUMBER_OF_WORDS; pos++) {
if (done[pos]) {
continue;
}
if (!validGuess) {
data[pos * MAX_GUESSES + guessed.length][0].parentElement.className = "row invalid";
} else {
data[pos * MAX_GUESSES + guessed.length][0].parentElement.className = "row";
}
}
if (input === "GIGAQ") {
document.getElementById("secret-options").style.display = "block";
}
}
document.addEventListener("keydown", processKey);
// setup keyboard
const layout = [
"qwertzuiopü",
"asdfghjklöä",
["Backspace", "y", "x", "c", "v", "b", "n", "m", "Enter"]
];
const keyboard = document.getElementById("keyboard");
for (let i = 0; i < 3; i++) {
const row = keyboard.children[i];
for (const c of layout[i]) {
const button = document.createElement("button");
if (c === "Backspace") {
button.id = "backspace";
button.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" height="26.9px"><title>Backspace Key Icon</title><path d="M0 0h24v24H0V0z" fill="none"></path><path d="M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H7.07L2.4 12l4.66-7H22v14zm-11.59-2L14 13.41 17.59 17 19 15.59 15.41 12 19 8.41 17.59 7 14 10.59 10.41 7 9 8.41 12.59 12 9 15.59z"></path></svg>';
} else if (c === "Enter") {
button.id = "enter";
button.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" height="26.9px"><title>Enter Key Icon</title><path d="M0 0h24v24H0V0z" fill="none"></path><path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7h-2z"></path></svg>';
} else {
button.innerText = c.toUpperCase();
}
button.className = "key";
button.addEventListener("click", e => processKey({ key: c }));
row.appendChild(button);
keys[c] = button;
}
}
function createGameGrid(container) {
for (let pos = 0; pos < NUMBER_OF_WORDS; pos++) {
container.appendChild(createWordle(chosenWords[pos]));
}
}
function createWordle(word) {
const x = document.createElement("div");
x.className = "wordle";
for (let i = 0; i < MAX_GUESSES; i++) {
x.appendChild(createRow(data));
}
const solution = document.createElement("span");
solution.className = "solution";
solution.innerText = word;
x.appendChild(solution);
solutions.push(solution);
return x;
}
function createRow() {
const x = document.createElement("div");
x.className = "row";
const cells = [];
for (let i = 0; i < 5; i++) {
const cell = document.createElement("span");
x.appendChild(cell);
cell.className = "cell";
cells.push(cell);
}
data.push(cells);
return x;
}
const main = document.getElementById("main");
createGameGrid(main);
let wideOpt = document.getElementById("wide");
if (saveData["wide"] !== undefined) {
wideOpt.checked = saveData["wide"];
}
function setWideMode() {
saveData.wide = wideOpt.checked;
if (saveData.wide) {
document.body.classList.add("wide");
} else {
document.body.classList.remove("wide");
}
saveLocalStorage();
}
wideOpt.addEventListener("change", setWideMode);
setWideMode();
let countOpt = document.getElementById("count");
if (saveData["count"] !== undefined) {
countOpt.checked = saveData["count"];
}
function setCountMode() {
saveData.count = countOpt.checked;
if (saveData.count) {
document.body.classList.add("count");
} else {
document.body.classList.remove("count");
}
saveLocalStorage();
}
countOpt.addEventListener("change", setCountMode);
setCountMode();
// load previous run
if (daysSinceEpoch in saveData) {
const guesses = saveData[daysSinceEpoch].guesses.slice();
saveData[daysSinceEpoch].guesses = [];
for (const guess of guesses) {
for (const c of guess) {
processKey({ key: c });
}
processKey({ key: "Enter" });
}
}