Domanda

Ho cercato di calcolare tutte le permutazioni straordinari per un molto parola lunga (antidisestablishmentarianism), e anche se posso calcolare le permutazioni delle parole, sto avendo problemi con bloccando la produzione di duplicazioni.

Normalmente vorrei solo eseguire il metodo List<T>.Contains() sulla mia stringa, ma l'elenco di permutazioni diventa così grande che non posso tenerlo in memoria. Ho fatto questo errore in precedenza e sono riuscito ad utilizzare tutto 8 GB di memoria nel mio computer. Al fine di evitare che ciò accada di nuovo, ho cambiato il codice per aggiungere la permutazione calcolata su un file e rilasciarlo dalla memoria.

La mia domanda principale è questa: Come faccio a impedire che le permutazioni duplicati vengano aggiunti al mio file senza caricare il tutto in memoria E 'possibile caricare in modo selettivo, ad esempio, le prime megabyte? , scansione che, e andare avanti fino a quando il file è completato, o dovrei cercare in una direzione diversa?

Questo non è i compiti, i compiti di matematica ha dato una situazione ipotetica in cui un computer in grado di calcolare le permutazioni 30 al secondo e mi ha fatto capire quanto tempo ci sarebbe voluto per calcolare tutte le permutazioni. Quello non era un problema, e non ho bisogno di aiuto con questo, volevo solo sapere quanto tempo ci sarebbe voluto un moderno computer per eseguire la stessa operazione.

È stato utile?

Soluzione

Come sull'utilizzo di un algoritmo che genera tutte le permutazioni senza i duplicati? In questo modo non avrebbe dovuto controllare per loro in primo luogo.

Una ricerca su Google per "algoritmo di generare permutazioni" salta fuori decine di riferimenti per iniziare. per esempio. permutazione metodi di generazione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top