2011-02-09 3 views
0

Что такое умное использование для бесконечных генераторов? Я видел много, казалось бы, тривиальных примеров, таких как «Перечислите все четные числа», но я предполагаю, что должны быть другие, которые имеют больше применимости к реальным сценариям. Конкретные примеры (на любом языке, которые поддерживают генераторы) оценили!Какие полезные или интересные бесконечные генераторы?

Я дам тривиальный образец в качестве ответа.

+3

Список всех вопросов, не относящихся к теме, для stackoverflow.com. – bmargulies

ответ

1

Посмотрите на код Haskell на http://rosettacode.org/wiki/Hamming_numbers#Haskell; который использует ленивые списки (которые в некоторой степени похожи на генераторы) творчески, чтобы перечислить все номера Хэмминга.

+1

Также есть версия генератора в Python и C#. – delnan

0

тривиальный пример: выход чисел Фибоначчи по одному за раз (без переливных проверки, в C#):

public static IEnumerable<double> Fibonacci() 
{ 
    double n_minus2 = 1; 
    double n_minus1 = 1; 
    yield return n_minus2; 
    yield return n_minus1; 

    while(true) 
    { 
     double n = n_minus2 + n_minus1; 
     yield return n; 
     n_minus2 = n_minus1; 
     n_minus1 = n; 
    } 
} 
+0

ОП запросил генераторов, «которые имеют более широкое применение в реальных сценариях». – delnan

+0

@ delnan - Я ОП, и это пример, который я сказал, что опубликую для иллюстративных целей. –

+0

D'oh! Сожалею. Но действительно ли это то, что вы ищете? Я считаю, что это довольно бесполезно для реальных проблем. – delnan

1

A генератор случайных можно было бы считать умным использованием.

Смежные вопросы