Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 1.11.2012 Ostrzeżenie: (0%)
|
Potrzebuję losować liczby z przedziału od 1 do wpisanej z formularza. W wierszu już się nie powtarzają, ale mam problem aby zrobić aby w kolumnie też się nie powtarzały. Mój kod wygląda tak.
Może podpowie ktoś jak to zrobić. Fragment kodu losującego znalazłem na necie (chyba na tym forum) i dobrze się sprawdza. Ten post edytował znajomy1 15.11.2012, 11:15:12 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
A nie prościej byłoby zrobić "od końca"?
1, Wybierasz liczbę. 2. Tworzysz tablicę gotową od 1 do n 3. Mieszasz ją. 4. Wstawiasz jako pierwszy wiersz tablicy. Kolejne kroki są zależne od implementacji... Ja widze conajmniej 2 pomysły. Jeden bardziej kosztowny obliczeniowo, drugi - pamięciowo. Pierwszy: Bierzesz znowu wiersz z danymi i sprawdzasz czy we wszystkich wierszach "powyżej" (z tym samym indeksem kolumny) występuje aktualnie pierwszy w tablicy. Jeśli nie - wkładasz do macierzy i usuwasz go z tablicy oraz przesuwasz się do następnej kolumny. Jeśli jest już "wyżej" to "przekładasz" element na koniec i znów sprawdzasz. Tak do końca wiersza i ostatecznie macierzy (IMG:style_emoticons/default/wink.gif) Drugi: Bierzesz i zapisujesz "na boku" co zawiera każda z kolumn (dokładasz element do okreslonej "kolumny" gdy może być włożony na dane miejsce) i porównujesz czy aktualnie pierwszy na liście jest w niej i w razie czego reagujesz odpowiednio Optymalizacje są możliwe. Przypuśćmy możesz zaoszczędzić pamięć poprzez tworzenie kolumny "w locie", a cykle procka zaoszczędzisz poprzez zamianę przesuwania elementu na koniec na różnicę własnej tablicy możliwych do włożenia z kolumną liczb "powyżej". To ostatnie jest warte rozważenia, gdyż im dalsze wiersze, tym liczba prawdopodobnych "nie trafień" (i tym samym przewijań) bedzie do pewnego momentu się mocno zwiększać. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 1.11.2012 Ostrzeżenie: (0%)
|
A mógłbyś napisać mi właśnie jak mógłbym sprawdzić czy w danej kolumnie w wierszu powyżej nie ma tej wylosowanej cyfry? Nie wiem właśnie jak mam porównywać te wyniki. Pozdrawiam
|
|
|
|
Post
#4
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Nie dam gotowego kdu jak to zrobić, bo jest to proste. Wskażę Ci podejście (IMG:style_emoticons/default/smile.gif) Masz macierz: x - wiersz, y - kolumna... Skoro sprawdzasz czy w pozycji (x, y) coś może być, to... nie ma tego wśród już wstawionych elementów (to proste... wyrzucasz z tablicy już wstawione elementy) i brak w kolumnie w wierszach powyżej. A czym się kolumna charakteryzuje? Popatrz na indeksy i niezmienność pola y. Zwyczajnie porównujesz tablicę pozostałych elementów i wszystkich pól macierzy już uzupełnionych, o wartości wiersza mniejszych niż obecny, ale z tą samą wartością w kolumnie.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 18.06.2026 - 02:15 |