В результате удалось написать вот такое:
SC.WriteLine(
(1,1)
|> F.unfold(_,(a,b)=>(a+2*b,2*a+3*b))
|> F.takewhile(_,(a,b)=>(a+b)<4000000)
|> F.fold(_,0,(v,x)=>v[0]+v[1]+x)
А можно было извратиться и дальше и написать вот так:
def write = SC.WriteLine:int -> void;
(1,1) |> F.unfold(_,(a,b)=>(a+2*b,2*a+3*b))
|> F.takewhile(_,(a,b)=>(a+b)<4000000)
|> F.fold(_,0,(v,x)=>v[0]+v[1]+x)
|> write(_);
дальше - забавы с pattern matching
Комментариев нет:
Отправить комментарий