Gå till innehållet

Lösningsförslag till uppgift 6.25

Console.WriteLine(BeräknaPoäng("5 7 7 5 5"));

int BeräknaPoäng(string korthand)
{
    int poäng = 0;

    string[] kort = korthand.Split(" ");

    for (int i = 0; i < kort.Length; i++)
    {
        // Är det första gången vi hittar ett kort med detta tal?

        bool förstaGången = true;
        for (int j = 0; j < i; j++)
        {
            if (kort[i] == kort[j])
            {
                förstaGången = false;
                break;
            }
        }

        if (förstaGången == false)
        {
            continue;
        }

        // Om detta är första gången talet dyker upp så beräknar vi poängen
        // Först tar vi reda på hur många kort som finns senare i arrayen
        int antal = 1;

        for (int j = i + 1; j < kort.Length; j++)
        {
            if (kort[i] == kort[j])
            {
                antal++;
            }
        }

        // Vilket värde har kortet?
        int värde = int.Parse(kort[i]);

        // Poängen beräknas nu genom att ta värde upphöjt till antal
        int delpoäng = värde;
        for (int j = 0; j < antal - 1; j++)
        {
            delpoäng *= värde;
        }

        poäng += delpoäng;
    }

    return poäng;
}