So che ci sono alcune domande là fuori sulla generazione di combinazioni di elementi, ma penso che questo abbia una certa svolta per meritare una nuova domanda:Tutte le combinazioni valide di punti, nel modo più efficace (velocità)
Per un progetto per animali da compagnia, devo precalcolare molto stato per migliorare il comportamento di runtime dell'applicazione in un secondo momento. Uno dei passi che faccio è:
Dato N tuple di due numeri interi (chiamiamoli punti da qui in poi, anche se non sono nel mio caso d'uso. Sono approssimativamente X/Y correlati, però) I è necessario calcolare tutte le combinazioni valide per una determinata regola.
La regola potrebbe essere qualcosa di simile
- "Ogni punto incluso esclude ogni altro punto con la stessa coordinata X"
- "Ogni punto incluso esclude ogni altro punto con una X strano punto"
Spero e aspetto che questo fatto porti ad un miglioramento nel processo di selezione, ma le mie abilità matematiche sono appena resuscitate mentre scrivo e non riesco a trovare un algoritmo elegante.
- L'insieme dei punti (N) inizia piccola, ma diventa troppo grande per 64 presto (per la "uso a lungo come maschera di bit" soluzioni)
- sto facendo questo in C#, ma le soluzioni in qualsiasi lingua dovrebbe andare bene se spiega l'idea sottostante
Grazie.
Aggiornamento in risposta alla risposta di Vlad:
Forse la mia idea di generalizzare la questione era uno cattivo. Le mie regole sopra sono state inventate al volo e solo segnaposto. Una regola realistica sarebbe simile a questa:
- "Ogni punto incluso esclude ogni altro punto nel triagle al di sopra del punto scelto"
Con questa regola e scegliendo (2,1) che avevo escludere
- (2,2) - direttamente sopra
- (1,3) (2,3) (3,3) - riga successiva
- e così via
Quindi le regole sono fisse, non generali. Sono sfortunatamente più complessi dei campioni X/Y che inizialmente ho dato.
Sarebbe utile se fosse possibile elencare tutte le regole effettive che si prevede di utilizzare. – Nixuz