問題2.75

;; なんか普通のオブジェクト指向っぽい感じだ。 (define (make-from-mag-arg r a) (define (dispatch op) (cond ((eq? op 'real-part) (* r (cos a))) ((eq? op 'imag-pert) (* r (sin a))) ((eq? op 'magnitude) r) ((eq? op 'angle) a) (else (error "Unk…

問題2.74

;; a ;; それぞれの事業所のファイルには個別の型がついている。 ;; placeという手続きによって型名を呼び出せる。 (define (get-record file name) ((get 'get-record (place file)) (records file) name)) (define (place obj) (car obj)) (define (record…

問題2.73

スキップします。あとで

問題2.72

スキップします。あとで

問題2.71

;;n = 5 '(1 2 4 8 16) 31--15--7--3--1 | | | |-2 | | |-4 | |-8 |-16 ;;n = 10 '(1 2 4 8 16 32 64 128 256 512) 1023--511--255--127--63--31--15--7--3--1 | | | | | | | | +-2 | | | | | | | +-4 | | | | | | +-8 | | | | | +-16 | | | | +-32 | | | +-…

問題2.70

(define rock-1950-tree (generate-huffman-tree '((A 2) (NA 16) (BOOM 1) (SHA 3) (GET 2) (YIP 9) (JOB 2) (WAH 1)))) (define song '( GET A JOB SHA NA NA NA NA NA NA NA NA GET A JOB SHA NA NA NA NA NA NA NA NA WAH YIP YIP YIP YIP YIP YIP YIP Y…

問題2.69

(define (generate-huffman-tree pairs) (successive-merge (make-leaf-set pairs))) (define (successive-merge leaf-set) (if (> (length leaf-set) 1) (successive-merge (adjoin-set (make-code-tree (car leaf-set) (cadr leaf-set)) (cddr leaf-set)))…

問題2.68

(define (encode message tree) (if (null? message) '() (append (encode-symbol (car message) tree) (encode (cdr message) tree)))) ;; rec (define (encode-symbol message tree) (if (leaf? tree) '() (if (memq message (symbols (left-branch tree))…

問題2.67

define (make-leaf symbol weight) (list 'leaf symbol weight)) (define (leaf? object) (eq? (car object) 'leaf)) (define (symbol-leaf x) (cadr x)) (define (weight-leaf x) (caddr x)) (define (make-code-tree left right) (list left right (append…

問題2.66

(define (lookup given-key set-of-records) (if (null? set-of-records) #f (let ((record (entry set-of-records))) (cond ((= given-key (key record)) record) ((< given-key (key record)) (lookup given-key (left-branch set-of-records))) ((> given…

問題2.65

(define (union-tree tree1 tree2) (let ((list1 (tree->list-2 tree1)) (list2 (tree->list-2 tree2))) (list->tree (union-set list1 list2)))) (define (intersection-tree tree1 tree2) (let ((list1 (tree->list-2 tree1)) (list2 (tree->list-2 tree2)…

問題2.64

(define (list->tree elements) (car (partial-tree elements (length elements)))) (define (partial-tree elts n) (if (= n 0) (cons '() elts) (let ((left-size (quotient (- n 1) 2))) (let ((left-result (partial-tree elts left-size))) (let ((left…

問題2.63

SICP超久しぶり。 思えば学部2-3年のころに一生懸命やっていたな。 ranobaの開発に移ってから、ずっとほったらかしにしていた。 やっぱり難しい。あまり成長してないのか。。。。 なんにしろ、いい加減に終わらせないとね。ぱっぱと飛ばしてこう。 (define (…

jshintでjavascriptコードチェックしながら開発する

最近はjavascriptを書いています。 javascriptとしてはそれなりに大規模になってきました(2万行ぐらい?)。 最近のjavascriptトレンドのやり方は、コードチェッカを通して、信頼性を向上させるのがプロ技らしいです。 僕も早くプロの仲間に入りたいです。…

PythonでXMLをJSONに変換する

d:id:nagayoru:20110131:1296500717を多少綺麗にしてみました。 ソースは下 XMLtoJSONをimportして使えます。 Python 2.6.5 でテストしてあります。 引き続き突っ込み募集です! jsでevalする場合は eval("("+ str ")"); としないとラベル文に解釈されてシン…

pythonでjson(仮)

pythonでXMLからJSONへのトランスレータを書いたので載せてみます。 クライアント側のjavascriptがとても重くて、サーバ側のパワーがあまりまくってるので作りました。 一応調べてみたけど単純なやつはさっと出てこなかったので作りました。 移植性が目的でP…

ValueDomain用のdynamicDNS更新のBashスクリプト

前々からDiCE使ってましたが、なぜか無駄にCPU食ってるので、 スクリプト作ってcronでまわそうかと思って作りました。 (それにしても、何でほとんどアイドルのはずなのに10%とかとるんだろ?) 調べてみたら何人もやってる人が居ましたが…さっき出来たので…

サーバのHDDが飛びました。

サーバ壊れたので直しました。 バックアップがあったので良かった。 ranoba.comのデータは無事です。

あけましておめでとうございます。

あけおめです。 今年もがんばりません。 うそですよ…がんばりますよ。いつもどおり。 そういや今年は厄年です。 やだなー

Lamport's bakery algorithm

Lamport's bakery algorithm experiment in C ランポートのパン屋のアルゴリズム例をC言語で書いてみる PCDPはもう大体良いといわれたけど、微妙にわかってないので実装してみる。 まずはじめに、沢山のthreadで排他処理せずに、共有メモリをインクリメント…

Principles of Concurrent and Distributed Programming

Chapter 4 Semaphores 4.1 Introduction セマフォについて論議する。 Wait(S) : Sが0以上の場合、Sをデクリメントする。それ以外のとき、waitを実行したプロセスを一時停止する。 Signal(S) : このセマフォによって一時停止させられているプロセスがあった場…

Principles of Concurrent and Distributed Programming

Chapter3 The Mutual Exclusion Problem 3.1 Introduction Mutexの実装方法について議論する 1. Critical_Sections の中の処理は2プロセス以上にinterleavedされてはならない(同時に実行されてはならない) 2. Critical_Sectionは??(英語が読めない…) 3. …

Principles of Concurrent and Distributed Programming

Chapter2 The Concurrent Programming Abstraction 2.1 Introduction ok 2.2 Interleaving 処理時間が違っても、処理順番が同じであれば同じと考える。 システムの処理速度は時とともに変わってしまうので、それで動かなくなっては困るため。 どのようなInte…

Principles of Concurrent and Distributed Programming

Principles of Concurrent and Distributed Programming (Prentice-Hall International Series in Computer Science)作者: M. Ben-Ari出版社/メーカー: Addison Wesley発売日: 2006/02/24メディア: ペーパーバック クリック: 14回この商品を含むブログ (3件)…

Onlisp

19章「クエリコンパイラ」 19.1 データベース ok 19.2 パターンマッチングクエリ ok 19.3 クエリインタプリタ かなり複雑な再帰だ 19.4 束縛に関する制限 notの挙動が今ひとつわからない。 19.5 クエリコンパイラ やべー鬼難しい。 とりあえず読み飛ばす。後…

sbclのrun-processで、process-outputが読めなくなる

(defun read-all (output-stream) (if (null output-stream) "" (with-output-to-string (lines) (awhile (read-line output-stream nil nil) (format lines "~a~%" it))))) (defun execute (command &key (wait t)) (destructuring-bind (program &rest arg…

Onlisp

18章「分配」 18.1リストに対する分配 ok 18.2他の構造 > (dbind (a b c) #(1 2 3) (list a b c)) (1 2 3) > (dbind (a (b c) d) '( 1 #(2 3) 4) (list a b c d)) (1 2 3 4) > (dbind (a (b . c) &rest d) '(1 "fribble" 2 3 4) (list a b c d)) (1 #\f "rib…

Onlisp

15章 関数を返すマクロ 15.1 関数の構築 引数ひとつだし、あまり強力でない気がする。 mapなどに使うのにはいいかもしれない。 ok 15.2 Cdr部での再帰 (defmacro alrec (rec &optional base) "cltl2 version" (let ((gfn (gensym))) `(lrec #'(lambda (it ,g…

Onlisp

13章「コンパイル時の計算処理」 新しいユーティリティー この例は微妙な気がする。 Bezier曲線 定数値が与えられるなら、コンパイル時に計算を移せる。 普通ならコンパイラがやる機能を人間ができる。 ok 14章「アナフォリックマクロ」 アナフォリックな変…

Onlisp

12章 「汎変数」 概念 ok lispらしくなってきた。 複数回の評価に関わる問題 副作用コードを評価してから渡したいが、評価すると場所を表す式じゃなくなってしまう。 define-modify-macroは3個の引数を取る. 定義したいマクロの名前 (汎変数の後に)取るか…