Wiem, że istnieje sporo pytań na temat generowania kombinacji elementów, ale myślę, że ten ma pewien zwrot wart jest nowego pytania:Wszystkie prawidłowe kombinacje punktów, w najbardziej efektywny sposób (prędkość)
Dla mojego zwierzęcia, muszę wstępnie obliczyć stan, aby później poprawić działanie środowiska wykonawczego aplikacji. Jeden z kroków, z którymi się borykam, to:
Podane N krotki z dwóch liczb całkowitych (pozwala wywoływać punkty od tego miejsca, chociaż nie są one w moim przypadku użycia, ale w przybliżeniu są powiązane z X/Y). trzeba obliczyć wszystkie prawidłowe kombinacje dla danej reguły.
Reguła może być coś jak
- „Każdy punkt zawarte wyłącza każdy inny punkt o tej samej współrzędnej X”
- „Każdy punkt zawiera wykluczeń co drugi punkt z nieparzystej współrzędnej X”
Mam nadzieję i oczekuję, że fakt ten doprowadzi do poprawy procesu selekcji, ale moje umiejętności matematyczne są właśnie wskrzeszane podczas pisania i nie jestem w stanie wymyślić eleganckiego algorytmu.
- Zbiór punktów (N) zaczyna się mały, ale przerasta 64 wkrótce (do „użytkowania ile maskę bitową” rozwiązania)
- Robię to w C#, ale rozwiązania w dowolnym języku powinno być w porządku jeśli wyjaśni leżący u podstaw pomysł:
Dzięki.
Update w odpowiedzi na odpowiedź Vlada:
Może mój pomysł, aby uogólnić pytanie była zła. Moje zasady powyżej zostały wymyślone w locie i po prostu zastępcze. Jeden realistyczny reguła będzie wyglądać następująco:
- „Każdy punkt zawiera wykluczeń co drugi punkt w pełny trójkąt nad wybranym punkcie”
Według tej zasady i wybierając (2,1) bym wykluczyć
- (2,2) - bezpośrednio nad
- (1,3) (2,3) (3,3) - następnej linii
- itd
Zasady są więc stałe, a nie ogólne. Są one niestety bardziej skomplikowane niż próbki X/Y, które początkowo dałem.
Byłoby pomocne, gdyby można było wymienić wszystkie rzeczywiste reguły, których planujesz użyć. – Nixuz