RUBYの宿題教えてください。
■ このスレッドは過去ログ倉庫に格納されています
0708デフォルトの名無しさん
2007/10/18(木) 06:30:36関数型やった事ないんで、激しく勘違いしているかも
しれないが、一応雰囲気はそれらしくしてみたつもり。
算術演算子3つ(加減算、大なり)と即値2つ(1,4243)
だけで解いてみた。
ループのやり方さえ分からないところから始めたので、
自分にとってはかなりの力作。
greater = lambda { |a,b| a > b }
add = lambda { |a,b| a + b }
sub = lambda { |a,b| a - b }
ONE = 1
ZERO = sub[ONE,ONE]
N = 4243
shift_l = lambda { |n| add[n,n] }
shift_r = lambda { |n|
ret = lambda { |m,i|
k = add[m,i]
greater[shift_l[k], n] \
? m \
: k
}
(rec = lambda { |i|
greater[n, i] \
? ret[ rec[ shift_l[i] ], i] \
: ZERO
})[ONE]
}
■ このスレッドは過去ログ倉庫に格納されています