2007-09-01から1ヶ月間の記事一覧

sicp(9)m2.12〜m2.20

gaucheにnilがない。( '() で代用) ;;m2.12 (define (make-center-width c w) (make-interval (- c w) (+ c w))) (define (center i) (/ (+ (lower-bound i) (upper-bound i)) 2)) (define (width i) (/ (- (upper-bound i) (lower-bound i)) 2)) ;;昨日作っ…

sicp(8)m2.6〜m2.11まで

問題2.11がとても時間かかった。 ;; ;m2.6 (define zero (lambda (f) (lambda (x) x))) (define (add-1 n) (lambda (f) (lambda (x) (f ((n f) x))))) (define (inc x) (+ x 1)) ;;コードから考えて使い方はこんな感じ。 ; gosh> ((zero inc) 1) ; 1 ;;とい…

sicpm2.1〜m2.6

(実際に更新したのは、28にちです) 問題2.6が分かりませんでした。>< ;;復習 ;repeated (define (repeated f n) (if (= n 1) f ((lambda (f g) (lambda (x) (f (g x)))) f (repeated f (- n 1))))) ;m1.46 (define (sqrt x) (fixed-point (lambda (y) (/ (…

sicp(6)m1.40〜m1.46まで(1章終了)

1章が終わった! ;;復習 ;m1.39を何も見ないで解く。 (define (cont-frac n d k op) (define (iter result k) (let ((dk (d k)) (nk (n k))) (cond ((= k 0) result) (else ;(display dk) ;(newline) (iter (/ nk (op dk result)) (- k 1)))))) (iter 0 k)) …

sicp(5)m1.34〜m1.39

(更新したのは26日です。upするの忘れてました><) ;1.3.2 (define (sum term a b next) (if (> a b) 0 (+ (term a) (sum term (next a) b next)))) (define (integral f a b dx) (* (sum f (+ a (/ dx 2.0)) b (lambda (x) (+ x dx))) dx)) ;;gosh> (integ…

no_title

content="" #何か def ask(you=:human, stress=0) if you == :human puts "#{content}で検索してください" search_by_yourself else puts "あなたは ***ですね。" puts "丁寧に教えてあげます。" i_teach_you end def search_by_yourself if solve? puts "go…

日本語の単語の意味を調べる。

検索窓に入力して検索ボタンをクリックするのがめんどうなので作った。 firefox+linuxの環境限定。 #!/usr/bin/ruby $KCODE="utf8" require "uri" require "kconv" url= "http://www.weblio.jp/content/" #全角空白での区切りにも対応 ARGV.map{|argv| argv.…

sicpm1.27〜m1.33まで(4)

simpsonのところで手間取った。(バグ取り) sicpはムチャ振りが少ないから、やってて楽しい。 今日したこと ;;復習。 (define (sum term a next b) (cond ((> a b) 0) (else (+ (term a) (sum term (next a) next b))))) (define (integral f a b dx) (defi…

sicpm1.21〜m1.26?(3)

時間計測のところで時間を食った。 でも、そのおかげでループ処理が書けるようになった。 今日やったこと。 (define (smallest-divisor n) (find-divisor n 2)) (define (find-divisor n test-divisor) (cond ((> (square test-divisor) n) n) ((divides? te…

gaucheのリファレンス

infoで説明が読めることがわかったのでメモ。 (info '<word>)symbolが何かはまだ分からない。 追記 infoというlinuxのコマンドがあったみたい。 あと、右のリンクの記事を見てemacsの設定をした。http://karetta.jp/book-node/kahua-seminar2/000723 すごい便利。</word>

sicpm1.14からm1.20まで

;m1.14 ;;めんどそう。あとでする。 ;;m.1.15 ;; absは定義しなくても、もともと入ってた。 (define (cube x) (* x x x)) (define (p x ) (- (* 3 x) (* 4 (cube x)))) (define (sine angle) (if (not (> (abs angle) 0.1)) angle (p (sine (/ angle 3.0))))…

sicpはじめから1.13の途中まで

長い。続きを読むという表示にする方法を後で調べる。 ;;練習 ;;(3*((2*4) + (3+5))) + ((10-7) + 6) (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6)) ;57 ;;m1.1 10 ; => 10 (+ 5 3 4) ;=> 12 (-9 1) ; => 8 (/ 6 2) ; => 3 (+ (* 2 4) (- 4 6)) ;=>6 (defin…

SICPをはじめる

作りたいものがないことに絶望した。 memo 理由 shiro-gauche-sicp-scheme .etc

The meaning of a = b in object oriented languages(ruby-talk)

ここの話が参考になった。内容をまとめると、こんな感じ。 #a,bに入れる値は元のものとは異なっています。 a = ["a", "b"] b = a a[0] = "z" p a #=>["z", "b"] p b #=>["z", "b"] #一方で、 a = ["a", "b"] b = a a = ["aa"] p a #=>["aa"] p b #=>["a", "b…

軽くキモいevalを使ったピラミッド

def f n i=1 eval %Q[puts " "*(n-i)+"*"*(2*i-1); i+=1;]*n end __END__ f 5 * *** ***** ******* *********

素数を求めてみた。

def calc_prime(from,to) result = [] target = (from..to).to_a target.shift if target.first <= 1 until target.empty? result << tmp = target.shift target.reject! {|x| x%tmp == 0} end result end p(calc_prime(1,1000)[81-1]) #=>419 #81番目の素数…

class_eval

後でまともな使い方考える。 class A a=("a".."f").to_a class_eval %Q[def initialize #{a.map {|e| %Q!@#{e} = "#{e.succ}"!}.join("\n")} end] class_eval %Q[attr_reader #{a.map {|e| ":"+e}.join(", ")}] end a=A.new p (a.methods - Object.methods) …

3n+1まねして作ってみた

http://araistudy.g.hatena.ne.jp/czk-htn/20070612作ってみた。 #!/usr/bin/ruby def calc_max_len (from, to) calculator = lambda do |a,n| return n if a == 1 if a%2 > 0 a = (3*a)+1 else a = a/2 end calculator.call(a,n+1) end (from..to).map {|e|…

行数を数える

詳しくはここに > http://d.hatena.ne.jp/oto-oto-oto/20070901/1188639784 ruby -ne 'END{p $.}' | targetとりあえずこれだけ覚えておこう。_〆(.. )*1 そうそう、「$.」などの不思議な変数は以下のようにすると確認できます。 (表示されないものもあるか…

長文

何でこんなこと書いたんだろ?

プログラミングがbasicからなら、プログラミングを始めることはなかった

はじめに 最近、プログラミングには論理回路の知識が必要だとか、こんなような話を読みました。 昔はBasicでプログラミングを学んだ。 そのころは、雑誌に載っているコードを打ち込むことで楽しいと思えるゲームがつくれた。 でも、今の子どもにプログラミン…

何がおきているのかわからないもの

調査中 puts("%d" % [1+2]) #=>3 10.times{|i| eval 'print "%d " %[i*i]'} #=>0 1 4 9 16 25 36 49 64 81 x = lambda{|a,b| a+b} (1..10).map {|e| [e, e+1]}.each {|a| print "%d " % [x[a[0],a[1]]]} #=>3 5 7 9 11 13 15 17 19 21 何がおきているかわか…

何かに使えそう(eval)

ループを使わない繰り返し? def wa_n n i=1; eval 'puts "i=#{i}: "+"wa"*i; i+=1;' *n end wa_n(3) #=>i=1: wa #puts "i=1: wa"; i+=1;に変換され実行される。 #i=2: wawa #i=3: wawawa 1..9=>2..9+1=>..1..9 x=(1..9).to_a.to_s; eval 'puts x; x[0],x[-1…

そろそろfirebugに移行します。

emacs+spidermonkey => firebug だいぶjavascriptの文法にも慣れた。 たぶん、ふつうにコードも読むことができるようになったと思う。 ということで、これからは以下のことをすることにする。 何かのライブラリを読む。(今のところ「jQuery」が最有力候補) W…

昨日の続き

昨日、rubyっぽいmapを作りました。でもとても使い辛いです。 (""で囲むのがめんどうだし、なんだか遅そうだし。) むしろこの方が使い易い気がする。(javascript的に) Array.prototype.map = function(func){ var arr=[] for (var i=0, j=this.length; i …

javascriptを始めて10日くらい

やっとjavascriptの文法にも慣れてきました。 MDC*1のおかげです。MDCの中の人に感謝。 *1:http://developer.mozilla.org/ja/docs/

それrubyでもできるよ

javascriptのprototypeのような関数の動的定義 str="wawawa" p str #=>"wawawa" #==別名を定義しておくと後で呼べる。 #module Kernel; alias _p p end #どこでも、このように書けば組込みメソッド的なものも定義できる module Kernel; def p(arg); puts "==…

javascript実験5 prototypeを発見

js

このページのあたりをみてた >http://itpro.nikkeibp.co.jp/article/COLUMN/20070626/275986/?P=3 javascriptでは、組込み関数的なものを動的に定義できるみたい。 その時には、prototypeを使う。 例えば、Arrayオブジェクトに新たな関数を定義 Array.protot…

javascript実験4

javascript練習 とりあえず、準備運動の代わりにフィボナッチ数列。 function fib(n, r){ r=[0,1] if (r[n]==undefined) return fib(n-2, r) + fib(n-1, r) else return r[n] } print(fib(10)) //=>55 function fib_arr(n){ result=[]; for (var i =0; i < n…

パスカルの三角形

javascriptばかりやって、rubyを忘れないように作ってみた。 一応、今考えられる最も読みやすい書き方。 コード def describe_pascal(n) #パスカルの三角形の要素を含む配列の作成 pascal = lambda do |depth| (0..depth-2).inject([[0,1,0]]) do |arr, e| a…