_Scrapboxのコード記法で書いたRubyプログラムをターミナルから動かす

Scrapboxのコード記法で書いたRubyプログラムをターミナルから動かす

(expanded from ポーカーの手札を全部リストする このページは編集しないでください)

(2018/10/24)

以下のような簡単なプログラムでポーカーのあらゆる手札をリストできる。

poker.rb
Copied!
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|
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 というファイルをローカルに作成しなくても動くので便利)

実行結果
実行
Copied!
$ ruby poker.rb
SADAHACAS2
SADAHACAD2
SADAHACAH2
SADAHACAC2
SADAHACAS3
...
$ ruby poker.rb | wc
2598960 2598960 28588560
$

これを grep すればいろんな手役の数を計算できる。
test
Copied!
$ ruby poker.rb | egrep 'A.*A.*A.*A' | head -4 # エースのフォーカード
SADAHACAS2
SADAHACAD2
SADAHACAH2
SADAHACAC2
$ 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を含むストレート
SAS2S3H4S5
SAS2S3H4D5
SAS2S3H4H5
SAS2S3H4C5
...
$ ruby poker.rb | egrep 'S.S.S.S.S'| wc # ♠のフラッシュ
1287 1287 14157
$



Powered by Helpfeel