我可以在集合上使用模式匹配嗎?如何在集合上使用模式匹配
我有一個網格,代表一個井字棋板。
如何使用模式匹配來識別「X」或「O」的條紋?
到目前爲止,我建一個這樣的網格:
// ----------------
// 0 | 1 | 2 |
// ----------------
// 3 | 4 | 5 |
// ----------------
// 6 | 7 | 8 |
// ----------------
type Marker =
| X = 0
| O = 1
| NULL = 3
let cells = [0..8]
let grid = [for cell in cells -> (cell, Marker.NULL)]
let streakExists =
match grid with
| ???
| ???
所以我想使用模式匹配識別相似條紋如下:
//如果電網[.. 2]所有。有X
//或網格。[3..5]都具有X
//或網格。[6..8]都具有X
//返回true
// -----------------
//如果網格。[0; 3; 6;]都具有X
//或網格[1; 4; 5]。所有具有X
//或網格[2; 5; 8]。所有具有X
//返回true
// ------------------
如果//電網[0; 4; 8]都有X
//返回true
注:
我學習F#的基礎知識。 因此,如果這個問題顯而易見,請原諒我。
我不能只用一個參數hasStreak呢?然後我可以只定義一次模式,而不是'X'和'O'。沒有?讓hadStreak m = function | [m; m; m; _; _; _:_; _; _] –
@ScottNimrod不以任何方式我能想到的... –
我在聽DNR#1206上的節目 –