2007-11-01から1ヶ月間の記事一覧
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 (…
図形言語で使いたい絵が決まらないので、図形言語のところを飛ばして先に進んでみることにした。 (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) (…
利点 色々情報を付加できる。 「次へ」、「前へ」のリンクを付けたりとか code とても汚いです><。 ファイルのあるところにおいてください。 $KCODE="utf8" target= ARGV[0] || "rensou" def make_html(txtname, name=nil, &filter) htmlname=txtname.spli…
データ構造の説明 ひとつの配列でヒープを表している(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…
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
(実際に投稿したのは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」を含む日記 - はてなダイアリー 簡単に言うと emacsの中に検索エンジンがある様な感じ 今日やったこと anything.elを入れる ホームディレクトリ用の(updatedb/locate) filecacheを有効にした anything.elを…
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上でした方がいいのかコマンドのgrepでした方がいいのか分からなかった。なので調べてみた。(元…
昔書いたところを読み直していたら、間違いに気づいた。 deep-reverse1 最初に作ったもの(動かないときがある) deep-reverse2 たぶん動く deep-reverse3 mapを使ったもの (define (deep-reverse1 tree) (if (pair? tree) (cons (deep-reverse1 (cadr tree)…
そろそろ、環境をきれいにしようかなと思ったので、てきとーに書いた。 使いかた 1回実行 現在インストールしているアプリの名前が入ったファイルが生成される (デフォルトでは「orignal_apls.list」 orignal_apls.listと今回のスクリプトを別の環境に持っ…
エラー出力が長いときに、一度ファイルに保存してから読みたいと思った。 こうすると、エラー出力が標準出力に置き換わるみたい。 コード(名前はstderr_to_stdout.rb) #!/usr/bin/ruby command=ARGV.join(" ") STDERR.reopen($stdout) `#{command}` 使いかた…
久しぶりなので復習もした。 問題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…
M-n,M-pで以前に入力した式を補完してくれる。 (もっと便利な機能もあるのかもしれないけど分かりません><)
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) ;;;この下…
結局、最初の方針であってた。 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…
間違ってたので、消しました>< さらに追記 1,7と7,1で重複してるww
なんでもない内容のことでも説明しようとすると面倒。
継承を使ったコードを書いてみる。 rubyに標準で存在するArrayクラスを継承したクラスMyArrayをつくってみる。 このMyArrayクラスは、Arrayクラスとは異なり、要素のならびをシャッフルするshuffleメソッドを持っている。 class MyArray < Array #MyArrayはA…
簡単に説明できたら、分かっている。そうでなければ、わかっていない。 やってみる。
プログラム言語を使う人は2つに分けられる 言語のユーザー プログラマ プログラム言語のユーザーは2つに分けられる お勉強 (主にCとかを使う) (資格をとるために勉強したり、学校で勉強した) (ちょっとした計算は書けるけど、使い道はない) なんとなく…