![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 30.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie!
Zamierzam linkować ze sobą kilkadziesiąt stron za pomocą linkowania po "trójkącie", tj strona a -> b -> c -> a (gdzie -> to odnośnik do strony). O ile przy małej ilości stron obliczenie wszystkich kombinacji linków jest proste, przy kilkunastu pojawia się problem. Idea linkowania po trójkącie polega na tym, że gdy strona a linkuje do strony b, to w żadnej innej kombinacji taki link (nie ważne czy a->b czy b->a) nie może wystąpić po raz drugi. Postanowiłem ugryźć tej problem od strony kombinatoryki - kombinacji bez powtórzeń. Niżej prosty skrypt, który wyświetla takie zbiory trójelementowe (o takie właśnie chodzi) dla tablicy $tab1. Nie potrafię jednak rozbudować skryptu tak, żeby wykluczyć elementy "niepotrzebne", czyli takie, które zawierają więcej niż jeden powtórzony element. Już tłumaczę najprościej jak się da 123 124 125 134 135 145 234 235 245 345 Są to wszystkie kombinacje bez powtórzeń dla zbioru (1,2,3,4,5), natomiast mi potrzebne są elementy 123, 145 (powtarza się w nich tylko jeden element, jedynka). W każdym innym elemencie są co najmniej dwie liczby występujące w tych zbiorach. Oczywiście wszystko powinno działać dla dowolnej ilości elementów $tab1. Jedyny pomysł jaki przychodzi mi do głowy to porównywanie każdego elementu z elementami poprzedzającymi go i sprawdzanie (in_array?), czy jego liczby w elementach poprzedzających powtarzają się nie więcej niż jeden raz. Jeżeli tak jest, element zostaje zapisany do jakiejś dodatkowej tablicy. Nie potrafię jednak tego zaimplementować.
Powyżej kod wyświetlający kombinacje bez powtórzeń. Czy ktoś już rozwiązywał podobny problem albo wie jak to ugryźć? Mam nadzieję, że wytłumaczyłem to wystarczająco zrozumiale. Dziękuję z góry. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 17.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
jeżeli linki będą pobierane np z bazy danych to dlaczego nie dodasz np znacznika
link1 - a link2 - b link3 - c link4 - b link5 - a itd..., wtedy możesz zdefiniować aby te linki były wyświetlane tylko i wyłacznie dla danego znacznika a-strona1,b-strona2,c-strona3 czy tak nie byłoby najprościej ? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 38 Dołączył: 1.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Efekt 5 minut:
Jeżeli chodzi o trójkąty to chyba o to chodziło. -------------------- Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 06:31 |