Infinite fibonacci sequence, lazy take first 42 values
    Salih Dincer 
    salihdb at hotmail.com
       
    Thu Apr 21 04:36:13 UTC 2022
    
    
  
On Thursday, 21 April 2022 at 03:41:24 UTC, Ali Çehreli wrote:
> On 4/20/22 19:11, Alain De Vos wrote:
>
> > Maybe there are multiple solutions ?
>
> Indeed. :)
>
> I have a Range struct here:
>
>   
> http://ddili.org/ders/d.en/ranges.html#ix_ranges.infinite%20range
>
My favorite is the struct range.  Because it is more 
understandable and personalized.  Moreover, you can limit it 
without using ```take()```.
```d
struct FibonacciRange(int l)
{
   long a = 1, b = 1;
   bool empty()
   {
     return a > l;
   }
   long front() const
   {
    return a;
   }
   void popFront()
   {
     auto t = a;
     a = b;
     b += t;
   }
}
enum limit = 16;
void main()
{
   import std.stdio;
   FibonacciRange!limit fibs;
   fibs.write(": ");
   import std.algorithm;
   auto total = fibs.sum;
   total.writeln;
   assert(total == 33);
}
```
SDB at 79
    
    
More information about the Digitalmars-d-learn
mailing list