Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] jakiego użyć algorytmu, do układania z liter wyrazów
michbudz
post 25.08.2006, 20:23:27
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 14.06.2006

Ostrzeżenie: (0%)
-----


witam. Chciałbym zaczerpnąć rad oraz opini, mianowicie robie taki skrypt który na podstawie słownika.txt układa wyrazy z podanych liter.
(fragment slownika)
Kod
abadański
abaddon
abaka
abakanka
abakanowicz
abakanabakan
abakańczyk
abakański
abak
abakus
abalietas
abandon
abat
abatysa
abazja
abażurek
abażur
abażuru
abba
abba
abba
abbandonasi
abbandonatamente
abbasyda
abbeville
abbozzo
abc
abchaski
abchazi


np.
podane litery to: 'abcdef' zadaniem skryptu jest ulozenie wyrazu ze slownika rozw. 'abc' (nie tylko)

udalo mi sie dojść do czegoś takiego że skrypt pobieda pojedynczo wiersze z pliku slownik.txt
wymyslilem potem cos takiego zeby slowo ze slownika wpisac do tablicy str_split();
z kolei pojedynczo sprawdzać czy pierwsza litera wyrazu znajduje sie w podanych literach ( to te np. abcdef)
przy uzyciu strstr(); jesli sie okaze ze wszystkie litery ze slowa ( tego ze slownika) znajdują się w podanych literach to oznacza że da sie z tego ulozyć taki wyraz. ta czynnos jest powtarzana az do końca slownika.



ALE nie przewidzialem jednego że wyraz ze słownika moze zawierać kilka tych samych liter co w efekcie daje cos takiego.... z dostepych liter 'abcdef' skrypt ulozy np. abba ale wiadomo ze niema 2x A i 2x B w dostepnych literach.

wszystkie wyrazy ulozone przez skrypt sa w tablicy zapisane ale co z tego jak czesc jest nie poprawna ( nie do ulozenia z podanych liter)

pokaze Co mi sie udalo zrobic.
(prosty formularz do podania liter)

index.html
  1. <form action="1.php" method=post>
  2. <input type="text" name="literki" size="10" maxlength="10">
  3. <input type="submit" value="szukaj">
  4. </form>
  5.  
  6.  
  7. </html>



teraz skrypt
1.php
  1. <?php
  2. echo include('index.html');
  3. $DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];
  4. $open=fopen("$DOCUMENT_ROOT/../html/PL_NOWY.txt", 'r+'); //slownik
  5. $stog=$_POST['literki']; //pobranie liter
  6.  $ile_ulozonych=0;
  7.  while(! feof($open)) //petla odczytuje wyrazy ze slownika az do konca slownika i porownuje slowo z dostepnymi literami
  8.  {
  9.  $i=0;
  10. $igla=fgets($open, 999);
  11. $litery_slowa= str_split($igla);
  12. $ile_liter=strlen($igla)-1; // tutaj jest -1 bo jest o 1 znak za duzo przy kazdym slowie na koncu chyba spacja jest dodana 
    i usuwam ja
  13. while(strstr($stog, $litery_slowa[$i]))
  14. {
  15.  $i++;
  16. }
  17. if($i==$ile_liter && $i>1) //petla zapisuje do tablicy ulozony wyrazy
  18. {
  19.  $ulozony_wyraz[$ile_ulozonych]=$igla;
  20.  $ile_ulozonych++;
  21. }
  22. }
  23.  $ile_ulozonych--; //tutaj odejme jeden wyraz bo sie dodal wczesniej za duzo o 1
  24. $i=$ile_ulozonych;
  25. echo '<table border="1" bgcolor=#CCDDEE>';
  26. echo "<tr> <td>" . "ID"."</td><td>". "wyraz ". "</td></tr>";
  27.  $ulozony_wyraz=array_merge(array_flip(array_flip($ulozony_wyraz))); // a tutaj robie taki trik niektóre wyrazy sie powtarzaja w slowniku wiec beda sie
     powtarzaly ulozony wyrazy tutaj usuwaja sie powtarzajace
  28. $ile_ulozonych=count($ulozony_wyraz);
  29.  for($k=0; $k<$ile_ulozonych; $k++)
  30.  {
  31. echo "<tr><td>" . $k . "</td><td>". $ulozony_wyraz[$k] . "</td></tr>"; // no i wypisuje ale oczywiscie jest za duzo tych wyrazow bo ulozylo sie za duzo ,
     nie uwzglednilem wyzej opisanego bledu
  32.  
  33. }
  34.  
  35.  echo "</table>"; 
  36. ?>



macie jakies pomysly jak zrobic zeby bylo dobrze??

moze sa jakies lepsze algorytmy do takich rzeczy?? a moze jakies funkcje przydatne?
podajcie swoje pomysly.
Pozdrawiam i dziekuje z góry.

Ten post edytował michbudz 25.08.2006, 20:25:11
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:00