私はいくつかの計算で使用する5つのカードポーカーハンドのリストを作成しようとしています(遅いかもしれませんが、やや速いことが好ましい)。今リストを取得するために、私は次のコードを書いた:可能なすべての5カードポーカーのリストを作る
import itertools
# All possible Cards:
cards = ['2s', '2h', '2d', '2c', '3s', '3h', '3d', '3c', '4s', '4h', '4d', '4c', '5s', '5h', '5d', '5c', '6s', '6h', '6d', '6c', '7s', '7h', '7d', '7c', '8s', '8h', '8d', '8c', '9s', '9h', '9d', '9c', 'Ts', 'Th', 'Td', 'Tc', 'Js', 'Jh', 'Jd', 'Jc', 'Qs', 'Qh', 'Qd', 'Qc', 'Ks', 'Kh', 'Kd', 'Kc', 'As', 'Ah', 'Ad', 'Ac']
hands = []
# Collect all non-trivial cartesian products
for element in itertools.product(cards,cards,cards,cards,cards):
c1,c2,c3,c4,c5 = element
if c1 != c2 or c1!=c3 or c1!=c4 or c1!=c5 or c2 != c3 or c2 != c4 or c2 != c5 or c3 != c4 or c3 != c5 or c4 != c5:
hands.append([c1,c2,c3,c4,c5])
# Sort all elements and delete duplicates
for x in hands:
x.sort()
hands = [tuple(x) for x in hands]
hands = list(set(hands))
# Convert hands back to a list
hands = [list(x) for x in hands]
# Verify result
print(str(len(hands)))
をしかし、それは(RAMの11以上のライブを)完了しています前に、これはメモリ不足します。私はそのリストを使用しようとしているので、2つの手をお互いにしようとすると、可能なすべての手のセットに対して徹底的にテストすることができます。
このコードを改善する方法を知っている人はいますか?
]あなたの仕事を達成する。通常は悪い考えです。 – user2357112
お互いに両手を比較するために、すべての可能な手のリストは必要ありません。 – user2357112