2007-11-01から1ヶ月間の記事一覧

(sicp?)pascalの三角形がつくれた

schemeでもできた。 (define (pascal n) (define (iter seq) (if (null? (cdr seq)) '() (cons (+ (car seq) (cadr seq)) (iter (cdr seq))))) (define (make n seq) (if (= n 0) seq (append seq (map iter (map (lambda (x) (append '(0) x '(0))) (make (…

(sicp18)sicp2.54〜2.56

図形言語で使いたい絵が決まらないので、図形言語のところを飛ばして先に進んでみることにした。 (use pre-sicp) ;;本の内容を写す (define a 1) (define b 2) (list a b) (list 'a 'b) (car '(a b c)) (cdr '(a b c)) ;;memqを作成 (define (memq item x) (…

番号がふってあるテキストファイルをhtml化して読む。

利点 色々情報を付加できる。 「次へ」、「前へ」のリンクを付けたりとか code とても汚いです><。 ファイルのあるところにおいてください。 $KCODE="utf8" target= ARGV[0] || "rensou" def make_html(txtname, name=nil, &filter) htmlname=txtname.spli…

heapsort

データ構造の説明 ひとつの配列でヒープを表している(classを作って再帰的にとかしてない) a[0..(a.size-1>>1)]までが親 a[i*2+1]が左側の子 a[i*2+2]が右側の子 常に親>子の関係が成り立っている。 a=(0..30).map{rand(100)} def a.heapsort &block n = s…

mergesort

a=[52, 0, 1, 92, 93, 83, 29, 99, 48, 13, 24, 28, 68, 17, 19, 82, 67, 14, 22, 85] def a.merge_sort(&cond) cond = proc{|x,y| x

sortしてみた

(実際に投稿したのは24日です><) 最近、読んでいる「再帰の技法」という本の中にいろいろなソートアルゴリズムが出てきたので、 それをrubyで書いてみた。 理由 C->rubyという変換をすれば、以下のことがわかる気がしたので。 C-の文法になれることができ…

追記

わざわざ、true,falseの表を作らなくても2進数を使えば良いのかもしれない。 def power_set(seed) n=2**seed.size-1 bools=(0..n).map{|i| format("%#{seed.size}b",i).split(//)} bools.map do |bool| x=seed.zip(bool).map{|e| e[0] if e[1] == "1"} x.de…

べき集合を作ってみた

書き方を失敗したかもしれない。*1 たしか、べき集合を作る手間はO(2^n)なのでそんなに速度を求めても仕方がないかも #真偽の組み合わせを作る def make_bools(n) bool=[false,true] bools=Array.new(n,bool) concatter = proc{|xs,ys| xs.map{|x| ys.map{|y…

emacsタグを作った方がいいかもしれない。 図形言語で使う絵が決まらない(sicp)

anything.elを入れた

anything.elについてはこの辺で><「anything.el」を含む日記 - はてなダイアリー 簡単に言うと emacsの中に検索エンジンがある様な感じ 今日やったこと anything.elを入れる ホームディレクトリ用の(updatedb/locate) filecacheを有効にした anything.elを…

elscreen便利

sudo apt-get install elscreen.emacsに以下を追加 (require 'elscreen) (setq elscreen-prefix-key "\C-z") ;;(elscreen-set-prefix-key "\C-t") ;;動作中に変える時はこちらを使う ;; C-z c:新規タブ作成 ;; C-z k:タブを閉じる ;; C-z n/p:タブをすすめる…

黒魔術に手を染めてしまったかもしれない。

再帰の技法という本にある問題で、こんな感じの出力を表示する問題があった。F true=>T でした">*1 bo b1 b2 (b0 or (b1 and (not b2))) ---------------------------------------- false false false false false false true false false true false true f…

図形言語のための作業をした。

gauche-glが必要みたい ubuntuにパッケージがあった。 sudo apt-get install gauche-glあと、ひげぽんさんの日記からから、 sources.tar.gzをもらってきた。 あと、 C-xC-eで式を評価できることを知った。

うまくいかない。

要望 こんな感じのスクリプトが作りたい。 #作ったスクリプトの名前が「rpipe.rb」 $ which refe #=>/var/lib/gems/1.8/bin/refe $ which refe | rpipe.rb cat #cat /var/lib/gems/1.8/bin/refe に置換されて実行される。 問題点 ターゲットを親ディレクトリ…

結果

Rehearsal ------------------------------------- f 0.000000 0.010000 1.640000 ( 1.655140) g 0.110000 0.010000 0.940000 ( 0.933483) ---------------------------- total: 2.580000sec user system total real f 0.020000 0.030000 1.610000 ( 1.61333…

コマンドの実行コストはrubyより重いかもしれない。

何かのアプリケーションを実行しているときに、そのアプリケーションのプロセス番号を調べるようなことがしたかった。 rubyプロセス番号を抽出するときに、ruby上でした方がいいのかコマンドのgrepでした方がいいのか分からなかった。なので調べてみた。(元…

昔作ったdeep-reverseが間違ってた。

昔書いたところを読み直していたら、間違いに気づいた。 deep-reverse1 最初に作ったもの(動かないときがある) deep-reverse2 たぶん動く deep-reverse3 mapを使ったもの (define (deep-reverse1 tree) (if (pair? tree) (cons (deep-reverse1 (cadr tree)…

インストールしているアプリケーションのdiffをとる

そろそろ、環境をきれいにしようかなと思ったので、てきとーに書いた。 使いかた 1回実行 現在インストールしているアプリの名前が入ったファイルが生成される (デフォルトでは「orignal_apls.list」 orignal_apls.listと今回のスクリプトを別の環境に持っ…

エラー出力を標準出力として扱う

エラー出力が長いときに、一度ファイルに保存してから読みたいと思った。 こうすると、エラー出力が標準出力に置き換わるみたい。 コード(名前はstderr_to_stdout.rb) #!/usr/bin/ruby command=ARGV.join(" ") STDERR.reopen($stdout) `#{command}` 使いかた…

(sicp17)m2.40〜m2.42

久しぶりなので復習もした。 問題2.42にとても時間がかかった。(解けてしまえばそんなに難しくなかった) (use pre-sicp) ;;この中にaccumurateとかが定義されている。 ;;復習する。 (define (flatmap proc seq) (accumulate append '() (map proc seq))) (…

そういえば

1 昔作った「3つの数のうちから大きい数2つの和を返す」というような関数ってもっと一般的に定義できる。 (use pre-sicp) (define (f n . seq) (define (select seq count) (if (= count n) '() (cons (car seq) (select (cdr seq) (+ count 1))))) (accumul…

quack便利

M-n,M-pで以前に入力した式を補完してくれる。 (もっと便利な機能もあるのかもしれないけど分かりません><)

ruby-listで…

ruby-listでこんなメールがあった。(ここで見れる。) 2*n 個の集合から、二個づつを取って n 個の組を作る全て の作りかたを、列挙する script が分からなくて少し 困っています。例えばこんなやつです。 [1,2,3,4] => [[[1,2],[3,4]],[1,3][2,4],[1,4],[2,3…

以前作った関数を呼び出せるようにしておくと楽

暇なときにやりかたを探そうと思っていた。 今日、暇だったから探してみた。 ここの通りにやればできそう。 呼び出されるファイル(ライブラリ?) ;;ファイル名は"pre-sicp.scm" (define-module pre-sicp (export-all)) (select-module pre-sicp) ;;;この下…

ruby-listで…(3)

結局、最初の方針であってた。 class GameMC def initialize arr set_seed(arr) @game_size = arr.length/2 @count = 0 shuffle end def set_seed a @seed=[] a.each_with_index do |e,i| a[i+1..-1].each {|ele| @seed << [e, ele]} end end def ok? result…

ruby-listで…(2)

間違ってたので、消しました>< さらに追記 1,7と7,1で重複してるww

実際にやってみて

なんでもない内容のことでも説明しようとすると面倒。

継承について

継承を使ったコードを書いてみる。 rubyに標準で存在するArrayクラスを継承したクラスMyArrayをつくってみる。 このMyArrayクラスは、Arrayクラスとは異なり、要素のならびをシャッフルするshuffleメソッドを持っている。 class MyArray < Array #MyArrayはA…

オブジェクト指向を理解しているか分からないので実験*1

簡単に説明できたら、分かっている。そうでなければ、わかっていない。 やってみる。

2つに分けられる?

プログラム言語を使う人は2つに分けられる 言語のユーザー プログラマ プログラム言語のユーザーは2つに分けられる お勉強 (主にCとかを使う) (資格をとるために勉強したり、学校で勉強した) (ちょっとした計算は書けるけど、使い道はない) なんとなく…