Scrapboxのコード記法で書いたRubyプログラムをターミナルから動かす
(expanded from ポーカーの手札を全部リストする このページは編集しないでください)
(2018/10/24)
以下のような簡単なプログラムでポーカーのあらゆる手札をリストできる。
poker.rbsuits = ['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| puts a.collect { |i| suits[i%4] + numbers[i/4] }.join('')} ターミナルから以下を打ち込むと動く
wget -q -O - "https://scrapbox.io/api/code/masui/ポーカーの手札を全部リストする/poker.rb" | ruby - (
poker.rb というファイルをローカルに作成しなくても動くので便利)実行結果
実行$ ruby poker.rbSADAHACAS2SADAHACAD2SADAHACAH2SADAHACAC2SADAHACAS3...$ ruby poker.rb | wc2598960 2598960 28588560$これを
grep すればいろんな手役の数を計算できる。test$ ruby poker.rb | egrep 'A.*A.*A.*A' | head -4 # エースのフォーカードSADAHACAS2SADAHACAD2SADAHACAH2SADAHACAC2$ ruby poker.rb | grep H4 | egrep '(A.2.3.4.5|2.3.4.5.6|3.4.5.6.7|4.5.6.7.8)' # ♥4を含むストレートSAS2S3H4S5SAS2S3H4D5SAS2S3H4H5SAS2S3H4C5...$ ruby poker.rb | egrep 'S.S.S.S.S'| wc # ♠のフラッシュ 1287 1287 14157$