paul schmitz
New member
Hallo,
ich habe ein Programm geschrieben, das alle Wörter findet, deren Buchstaben in einem Startwort sind. Es gibt eine Datei german.dic in der fast alle deutschen Wörter mit Zeilenumbrüchen separiert gelistet sind. Diese 26.6MB große Datei enthält 1695825 Wörter.
Beispiel: Suche nach Ananassalat:
Das Programm arbeitet ziemlich langsam (das liegt nicht nur an meinem lahmen Rechner), es braucht bis zu 5 Minuten. Umlaute werden leider ignoriert d.H. es macht keinen Unterschied, ob bei der Ausgabe welche drin sind. Sind die Zeit und das Umlautverhalten optimierbar?
ich habe ein Programm geschrieben, das alle Wörter findet, deren Buchstaben in einem Startwort sind. Es gibt eine Datei german.dic in der fast alle deutschen Wörter mit Zeilenumbrüchen separiert gelistet sind. Diese 26.6MB große Datei enthält 1695825 Wörter.
PHP:
<h1>Gefundene Wörter bei Suche nach <?php echo $_GET['wort']; ?></h1>
<?php
$wort=strtoupper($_GET['wort']);
$wortarray=0;
function wort2buchstaben($eingabewort){
$buchstabenarray=Array();
for($i=0;$i<26;$i++){
$buchstabenarray[$i]=0;
}
for($i=0;$i<strlen($eingabewort);$i++){
$xyz=ord($eingabewort[$i])-65;
if($xyz>-1&&$xyz<66){
$buchstabenarray[$xyz]++;
}
}
return $buchstabenarray;
}
function vergleiche ($woerterbuchwort,$wortarray){
$woerterbuchwortarray=wort2buchstaben($woerterbuchwort);
$uebereinstimmung=true;
for($i=0;$i<26;$i++){
if($wortarray[$i]<$woerterbuchwortarray[$i]){
$uebereinstimmung=false;
}
}
return $uebereinstimmung;
}
$wortarray = wort2buchstaben ($wort);
$handle=fopen('german.dic','r');
$count=0;
while (!feof($handle)&&$count<35000) {
$buffer = strtoupper(fgets($handle));
if(vergleiche($buffer,$wortarray)){
$count++;
echo $count.": ".$buffer." (".strlen($buffer).")<br/>";
}
}
fclose($handle);
?>
Code:
1: AAL (5)
2: AALS (6)
3: AALST (7)
4: AALT (6)
5: AAS (5)
6: ALAN (6)
7: ALS (5)
8: ALT (5)
9: ALTANS (8)
10: AN (4)
11: ANAL (6)
12: ANANAS (8)
13: ANLASS (8)
14: ANLASST (9)
15: ANLäSST (9)
16: ANN (5)
17: ANNA (6)
18: ANNAS (7)
19: ANS (5)
20: Aß (4)
21: ASS (5)
22: AßT (5)
23: AST (5)
24: äST (5)
25: ASTA (6)
26: AT (4)
27: ATLAS (7)
28: ÄTNA (6)
29: ATü (5)
30: LAN (5)
31: LANS (6)
32: LAS (5)
33: LASS (6)
34: LASSA (7)
35: LASST (7)
36: LäSST (7)
37: LAST (6)
38: LAST (6)
39: LöSS (6)
40: LöST (6)
41: LT (4)
42: NA (4)
43: NASA (6)
44: NASAL (7)
45: NASS (6)
46: NäSST (7)
47: NATAL (7)
48: NATALS (8)
49: NL (4)
50: NN (4)
51: Nö (4)
52: NöLST (7)
53: NöLT (6)
54: NS (4)
55: NSA (5)
56: NT (4)
57: ÖL (4)
58: ÖLS (5)
59: ÖLSAAT (8)
60: öLST (6)
61: öLT (5)
62: SA (4)
63: SAAL (6)
64: SAALS (7)
65: SAAT (6)
66: SALAT (7)
67: SALATS (8)
68: SALSA (7)
69: SALT (6)
70: SALü (6)
71: SAN (5)
72: SANAA (7)
73: SANN (6)
74: SANNST (8)
75: SANNT (7)
76: SANTA (7)
77: SANTANA (9)
78: SANTANAS (10)
79: SAS (5)
80: SAß (5)
81: SAßT (6)
82: SäST (6)
83: SäT (5)
84: SATAN (7)
85: SATANAS (9)
86: SATANS (8)
87: SS (4)
88: SSL (5)
89: ST (4)
90: STAN (6)
91: Süß (5)
92: SüßT (6)
93: TAL (5)
94: TALS (6)
95: TAN (5)
96: TLS (5)