タグ

algorithmとocamlに関するjjzakのブックマーク (3)

  • メトロネットワーク最短路問題 (Mathematica) by Inquisitor

    プログラミングの入門に適した言語は何かという問いに唯一の具体的な答えというものはありません。多くの大学ではC言語を使っているでしょう。MITのように関数型言語を使う例もあります(その教科書SICP)。基的にはなんでもいいと私は思います。オブジェクト指向でしか書けないような言語は、思考を制限してしまう危険があるのでちょっと躊躇しますが、取り返しがつかないというほどではないでしょう。 関数型で入門したい(させたい)けれど、SICPは格的すぎるという向きには、浅井健一『プログラミングの基礎』(サイエンス社, 2007)がいいかもしれません。使用言語は関数型言語OCamlですが、プログラミング言語ではなくプログラミングを学べるように書かれています。 でも、ちょっと引っかかるところがあったので、そのことについて書いておきます。 プログラミング言語について学ぶのであれば、Javaなどのオブジェクト

  • 迷路の試験問題を解いてみた - にわとり小屋でのプログラミング

    参考:人材獲得作戦・4 試験問題ほか: 人生を書き換える者すらいた。 Lv4に評価されるためには、最短性の完全なチェックが必要だったのでCoqで証明してみた。 まず、accessiblesという関数を定義し、以下の性質を証明した。 ここでplengthはパスの長さを計る関数で、Path x pはpがxを起点としたパスであるという述語。endofはパスの終点を求める関数。 Fixpoint accessibles (start : node) (len : nat) : list path := match len with | O => (PUnit start) :: nil | S n' => div_equiv path_equiv_dec @@ (flat_map expand @@ accessibles start n') end. この関数はstartから始まってlenの長さ

    迷路の試験問題を解いてみた - にわとり小屋でのプログラミング
  • SuffixArray - みずぴー日記

    30分プログラム、その580。id:Gemmaさんに借りたWEB+DB PRESS Vol.50に、suffix arrayの解説が載っていたのでやってみた。 解説を読んだときは「ちょう簡単じゃん。さくっと実装してやんよ」と思っていたけど、いざ始めたけど、けっこう大変だった。簡単とか言って、ごめんなさい。 そもそもararyとついてる時点で大変なことに気がつくべきだった。ボク、OCamlでarrayを使ったことなんてほとんどないじゃないか。 使い方 シグネチャはこんな感じ。 type t val make : string -> t val find : t -> string -> int list まず、suffix arrayを作る。 # let s = SuffixArray.make "abracadabra";; val s : SuffixArray.t = <abstr>

    SuffixArray - みずぴー日記
  • 1