[JavaScript] Mechanizm mieszający słowa ze zdania


(xDarkness) #1

Witam.

Chciałem spróbować napisać taki mechanizm, bo czasem z przypadku można się nieźle uśmiać :slight_smile:

Na razie wymyśliłem tylko takie coś:

Działanie tego kodu powinno wyglądać następująco:

Każde przechwycone słowo ze zdania przechodzi przez mechanizm losujący, który podmienia jego indeks (będący lokalizacją w ciągu zdania) na przypadkowy z tabeli, która stale losuje inne cyfry ( z przedziału od 1 do 8 ).

Ten kod ma niestety parę minusów.

Po 1 nie działa.

Po 2 liczba słów w zdaniu musi być za każdym razem określona w tabeli.

Po 3 być może pętla przypisuje ten sam indeks do każdego słowa (bo może setTimeout nie nadąża z losowaniem).

Co tu pozmieniać, aby ten kod działał poprawnie ?

Czy da się jakoś pominąć to wpisywanie liczb (odpowiadających ilości słów) za każdym razem do tabeli ?

Jak wyglądałaby wtedy tabela ?

Dziękuję i pozdrawiam.


(Pablo_Wawa) #2

Funkcja losowanie() jest źle napisana - niepotrzebnie wywołuje ona samą siebie co 1 ms (1 milisekundę).

Sugeruję mieszać słowa poprzez losowe zamiany parami - np. dla 8 słów mieszalibyśmy tak kilka razy, za każdym razem losujemy parę 2 liczb całkowitych (z zakresu od 0 do , dodatkowo dla drugiej takiej liczby możemy sprawdzać czy się nie powtarza), a potem zamieniamy wyrazy będące na wylosowanych pozycjach. I tak kilka razy (ile dokładnie to nie jest ustalone - proponuję coś między połową a cała liczbą słów, ale można i więcej).


(mario@) #3

Tylko ,że ta funkcja i tak nigdzie nie jest wywoływana. Jeżeli miała by to być nieznaczna zmiana położenia danych wyrazów to sposób podany przez Pablo_Wawa jest dobry, przy całkowitym przeorientowaniu wyrazów można zastosować nieco prostsze rozwiązanie

script type="text/javascript"    function wymieszaj()    {        var txt = "W tym polu musi znajdowac sie osiem slow";        var tablica = txt.split(' ');        var pusta = [];

(xDarkness) #4

Dziękuję panom za pomoc. Wasze pomysły bardzo mi się przydały :slight_smile: