On Thursday, 28 March 2024 at 03:54:05 UTC, Salih Dincer wrote:
On Wednesday, 27 March 2024 at 20:50:05 UTC, rkompass wrote:
This works:

I decided to give the full code. Maybe then it will be better understood what I mean. I actually pointed out the indirect solution above but it's a bit ugly and I'm sure there must be a better way?

I didn't look exactly at you code but at the ranges problem.


Perhaps this is of help:

```d
import std.stdio;
import std.range;
import std.algorithm;

void main() {
auto fib = (real a, real b) => recurrence!"a[n-1] + a[n-2]"(a, b); auto golden3 = fib(1,1).chunks(2).map!(r => r.fold!((a, e) => a/e)).take(10);
  writeln(golden3);
}
```
I thought what you wanted (and what I found to be an interesting problem) was to convert the subranges delivered by `chunks(2)` to values that still are generated lazily, without saving them in an array (which converts the range type to a higher one), according to original range.

You can drop and take from the folded values range.

I got `[1, 0.666667, 0.625, 0.619048, 0.618182, 0.618056, 0.618037, 0.618034, 0.618034, 0.618034]` from the above code.

Reply via email to