Supponiamo di avere un dizionario di parole ASCII memorizzato in maiuscolo. Voglio anche salvare quelle parole in file separati in modo che il numero totale di parole di ciascun file sia approssimativamente lo stesso. Semplicemente guardando la parola ho bisogno di sapere in quale file dovrebbe essere (se è lì). Le parole duplicate dovrebbero andare nello stesso file e sovrascrivere l'ultimo.
Il mio primo tentativo di risolvere questo problema è utilizzare la funzione object.GetHashCode()
di .NET e .Trim()
per ottenere uno dei caratteri "casuali" che appaiono. Ho fatto una domanda simile qui
Se utilizzo solo un carattere di object.GetHashCode()
otterrei un carattere di codice hash di A..Z o 0..9. Tuttavia, il salvataggio del risultato di GetHashCode su disco è un no-no, quindi ho bisogno di un sostituto.
Domanda:
Che algoritmo (o sottoinsieme di un algoritmo ) è appropriato per il pigeonholing strings
in un singolo carattere o intervallo di caratteri (come hex 0..F offre 16 caratteri)?
Utilizzo del mondo reale:
Userò questa risposta per modificare la chiave Partition utilizzata nell'archivio di Azure Table come descritto qui