問題5.37 – SICP(計算機プログラムの構造と解釈)その288
問題5.37 元の preserving から if の述語部と代替部を取り除く。 (define (preserving regs seq1 seq2) (if (null? regs) (append-instruction-sequences seq1 seq2) (let ((first-reg (car regs))) (preserving (cdr regs) (make-instr…続きを読む
問題5.37 元の preserving から if の述語部と代替部を取り除く。 (define (preserving regs seq1 seq2) (if (null? regs) (append-instruction-sequences seq1 seq2) (let ((first-reg (car regs))) (preserving (cdr regs) (make-instr…続きを読む
演習1-24 開始 [ が見つかればカウンタを増加させ、閉じ ] が見つかればカウンタを減少させている。 最終的にカウンタが 0 であればエラーではないという、手抜き版。 #include <stdio.h> #define TRUE 1 #define FALSE 0 int main(int argc, char *argv[]) { int c, d, cb_count, is_…続きを読む
Linux版の Google Chrome で拡張機能を作ってみた際のメモ。 Google のサンプルコードとチュートリアル (Google Chrome Extensions – Google Code) や "特集:先取り! Google Chrome Extensions|gihyo.jp … 技術評論社" の記事を参考にして Fastladder の未読記事…続きを読む
Google Chrome の Linux版(4.0.249.30)がベータリリースされたので試してみた。 Firefox に比べてフォントがクッキリと表示されている。 速度もかなり速くて快適、Vimperator があれば Firefox から乗り換えてもいいかなという感じ。 と、思っていたら Vimperator 風の拡張機能 "vimlike-smooziee – Pr…続きを読む
演習1-23 文字を先読みしてコメントのチェックを行っている。 コメントと二重引用符の範囲判定部分が汚い・・・ #include <stdio.h> #define TRUE 1 #define FALSE 0 int main(int argc, char *argv[]) { int c, d, is_comment, is_dquote; is_comment = is_dquo…続きを読む
Intel SSD X25-M のファームウェアを 2CV102HA にアップデートして、特にトラブルもなく使っていたけれど、やっぱりこのまま使い続けるのは気持悪いので、新しいファームウェア 2CV102HD にアップデートした。 前回は、公開当日にアップデートしてしまったので、今回は少し様子見をした。 トラブルの情報も出回っていないし、そろそろアップデートしてもいいかなということで、サクっとアッ…続きを読む
演習1-22 スペースか改行文字が現われる毎に word バッファに保存している文字列を出力する。 出力の際に最大桁数を超えるかどうかのチェックを行う。 1単語の長さが最大桁数を超える場合は別に処理を行なっている。 長さが見やすいように最初に20個の数字を出力している。 #include <stdio.h> #define MAXLENGTH 20 #define WORD_SIZE …続きを読む
演習1-21 n 回連続するスペースを単純にタブに変換するだけのものを作った。 #include <stdio.h> #define DEFAULT_TABSTOP 4 #define IS_BLANK 1 #define NOT_BLANK 0 void put_space(int len, char c); int main(int argc, char *argv[]) { in…続きを読む
演習1-20 タブ文字をタブ・ストップまでのスペースに変換する。 #include <stdio.h> #define DEFAULT_TABSTOP 4 void put_space(int len, char c); int main(int argc, char *argv[]) { int c, i, n; n = DEFAULT_TABSTOP; i = 0; while (…続きを読む