시퀀스를 제곱 수의 시작 부분에서 만든 다음 이전 결과에 추가하는 방법은 무엇입니까?특정 번호에서 시퀀스를 만드는 방법은 무엇입니까?
7 => 49, 56, 63, ...
def make_sequence(number)
lambda { number*number ??? }
end
num = make_sequence(7)
num.call #=> 49
num.call #=> 56
...
시퀀스를 제곱 수의 시작 부분에서 만든 다음 이전 결과에 추가하는 방법은 무엇입니까?특정 번호에서 시퀀스를 만드는 방법은 무엇입니까?
7 => 49, 56, 63, ...
def make_sequence(number)
lambda { number*number ??? }
end
num = make_sequence(7)
num.call #=> 49
num.call #=> 56
...
초기 아이디어를 사용하여 폐쇄 후 내가 쓸 것 :
def make_sequence(n)
x = n**2 - n
lambda { x += n }
end
num = make_sequence(7)
p num.call #=> 49
p num.call #=> 56
그게 내가 뭘 찾고 있었는지, 고마워. – megas
사용 Enumerator
def make_sequence(start)
pos = start**2
Enumerator.new do |y|
loop do
y.yield(pos)
pos += start
end
end
end
seq = make_sequence(7)
seq.next #=> 49
seq.next #=> 56
...
Fiber 버전 :
def make_sequence(num)
inc = num
num = num*num
Fiber.new do
loop do
Fiber.yield(num)
num += inc
end
end
end
a = make_sequence(7)
p a.resume #=> 49
p a.resume #=> 56
p a.resume #=> 63
...
체크 아웃 열거 : HTTP : //www.ruby- doc.org/core-1.9.3/Enumerator.html – levinalex