Das Ergebnis könnte so aussehen:
var listOfLists = new int[,] {
{1,2,1},
{1,1,2},
{2,3,1}
};
var dict = CountEachNumber(listOfLists, 3, 3);
foreach (var number in dict)
{
Console.WriteLine(string.Format("Nummer {0} - ", number.Key.ToString()));
foreach (var occurence in number.Value)
{
Console.WriteLine("{0} mal an Position {1},",
occurence.Value.ToString(),
(occurence.Key+1).ToString());
}
}
So könnten Sie es lösen, mit 2 Dictionaries!
static Dictionary>
CountEachNumber(int[,] list, int height, int width)
{
// Enthält
// Nummer
// Informationen
// Linie
// Vorkommen
var dict = new Dictionary>();
for (int i = 0; i < height; i++)
{
for (int a = 0; a < width; a++)
{
var number = list[i, a];
if (dict.ContainsKey(number))
{
if (dict[number].ContainsKey(a))
{
dict[number][a]++;
}
else
{
dict[number].Add(a, 1);
}
}
else
{
var val = new Dictionary();
val.Add(a, 1);
dict.Add(number, val);
}
}
}
return dict;
}
Also, was ich hier mache, ist die Nummer in einem Dictionary zu speichern und für jede ihrer Vorkommen füge ich die Linie hinzu und erhöhe den Zähler!