Skip to content

Instantly share code, notes, and snippets.

この資料は、4目並べ https://github.com/sapporocpp/4moku のAIを作る上での、基本事項のまとめや、「~~するにはどんなコードを書けばよい?」といった事例集です。

動かす方法

ビルドはmakeSConsに対応しています。どちらかでもインストールされている環境であれば、まずそれを試してください。またVisual Studio用のプロジェクトファイルもあります。

生成された実行ファイルは、以下のコマンドで動かします。

4moku 幅 高さ AIの番号1 AIの番号2 AIの番号3 ...
@maraigue
maraigue / best_score.cpp
Last active January 30, 2016 14:13
[C++] 「すべてのデータに対して何かを行って評価値を得て、評価値が最大のものを返す」ことをDRYに書くには
// ------------------------------------------------------------
// 【動機】
// 「すべてのデータに対して何かを行って評価値を得て、評価値が最大のものを
// 返したい」というシーンはよくある。(実験データの分析、AIの作成など)
// そのときよくあるコードとしては
//
// int input, best_input;
// int score, best_score = -1;
//
// for(std::size_t i = 0; i < input_list.size; ++i){
@maraigue
maraigue / comma-separated-argument.cpp
Last active January 27, 2016 02:15
[C++] An example of overloading comma operator: comma-separated values as an argument コンマ演算子をオーバーロードする例:カンマ区切りの複数の値を引数として渡す
// Idea extracted from Eigen
// http://eigen.tuxfamily.org/
//
// C++11-style lambda expression required
//
// Explanation (in Japanese)
// http://qiita.com/h_hiro_/items/a6484101d87847299885
#include <vector>
#include <iostream>
@maraigue
maraigue / PDFfill.rb
Last active August 29, 2015 14:13
「1ページに、指定されたPDFの複数ページを印刷する」形式のPDFを作る
#!/usr/bin/env ruby
require 'tmpdir'
require 'fileutils'
# このスクリプトができること
#
# 「1ページに、指定されたPDFの複数ページを印刷する」形式のPDFを作る。
# 隙間なく敷き詰められる。
# 「横に何列並べるか」と「元のPDFのページの縮小率」が指定できる。
#include <iostream>
class Hoge{
const int v;
public:
Hoge(int x) : v(x * 5) {} // 問題なく動作
//Hoge(int x) { v = x * 5; } // 不可
int value(){ return v; }
};
@maraigue
maraigue / explore.rb
Created December 15, 2014 15:01
格子状のマップを上下左右に動いてゴールを目指すプログラム
def create_field(str)
str = str.gsub(/\A\n+|\n+\z/, "")
str.split("\n").map{ |line| line.split(//) }
end
def find_start_goal(field)
result = {}
field.each_with_index do |line, i|
line.each_with_index do |cell, j|
if cell == "S" || cell == "G"
# https://github.com/maraigue/cpp-chinese-postman を
# JR全線(jr-all.edges)を対象に解いた結果
# 路線網の分割には jr-all-division-example.edges を利用
#
# JR全線:19860.5km(間違いがあるかも)
# 二度乗車する区間(以下の一覧の合計):5729.7km
# 合計:25590.2km
#
# 以下の一覧における距離の単位は「0.1km」
# ------------------------------------------------------------
@maraigue
maraigue / CodeJP2014golf.md
Last active August 29, 2015 14:05
CodeJP 2014のコードゴルフの私の回答
@maraigue
maraigue / std_map_at.cpp
Created July 7, 2014 13:19
[C++] std::mapのconst参照に対して要素を取得するときには at(key) が使えますよ、という話(C++11標準、gccはそれ以前から実装)
#include <map>
#include <iostream>
#include <stdexcept>
class MyClass{
public:
typedef std::map<int, int> storage_type;
private:
storage_type value_;
# for https://github.com/kyubuns/misterioso/commit/3598eec678cf7368e105141b1cd7b8c259f1af12
EQUIPMENT_COLOR_TABLE = {
1 => 'black',
2 => 'orange',
3 => 'forestgreenq',
4 => 'blue',
5 => 'red',
}
EQUIPMENT_COLOR_DEFAULT = 'gray'