ポーカーの手をすべてリストする
https://gyazo.com/86212f0a2188e2ec7790ff01735b7f9e
code:poker.rb
# ポーカーのあらゆる手をリストする
suits = 'S', 'D', 'H', 'C' # ♠ ♦ ♥ ♣
numbers = 'A', '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K'
(0..51).to_a.combination(5) { |a| # combinationという便利な関数がある
puts a.collect { |i|
suitsi%4 + numbersi/4
}.join('')
}
実行
% wget -q -O - https://scrapbox.io/api/code/prog-exercises/ポーカーの手をすべてリストする/poker.rb | ruby
grepすればいろいろ計算できる
フラッシュの手をすべてリスト
$ ruby poker.rb | egrep '(SDHC).\1.\1.\1.\1'
$ wget -q -O - https://scrapbox.io/api/code/prog-exercises/ポーカーの手をすべてリストする/poker.rb | ruby | egrep '(SDHC).\1.\1.\1.\1'
5148種類
フォーカード
$ ruby poker.rb | egrep '(A1-9XJQK).*\1.*\1.*\1'
$ wget -q -O - https://scrapbox.io/api/code/prog-exercises/ポーカーの手をすべてリストする/poker.rb | ruby | egrep '(A1-9XJQK).*\1.*\1.*\1'
624種類
ワンペア以上になる確率も計算できるはず
https://ja.wikipedia.org/wiki/ポーカー・ハンドの一覧
#パズル #ポーカー #トランプ #組合せ