CA Reward

Tech Blog

Tech Blogトップに戻る

Go x Hit & Blow

2016.02.16

  • このエントリーをはてなブックマークに追加
  • Pocket
kotaking
kotakingエンジニア

第3回 Goもくもく会

2/15(月)、株式会社エウレカさんが主催するGoもくもく会に参加してきました。
会場は明るい雰囲気でとても清潔感があり、エンジニアにとっては開発し易い環境だなぁと思いました。
こういった環境作りって大事ですよね。

Goもくもく会(ごもくかい)#3 (2016/02/15 18:30〜) | eure.connpass.com

プログラム

最初の2時間がGOをもくもくといじる。後半1時間がLT&懇親会というプログラムで、前半2時間は、もくもくするか、特定のお題目に沿ったプログラムを作るといった内容でした。
今回のお題目は「hit and blow」のプログラムを組むというもので、駆け出しGoプレイヤーの私は勉強がてらこのお題目にチャレンジしてみる事にしました。
四苦八苦しながらでしたが、どのように実装したのか紹介したいと思います

Hit and Blow

Hit and Blowとは

4つの数字を互いに当てあうゲーム

ルール

  • お互いランダムな4桁の数値を用意
  • 数値は0〜9までの数値で同じ数値は使えない
  • 先攻の人が適当な数字を4つ言う
  • 後攻の人は○個の数字の位置があっていたら○ヒットという
  • 位置は違うけど△個数字が入っていたら△ブローという
    (例)自分の数字が「1830」で「1248」と言われたら、「1」は場所が合ってるので1ヒット、場所は違うけど8が入っているので1ブローなので、「1ヒット1ブロー」という

    実装よりも最適なアルゴリズムを考えるのが肝かな?と思ってましたが、GO初心者の私にとっては実装だけで数時間かかってしまいました汗 実装すべき機能要件は上記。1つずつ紐解いて実装していこうと思います。まずは、、、
  • 0〜9のランダムな4桁の数値
  • 同じ数値は使えない

この要件を満たす部分を実装しました。

PHPが長かった私にとっては「ランダムな一意な4桁数値を発番」を実装するのにひと苦労。よく使う関数やアルゴリズムはライブラリ化していくなり何なりで足元固めていく感じかなーっていう印象でした。 とにもかくにも乱数ジェネレータが出来たのでここまでで一旦動作確認

  • ランダムな4桁の数値
  • 数値は0〜9までの数値で同じ数値は使えない

問題なく動作しました。ここで一気に作り込み。
残りの入力値チェックと、ヒット&ブロウの突き合わせ部分を実装してみました。

四苦八苦しながらでしたが何とかできました!

という事で、実際に遊んでみたいと思います

f:id:kotakotaking:20160217131246p:plain

#### 14回目でクリア出来ました〜

と、結果の画像間違って消してしまいました↑↑↑

という事で改めてチャレンジ!

20160225164609.png  

8回目でクリア!!!

コードの善し悪しについては置いておいて、 作るものの目的があるとないとでは学習スピードが大きく変わってくると思うので、 是非みなさんもチャレンジしてみてくださいね。

最後に

10名くらいの方と名刺交換を行い、導入事例などを聞いてきました。 実際のサービスでGOを動かしているプロダクトはまだあまり無いようで、 お話しさせていただいた中では、これから導入を検討しているという方が9割程占めていました。 あと、新しいシステムをGOで作るというよりも既存システムをGOリプレイスしたいという声が多かったですね。 導入実績はどんどん増えてくると思うので、これからの可能性を存分に秘めてるなと感じました。