Czy F # jest dobrym językiem do gry w karty AI? [Zamknięte]

Piszę grę Mahjong w języku C # (tradycyjna chińska gra, a nie pasjans). Podczas pisania kodu dla AI odtwarzacza botów zastanawiam się, czy język funkcjonalny, taki jak F #, byłby bardziej odpowiednim językiem niż ten, którego obecnie używam, czyli C # z dużą ilością Linq. Nie wiem zbyt wiele o F #, dlatego pytam tutaj.

Aby zilustrować to, co próbuję rozwiązać, oto krótkie podsumowanie Mahjonga:

Mahjong gra trochę jak Remik Gin. Masz w ręku 13 płytek, a w każdej turze losujesz kafelek i odrzucasz inny, próbując poprawić swoją rękę w kierunku zwycięskiej ręki Mahjonga, która składa się z 4 zestawów i pary. Zestawy mogą być 3 rodzajami (pung), 4 rodzajami (kongs) lub sekwencją 3 kolejnych płytek (znaki). Możesz także ukraść odrzucenie innego gracza, jeśli może ukończyć jeden ze swoich zestawów.

Kod, który musiałem napisać, aby wykryć, czy bot może zadeklarować 3 kolejne zestawy płytek (chow), jest dość nużący. Muszę znaleźć wszystkie unikatowe kafelki w ręce, a następnie zacznij sprawdzać, czy w ręce znajduje się sekwencja 3 kafelków. Wykrywanie, czy bot może iść Mahjong jest jeszcze bardziej skomplikowane, ponieważ jest to połączenie wykrywania, czy w ręku znajdują się 4 zestawy i para. A to tylko standardowa ręka Mahjonga. Istnieje również wiele „specjalnych” rąk, które łamią te zasady, ale nadal są ręką Mahjonga. Na przykład „13 unikalnych cudów” składa się z 13 konkretnych płytek, „Jadeitowe Imperium” składa się tylko z płytek w kolorze zielonym itp.

W idealnym świecie chciałbym móc po prostu określić „reguły” Mahjonga, a język byłby w stanie dopasować zestaw 13 kafelków do tych reguł, aby pobrać reguły, które spełnia, na przykład sprawdzając, czy jest to ręka Mahjonga lub jeśli zawiera 4 rodzaj. Czy to jest coś, co funkcja dopasowywania wzorców F # może pomóc rozwiązać?

questionAnswers(2)

yourAnswerToTheQuestion