home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1999 April
/
VPR9904A.BIN
/
Vpr_data
/
Special
/
Yoolw101
/
Yoolw101.lzh
/
BENT.YO
< prev
next >
Wrap
Lisp/Scheme
|
1998-03-21
|
2KB
|
100 lines
;
; ベンチマークテスト
;
(de 'wa '(lambda(x)(cond
((zerop x)0)
(t (plus x (wa (sub1 x))))
)))
(de 'wa2 '(lambda(x)(prog(y)
(set 'y 0)
loop1
(set 'y (plus x y))
(set 'x (sub1 x))
(if (zerop x)(return y)(go loop1))
)))
(de 'tarai '(lambda(x y z)(cond
((greaterp x y)(tarai (tarai (sub1 x) y z)(tarai (sub1 y) z x)(tarai (sub1 z) x y)))
(t y)
)))
(de 'fibn '(lambda(x)(cond
((zerop x) 1)
((eq x 1) 1)
(t (plus (fibn (sub1 x)) (fibn (difference x 2))))
)))
(de 'fact '(lambda(x)(cond
((lessp x 0) 'error)
((zerop x) 1)
(t (times x (fact (sub1 x))))
)))
(de 'nqueen '(lambda(m)(queen m nil m)))
(de 'queen '(lambda(n b l)(cond
((zerop n) nil)
((member n b) (queen (sub1 n) b l))
((qp 1 b) (queen (sub1 n) b l))
(t (nconc
(cond
((eq (length b) (sub1 l)) (cons (cons n b) nil))
(t (queen l (cons n b) l))
)
(queen (sub1 n) b l)
))
)))
(de 'qp '(lambda(k m)(cond
((null m) nil)
((eq (abs (difference n (car m))) k) t)
(t (qp (add1 k) (cdr m)))
)))
(df 'test '(lambda(x)(loop(st en val)
(cond
((null x)(return t))
)
(print (car x))
(setq st (ontime))
(setq val (eval (car x)))
(setq en (ontime))
(print val)
(princ "time --- ")
(print (/ (difference en st) 100))
(setq x (cdr x))
)))
(df 'gctest '(lambda(x)(prog(c val val2)
(if (not(numberp (cadr x)))
(return "Usage:(gctest (test-function) number)")
)
(setq c (cadr x))
(setq val (eval (car x)))
label
(print c)
(setq val2 (eval (car x)))
(cond
((equal val val2) t)
(t (return (prog()
(print "Result is wrong !")
(princ "First result is ")
(print val)
(princ "Wrong result is ")
(print val2)
)))
)
(setq c (-- c))
(cond
((zerop c) (return t))
(t (go label))
)
)))
" 各種ベンチマークテスト"
"(wa 正の数)及び(wa2 正の数):1から入力された数までの総和を求める"
"(tarai 正の数 正の数 正の数):たらい回し関数(ただのベンチマークテスト)"
"(fibn 正の数):フィボナッチ数列の値を求める。"
"(fact 正の数):1から入力された数までの総和を求める。"
"(nqueen 正の数):入力された数を縦横のマスの数にしてクイーン問題の回答を"
" 求める。"
"(test (関数 引数 ...)):関数の実行に要した時間を1/100秒単位で求める。"
" PC-98シリーズでは1秒単位になります。"
"(gctest (関数 引数 ...) 回数):同じ関数を設定回数実行し結果が同じか"
" どうかテストする。"