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

(sicp25)m2.64〜2.66

(use pre-sicp) ;; 2分木を使った集合を扱うデータ構造の復習をする。 ;; 見ないで書いてみる。 (define (entry tree) (car tree)) (define (left-branch tree) (cadr tree)) (define (right-branch tree) (caddr tree)) (define (make-tree symbol l r) (li…

elispでisbn13->ASIN記法

http://d.hatena.ne.jp/tomisima/20071223/1198339760 おもしろそうなのでやってみました>< 追記: isbn-10にはBugがあります。 isbn13-to-isbn10もxxx-xxxxxxxxx-yではなくxxx-xxxxxxxxxyのときにはうまく計算できていません。 (コメント欄でplusさんが…

elisp+rubyで文章を変換するコードを書くのが楽になるかもしれない。

ファイルをrubyを使って変換したいと思った時に、 スクリプトを書く 実際に動くか調べる スクリプトの修正 (2,3を満足いくまでループ) のような感じで作ってました。 これだと実行結果を確認するためにいちいちシェルを起動して、作っているスクリプトのデ…

テーマ変更

コードが表示できる幅が広い方がいいと思いました。 こちらの方がコードが読みやすいような気がします。

(sicp24)m2.63

;; 今度はリストではなく2進木のデータ構造 ;; 今までのデータ構造 ;; 並び→並び(重複あり)→並び(sort済み)→2進木 (define (entry tree) (car tree)) (define (left-branch tree) (cadr tree)) (define (right-branch tree) (caddr tree)) (define (make…

(sicp23)m2.61~m2.62

今度はソートされている集合の話 (use pre-sicp) (define (element-of-set? x set) (cond ((null? set) #f) ((= x (car set) #t)) ((< x (car set)) #f) (else (element-of-set? x (cdr set))))) (define (intersection-set set1 set2) (if (or (null? set1)…

バッファ間を手軽に行き来する

ここからhttp://q.hatena.ne.jp/1137478760 このサイトを発見!。便利そうなので少しいじって導入。 http://www-tsujii.is.s.u-tokyo.ac.jp/~yoshinag/tips/elisp_tips.html#buffer 変えたところ。 バッファ間の移動する処理に名前をつけた goto-prev-buffer…

(sicp22)m2.59~m2.60

(use pre-sicp) (define (element-of-set? x set) (cond ((null? set) #f) ((equal? x (car set)) #t) (else (element-of-set? x (cdr set))))) (define (adjoin-set x set) (if (element-of-set? x set) set (cons x set))) (let ((set '(1 2 3 4 5))) (pri…

null-print

何も表示しない関数を作った。(置換しておくと便利かもしれない。) (define (null-print x . y)) ;;(replase-string "print" "null-print")のようにして使う。 .emacsに追加した。 (add-hook 'scheme-mode-hook '(lambda () (define-key scheme-mode-map "\C…

(sicp21)昨日の続き

8queens-puzzleも解いた。前回よりも回答にたどり着くまでの時間は短かったけど、 あまりキレイな書き方にはなってないような気がする。 (define (queens board-size) (define (queen-cols k) (if (= k 0) (list empty-board) (filter (lambda (positions) (…

(sicp20) 2章の最初から問題2.42まで(所々飛ばしながら)

再開してからコードを書くスピードが遅くなってしまった気がしたので、 以前の感覚を取り戻すために2章の問題を初めからしてみた。 (use pre-sicp) ;;display -> null-display ;;print -> null-print ;;(define (null-display x)) ;;(define (null-print x .…

日本語入力ができるようにする

何となく、scimではなくuimを使ってます。 何もしていない状態だと、localeが存在ていないので作成します。 仕方がわかんなかったのでmanで調べました。>< こんな感じで良いみたいです。 sudo localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 uim*のインストール…

fluxbuntuの漢字の文字化けを直した。

たぶんそのままだと、フォントとか足りないと思うので、ubuntu-ja*1のリポジトリを追加。 f=/etc/apt/sources.list sudo cp $f $f.bak sudo echo "deb http://archive.ubuntulinux.jp/ubuntu-ja gutsy/" >> $f sudo echo "deb http://archive.ubuntulinux.jp…

fluxbuntuを入れた

行ったことを記録しておくと後で便利だと思ったので書きます。 間違ったところとか、こうしたら良いというようなところがあったら教えてください>< fluxbuntuって ubuntuの一種です。軽いです。けっこうキレイです。keys*1をカスタマイズすると便利です。 …

javasriptでも楽に配列を生成したかった。

js

他の言語だと楽に配列を生成することができる。 rubyだと (0..9).to_a pythonだと [i for i in range(10)] でも,javascriptだと var a=[]; for (var i=0; i<10; i++){a[i] = i} と書かなくてはいけないです。 for文を書くのはとても面倒です。 なので、楽に…

(sicp19)sicp問題2.56〜2.57

久しぶりに。 ;;m.2.56 (define (deriv exp var) (cond ((number? exp) 0) ((variable? exp) (if (same-variable? exp var) 1 0)) ((sum? exp) (make-sum (deriv (addend exp) var) (deriv (augend exp) var))) ((product? exp) (make-sum (make-product (mu…

1次元オートマトン?

前に発見してから一度書いてみたいと思ってました。そして、今日時間があったので作ってみました。http://d.hatena.ne.jp/g7umz1cuwvsy/20071202/p1のサイトのコードを真似しました。(一部内容が変更されてたりします><) これから ルール30とかの意味を…

久しぶりにjavascript(Arrayがメイン)

js

最初はここ*1のコードを写してみようと思ったのだけれど、3行ぐらいで飽きてしまった。 なのでMDCのリファレンス*2を見ながら適当にやってみた。 var hoge = 1; var foo = (function() {var a=[]; for (var i=0; i<20; i++){a[i]=i}return a})(); //存在しな…

自分が作ったものを自分で添削

ファイル整理をしていたら、昔作ったrubyのコードがあった。*1 中を読んでみたら、何が書いてあるのか分かりませんでした>< 「d{d=数値}t{t=時間(e.g. 週間、ヵ月)}後の自分は他人」*2という話は本当なんだなーと思いました>< 添削方法 同じような振舞い…

(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:タブをすすめる…