背景
こちらのツイートが流れてきたのでgolangで実装してみました。
「トランプを3枚出してその積を103で割った余りの値の元素をいかに早く言うか」
環境
CentOS Linux release 7.2.1511 (Core)
mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper
go version go1.6.3 linux/amd64
事前準備
環境変数
mysql用のdriverをgo get
するためにも必要なのでGOPATHを設定します。
$ export GOPATH=<path>
またMySQLに接続するためのパスワードを環境変数から取得するため、設定します。
$ export MYSQL_PASSWD=<password>
MySQLのインストール
GoでMySQLに接続するにある go-sql-driver/mysql のインストール を行います。
$ go get github.com/go-sql-driver/mysql
データベースの構築
今回はgolangでMySQLを叩いてみたかったので、データベースを構築しておきます。
データベース名: div3element
テーブル名: element
テーブルの構成は以下です。
mysql> show columns from element; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | n | int(11) | NO | PRI | NULL | | | symbol | varchar(2) | YES | | NULL | | | name | varchar(10) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+
nを原子番号として元素記号(symbol)、元素名(name)を引けるようにしています。
実装
gist30613d82a059a6a51c518d0d4026c452
コードはgithubにもあげています。
使い方
コンパイルしてから、以下のように標準入力から3つの数字を入力すると、原子番号と元素名を返します。
$ ./main 12 13 11 Answer: 68, エルビウム
感想
MySQLとの連携もできたので個人的には満足しています。
トランプ想定なので1-13以外の数字が来た場合の処理とか追加したほうがよかったかもなぁと思っています。
余談ですが、このゲーム、名前付いてるんでしょうか。 名前があれば本記事のタイトルも悩まなくよかったんですが......。