Faker Klasse um Fake-Daten zu generieren

This commit is contained in:
ngb 2022-12-10 11:07:45 +01:00
parent 1260a38bb7
commit c92a4517b3
4 changed files with 4151 additions and 3065 deletions

View File

@ -2,8 +2,6 @@ package schule.ngb.zm.util;
import schule.ngb.zm.Color;
import schule.ngb.zm.Constants;
import schule.ngb.zm.Zeichenmaschine;
import schule.ngb.zm.util.io.FileLoader;
import schule.ngb.zm.util.io.ImageLoader;
import java.awt.Font;
@ -11,46 +9,69 @@ import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.font.LineMetrics;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static java.lang.Math.exp;
import static java.lang.Math.log;
import static schule.ngb.zm.Constants.random;
/**
* Hilfsklasse, um zufällige Beispieldaten zu erzeugen.
* <p>
* Die Klasse kann verschiedene Arten realistischer Beispieldaten erzeugen,
* unter anderem Namen, E-Mail-Adressen, Passwörter oder Platzhalterbilder.
* unter anderem Namen, E-Mail-Adressen, Passwörter oder Platzhalter-Bilder.
*/
@SuppressWarnings( "unused" )
public final class Faker {
public static final String FAKE_IMG_URL = "https://loremflickr.com/%d/%d";
public static void main( String[] args ) {
String text = Faker.fakeText(2000, 8);
System.out.println(text);
}
/**
* Erzeugt ein Array mit den angegebenen Anzahl zufälliger Nutzernamen.
* Erzeugt ein Array mit den angegebenen Anzahl zufälliger Benutzerdaten.
* <p>
* Jeder Datensatz besteht aus einem String-Array mit den folgenden Daten
* <ul>
* <li><code>fakeUser[i][0]</code>: Vorname</li>
* <li><code>fakeUser[i][1]</code>: Nachname</li>
* <li><code>fakeUser[i][2]</code>: Geschlecht</li>
* <li><code>fakeUser[i][3]</code>: Nutzername</li>
* <li><code>fakeUser[i][4]</code>: Passwort</li>
* <li><code>fakeUser[i][5]</code>: E-Mail</li>
* <li><code>fakeUser[i][6]</code>: Geburtsdatum</li>
* </ul>
*
* @param n Anzahl der Beispieldaten.
* @param count Anzahl der Beispieldaten.
* @return Ein Array mit den Beispieldaten.
*/
public static String[][] fakeUsers( int n ) {
String[][] data = loadMockfile("users");
String[][] result = new String[n][];
for( int i = 0; i < n; i++ ) {
result[i] = Constants.choice(data);
}
return result;
public static String[][] fakeUsers( int count ) {
return randomSample("users", count, ( line ) -> line.split(","), String[].class);
}
/**
* Erzeugt ein Array mit den angegebenen Anzahl zufälliger Vornamen.
*
* @param n Anzahl der Beispieldaten.
* @param count Anzahl der Beispieldaten.
* @return Ein Array mit den Beispieldaten.
*/
public static String[] fakeNames( int n ) {
String[][] data = loadMockfile("users");
String[] result = new String[n];
for( int i = 0; i < n; i++ ) {
String[] row = Constants.choice(data);
result[i] = row[0];
}
return result;
public static String[] fakeNames( int count ) {
return randomSample("users", count, ( line ) -> line.split(",")[0], String.class);
}
@ -58,65 +79,187 @@ public final class Faker {
* Erzeugt ein Array mit den angegebenen Anzahl zufälliger Namen (Vor- und
* Nachname).
*
* @param n Anzahl der Beispieldaten.
* @param count Anzahl der Beispieldaten.
* @return Ein Array mit den Beispieldaten.
*/
public static String[] fakeFullnames( int n ) {
String[][] data = loadMockfile("users");
String[] result = new String[n];
for( int i = 0; i < n; i++ ) {
String[] row = Constants.choice(data);
result[i] = row[0] + " " + row[1];
}
return result;
public static String[] fakeFullnames( int count ) {
return randomSample("users", count, ( line ) -> {
String[] parts = line.split(",");
return parts[0] + " " + parts[1];
}, String.class);
}
/**
* Erzeugt ein Array mit den angegebenen Anzahl zufälliger Nutzernamen.
*
* @param n Anzahl der Beispieldaten.
* @param count Anzahl der Beispieldaten.
* @return Ein Array mit den Beispieldaten.
*/
public static String[] fakeUsernames( int n ) {
String[][] data = loadMockfile("users");
String[] result = new String[n];
for( int i = 0; i < n; i++ ) {
String[] row = Constants.choice(data);
result[i] = row[3];
}
return result;
public static String[] fakeUsernames( int count ) {
return randomSample("users", count, ( line ) -> line.split(",")[3], String.class);
}
/**
* Erzeugt ein Array mit den angegebenen Anzahl zufälliger Passwörter.
*
* @param n Anzahl der Beispieldaten.
* @param count Anzahl der Beispieldaten.
* @return Ein Array mit den Beispieldaten.
*/
public static String[] fakePasswords( int n ) {
String[][] data = loadMockfile("users");
String[] result = new String[n];
for( int i = 0; i < n; i++ ) {
String[] row = Constants.choice(data);
result[i] = row[4];
}
return result;
public static String[] fakePasswords( int count ) {
return randomSample("users", count, ( line ) -> line.split(",")[4], String.class);
}
/**
* Erzeugt ein Array mit den angegebenen Anzahl zufälliger E-Mail-Adressen.
*
* @param n Anzahl der Beispieldaten.
* @param count Anzahl der Beispieldaten.
* @return Ein Array mit den Beispieldaten.
*/
public static String[] fakeEmails( int n ) {
String[][] data = loadMockfile("users");
String[] result = new String[n];
for( int i = 0; i < n; i++ ) {
String[] row = Constants.choice(data);
result[i] = row[5];
public static String[] fakeEmails( int count ) {
return randomSample("users", count, ( line ) -> line.split(",")[5], String.class);
}
/**
* Erzeugt ein Array mit den angegebenen Anzahl zufälliger deutscher
* Wörter.
*
* @param count Anzahl der Beispieldaten.
* @return Ein Array mit den Beispieldaten.
*/
public static String[] fakeStrings( int count ) {
return randomSample("words", count, ( line ) -> line, String.class);
}
/**
* Erzeugt ein Array mit den angegebenen Anzahl zufälliger
* {@code Date}-Objekte.
*
* @param count Anzahl der Beispieldaten.
* @return Ein Array mit den Beispieldaten.
*/
public static LocalDate[] fakeDates( int count ) {
long nowEpoch = LocalDate.now().toEpochDay();
long from = LocalDate.ofEpochDay(nowEpoch - 18 * 365).toEpochDay();
long to = LocalDate.ofEpochDay(nowEpoch - 14 * 365).toEpochDay();
LocalDate[] result = new LocalDate[count];
for( int i = 0; i < count; i++ ) {
result[i] = LocalDate.ofEpochDay((int) Constants.interpolate(from, to, random()));
}
return result;
}
public static LocalDateTime[] fakeDatetimes( int count ) {
long nowEpoch = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);
long from = LocalDateTime.ofEpochSecond(nowEpoch - 18 * 365, 0, ZoneOffset.UTC).toEpochSecond(ZoneOffset.UTC);
long to = LocalDateTime.ofEpochSecond(nowEpoch - 14 * 365, 0, ZoneOffset.UTC).toEpochSecond(ZoneOffset.UTC);
LocalDateTime[] result = new LocalDateTime[count];
for( int i = 0; i < count; i++ ) {
result[i] = LocalDateTime.ofEpochSecond((int) Constants.interpolate(from, to, random()), 0, ZoneOffset.UTC);
}
return result;
}
public static String fakeText( int words, int paragraphs ) {
String basetext = "";
try(
InputStream in = Faker.class.getResourceAsStream("mock-text.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(in))
) {
basetext = reader.readLine();
} catch( IOException ex ) {
LOG.error(ex, "Error generating fake blindtext: " + ex.getMessage());
}
String result = basetext.repeat(words / 283);
int w = (words % 283);
if( w > 0 ) {
Matcher m = Pattern.compile("([a-zA-Z_0-9\\u00C0-\\u017F]+\\W+){" + w + "}").matcher(basetext);
if( m.find() ) {
result += m.group().stripTrailing();
}
}
if( paragraphs > 1 ) {
int half = words / paragraphs;
final int maxLength = result.length();
Matcher m = Pattern.compile("([a-zA-Z_0-9\\u00C0-\\u017F]+\\W+){" + (half - 10) + "," + (half + 10) + "}([a-zA-Z_0-9\\u00C0-\\u017F]+)\\.").matcher(result);
if( m.find() ) {
result = m.replaceAll(( mr ) -> mr.end() == maxLength ? mr.group().trim() : mr.group().trim() + "\n\n");
}
}
return result;
}
public static int[] fakeIntArray( int count, int min, int max ) {
int[] arr = new int[count];
for( int i = 0; i < count; i++ ) {
arr[i] = random(min, max);
}
return arr;
}
public static List<Integer> fakeIntegerList( int count, int min, int max, List<Integer> list ) {
if( list == null ) {
list = new ArrayList<>(count);
}
for( int i = 0; i < count; i++ ) {
list.add(random(min, max));
}
return list;
}
@SuppressWarnings( "unchecked" )
private static <T> T[] randomSample( String filename, int count, Function<String, T> transformer, Class<T> type ) {
T[] result = (T[]) Array.newInstance(type, count);
int i = 0;
double k = count; // cast to double
double W = exp(log(random()) / k);
try(
InputStream in = Faker.class.getResourceAsStream("mock-" + filename + ".csv");
BufferedReader reader = new BufferedReader(new InputStreamReader(in))
) {
String line;
while( (line = reader.readLine()) != null ) {
if( i < count ) {
result[i] = transformer.apply(line);
i += 1;
} else {
int j = (int) (log(random()) / log(1 - W)) + 1;
while( j > 0 ) {
line = reader.readLine();
j -= 1;
}
if( line != null ) {
result[random(0, count - 1)] = transformer.apply(line);
i += 1;
} else {
break;
}
W *= exp(log(random()) / k);
}
}
// Fill remaining array
while( i < count ) {
result[i] = result[random(0, i - 1)];
i += 1;
}
} catch( IOException ex ) {
LOG.error(ex, "Error loading mock data file: " + ex.getMessage());
}
return result;
}
@ -165,7 +308,7 @@ public final class Faker {
FontMetrics fontMerics = graphics.getFontMetrics();
LineMetrics lineMetrics = fontMerics.getLineMetrics(text, graphics);
graphics.drawString(text,
(int) ((width - fontMerics.stringWidth(text)) / 2),
(width - fontMerics.stringWidth(text)) / 2,
(int) (height / 2 - lineMetrics.getDescent() + lineMetrics.getAscent() / 2)
);
graphics.dispose();
@ -176,15 +319,9 @@ public final class Faker {
}
}
public static String fakeText( int words, int paragraphs ) {
return "";
}
private static String[][] loadMockfile( String name ) {
return FileLoader.loadCsv("schule/ngb/zm/util/mock-" + name + ".csv", true);
}
private Faker() {
}
private static final Log LOG = Log.getLogger(Faker.class);
}

View File

@ -0,0 +1 @@
Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht - ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rethorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort "und" und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,949 @@
Abbau
Abend
Abzug
Adler
Adolf
Agent
Akten
Aktie
Alarm
Album
Allee
Alpen
Ampel
Amtes
Anbau
Angst
Anruf
Anton
Anzug
Apple
April
Areal
Arena
Armee
Armut
Arten
Asien
Athen
Augen
Autor
Autos
Baden
Bande
Bands
Basel
Basis
Bauch
Bauer
Bayer
Beate
Beide
Beine
Beleg
Bernd
Beruf
Beste
Beton
Beute
Bevor
Bezug
Bibel
Bitte
Blatt
Blick
Block
Blues
Bogen
Bombe
Boris
Brand
Braun
Brief
Bruch
Bruno
Brust
Buben
Buche
Busse
Bäume
Böden
Börse
Bühne
Büros
Chaos
Chefs
Chile
China
Clubs
Coach
Daher
Damen
Daran
Darum
Datei
Daten
Datum
Dauer
David
Davon
Decke
Deren
Diana
Dinge
Donau
Doris
Drama
Dreck
Druck
Duell
Durch
Ecken
Edith
Eiern
Eisen
Elite
Engel
Enkel
Erbin
Erich
Erika
Erlös
Ernst
Erste
Erwin
Essen
Ethik
Fahne
Fahrt
Falls
Farbe
Faust
Fazit
Feier
Feind
Felix
Ferne
Feuer
Figur
Filme
Films
Firma
Fisch
Flüge
Focus
Folge
Fonds
Forum
Fotos
Foyer
Franc
Frank
Franz
Frist
Fritz
Front
Frust
Fuchs
Fulda
Fälle
Fülle
Füßen
Geben
Gebot
Gehen
Gehör
Geist
Georg
Gerda
Gerät
Geste
Glanz
Glück
Gnade
Gramm
Griff
Group
Grund
Grüne
Gunst
Gutes
Gäste
Güter
Haare
Haars
Hafen
Halle
Hanau
Handy
Harry
Hauch
Hause
Hebel
Heike
Heims
Heinz
Helga
Henry
Herrn
Hilfe
Hitze
Horst
Hosen
Hotel
Huber
Humor
Hunde
Hände
Härte
Hätte
Höhen
Hölle
Hörer
Hügel
Hürde
Hütte
Ideen
Image
Index
Indiz
Infos
Insel
Intel
Irene
Islam
Jahre
Jakob
James
Japan
Jeans
Jesus
Josef
Jubel
Juden
Julia
Jungs
Jutta
Jäger
Kabel
Kabul
Kader
Kairo
Kampf
Kanal
Karin
Karte
Kasse
Kenia
Kette
Kinos
Kirch
Klage
Klaus
Klima
Klubs
Kohle
Kohls
Konto
Kopie
Korea
Kraft
Krebs
Kreis
Kreml
Kreuz
Krieg
Kripo
Krise
Krone
Krupp
Kugel
Kunde
Kunst
Kurse
Kurve
König
Köpfe
Küche
Kürze
Küste
Labor
Lager
Laien
Lande
Lange
Laufe
Laune
Leder
Legen
Lehre
Leser
Leute
Licht
Linie
Linke
Liste
Liter
Logik
Lokal
Luxus
Lyrik
Löhne
Löwen
Lücke
Macht
Mafia
Magen
Mainz
Major
Maler
Maria
Marie
Mario
Marke
Markt
Maske
Masse
Match
Mauer
Media
Meist
Menge
Meter
Metro
Meyer
Miami
Milch
Minen
Mitte
Monat
Moral
Motiv
Motor
Motto
Musik
Möbel
Nacht
Nagel
Namen
Natur
Nazis
Nebel
Netze
Noten
Ohren
Onkel
Opfer
Orden
Organ
Orten
Oskar
Osten
Paare
Paket
Panik
Papst
Paris
Parks
Party
Pause
Pence
Peter
Petra
Pferd
Pfund
Phase
Pilot
Platz
Polen
Preis
Prinz
Probe
Profi
Prosa
Punkt
Quote
Rache
Radio
Rande
Rasen
Ratte
Rauch
Regel
Regen
Regie
Reihe
Rente
Reste
Rhein
Rolle
Roman
Route
Rover
Rubel
Russe
Räder
Römer
Sache
Sauna
Schau
Schoß
Seele
Segen
Seite
Sekte
Senat
Seoul
Serie
Shell
Sicht
Simon
Sinne
Smith
Songs
Sonne
Sound
Spiel
Sport
Spree
Staat
Stadt
Stamm
Stars
Start
Stasi
Staub
Staus
Stein
Stern
Stirn
Stock
Stoff
Story
Strom
Stufe
Stuhl
Sturm
Sturz
Stück
Summe
Szene
Sätze
Söhne
Süden
Tagen
Tages
Tante
Tarif
Teams
Tempo
Tenor
Tests
Texas
Texte
Thema
These
Thron
Tiefs
Tiere
Tiger
Tisch
Titel
Todes
Tokio
Tonne
Toren
Traum
Treff
Trend
Trick
Trios
Trost
Typen
Täter
Tönen
Türen
Türke
UdSSR
Uhren
Ulmer
Umbau
Umzug
Union
Unmut
Vater
Vetos
Video
Villa
Viren
Virus
Vogts
Votum
Vögel
Waffe
Weber
Weile
Welle
Werke
Werks
Wesen
Wiese
Wille
Willi
Wirte
Wirts
Witwe
Witze
Woche
Wolke
World
Worte
Wände
Wüste
Zaire
Zeile
Zelle
Zeugs
Ziels
Zitat
Zorns
Zunge
Zweck
Zähne
Zügen
ahnen
ahnst
aktiv
allem
allen
aller
alles
allzu
altem
alten
altes
angab
armen
außen
außer
bauen
baute
bekam
berge
berät
besaß
bezog
biete
birgt
blaue
blieb
blind
bloße
boten
brach
breit
bunte
bösen
dabei
dafür
dahin
damit
darin
davor
deine
denen
denke
denkt
derer
desto
dicht
dicke
dient
diese
drauf
dreht
drohe
droht
dürfe
ebene
echte
ehren
eigen
einem
einen
einer
eines
einig
einst
eisig
elend
enden
endet
engem
engen
enger
enges
enorm
erben
ergab
erhob
ernte
etwas
ewige
exakt
extra
fehle
fehlt
feine
feste
finde
folgt
frage
fragt
freie
fremd
freut
frühe
fähig
fällt
fängt
fügte
fühle
fühlt
führe
führt
füllt
gaben
ganze
gegen
gelbe
gelte
gemäß
genau
genug
gerne
getan
geübt
ginge
gingt
glatt
graue
große
gutem
guten
haben
halbe
halte
heben
hebst
hefte
heiße
heißt
helle
heran
herum
heuer
heute
hielt
hilft
hinzu
hoffe
hofft
hohem
hohes
holen
holte
hängt
höher
hören
hörte
ideal
ihnen
ihrem
ihren
ihrer
ihres
immer
indem
indes
innen
jedem
jeden
jeder
jedes
jeher
jenem
jenen
jener
jenes
jetzt
junge
kalte
kauft
kehrt
keine
kenne
kennt
klagt
klang
klare
klein
knapp
komme
kommt
krank
kämen
könne
lacht
laden
lagen
lasse
leben
lebte
leere
legte
lehnt
lehrt
leise
lernt
lesen
liebe
liebt
liege
liegt
liest
ließe
links
lobte
lockt
lohnt
lässt
läuft
lösen
löste
mache
manch
meine
meint
merkt
messe
miete
minus
morde
mögen
müsse
nahen
neben
nebst
nehme
nennt
nette
neuem
neuen
neuer
neues
nicht
nimmt
näher
nötig
nützt
obere
offen
ordne
packe
packt
parat
passe
passt
plane
plant
prüfe
prüft
quasi
rasch
raten
reale
recht
reden
redet
reich
reine
reise
reist
rollt
rotem
roten
roter
rotes
rufen
ruhen
ruhig
runde
räume
räumt
rückt
sagen
sagte
sahen
sanft
satte
sauer
saßen
schuf
schön
sechs
sehen
seien
seine
sende
setze
setzt
siege
siehe
sieht
singt
sinkt
sitze
sitzt
sogar
solch
solle
sollt
somit
sonst
sorge
sorgt
sowie
spare
spart
spitz
späte
spürt
stahl
stand
starb
stark
statt
stehe
steht
stets
stich
stieg
stieß
still
stolz
stoße
stört
stößt
suche
sucht
tanze
tanzt
taten
teile
teils
teilt
teuer
teure
tiefe
tolle
total
totem
toter
totes
traue
traut
treue
trieb
trink
tritt
trotz
träge
trägt
tätig
töten
tötet
unser
unten
unter
vagem
vagen
vager
vages
viele
volle
vorab
voran
vorne
wagen
wahre
waren
warnt
warst
warte
warum
wecke
weckt
weder
wegen
wehre
wehrt
weich
weist
weite
weiße
welch
wende
wenig
werbe
werde
werte
wider
widme
wiegt
wilde
wirbt
wirft
wirke
wirkt
wisse
wobei
wofür
woher
wohin
wohne
wohnt
wolle
womit
wovon
wuchs
wunde
wurde
wähle
wählt
wärme
zahle
zeige
zeigt
zeuge
zieht
ziele
zielt
zivil
zogen
zudem
zumal
zuvor
zwang
zwölf
zählt
zügig
Ämter
Ärger
Ärzte
Übung
älter
öffne
öfter
übrig
übten
1 Abbau
2 Abend
3 Abzug
4 Adler
5 Adolf
6 Agent
7 Akten
8 Aktie
9 Alarm
10 Album
11 Allee
12 Alpen
13 Ampel
14 Amtes
15 Anbau
16 Angst
17 Anruf
18 Anton
19 Anzug
20 Apple
21 April
22 Areal
23 Arena
24 Armee
25 Armut
26 Arten
27 Asien
28 Athen
29 Augen
30 Autor
31 Autos
32 Baden
33 Bande
34 Bands
35 Basel
36 Basis
37 Bauch
38 Bauer
39 Bayer
40 Beate
41 Beide
42 Beine
43 Beleg
44 Bernd
45 Beruf
46 Beste
47 Beton
48 Beute
49 Bevor
50 Bezug
51 Bibel
52 Bitte
53 Blatt
54 Blick
55 Block
56 Blues
57 Bogen
58 Bombe
59 Boris
60 Brand
61 Braun
62 Brief
63 Bruch
64 Bruno
65 Brust
66 Buben
67 Buche
68 Busse
69 Bäume
70 Böden
71 Börse
72 Bühne
73 Büros
74 Chaos
75 Chefs
76 Chile
77 China
78 Clubs
79 Coach
80 Daher
81 Damen
82 Daran
83 Darum
84 Datei
85 Daten
86 Datum
87 Dauer
88 David
89 Davon
90 Decke
91 Deren
92 Diana
93 Dinge
94 Donau
95 Doris
96 Drama
97 Dreck
98 Druck
99 Duell
100 Durch
101 Ecken
102 Edith
103 Eiern
104 Eisen
105 Elite
106 Engel
107 Enkel
108 Erbin
109 Erich
110 Erika
111 Erlös
112 Ernst
113 Erste
114 Erwin
115 Essen
116 Ethik
117 Fahne
118 Fahrt
119 Falls
120 Farbe
121 Faust
122 Fazit
123 Feier
124 Feind
125 Felix
126 Ferne
127 Feuer
128 Figur
129 Filme
130 Films
131 Firma
132 Fisch
133 Flüge
134 Focus
135 Folge
136 Fonds
137 Forum
138 Fotos
139 Foyer
140 Franc
141 Frank
142 Franz
143 Frist
144 Fritz
145 Front
146 Frust
147 Fuchs
148 Fulda
149 Fälle
150 Fülle
151 Füßen
152 Geben
153 Gebot
154 Gehen
155 Gehör
156 Geist
157 Georg
158 Gerda
159 Gerät
160 Geste
161 Glanz
162 Glück
163 Gnade
164 Gramm
165 Griff
166 Group
167 Grund
168 Grüne
169 Gunst
170 Gutes
171 Gäste
172 Güter
173 Haare
174 Haars
175 Hafen
176 Halle
177 Hanau
178 Handy
179 Harry
180 Hauch
181 Hause
182 Hebel
183 Heike
184 Heims
185 Heinz
186 Helga
187 Henry
188 Herrn
189 Hilfe
190 Hitze
191 Horst
192 Hosen
193 Hotel
194 Huber
195 Humor
196 Hunde
197 Hände
198 Härte
199 Hätte
200 Höhen
201 Hölle
202 Hörer
203 Hügel
204 Hürde
205 Hütte
206 Ideen
207 Image
208 Index
209 Indiz
210 Infos
211 Insel
212 Intel
213 Irene
214 Islam
215 Jahre
216 Jakob
217 James
218 Japan
219 Jeans
220 Jesus
221 Josef
222 Jubel
223 Juden
224 Julia
225 Jungs
226 Jutta
227 Jäger
228 Kabel
229 Kabul
230 Kader
231 Kairo
232 Kampf
233 Kanal
234 Karin
235 Karte
236 Kasse
237 Kenia
238 Kette
239 Kinos
240 Kirch
241 Klage
242 Klaus
243 Klima
244 Klubs
245 Kohle
246 Kohls
247 Konto
248 Kopie
249 Korea
250 Kraft
251 Krebs
252 Kreis
253 Kreml
254 Kreuz
255 Krieg
256 Kripo
257 Krise
258 Krone
259 Krupp
260 Kugel
261 Kunde
262 Kunst
263 Kurse
264 Kurve
265 König
266 Köpfe
267 Küche
268 Kürze
269 Küste
270 Labor
271 Lager
272 Laien
273 Lande
274 Lange
275 Laufe
276 Laune
277 Leder
278 Legen
279 Lehre
280 Leser
281 Leute
282 Licht
283 Linie
284 Linke
285 Liste
286 Liter
287 Logik
288 Lokal
289 Luxus
290 Lyrik
291 Löhne
292 Löwen
293 Lücke
294 Macht
295 Mafia
296 Magen
297 Mainz
298 Major
299 Maler
300 Maria
301 Marie
302 Mario
303 Marke
304 Markt
305 Maske
306 Masse
307 Match
308 Mauer
309 Media
310 Meist
311 Menge
312 Meter
313 Metro
314 Meyer
315 Miami
316 Milch
317 Minen
318 Mitte
319 Monat
320 Moral
321 Motiv
322 Motor
323 Motto
324 Musik
325 Möbel
326 Nacht
327 Nagel
328 Namen
329 Natur
330 Nazis
331 Nebel
332 Netze
333 Noten
334 Ohren
335 Onkel
336 Opfer
337 Orden
338 Organ
339 Orten
340 Oskar
341 Osten
342 Paare
343 Paket
344 Panik
345 Papst
346 Paris
347 Parks
348 Party
349 Pause
350 Pence
351 Peter
352 Petra
353 Pferd
354 Pfund
355 Phase
356 Pilot
357 Platz
358 Polen
359 Preis
360 Prinz
361 Probe
362 Profi
363 Prosa
364 Punkt
365 Quote
366 Rache
367 Radio
368 Rande
369 Rasen
370 Ratte
371 Rauch
372 Regel
373 Regen
374 Regie
375 Reihe
376 Rente
377 Reste
378 Rhein
379 Rolle
380 Roman
381 Route
382 Rover
383 Rubel
384 Russe
385 Räder
386 Römer
387 Sache
388 Sauna
389 Schau
390 Schoß
391 Seele
392 Segen
393 Seite
394 Sekte
395 Senat
396 Seoul
397 Serie
398 Shell
399 Sicht
400 Simon
401 Sinne
402 Smith
403 Songs
404 Sonne
405 Sound
406 Spiel
407 Sport
408 Spree
409 Staat
410 Stadt
411 Stamm
412 Stars
413 Start
414 Stasi
415 Staub
416 Staus
417 Stein
418 Stern
419 Stirn
420 Stock
421 Stoff
422 Story
423 Strom
424 Stufe
425 Stuhl
426 Sturm
427 Sturz
428 Stück
429 Summe
430 Szene
431 Sätze
432 Söhne
433 Süden
434 Tagen
435 Tages
436 Tante
437 Tarif
438 Teams
439 Tempo
440 Tenor
441 Tests
442 Texas
443 Texte
444 Thema
445 These
446 Thron
447 Tiefs
448 Tiere
449 Tiger
450 Tisch
451 Titel
452 Todes
453 Tokio
454 Tonne
455 Toren
456 Traum
457 Treff
458 Trend
459 Trick
460 Trios
461 Trost
462 Typen
463 Täter
464 Tönen
465 Türen
466 Türke
467 UdSSR
468 Uhren
469 Ulmer
470 Umbau
471 Umzug
472 Union
473 Unmut
474 Vater
475 Vetos
476 Video
477 Villa
478 Viren
479 Virus
480 Vogts
481 Votum
482 Vögel
483 Waffe
484 Weber
485 Weile
486 Welle
487 Werke
488 Werks
489 Wesen
490 Wiese
491 Wille
492 Willi
493 Wirte
494 Wirts
495 Witwe
496 Witze
497 Woche
498 Wolke
499 World
500 Worte
501 Wände
502 Wüste
503 Zaire
504 Zeile
505 Zelle
506 Zeugs
507 Ziels
508 Zitat
509 Zorns
510 Zunge
511 Zweck
512 Zähne
513 Zügen
514 ahnen
515 ahnst
516 aktiv
517 allem
518 allen
519 aller
520 alles
521 allzu
522 altem
523 alten
524 altes
525 angab
526 armen
527 außen
528 außer
529 bauen
530 baute
531 bekam
532 berge
533 berät
534 besaß
535 bezog
536 biete
537 birgt
538 blaue
539 blieb
540 blind
541 bloße
542 boten
543 brach
544 breit
545 bunte
546 bösen
547 dabei
548 dafür
549 dahin
550 damit
551 darin
552 davor
553 deine
554 denen
555 denke
556 denkt
557 derer
558 desto
559 dicht
560 dicke
561 dient
562 diese
563 drauf
564 dreht
565 drohe
566 droht
567 dürfe
568 ebene
569 echte
570 ehren
571 eigen
572 einem
573 einen
574 einer
575 eines
576 einig
577 einst
578 eisig
579 elend
580 enden
581 endet
582 engem
583 engen
584 enger
585 enges
586 enorm
587 erben
588 ergab
589 erhob
590 ernte
591 etwas
592 ewige
593 exakt
594 extra
595 fehle
596 fehlt
597 feine
598 feste
599 finde
600 folgt
601 frage
602 fragt
603 freie
604 fremd
605 freut
606 frühe
607 fähig
608 fällt
609 fängt
610 fügte
611 fühle
612 fühlt
613 führe
614 führt
615 füllt
616 gaben
617 ganze
618 gegen
619 gelbe
620 gelte
621 gemäß
622 genau
623 genug
624 gerne
625 getan
626 geübt
627 ginge
628 gingt
629 glatt
630 graue
631 große
632 gutem
633 guten
634 haben
635 halbe
636 halte
637 heben
638 hebst
639 hefte
640 heiße
641 heißt
642 helle
643 heran
644 herum
645 heuer
646 heute
647 hielt
648 hilft
649 hinzu
650 hoffe
651 hofft
652 hohem
653 hohes
654 holen
655 holte
656 hängt
657 höher
658 hören
659 hörte
660 ideal
661 ihnen
662 ihrem
663 ihren
664 ihrer
665 ihres
666 immer
667 indem
668 indes
669 innen
670 jedem
671 jeden
672 jeder
673 jedes
674 jeher
675 jenem
676 jenen
677 jener
678 jenes
679 jetzt
680 junge
681 kalte
682 kauft
683 kehrt
684 keine
685 kenne
686 kennt
687 klagt
688 klang
689 klare
690 klein
691 knapp
692 komme
693 kommt
694 krank
695 kämen
696 könne
697 lacht
698 laden
699 lagen
700 lasse
701 leben
702 lebte
703 leere
704 legte
705 lehnt
706 lehrt
707 leise
708 lernt
709 lesen
710 liebe
711 liebt
712 liege
713 liegt
714 liest
715 ließe
716 links
717 lobte
718 lockt
719 lohnt
720 lässt
721 läuft
722 lösen
723 löste
724 mache
725 manch
726 meine
727 meint
728 merkt
729 messe
730 miete
731 minus
732 morde
733 mögen
734 müsse
735 nahen
736 neben
737 nebst
738 nehme
739 nennt
740 nette
741 neuem
742 neuen
743 neuer
744 neues
745 nicht
746 nimmt
747 näher
748 nötig
749 nützt
750 obere
751 offen
752 ordne
753 packe
754 packt
755 parat
756 passe
757 passt
758 plane
759 plant
760 prüfe
761 prüft
762 quasi
763 rasch
764 raten
765 reale
766 recht
767 reden
768 redet
769 reich
770 reine
771 reise
772 reist
773 rollt
774 rotem
775 roten
776 roter
777 rotes
778 rufen
779 ruhen
780 ruhig
781 runde
782 räume
783 räumt
784 rückt
785 sagen
786 sagte
787 sahen
788 sanft
789 satte
790 sauer
791 saßen
792 schuf
793 schön
794 sechs
795 sehen
796 seien
797 seine
798 sende
799 setze
800 setzt
801 siege
802 siehe
803 sieht
804 singt
805 sinkt
806 sitze
807 sitzt
808 sogar
809 solch
810 solle
811 sollt
812 somit
813 sonst
814 sorge
815 sorgt
816 sowie
817 spare
818 spart
819 spitz
820 späte
821 spürt
822 stahl
823 stand
824 starb
825 stark
826 statt
827 stehe
828 steht
829 stets
830 stich
831 stieg
832 stieß
833 still
834 stolz
835 stoße
836 stört
837 stößt
838 suche
839 sucht
840 tanze
841 tanzt
842 taten
843 teile
844 teils
845 teilt
846 teuer
847 teure
848 tiefe
849 tolle
850 total
851 totem
852 toter
853 totes
854 traue
855 traut
856 treue
857 trieb
858 trink
859 tritt
860 trotz
861 träge
862 trägt
863 tätig
864 töten
865 tötet
866 unser
867 unten
868 unter
869 vagem
870 vagen
871 vager
872 vages
873 viele
874 volle
875 vorab
876 voran
877 vorne
878 wagen
879 wahre
880 waren
881 warnt
882 warst
883 warte
884 warum
885 wecke
886 weckt
887 weder
888 wegen
889 wehre
890 wehrt
891 weich
892 weist
893 weite
894 weiße
895 welch
896 wende
897 wenig
898 werbe
899 werde
900 werte
901 wider
902 widme
903 wiegt
904 wilde
905 wirbt
906 wirft
907 wirke
908 wirkt
909 wisse
910 wobei
911 wofür
912 woher
913 wohin
914 wohne
915 wohnt
916 wolle
917 womit
918 wovon
919 wuchs
920 wunde
921 wurde
922 wähle
923 wählt
924 wärme
925 zahle
926 zeige
927 zeigt
928 zeuge
929 zieht
930 ziele
931 zielt
932 zivil
933 zogen
934 zudem
935 zumal
936 zuvor
937 zwang
938 zwölf
939 zählt
940 zügig
941 Ämter
942 Ärger
943 Ärzte
944 Übung
945 älter
946 öffne
947 öfter
948 übrig
949 übten