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

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

再帰の技法という本にある問題で、こんな感じの出力を表示する問題があった。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とかを使う) (資格をとるために勉強したり、学校で勉強した) (ちょっとした計算は書けるけど、使い道はない) なんとなく…

リングに入っているのに、そういえば…

rubyのこともubuntuのことも書いてないかも。

(sicp16+)やっぱりもう1問した。

improver -> intervalに直した。 ;;m2.41 ;n>=k>j>iで総和がs ;今回は教科書に沿って,flatmapを使ってみよう ; ;;;;;;;;必要なもの(教科書);;;;;;;;;;;;;;;; (define (flatmap proc seq) (accumulate append '() (map proc seq))) (define (accumulate op in…

(sicp16)m2.40

今日はこれだけ enumerate-intervalがenumerate-improverになってる ;;m2.40 (define (enumerate-improver low high) (if (> low high) '() (cons low (enumerate-improver (+ low 1) high)))) (define (unique-pairs n) (define (iter result count) (if (=…

(sicp15)2章から復習。

一度やったことがあると、すぐに解けるみたい。 1日で今までやっていたところまでいけた。(めんどくさそうな問題は除いて) same-parityの解き方は大部変わった。 ;;久しぶりなので、もう一度2章の始めの方からやってみる。 ;;m2.4 (define (_cons x y) (la…

そろそろ再開したいので、すこし復習してみた

リスト操作 (define (accumulate op init seq) (if (null? seq) init (op (car seq) (accumulate op init (cdr seq))))) (define (enumerate-improver low high) (if (> low high) '() (cons low (enumerate-improver (+ low 1) high)))) ; gosh> (accumulat…

lambda-procの使いどころ

関数内関数の代わりにlambdaとか使っちゃダメかもしれない。 (前回作ったmapperのところも関数にした方が早いかも。) def sum1 n (n == 0)? 0 :n + (sum1(n-1)) end def sum2 n sum_iter = proc do |c,r| (c == 0)? r : sum_iter[(c-1),(r+c)] end sum_ite…

PubMedのシンプソン数

おとなり日記からのぞいてみた記事*1に触発されて作ってみました。 (PubMedもシンプソン数も何に使うのかよくわかってないです。><) 追記 map_countの定義のところで無駄がありました>< lambda/procを関数内関数のように使うと遅くなる それ以前に、ma…

sicp(14)m2.37〜m2.39

;;復習 accumulateとaccumulate-nを作る。 (define (accumulate op init seq) (if (null? seq) init (op (car seq) (accumulate op init (cdr seq))))) (define (accumulate-n op init seq) (if (null? (car seq)) '() (cons (accumulate op init (map car s…

sicp(13)m2,35〜m2.37

;;復習 ;;15分ぐらいでaccumulate(list),filter, acc-map, acc-length, ;;fringe, enumerate-intervalを作ろうとした。 ;;30分以上かかった。 (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op in…

sicpばかりしてたら、rubyのコードが書きたくなった。

「def esub! args new_syms」と書いたときのエラーに素で驚いた。 今回書いたコード 引数をとって一気にgsub!。*1 class String def esub! args, new_syms = nil if new_syms.nil? #argsがハッシュのとき regexps = args.keys.map {|e| Regexp.new e} new_sy…

sicp(12)m2.28

(実際にupしたのは6日です) やっと解けた。 cdrでリストを下っていくものの応用でできた。 (2つの関数どうしが互いに呼ばれ合うようなものの作り方に悩んでいたのかもしれない) ;;復習。 ;;reverse と deep-reverse を作る。 (define (reverse lst) (define…