Я хотел бы создать анализатор диапазона рук в покере, в котором я могу предоставить строку, такую как следующее (допустим, стандартная колода из 52 карт, ранги 2-A, s = подходит, o = подходит):
"22+,A2s+,AKo-ATo,7d6d"
Анализатор должен иметь возможность создавать следующие комбинации:
6 combinations for each of 22, 33, 44, 55, 66, 77, 88, 99, TT, JJ, KK, QQ, AA
4 combinations for each of A2s, A3s, A4s, A5s, A6s, A7s, A8s, A9s, ATs, AJs, AQs, AKs
12 combinations for each of ATo, AJo, AQo, AKo
1 combination of 7(diamonds)6(diamonds)
Я думаю, что знаю части грамматики, но не все:
NM+ --> NM, N[M+1], ... ,N[N-1]
NN+ --> NN, [N+1][N+1], ... ,TT where T is the top rank of the deck (e.g. Ace)
NP - NM --> NM, N[M+1], ... ,NP
MM - NN --> NN, [N+1][N+1], ..., MM
Я не знаю выражения для грамматики для обозначения соответствия.
Я новичок в программировании, так что прости этот основной вопрос: это проблема индукции грамматики или проблема с синтаксическим анализом?
Спасибо
Mike