我正在用C#寫一個麻將遊戲(中國傳統遊戲,而不是單人紙牌遊戲)。在爲機器人播放器的AI編寫代碼時,我想知道像F#這樣的函數式語言是否會比我當前使用的語言更合適,哪些語言是C#和很多Linq。我不太瞭解F#,這就是我爲什麼要問這裏的原因。F#是紙牌遊戲AI的良好語言嗎?
爲了說明什麼,我試圖解決,這裏的麻將的快速摘要:
麻將扮演一個有點像拉米牌戲。你手上有13塊瓷磚,每轉一圈,你畫一塊瓷磚,丟棄另一塊瓷磚,試圖提高你的手朝着一個贏得的麻將手,其中包括4組和一對。集合可以是一種(pungs)的3種,4種(kongs)或3種連續瓦片(chows)的序列。如果它可以完成你的一套,你也可以偷走另一名玩家的棄牌。
我必須編寫的代碼來檢測機器人是否可以聲明3個連續的tile set(chow)非常繁瑣。我必須在手中找到所有獨特的瓷磚,然後開始檢查是否有一系列包含該瓷磚的瓷磚。檢測機器人是否可以去麻將更加複雜,因爲它是檢測手中是否有4組和一對的組合。這只是一個標準的麻將手。也有許多「特殊」手牌違反了這些規則,但仍然是麻將手牌。例如,「13個獨特的奇蹟」由13個特定的瓷磚組成,「翡翠帝國」由只有綠色的瓷磚組成,等等。
在一個完美的世界中,我希望能夠陳述'規則'的麻將,並且能夠根據這些規則匹配一組13個牌來檢索它實現的規則,例如,檢查它是否是麻將牌或者是否包括麻將牌4。這是F#的模式匹配功能可以幫助解決的嗎?