2012-03-01から1ヶ月間の記事一覧

PUNK SPRING行ってきた

The Offspringがメチャよかった。モッシュの中にはいる体力はないことがわかった。 これは、新しいアルバム買っちゃうな。 何回か、The Offspringのlive行ってるけど、その中でもかなり良かったと思う。 最近The Offspring聞けてなかったので、PUNK SPRING行…

プログラミングの基礎 第16章 dijkstra_mainの初動プログラム

大変だったけど粘ってよかった。。 let eki_xs = make_eki_list global_ekimei_list (* dijkstra_main : eki_t list -> ekikan_t list -> eki_t list *) let dijkstra_main eki_xs ekikan_xs = let rec recursion xs = match xs with [] -> [] (* 母集団の中…

プログラミングの基礎 saitanwo_bunriを書き直し

うーむ。先に進まず。どうしよう。どうしてもリストを更新してくと最短の距離を持たない駅が生まれます。。 let saitan_wo_bunri xs = match xs with [] -> ([], []) | first::rest -> let min = List.fold_right (fun k data -> if k.saitan_kyori < data.s…

プログラミングの基礎 問題16

なんか、違う。なんか違う (* dijkstra_main : eki_t list -> ekikan_t list -> eki_t list *) let rec dijkstra_main eki_xs ekikan_xs = match eki_xs with [] -> [] | first::rest -> let tuple = saitan_wo_bunri (koushin first rest ekikan_xs) in mat…

プログラミングの基礎 第16章

今日は時間がなかったのもあるけど、整理に時間を使いましたまずは、13章のあたりのプログラムを読みやすく変更 (* 最短距離が明確でない未処理のリストのすべてにkoushin1を行う*) (* koushin eki_t -> list eki_t -> list eki_t *) let koushin p xs ys= L…

プログラミングの基礎 第16章

今日は、16章でした。またもや章を終わりきらず… ダイクストラのアルゴリズムをなにやら勘違いしてる気がするので、すこし腰を落ち着けて、関数を作り直します。 (* 整数のリストを受け取ったら、 * それまでの数の合計からなるリストを作る *) (* sum_list …

プログラミングの基礎 問題15

電車の問題は、また明日! 今日は、会社の勉強会用の読書をしたり、ランニングをするなど (* ユークリッドの互除法で最大公約数を求める関数 *) (* gcd : int -> int -> int ただし、m>=n>=0*) let rec gcd m n = match (m,n) with (m, 0) -> m (*自明のケー…

プログラミングの基礎 問題13,14,15

だんだん関数プログラミングっぽくなってきました (* 人間一人分のデータ (身長、体重、誕生日、血液型)*) type person_t = { name : string; height : float; weight : float; birthday : int * int; blood : string; } (* person_tを受け取って、血液型の…

プログラミングの基礎 第12章

本当はglobal_ekimei_listを使うらしいので、その部分の書き換え getDistanceAndStationに関しては、今までの動きをしてもらわないと困るので、変更せず 引数のリストを変えたけど、これの方がわかりにくい… (* 各駅から最短距離のリストを作る関数 *) (* ma…

プログラミングの基礎 問題13

ちょっとぼーっとしてしまった。ちょっとダメだったな。。 (* 人間一人分のデータ (身長、体重、誕生日、血液型)*) type person_t = { name : string; height : float; weight : float; birthday : int * int; blood : string; } (* person_tを受け取って、…

プログラミングの基礎 第12章

本当はglobal_ekimei_listを使うらしいので、その部分の書き換え getDistanceAndStationに関しては、今までの動きをしてもらわないと困るので、変更せず 引数のリストを変えたけど、これの方がわかりにくい… (* 各駅から最短距離のリストを作る関数 *) (* ma…

プログラミングの基礎 第12章

続きは、また明日!すごく…汚いです… type eki_t = { namae : string; (* 自分の名前(漢字) *) saitan_kyori : float; (* 各駅の距離 *) temae_list : string list; (* つながれている駅のリスト * temae_list : string list * -> [] 空のリスト * first::re…

プログラミングの基礎11

11章はさくっと終わった 第11章 自然数と再帰 (* calculate sum of n^2 *) (* sum_of_square -> int -> int *) let rec sum_of_square n = if n <= 0 then 0 else n * n + sum_of_square (n - 1) (* testing *) let test_sum_of_square1 = sum_of_square 0 =…

プログラミングの基礎 問題10-

第10章 再帰関数を使ったプログラミング すごく手続きっぽくなってしまった。 まずは、血液型の話 type person_t = { name : string; blood : string; } let p1 = { name = "p1" ; blood = "A" } let p2 = { name = "p2" ; blood = "B" } let p3 = { name = …

パターンマッチ付き局所変数定義

ちょっとわかりにくかったので、写経しておく. しかし、この本に出てくるような書き方って俺には思いつかないなぁ… (* 目的: 受け取った学生リストxsのうち各成績の人数を集計する *) (* shukei : gakusei_t list -> int * int * int * int *) let rec shuke…

プログラミングの基礎 第10章

今日は仕事中にしおれてしまったなぁ.プログラミングの基礎 第10章 (* 目的:受け取ったlstの要素それぞれの先頭にnをくっつける *) (* add_to_each : int -> int list list => int list list *) let rec add_to_each n lst = match lst with [] -> [] | firs…

プログラミングの基礎 問題9-

卒業おめでとうございます!心を入れ替えてカジュアルにブログ更新していきたいところです! 第9章 リスト type person_t = { name : string; height : float; weight : float; birthday : int * int; blood : string; } let person1 = { name = "春将軍"; h…

プログラミングの基礎 問題7-8

すこしでも前に、前に 問題7- 第7章 組みとパターンマッチ (* x,yの座標を入力として、x軸について対象点の座標を返す *) (* taisho_x : ( int * int ) -> int *) let taisho_x pair = match pair with (x, y) -> -1 * y let test1 = taisho_x (0, 0) = 0 le…

プログラミングの基礎 問題5.4

http://wikiwiki.jp/yokotaso/忙しくても、できるだけ、毎日更新したいものです。 (* 判別式の値を返す関数 b^2 - 4ac ,ただしa /= 0*) (* d_state float -> float -> float -> float *) let d_state a b c = b ** 2.0 -. 4.0 *. a *. c let test_D1 = (d_st…

プログラミングの基礎 問題5.3

今回は長くなってしまった… http://wikiwiki.jp/yokotaso/全テストケースで80ケースくらいか (* 牡羊座かどうかを判定する関数 *) (* ohitsuji : int -> int -> bool *) (* ohitsuji : int -> int -> bool *) let ohitsuji m d = m = 3 && 20 < d && d <= 31…

プログラミングの基礎 問題5.2

少しずつでもできるだけ、アウトプットする 読書メモ http://wikiwiki.jp/yokotaso/ocamlは(-1)としないとマイナス扱いにならない… (* 時間を受け取って、午前か午後を返す *) (* jikan : int -> string *) let jikan x = if x < 0 || x > 23 then "0-23の間…

プログラミングの基礎 問題4

読書メモ http://wikiwiki.jp/yokotaso/ (* 鶴の数が与えられたら、足の本数を返す *) (* とりあえず、勉強の一環なので、マイナスは考慮しない *) (* tsuru_no_ashi: int -> int *) let tsuru_no_ashi x = x * 2 (* testing *) let test1 = tsuru_no_ashi 0…