Poiché questa domanda non riguarda il "codice non funzionante", sto chiedendo la mia prima domanda qui invece di StackOverflow. Informami se mancano le informazioni richieste dalla domanda.
Impostazioni
Ho due dizionari di tipo Dictionary<int, int>
dove le chiavi sono un intervallo da 1 a n e i valori sono le frequenze di quei numeri. Ad esempio:
var frequenciesA = new Dictionary<int, int>
{
{ 1, 3 },
{ 2, 5 },
{ 3, 4 }
};
var frequenciesB = new Dictionary<int, int>
{
{ 1, 1 },
{ 2, 3 },
{ 3, 4 }
};
ingresso:
Ora avrò una lista di interi come input, nell'intervallo da 1 a n , come questo:
var numbers = new List<int> { 1, 2, 3, 3, 2, 1, 1, 2, 3, 1, 2, 2 };
Creo anche un dizionario di frequenza da questo elenco con il seguente codice:
var frequenciesFromInput = Enumerable.Range(1, 3)
.ToDictionary(x => x,
x => numbers.Count(y => y == x));
Ciò risulterebbe nelle seguenti coppie chiave-valore:
K V
----
1 4
2 5
3 3
Problema:
Supponiamo di dover determinare a quale degli altri dizionari (A o B) le frequenze siano uguali, sarebbe semplice: prendere i valori dei dizionari come una lista e usare Enumerable.SequenceEqual < T > metodo.
Ma nel mio caso ho bisogno di determinare quale dizionario (A o B) corrisponde più vicino alle frequenze del dizionario di input. Visualizzarlo rende più facile la comprensione. Ecco i grafici per le frequenze costanti del dizionario A e B:
Edeccoilgraficodeldizionariodiinput:
ComepuoivederelefrequenzediApiùvicinerispettoaquellediB.
Domanda:
Comeiniziareacreareunmetodo/algoritmoperdeterminarequaledizionario(AoB)èpiùvicinoaquellodeldizionariodiinput.Nonstochiedendounapienaimplementazione,solounapiccolaspinta,perchéoranonhoideadidoveecomeiniziare.
L'unicacosachepotevopensareeraqualchevariazionedel