•  
  • 0
  •  
0

Как написать такой C# код на Ruby?

using System;
using System.Collections.Generic;
using System.Linq;


namespace cs2 {
    class Program {
        static void Main(string[] args) {          
          var i=Fibs().TakeWhile(x=>x < 1000).Where(x=>x % 2==0).Sum();
        }

        static IEnumerable<long> Fibs() {
            long a = 0, b = 1;
            while (true) {
                yield return b;
                b += a;
                a = b - a;
            }
        }
    }
}
C# Ruby.
спросил 656 дней назад Аватор пользователя Valentin Valentin
229 6
изменил 656 дней назад Аватор пользователя Valentin Valentin
229 6
300

1 ответ:

    •  
    • 1
    •  

    Что-то никто не отвечает, ответили на стаковерфлоу, публикую здесь ответ:

    def fibs
      return enum_for(:fibs) unless block_given?
      a = 0
      b = 1
      while true
        yield b
        b += a
        a = b - a
      end
    end
    
    fibs
    #=> #<Enumerable::Enumerator:0x7f030eb37988>
    fibs.first(20)
    #=> [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
    fibs.take_while {|x| x < 1000}.select {|x| x%2 == 0}
    #=> [2, 8, 34, 144, 610]
    fibs.take_while {|x| x < 1000}.select {|x| x%2 == 0}.inject(:+)
    => 798
    
    ответил 655 дней назад Аватор пользователя Valentin Valentin
    229 6
Чтобы написать ответ, вы должны авторизироваться.