読者です 読者をやめる 読者になる 読者になる

Graphic Recorder ―議論を可視化するグラフィックレコーディングの教科書

人と情報を齟齬なく共有することは難しい。日程やプロジェクト情報を共有することを目的とした会があるが、 すべて内容を参加者全員に伝えることは大変だ。また、意見を集めて結論を導く会議であっても 立場の違う参加者全員が同じ情報を共有し、アイディア…

NHK 100分 de 名著 ルソー 『エミール』 2016年 6月

NHKの「100分de名著」という番組がある。 自分は読書が苦手なので、名著の概要や考え方を100分(25分番組x4)で伝えるこの番組は素晴らしい。最近は殆ど見れていなかったが、たまたま拝見し(おそらく再放送)、「一般意志」というキーワードが出てきたので、 …

ローリーとふしぎな国の物語 ~プログラミングとアルゴリズムにふれる旅

Twitterの宣伝で知り、面白そうだったので購入。対象年齢10歳以上で「コンピュータが出てこないコンピュータ科学の入門書」とのこと。 主人公のローリーが不思議な世界で旅をしながら、いつの間にか問題を解く力を身につけていく。初めて読んだときに、あま…

レベルデザイナーになる本 ー夢中にさせるゲームシーンを作成するー

ゲームは15分毎にプレイヤーを驚かせなければいけない本書はゲームの開発過程を辿りながら人を魅了するゲームの作り方について語られている。 「レベル」とは「ゲームの中の空間と環境」という意味で使用される。自分は”ゲームの難易度”のデザイン本と考えて…

機械より人間らしくなれるか?: AIとの対話が、人間でいることの意味を教えてくれる

仕事関係の本を図書館であさっていたときに発掘。 「機械より人間らしくなれるか?」という題名にそそられて借りてみた。毎年、最も人間に近い人工知能を意味するローブナー賞をかけたコンテストがある。 各AIはチューリングテストにより審査員と「会話」を…

ソフトウェア見積り 人月の暗黙知を解き明かす

昨年に評価リーダーをやった際に、まともな見積もりが出来ずにPMに迷惑をかけてしまったので、 本書を読むことにした。自分は技術者でスケジュールに関しては無頓着なので、全力でやればなんとかなると思ってしまう。 結果、工数を少なく見積もってしまい…

今年の反省

今年の一番の個人的出来事はやはり「転職」だったと思う。 そしてこの転職して良かったことでここに記して置きたいことが「後輩」君 (※1) ができたことだ。 前の職場では自分の下に部下は居らず、初めて後輩が出来たのだ。 プロジェクトで一緒に作業していく…

マンガでわかる微分方程式

仕事で微分方程式のモデルを作ることになりそうだったので、 自分でも理解できる導入としてマンガでわかるシリーズを購入。Amazonの評価が高いのも頷ける分かりやすさだった。 微分方程式がなぜ必要なのかという点について、 しっかりと説明されていて、導入…

人工知能は碁盤の夢を見るか? アルファ碁VS李世ドル

アルファ碁に関する本を見つけたので購入。 本書は実際に試合を観戦し解説をしていた方が記載した本であり、 内容もその視点からとなっている。対局者に近い方が書いているだけあって、 試合前から5試合の間での棋士側の心境が記載されている。囲碁には詳し…

人工知能の作り方 ――「おもしろい」ゲームAIはいかにして動くのか

別の本を探しているときに、たまたま見つけて購入し、本日読了した。本書はゲームAIに特化した本であり、如何にユーザーを楽しませることができるか、 如何に自然な動きをさせることができるかと作り方を説明している。Amazonの評価を見て、少し敬遠していた…

不屈の棋士

『人工知能に追い詰められた「将棋指し」たちの覚悟と矜持』と帯宣伝があり 即購入した。本書では現役の棋士に対し、 「将棋ソフトは使用しているか」 「将棋ソフトを使用することに対してのメリット・デメリット」 「棋士の今後の存在意義は」 と言った聞く…

モデルベース開発 モデリング、プラント・モデル、コントロール・モデル

「モデルベース開発 モデリング、プラント・モデル、コントロール・モデル」をとりあえず読んだ。 とりあえずっと記載するのは物理?の知識が足りないため、本の半ばと後半はとばしてしまったため。 (ラプラス変換とかもう一度、勉強しなおした方がよさそう…

はじめまして数学 リメイク

Amazonの評価が高かったので購入、そして読了。Amazonの評価にもあった通り、対象年齢は中学1年生前後かと思われる。しかしながら本書は自然数から始まり、整数、虚数、分数にまで 数学の世界を拡張していく。印象的なのが分数より先に虚数について触れてい…

精霊の箱 下: チューリングマシンをめぐる冒険

下巻を読了。本作はチューリング機械以外にも記憶装置の話や暗号の話も含まれおり 題名以上の知識を得ることができた。ストーリーについても、前作と比較にならない話の展開となっており 上下巻で一本のストーリーとなっている点で飽きずに読むことができた…

精霊の箱 上: チューリングマシンをめぐる冒険

白と黒の扉の続篇の上巻が読み終わった。白と黒の扉から数か月後の世界ということで、 前回の登場人物が重要人物として登場している。 そのため、前作を読まないと、今作を100%楽しめないと思われる。 (事前に前作を読み直してよかった。)物語の展開がおも…

白と黒のとびら: オートマトンと形式言語をめぐる冒険

以前、借用して読んだ「白と黒のとびら: オートマトンと形式言語をめぐる冒険」を 続編がでるということで自分用に購入し、改めて読み直した。 (続編が出たことで人気?になりAmazonには中古品しかなく、紀伊書店にて購入。)魔法使いが○と●から成るシンプル…

棒の切り分け

棒の切り分け 問題 長さn[cm]の一本の棒を1[cm]単位に切り分ける。 ただし、一本の棒を一度に切れるのは一人だけ。 最大m人がいるとき、最短何回で切り分けられるか。 考え方 1回毎に以下の条件を考える。 * n本切り分けが完了していたら終了。 * 切り分け可…

流行りの関数型言語を勉強中(2)

挿入ソート 教科書の中の問題の解答。 例題をこなせば、それなりに作れるようになるようです。 (* 目的:あらかじめ昇順に並んでいる整数リスト(lst)と整数nを受け取ったら * 昇順となる位置にnを挿入したリストを返す関数 *) (* insert: int -> int list ->…

流行りの関数型言語を勉強中(1)

流行りの関数型言語を勉強中。最近流行りの某書籍をきっかけに関数型言語を学ぶことにした。 【教材】 Twitterを見ていると下記教材がとても勉強になる様子。 っというわけで購入。プログラミングの基礎 (Computer Science Library)作者: 浅井健一出版社/メ…

ABC024_C問題

なんとか解けたので、久しぶりに更新。AtCoder社のAtCoder Beginner Contest(ABC)のC問題。 http://abc024.contest.atcoder.jp/良かった点 ・2次元配列を使わなかったので計算量が指数爆発せずに済んだ。悪かった点 ・ホワイトボード上での机上設計では別…

一日一プロ

二分探索 using System; using System.Collections.Generic; namespace BinarySearch { class MainClass { public static void Main (string[] args) { Console.WriteLine ("Target:"); int target = int.Parse (Console.ReadLine ()); Console.WriteLine ("…

一日一プロ

リニアサーチ(番兵つき) using System; using System.Collections.Generic; namespace LinerSearch { class MainClass { public static void Main (string[] args) { Console.WriteLine ("target:"); int target = int.Parse (Console.ReadLine ()); Console…

一日一プロ

水たまり using System; using System.Collections.Generic; namespace Rainy { class MainClass { public class Data_B { public int left_p = 0; public int area = 0; public Data_B(int p, int a){ left_p = p; area = a; } } public static List<int> stackA</int>…

一日一プロ

キュー 擬似タスクスケジューリング using System; using System.Collections.Generic; namespace queue { class MainClass { public class Process { public string name; public int time; public Process(){ name = "ERROR"; time = 0; } public Process(…

一日一プロ

逆ポーランド記法 スタック練習 using System; using System.Collections.Generic; namespace stack { class MainClass { public const int ERROR = 0xFFFF; public static List<int> stack = new List<int> (); public static void Main (string[] args) { //入力 str</int></int>…

一日一プロ

シェルソート あらかじめソートしておき、挿入ソートでの計算回数を少なくする。 using System; using System.Collections.Generic; namespace ShellSort { class MainClass { public static void Main (string[] args) { int mode = 0; int gMax = 0; Conso…

一日一プロ

using System; namespace atcoder { class MainClass { public static void Main (string[] args) { int s, e,sum; sum = 0; for (int i = 0; i < 3; i++) { string[] str = Console.ReadLine ().Split (' '); s = int.Parse (str [0]); e = int.Parse (str …

一日一プロ

using System; using System.Collections.Generic; namespace atcoder3 { public struct iseki { public int l, r, s; } class MainClass { public static void Main (string[] args) { var list = new List<iseki>(); //Input string[] str = Console.ReadLine ().</iseki>…

一日一プロ

ソートの安定性 バブルソートと選択ソート using System; using System.Collections.Generic; namespace StalbeSort { class MainClass { public static void Main (string[] args) { int N; List<int> data = new List<int>(); N = int.Parse(Console.ReadLine ()); f</int></int>…

一日一プロ

SRM652 250 class ValueOfString { public int findValue(string s) { int moji = (int)'a'; int count = 0; int total = 0; for(int i=moji; i<(moji+26); i++){ string tmp = s; int i_tmp = 0; i_tmp = s.Length - tmp.Replace(((char)i).ToString(), "")…

一日一プロ

挿入ソート C++ #include <iostream> #include <vector> using namespace std; int main(int argc, const char * argv[]) { int n; vector<int> data; cin >> n; for(int i=0; i < n; i++){ int tmp; cin >> tmp; data.push_back(tmp); } for(int i=1; i<n; i++){ int v = data[i]; int j = i-1; while( (j >= 0) && (data[j] > …</n;></int></vector></iostream>

一日一プロ

アルゴリズムとデータ構造 問題 n個の数字R0〜Rn-1が与えられる。 Rj - Ri (i using System; using System.Collections.Generic; namespace MaximumProfit { class MainClass { const int MaximumProfit = 200000; public static void Main (string[] args) …

よく使いそうなコードまとめ(4)

動的配列 List using System.Collections.Generic; var R = new List<int>(); /*宣言 */ R.Add(int.Parse (Console.ReadLine ())); /* 要素追加 */ Console.WriteLine ("{0}", R[0]); /* 要素抽出 */ 定数定義 const int DEFINE 5 Max, Min関数 Math.Max( A, B );</int>…

C#でプロコン入力

C#

C#の標準入力処理 /* 標準入力より' 'で分割しstr配列へ格納 */ string[] str = Console.ReadLine ().Split (' '); /* 1番目の要素をint型に変換しNへ格納 */ int N = int.Parse (str [0]); /* 2番目の要素をint型に変換しMへ格納 */ int M = int.Parse (str…

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)); } 参考文献 C言語による最新アルゴリズム事典 (ソフト…

はじめての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ゲー…