Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Anagramator
Forum PHP.pl > Forum > Przedszkole
Anagram
czesc, na stronie Polksiej Federacji Skrabli http://www.pfs.org.pl dziala anagramator. czy ktos moze mi powiedziec, jak zabrac sie do czegos podobnego za pomoca php i czy to jest w php wykonalne ?

pozdrawiam,
maniak skrabli
Chewolf
Anagramator z strony którą podaleś jest zrobiony w php , więc można to zrobić w php smile.gif
rolling_stone
Chyba musiałbyś się do tego zabrać tak:

1. zrobić bazę danych z listą słów, które można utworzyć
2. wpisany ciąg znaków podzielić na poszczególne znaczki (chyba do tego służy explode() ), ale głowy nie dam
3. zrobić zapytanie SQLa, które by dla każdej literki (w tym przypadku U i M) robiło coś takiego:

  1. SELECT slowo FROM slowa WHERE ((slowo LIKE "%m%") AND (slowo LIKE "%u%"))


zapytanie to wybierze te słowa, które spełnią taki warunek, że każda litera z wpisanego ciągu będzie się znajdowała: albo na początku, albo w środku, albo na końcu szukanego wyrazu.


chyba innej możliwości nie ma, ale jeśli jest to zwracam honor smile.gif
Anagramator
Baza, czyli słownik wydaje się konieczny. A jak wyglądałaby sprawa z odmiana wyrazów? Przypadki, liczby, rodzaje, czasy? A z wyrazami, gdzie tzw.rdzeń słowa jest ruchomy, np. statek - statku? Albo wymienia się ó na o itp?

Jeśli ktoś ma jakiś pomysł, prosze sie podzielić smile.gif

Pozdrawiam,
maniak skrabli
rolling_stone
Skomplikowana sprawa, bo na polskiej deklinacji wysiadają nawet najlepsze translatory.
tumczasty
Cytat
1. zrobić bazę danych z listą słów, które można utworzyć

chyba nie ma innego wyjścia (i muszą tam być wszystkie formy, czyli np. mucha, muchy, musze, muchą, muchach...; umiem, umieją, umielibyście, umieć, umiecie, umieliby...), chyba że miałoby wyświetlać wszystkie mozliwe kombinacje, bez sprawdzania, czy takie słowa w ogóle istnieją, ale przy 7 literach wyszłoby chyba 7!=5040 kombinacji (nie jestem pewien, czy dobrze to liczę)
Cytat
2. wpisany ciąg znaków podzielić na poszczególne znaczki (chyba do tego służy explode() ), ale głowy nie dam

explode() chyba nie...

Cytat
3. zrobić zapytanie SQLa, które by dla każdej literki (w tym przypadku U i M) robiło coś takiego:

  1. SELECT slowo FROM slowa WHERE ((slowo LIKE "%m%") AND (slowo LIKE "%u%"))


zapytanie to wybierze te słowa, które spełnią taki warunek, że każda litera z wpisanego ciągu będzie się znajdowała: albo na początku, albo w środku, albo na końcu szukanego wyrazu.

dołożyłbym jeszcze na końcu np.
  1. AND LENGTH(slowo)=3

(przy podanych 3 literach) żeby z liter M, I, M nie wyszło m.in. słowo "mi" czy "im"
później trzeba by było jeszcze sprawdzać, czy wyciągnięte z bazy słowa są faktycznie anagramami, żeby nie napisało słowa "oko" z liter K, O, K (może wystarczyłoby w zapytaniu "grupować" występujące kilka razy te same litery:
  1. SELECT slowo FROM slowa WHERE slowo LIKE '%k%k%' AND slowo LIKE '%o%' AND LENGTH(slowo)=3

?)

możliwe, że istnieje jakiś inny na to sposób; a najlepiej spytać Pawła Górnego smile.gif
rolling_stone
Cytat(tumczasty @ 2004-08-28 11:10:15)
Cytat

dołożyłbym jeszcze na końcu np.
  1. AND LENGTH(slowo)=3

(przy podanych 3 literach) żeby z liter M, I, M nie wyszło m.in. słowo "mi" czy "im"
później trzeba by było jeszcze sprawdzać, czy wyciągnięte z bazy słowa są faktycznie anagramami, żeby nie napisało słowa "oko" z liter K, O, K (może wystarczyłoby w zapytaniu "grupować" występujące kilka razy te same litery:
  1. SELECT slowo FROM slowa WHERE slowo LIKE '%k%k%' AND slowo LIKE '%o%' AND LENGTH(slowo)=3

?)



Racja, dzisiaj w nocy mi to też do głowy przyszło, a nie zdążyłem tu napisać.

A propos słownika, to może dałoby się wyciągnąć z jakiegoś słownika aspella, pspella, czy czegoś takiego podobnego?...
MoD
Jak baza wytrzyma to można słownik w bazie przechowywać. Kiedyś sobie ściągnęłem program Lit do gry w scrabble albo jakąś inną odmianę tej gry smile.gif i słownik miał tylko 32 MB biggrin.gif
ulubieniec_scrabblow
Rkingsmiley.png
Jak brakuje wam słownika, można ściągnąć go stąd:

Słownik alternatywny do gier

Wybrać odpowiedni słownik (alt-RRRRMMDD.exe dla użytkowników Windows, a alt-RRRRMMDD.tar.gz dla Linuxa).

Słownik zawiera ponad 3 300 000 haseł - znanych i mało znanych.
klopi
Czyli wielce jest prawdopodobnym złożenie programu podającego wszelkie mozliwe wyrazy z danego ciągu liter. Nie musi być to koniecznie jakiś konkretny wyraz...

A teraz pytanie. Gdzie mogę znależć taki program ze słownikiem wyrazów jezyka angielskiego. Jeżeli ktoś ma jakieś sygestie prosiłbym o link. Tudzież pomoc w samodzielnym napisaniu w/w programu. Dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.