generated at
ポーカーの手をすべてリストする

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| suits[i%4] + numbers[i/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種類

ワンペア以上になる確率も計算できるはず