最後にコードを書いたのがいつかわからない僕です。普段からインフラをメイン担当としている都合上コードを書くことは他のメンバーに比べてかなり少なめですが、最近は新規サービスリリースの影響でめっきりインフラ専門人間になっておりました。Blow実装に取り組んでみましたのでその一部始終をお届けします。Blowについて説明しておきたいと思います。Blowとはゲームの一種です。複数桁の定められた数字を予想し的中すれば勝利というルールです。3桁の数字で「368」という数字が正解だったとしましょう。プレイヤーはまず適当な3桁の数字(例えば「862」とします)を言います。数字も場所もあっているもの(6)が一つあります。数字のみが合っているものはblow、数字も桁の場所も合っている場合はhitと回答されますのでこの場合は1hit1blowとなります。次にプレイヤーはこの回答をヒントに次の3桁の数字を選択、また回答を得るという動作をあらかじめ設定されているチャレンジ回数分実行します。このように3桁の数字を複数回宣言し回答を参考に設定された正解の数字を当てていくというゲームになります。今回あらかじめ定めた要件は以下の通りです。blow実現のためにどのような処理が必要か考えていみます。正解の数字を回答する処理ざっくりこの辺りが必要になってくるかと思います。実際に実装していきましょう。initやtidyなど初期作業は済んでいるものとします。必要に応じてパッケージをimportしてください。main関数です、ここで正解となる数字の桁数とチャレンジ回数をプレイヤーから受け取れるようにしておきます。count)}ここで宣言される桁数やチャレンジ回数は今後いろんな処理で使用しますので、引用しやすいように構造体に入れておきたいと思います。count)}これでこの構造体に紐づく形でメソッドを実装していくことができるようになりました。正解となる数字を生成するメソッドを実装します。correctNumbers}正解となる数字はランダムに決められる必要があるため"math/rand"を利用します。プレイヤーが決めた桁数の範囲内でランダムな数字を生成する必要があるため、最小値が10のプレイヤーが指定した桁数-1乗、最大値は10のプレイヤーが指定した桁数乗-1で設定しておく必要があります。今回は10のべき乗を算出する"math.Pow10′′を利用することでこれを実現しました。あとは生成された数字を文字列に変換し、一文字ずつスライスに格納しておきます。これはのちに行うプレイヤーの数字と正解の数字を比較するためです。あとは生成した数字とそれを格納したスライスを返してあげます。メソッドはmain関数から呼び出してあげましょう。con.createNumber()}さて、これで正解となる数字を生成することもできました。最後にプレイヤーの数字を受け取り正解の数字と比較する処理を実装しましょう。nil}}}基本的な処理としては、数字を受け取ってスライスに格納し正解数字が格納されているスライスと比較しています。全て正しい場合はスライスの完全一致といえるので"reflect.DeepEqual"で実装しました。blowかhitの場合はそれぞれのカウンターをあらかじめセットしておき、条件に一致した場合にカウンターを増加させるようにしています。hitは数字も桁も同じ場合ですが、これはスライスないの同じインデックスの値を比較することで実現できます。blowの場合は入力数字を含むスライスの各インデックスの値が正解スライスに含まれているかを確認すればいいので"golang.org/x/exp/slices"の"slice.Contains"を利用することでこれを実現しています。あとはこちらのメソッドをmain関数で呼び出してあげればOKです。resultNum)}最後に今回はGoを利用してhit&blowというゲームを作ってみました。個人的にこのゲームめちゃくちゃ好きです!今回の実装、実はちょっと納得がいっていない部分もあります。入力する値が数字ではなく文字の場合うまく動きません。【Golang】英単語の自動複数形変換をなんとか実現したいどもです。OFF-Whiteのジーンズ激カワ激高問題に苛まれるsaisaiです。...【Go】スライスを利用してビンゴ(抽選)システムを作成してみるどもども、新居に設置する家具を爆買いした結果、翌月の引き落としが怖い僕です。...【第九回Go言語学習備忘録】Struct(構造体)を理解する!どもです。コムデギャルソンの服、興味はあるけど着る勇気はないsaisaiです。Lmbdaで特定サイトのHTTPS接続を監視、アラート通知をLINEで行ってみた【AWS】どもども、最近頼むカクテルがシャンディガフで固定化されつつあるsaisaiです。SREエンジニア(永遠の修行中)です。糖分がないとダメになってしまいます。AWSminioを利用してS3のバケット、オブジェクト操作をローカル環境で検証してみた!どもども、GW早々ブログを更新している僕です。Blowを実装してコーディングリハビリどもども。最後にコードを書いたのがいつかわからない僕です。AWS【CloudFormation】Rainを利用してネストスタックをらくらくデプロイしよう!どもども、十数年ぶりに音楽ゲームにのめり込み老を感じている今日この頃です。