2013-10-24 52 views
0

您好我已經寫了各種方案賭博像輪盤賭酒杯和我現在做撲克確定一條直線的5張牌與VB

我做的5張牌,並試圖確定是否我的手是直線前的直線

我是一個簡單的程序員,我沒有上過學。現在我試圖通過查找最高和最低牌並確定牌是否匹配來確定直線

如果最高牌是最低牌+5,並且手中沒有重複數字,則不應該這樣準確找到一條直線?

我的代碼是非常基本的,長,所以我不會將它張貼在這裏,我做的一切暴力破解的方法來找到最高/最低和匹配的卡片

我覺得這是我發現simpliest方式,但它可能太簡單了

+0

不要忘記你必須特殊情況王牌:A2345和TJQKA都是有效的直道。 –

回答

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 

您需要.NET 4.0才能使用Enumerable.Max/Min方法。如果您需要其他.NET Framework中的一個解決方案,讓我知道

編輯:添加areMultipleNumbersInList編寫

+0

感謝您向我保證,我的方法在那裏工作必須有錯我的代碼,因爲現在即時獲得約1%的直道和維基百科說,我應該得到0.39%直道,隨機抽取5張卡片,並將其按照方法直接排列爲 –

+0

我公佈了皇家同花順,並且同花順也將算作一條直線。但他們沒有描述你提到的偏移量。但是不要忘記考慮它( 也許你有其他地方的錯誤,或者你計算錯誤。 我忘記檢查我的代碼中的雙卡,這很重要。 你發佈最低+5 =最大但是其實它的+ 4! –

相關問題