---
# System prepended metadata

title: 計算 21 點的點數
tags: [LINQ]

---

# 計算 21 點的點數
## 題目：
撰寫一支 function, 傳入三個型別為 int 的參數- card1, card2, card3
如果它們的總和小於或等於 21，返回他們的總和。
如果他們的總和超過 21，並且有一個 11，將總和減少 10。
最後，如果總和（即使在調整後）超過 21，則返回“BUST”

### 限制
card1 ~ card3的值介於 [1,11]

&nbsp;
### 解法

```    CSharp

Console.WriteLine(BlackJack.Display(1,2,3) == "6"); // 6
Console.WriteLine(BlackJack.Display(7,7,7) == "21"); // 21
Console.WriteLine(BlackJack.Display(10,10,10) == "BUST"); // 30=>BUST
Console.WriteLine(BlackJack.Display(10,10,11) == "21"); // 31 -10=>21
Console.WriteLine(BlackJack.Display(11,11,10)== "BUST"); // 32-10=22 =>BUST

public class BlackJack
{
    public static string Display(int card1, int card2, int card3)
    {
        int[] cards = new int[] { card1, card2, card3 };
        int sum = cards.Sum();
        if (sum > 21 && cards.Any(c => c == 11)) sum -= 10;

        return sum <= 21 ? sum.ToString() : "BUST";
    }
}
````


---


###### tags: `LINQ`