0

こんにちは、私はルーレット ブラックジャックのようなギャンブル用のあらゆる種類のプログラムを作成しましたが、今はポーカーをやっています

5 枚のカード ドローを行っており、ドローの前に手札がストレートかどうかを判断しようとしています。

私は単純なプログラマーで、学校教育を受けていません。今、私は最高のカードと最低のカードを見つけて、カードが一致するかどうかを見て、ストレートを決定しようとしています

最高のカード = 最低のカード + 5 で、ハンドに繰り返し数字がない場合、これは正確にストレートを見つけるべきではありませんか?

私のコードは非常に基本的で長いので、ここには掲載しません。最高/最低および一致するカードを見つけるためにすべてのブルート フォース メソッドを実行します。

これは私が見つけた最も簡単な方法だと思いますが、単純すぎるかもしれません

4

1 に答える 1

0

どちらのソリューションも機能します。

私はこのようなことをします。

    Dim cards As List(Of Integer) = New List(Of Integer)
    Dim isStraight as Boolean = False

    cards.Add(1)
    cards.Add(3)
    cards.Add(2)
    cards.Add(4)
    cards.Add(5)

    Dim areMultipleNumbersInList As Boolean = cards.GroupBy(Function(x) x).Any(Function(x) x.Count() > 1)

    Dim max As Integer = cards.Max()
    Dim min As Integer = cards.Min()

    If (max - min = 4 AndAlso Not areMultipleNumbersInList) Then
        isStraight = True
    End If

Enumerable.Max/Min メソッドを使用するには、.NET 4.0 が必要です。別の .NET Framework のソリューションが必要な場合はお知らせください

編集: areMultipleNumbersInList をコードに追加

于 2013-10-24T05:20:50.430 に答える