interprism's blog

インタープリズム株式会社の開発者ブログです。

第2回 プログラミングコンテスト

以前社内で開催されたプログラミングコンテストの第二回目が行われた。
今回も社員誰もが参加できるようにJavaを用いたもので行われた。
今回の課題は以下のようなものである。


オセロゲームのAIロジックを実装し、他の人のAIと戦って誰が一位になるかを競います。
相手と戦って勝つことが重要となります。  

  • 盤面は8x8
  • 置ける場所がない場合はスキップ扱い
  • 両者とも置ける場所がない場合はその時点でゲーム終了し、置かれている石の数で勝敗
  • 勝者は勝ち点3
  • 敗者は勝ち点0(減点なし)
  • 引き分けは両者に勝ち点1
  • 全AIの組み合わせで対戦する
  • 同じ相手とは先攻と後攻の2回戦う

具体的にはOthelloAIインタフェースの以下の3つのメソッドを実装することになる。

  • initメソッド
    各ゲーム開始時に一度だけ呼ばれる初期化処理。
    「自分の石(色)」が通知されます。
    黒が先行で白が後攻です。
  • getNameメソッド
    AIの名前です。ランキングに載るのでかっこいいのをつけましょう。
  • nextメソッド
    現在の盤の情報が渡されるので、その情報などを使って、次にどの位置に石を置くのかの情報を返してください。
    これがほぼAIのロジックになります。
続きを読む

社内プログラミングコンテスト(もう一つの視点から)

背景はよく覚えていないが、プログラミングコンテストを開催することとなった。 初めての試みでどれ位のエントリーがあるが不安だったが、とりあえずやってみることにした。 問題を作成するにあたって、以下の3点に気をつけた。

  1. 問題をみてやる気を失わないように、極めてわかりやすい問題であること
  2. 新入社員を含めより多くのプログラマが参加できるように、単純なAPIだけで処理できること
  3. 知識勝負ではなく、知恵で勝負できるように、Webで調べて定石等が見つからないような問題であること

言語は当社のエンジニア全員が扱えるようJava言語を採用した。

今回の問題は以下のようなものである。

「問題ファイル 内に書かれている計算式の要素を 入力ファイルから読み取り、計算結果をファイルに出力するプログラムを書いてください。 計算結果は各行に計算結果のみを出力してください。」

というもの。 入力ファイルは

1,5,3
2,8,1
9,2,6

というように、正の整数を要素とする正方行列であり 問題ファイルが

[0,1]+[2,2]=
[2,0]+[1,1]=

というように、入力ファイルの要素通しの足し算を列挙している これらの入力に対して

11
17

というファイルを出力することを要求されている 今回のコンテストではこの処理を如何に短時間で行えるプログラムを作成できるかを競う。

続きを読む

社内でプログラミングコンテストをやってみたら結構熱かった

こんにちは、hirano です。

社内でプログラミングコンテストをやってみた話です。

プログラミングコンテストのルール

  • あるお題に沿ったプログラムを作る
    • 言語はJava(社内で使えない人がいないのでこれになった)
    • お題等の詳細は以下。 github.com
  • 処理速度が速いのが勝ち
    • シングルコア
    • ヒープは100MBまで

どうやったのか

速度を競う関係上、エントリーしたらすぐに結果が見たいはずなので、 ソースファイルをアップロードしたら自動的にコンパイル&実行&計測&ランキング更新するサーバーを作った。

余談だが、このサーバーは社内のエンジニアがフルスクラッチで数時間で作ってくれたが、私には無理だったので助かったww

続きを読む

redmine 3.2にbacklogsをインストールする際の備忘

hiranoです。お仕事で redmine + backlogs をよく使うのですが、 いつもインストール手順を忘れててつまずくので備忘的に書きます。

やりたいこと

redmine 3.2 で backlogs プラグインを使いたい

結論

先に結論を書くと

backlogs のディレクトリで git checkout origin/feature/redmine3 をする

これだけ。以降は備忘に近い詳細な手順です。

続きを読む

Gitlabを6.2.4から8.6.6へアップグレードした

こんにちわ hirano です。

先日、社内の Gitlab 6.2.4 を Gitlab 8.6.6 へアップグレードしました。その時の記録です。

目次

  1. 背景
  2. アップグレード前の環境
  3. Gitlab 6.2.4 から 7.14 へアップグレード
  4. Gitlab 7.14 にした時の環境
  5. Gitlab 7.14 から 8.6.6 へアップグレード
  6. Gitlab 8.6.6 にした時の環境
  7. まとめ

背景

interprismでは社内ソースの管理にgitとsubversionを使っており、 gitは社内サーバーにGitlabをインストールして使っています。

Gitlabは6.2.4を使っているのですが、最新版と比べると当然ながら機能が劣っており、 特に以下の点が嗚呼、あったらいいのにです。

  • Internal Project が使えない
    • 仕方がないのでALLというグループを作って全員を入れて代用してる
  • Merge Requestを作成する際にソースの差分が見られない
    • MR作っちゃってから確認して修正とか
  • Git LFS が使えない
    • どうにもならない

ということで一念発起してアップグレードすることにしました。

なお、最近では Omnibus Package が用意されており sudo apt-get install gitlab-ce でほぼインストール完了なのですが、当時はそんな便利なものはなく、

を個別にインストールしてああだこうだと設定をこねくり回して使えるようになったので、今回も地道にアップグレードにチャレンジします。

Omnibus Package への移行方法を知っていたら教えてほしい・・。

続きを読む

あと1ヶ月で退社を予定しているエンジニアのブログ

こんにちは。 私はinterprismで三年目エンジニアをやっていて、4月末で退職予定の者です。

目次

  • 注意点
  • 記事を書くことになった背景
  • 何故退職するのか?
  • 退職を機に気付いた事
  • まとめ
  • 番外編
  • 締め

注意点

自分語りの内容となっております。 また、特にオチは御座いませんがご容赦下さい。

記事を書くことになった背景

前述の通り私は4月末で退職し、別の業種に転職します。

現在の環境

本社にて以下の様な割合でお仕事させて頂いています。 f:id:interprism:20160316184249p:plain

続きを読む

素のHTMLじゃ寂しいけど面倒なのはお断りという時はmilligramがいいかも

こんにちはhiranoです。

こんな人にいいと思います

  • 限定された人だけに見せるページを作ることがたまにある
  • 素のHTMLだと見た目的にテンションが上がらない
  • 良い見た目のものを自分で作るデザイン力はない
  • 面倒なことは嫌い

ちょっとした管理画面が欲しくなった

お仕事の中で、特定の人だけが使うための簡単なWeb画面が必要になりました。 HTMLの代表的なタグはそらで書けるので書いてみました。

続きを読む

PAGE TOP