F # é uma boa linguagem para jogos de cartas? [fechadas]

Eu estou escrevendo um jogo de Mahjong em C # (o jogo tradicional chinês, não o tipo de paciência). Enquanto escrevo o código para a IA do bot, estou pensando se uma linguagem funcional como o F # seria uma linguagem mais adequada do que a que eu uso atualmente, que é o C # com muito Linq. Eu não sei muito sobre F # e é por isso que eu pergunto aqui.

Para ilustrar o que tento resolver, aqui está um breve resumo do Mahjong:

Mahjong toca um pouco como Gin Rummy. Você tem 13 fichas na sua mão e, a cada turno, você faz um draw e descarta outro, tentando melhorar sua mão para uma mão vencedora do Mahjong, que consiste em 4 sets e um par. Conjuntos podem ser um 3 de um tipo (pungs), 4 de um tipo (kongs) ou uma seqüência de 3 peças consecutivas (chows). Você também pode roubar o descarte de outro jogador, se ele puder completar um dos seus sets.

O código que eu tive que escrever para detectar se o bot pode declarar 3 conjuntos consecutivos de tiles (chow) é bastante entediante. Eu tenho que encontrar todas as peças únicas na mão, e então começar a verificar se há uma sequência de 3 peças que contenham aquela na mão. Detectar se o bot pode ir para o Mahjong é ainda mais complicado, já que é uma combinação de detectar se há 4 sets e um par na mão. E isso é apenas uma mão padrão de Mahjong. Há também numerosas mãos "especiais" que quebram essas regras, mas ainda são uma mão de Mahjong. Por exemplo, "13 maravilhas únicas" consistem em 13 blocos específicos, o "Império de Jade" consiste em apenas blocos de cor verde, etc.

Em um mundo perfeito, eu adoraria poder apenas declarar as 'regras' do Mahjong, e ter a linguagem capaz de combinar um conjunto de 13 blocos com essas regras para recuperar quais regras ela cumpre, por exemplo, verificando se é uma mão de Mahjong ou se inclui um 4 de um tipo. Isso é algo que o recurso de correspondência de padrões do F # pode ajudar a resolver?

questionAnswers(2)

yourAnswerToTheQuestion