2014-01-01から1年間の記事一覧

Unityボードゲーム開発日誌 x日目

Unityでボードゲームを作る (いつから始めたかわからないからx日目) 目標 戦略ゲームっぽく 単純なボードゲームは作ってあったので、もう少し戦略ゲームっぽく修正します。 仕様はのちのち。 オフラインゲームっぽく オフラインでボードゲームをわいわい楽し…

はじめてのHaskell(9)

catn main = do cs <- getContents putStr $ numbering cs numbering :: String -> String numbering cs = unlines $ map format $ zipLineNumber $ lines cs zipLineNumber :: [String] -> [(Int, String)] zipLineNumber xs = zip [1..] xs format :: (Int…

はじめてのHaskell(8)

クイックソート import List main = print $ qsort [3,4,1,8,2,6,5] qsort :: [Int] -> [Int] qsort [] = [] qsort (p:xs) = qsort lt ++ [p] ++ qsort gteq where lt = [x | x <- xs, x < p] gteq = [x | x <- xs, x >= p] 関数 関数 概要 ++ (++)::[a] -> …

たらい回し関数

たらい回し関数 竹内関数。ベンチマークに使われる。 それ以外に特に用途は無いらしい。 tarai(x, y, z){ if (x <= y) return y; else tarai(tarai( x-1, y, z), tarai(y-1, z, x), tarai(z-1, x, y)); }

はじめてのHaskell(7)

練習問題 countbyte.hs main = do cs <- getContents print $ countByte cs countByte cs = length cs countwords.hs main = do cs <- getContents print $ countWords cs countWords cs = length $ words cs swap.hs main = do cs <- getContents putStr $ …

はじめてのHaskell(6)

grepコマンド 関数 関数 概要 head リストの最初の要素を返す:[a]->a tail 最初の要素をのぞいたリストを返す:[a]->[a] filter リストの要素のうち、f x がTrueである要素を集めたリストを返す: filter::(a -> Bool) -> [a] -> [a] any リストの各要素に…

はじめてのHaskell(5)

echoコマンド作成 import 公開されるモジュールの型や関数を使えるようにする。 Systemモジュール 関数 関数名 概要 getArgs コマンドライン引数を取得する -- getArgs :: IO[string] Mainモジュール Preludeモジュール 関数 関数名 概要 unwords 文字列のリ…

はじめてのHaskell(4)

expand.hs ver2 パターンマッチ 関数の引数に文字リテラルや整数リテラルを指定することで、その値にマッチするときだけ、 関数を実行することができる。 例: Func 't' = xxxx Func 'c' = yyyy Func a = zzzz 't'にマッチしたとき、xxxxを行う。 'c'にマッ…

はじめてのHaskell(3)

expand.hs ver.0 if文 if 条件式 then 式1 else 式2 関数 関数 概要 (==) a->a->Bool: x==y (xとyの"内容"が等しいときTrueを返す) main = do cs <- getContents putStr $ expand cs expand :: String -> String expand cs = map translate cs translate :: …

はじめてのHaskell(2)

関数の型 String -> [String] 関数の第一引数の型:String 関数の返り値の型:[String]第一引数の型 -> 第二引数の型 -> .... -> 返り値の型 型変換 [a] -> Int [a]:多相型(どんな型と置き換えても良い) 型の宣言 firstNLines :: Int -> String -> String ..…

Haskell入門

標準出力 main = putStrLn "Hello, World!" アクション アクション 概要 main mainアクション 関数 関数名 概要 putStrLn 文字列と改行を標準出力する catコマンド main = do cs <- getContents putStr cs アクション アクション 概要 getContents 標準入力…

配列要素の回転

配列要素の回転 目的 配列の要素を循環させながらシフトさせたい。 例) a[10] = {0,1,2,3,4,5,6,7,8,9} 4だけシフト ▶︎{4,5,6,7,8,9,0,1,2,3} 解法 a : 配列の先頭から、シフト数分の要素の集合 b : a集合以外の要素の集合 とする。 例)arr[10] 4シフト a :…

CEDEC AI CHALLENGE 2014 まとめ(Part4 結果)

結果 予選2位で終わりでした。 得点がマイナス方向にいかなかったのはよかった。たまたまです。 戦略 多くの選手がモンテカルロによる方法を選択していることに驚いた。 全パターンを探索し、期待値が高い割当を行うという方法がセオリーかと思っていた。 …

CEDEC AI CHALLENGE 2014 まとめ(Part3 提出コード)

提出コード 環境 実装はC#で行った。 (とくに理由は無く、topcoderで最近お世話になっている為) 言い訳 予選コード、決勝コードともに1日で仕上げたため、 ほとんど直値でコメント無しという状態。 なのですぐ見て分かるように(自分が)以下に簡単な流れを示…

CEDEC AI CHALLENGE 2014 まとめ(Part2 戦略)

戦略 大まかな戦略 ・公開されている情報から相手の動きを予測する(期待値計算に使用)。 ・対戦サーバーに公開される対戦ログを参考にする。 ・熱狂度の配分により、目標値を設定する。 ・乱択アルゴリズム(モンテカルロ)に頼る。 ただし、予測や配分などに…

CEDEC AI CHALLENGE 2014 まとめ(Part1 ルール)

ルール概要 恋愛シミュレーションゲームのAI をつくる。 最も女の子に好かれるAIを作ることを目的とする。 ルール詳細 プレイヤーは4人、対象の女の子は8人。 プレイヤーはターン中にデートをすることにより女の子の"好感度"を上げていく。 ターン 1ゲー…

SRM629_DIV2_550

問題概要 アリスはクラスメート全員の為にアメを作る。 各クラスメートは飴を入れてもらう容器を提供し、 また各々は容器に入れてもらいたい重量を提示する。 アリスは一定の密度でアメを入れなければならない為、 各クラスメートの要望を聞き入れることがで…

SRM629_DIV2_250

SRM629 DIV2 250 問題概要 大きな穴がある(holeH×holeW)。 この穴を塞ぐための板がある(boardH×boardW)。 穴を板で塞ぐことができるか回答せよ。 塞ぐことができる場合は1を、できない場合は-1を返すこと。 ただし、穴と板の辺は平行でなければならない。 注…

Python練習(マージソート)

Pythonでマージソート マージソートは配列を二つに分け、各々でソートし、最後にマージしてソートする。 2つに分けた後のソートも同様な処理を再帰させて行うことができる。(分割統治法) マージソートは同じ値が存在した場合、配列の添字の順を維持すること…

はじめてのPython(9)

関数 #coding: UTF-8 #関数 def max(num1, num2): if num1 > num2 : ret = num1 else: ret = num2 return ret a = 10 b = 5 print max(a,b) #10 参考文献 Pythonを学ぼう 第24回 関数の基礎 http://www.isl.ne.jp/pcsp/python/python24.html

Python練習(挿入ソート)

Pythonで挿入ソート 挿入ソートとは、ソート済みの要素に、順に要素を適切な位置へ挿入することで、 すべての要素をソートさせる考え方。計算量はO(N^2)。 ただし、バブルソートより高速であることが多い(値の入れ替え処理が少なく済むため) コード(Python) …

Python練習(選択ソート)

Python練習で選択ソート 選択ソートは要素の中で一番小さい値を探し出し、要素の先頭と入れ替える。 以後、決定した要素を除外し、繰り返す。 計算量はO(N^2)である。 コード(Python) #coding: UTF-8 #選択ソート x = [4,50,3,10,88,39,2,15] for i in range…

Python練習(バブルソート)

Python練習でバブルソート バブルソートは隣接するデータを比較していき、値の一番大きなものから順に値を決定 させていく。計算量はO(N^2)。 コード(Python) #coding: UTF-8 #バブルソート x = [4,50,3,10,88,39,2,15] i=len(x) while i > 0: j = 1 while j …

はじめてのPython(8)

繰り返し #coding: UTF-8 #繰り返し #while num = 0 while num < 2: print "num = " + str(num) num += 1 print "End" #whileの条件が偽となって時に実行する処理 num = 0 while num < 2: print "num = " + str(num) num += 1 else: print "The End" print "…

はじめてのPython(7)

辞書型 #coding: UTF-8 #ディクショナリー dict = {"one":1, "two":2} #{キー1:値1, ....} #キーに指定できるのは変更できないオブジェクトのみ #数値、オブジェクト、タプル #キーを指定して値を取得 value = dict["one"] print value #値の更新 dict = {"y…

はじめてのPython(6)

タプル #coding: UTF-8 #タプルの作成 tpl = (2005, 2006, 2007, 2008) tpl2 = (2005,) print tpl print tpl2 #リストの要素を取得 print tpl[0] #2005 print tpl[1] #2006 #タプルはリストと異なり、別のオブジェクトの代入ができない # tpl[1] = "b" #NG #…

はじめてのPython(5)

リストの使い方 #coding: UTF-8 #リストの使い方 list = ["test","test2",3,4] print list[0] #test print list[1] #test2 print str(list[2])#3 print str(list[3])#4 #スライスを使った参照 print "[1:2] " , list[1:2] #['test2'] print "[1:-1] ", list[…

はじめてのPython(4)

条件分岐 #coding: UTF-8 x = 0 y = 0 z = 0 #if文 インデントによりブロックを生成する if x == 0: print "x=0" if y == 1: print "y=0" if z == 0: print "z=0" #True:真、False:偽を示す予約語 if True: print "Always True" if False: print "NotPrintMe…

はじめてのPython(3)

変数について #coding: UTF-8 msg = "Hello" print msg sum = 10 + 45 print sum #変数はオブジェクトの場所を知っているだけ 出力 Hello 55 参考文献 Python入門 http://www.pythonweb.jp/tutorial/

はじめてのPython(2)

数値 #coding: UTF-8 print "1+2=",1+2#加算 print "1+3.0=", 1+3.0#加算 print "10/3=", 10/3#除算 print "10.0/3=" ,10.0/3#除算 print "17/5=" ,17/5#除算(型の範囲以下は切り捨て) print "-17/5=",-17/5 #除算(型の範囲以下は切り捨て) print "10.0//3="…