Rubyでポーカーの役判定プログラムを書いてみました。以前はECOをやってました。現在は星界神話やPSO2を始めとしたいくつかのMMOやアプリをソロでつまみ食いしています。フォローする「羽の舞う風景」についてリンク集コメント用フォーム(テスト中)プライバシーポリシー・注意事項ホームプログラミングRubyでポーカーの役判定プログラムを書いてみました。プログラミング文字列内の文字や単語の数をカウントする処理を使ってポーカーの役判定ができるかも?と思ったことから、Rubyでポーカーの役判定プログラムを書いてみました。#5枚のカードの内容を、スートと数字をつけて文字列として入力。endend今回のRubyで書いたプログラムは、与えられた手札5枚についての文字列からポーカーの役を判定するものになってます。今の段階(PaizaランクDが終わった)では、ポーカーゲームができるようなプログラムは手に負えないです。C8」の形の文字列で表記されます。数字の前の半角アルファベットはスートを表しており、Sがスペード、Hがハート、Dがダイヤ、Cがクラブになってます。ジョーカーは使用しません。手札の文字列について、スートと数字に分けて、それぞれの配列(suit[]、snum[])に入れます。‘)メソッドによって空白で区切ったものをスート用配列(suit[])に入れます。‘)メソッドによって空白で区切ったものを数字用配列(snum[])に入れ、さらにデータ型を整数型に変換してから、新しく用意した配列(num[])に入れます。手札5枚のスートが全て同じかどうかどうかの判定。スートが入った配列の最初の要素(suit[0])について配列内の個数をカウントし、配列の要素数(suit.length)と一致していれば、手札のスートが全て一致していることになります。スートが一致した場合は、Flush変数を1にします。手札5枚が続き番号もしくは、[1,10,11,12,13]になっているかどうかの判定。手札5枚の数字が入っている配列num[]の要素が、続き番号もしくは、[1,10,11,12,13]になっているかどうかを判定します。num[]の要素は、.sortメソッドで昇順に並べ替えてから、num[1]、num[2]、num[3]、num[4]の要素について、それぞれnum[0]+1、num[0]+2、num[0]+3、num[0]+4と等しいか判定。全て満たしていれば、手札5枚が続き番号になってます。ここで手札5枚が続き番号もしくは、[1,10,11,12,13]になっていた場合は、straight変数を1にします。手札の数字が入っている配列num[]の中に、同じ数字がいくつあるかカウントします。重複を除いた配列(num[].uniq)の各要素について、元の配列num[]に含まれる個数をカウントし、カウント結果格納用の配列(count_box[])に格納します。配列count_box[]に同じ数字の個数を格納したら、.sort.reverseメソッドを使用して要素を降順に並べ替てから、その内容によって役を判定していきます。[4,1]の場合、「4カード」を表示。[3,2]の場合、「フルハウス」を表示。[3,1,1]の場合、「3カード」を表示。[2,2,1]の場合、「2ペア」を表示。[2,1,1,1]の場合、「1ペア」を表示。ここで5枚の手札内に同じ数字がなかった(num[]の内容が[1,1,1,1,1])場合は、次の処理に進みます。同じ数字のカードがなかった場合の役判定Flush変数が1で、num[]の内容が[1,10,11,12,13]であれば、「ロイヤルストレートフラッシュ」を表示。変数がともに1になっていて、かつ、num[]の内容が[1,10,11,12,13]でない場合は、「ストレートフラッシュ」を表示。変数が0の場合は、「フラッシュ」を表示。変数が1の場合は、「ストレート」を表示。変数が両者とも0の場合は、「ノーペア」(いわゆる役無し)を表示。以上がRubyで書いたポーカーの役判定プログラムになります。プログラミング初心者なので、気の利いた書き方になっていない。プログラムが書き終わったので、オンラインの開発環境サイトpaiza.ioを使って、実際にプログラムを動かしてみます。いくつかのテストデータを入れて試したところ、何とか上手く動いてくれました。いずれはポーカーゲームができるプログラムも書けるようになりたいですが、かなり先になりそうです。関連記事Cランクプログラマー(Paiza基準)にランクアップ。解答はRubyを使用。ここ数日、プログラミングの演習問題(Paizaのレベルアップ問題集)をRubyで少しづつ解いてました。Dランクの演習問題とスキ...記事を読むユーザー定義関数を作ってみた。Block」を導入...記事を読む無料でプログラミング言語をつまみ食い[progate]ネットを巡回していたら、プログラミング学習サイト「progate」(プロゲート)を偶然発見。progateでは、HTML&C...記事を読む標準偏差と偏差値を返す関数(メソッド)。[Ruby][プログラミング]統計処理において、母集団に含まれるデータのバラつき具合を表す数値として標準偏差が使われます。今回は配列に含まれる数値の標準偏差を返す関数...記事を読むCランクでは、文字列中の文字や単語を数える処理が登場。[プログラミング]PaizaのDランクの演習問題とスキルチェック問題について、現在出ている分が全て片付きました。今度はCランクのスキルチェック通過...記事を読む横書きを縦書きに変換して出力。[Ruby][プログラミング]プログラミングの演習をやっていると、横書きで入力された文字列データを縦書きで出力(もしくはその逆)するような課題が頻繁に登場します。...記事を読むRubyで美少女アイドルを育てます。ピギィ?[プログラミング]Rubyについて、Paizaのレベルアップ問題集のCランクまでの問題を一通り終わらせました。演習で場慣れするために、今度は...記事を読む2次方程式の実数解を求めるプログラムなど。[Javascript]少し前にプログラミング学習サイト「progate」の無料レッスン部分を一通り済ませたことで、プログラミングの初歩部分(変数の扱い、条件分...記事を読む「コードガールコレクション」でJavascriptとRubyを学ぶ。「コードガールコ...記事を読むPaizaで演習。スキルチェックのDランクをゲット。[プログラミング]PaizaのDランク演習問題を解いていく。プログラミングの上達には、数多く演習問題をこなして慣れていくことが一番なのかもしれない...記事を読むCランクでは、文字列中の文字や単語を数える処理が登場。[プログラミング]Cランクプログラマー(Paiza基準)にランクアップ。解答はRubyを使用。コメントをキャンセルメールアドレスが公開されることはありません。*サイトスポンサーリンクスポンサーリンクYoutubeチャンネル公開中ゲームの攻略動画などを置いています。よろしければ、チャンネル登録お願いします。情報セキュリティマネジメント試験に合格。初心者卒業?令和最初の新年を「初脂」で祝う。無償配布のファイルを拾ってアップグレード。[Windows10]標準偏差と偏差値を返す関数(メソッド)。[Ruby][プログラミング]ユーザー定義関数を作ってみた。[Ruby][プログラミング]最近のコメントECOの文化を何らかの形で残すために、ユーザー側でできそうなこと。ECOの文化を何らかの形で残すために、ユーザー側でできそうなこと。「星空の神域」を全フロアクリア。「星空の神域」を全フロアクリア。一切の権利は株式会社セガゲームスに帰属します。著作権を侵害する行為、転載や再配布、再利用を禁止します。JAPAN株式会社に帰属します。著作権を侵害する行為、転載や再配布、再利用を禁止します。