using System; using System.Linq; using System.Collections.Generic; namespace ChooseLesserOfTheTwoEvils { public class Program { public static void Main() { Console.ReadKey(); TestPick8thOnEvilA(); Console.WriteLine("------"); TestPick8thOnEvilB(); Console.WriteLine("------"); Console.ReadKey(); } static void TestPick8thOnEvilA() { Console.WriteLine("TestPick8thOnEvilA"); long eighth = EvilCompanyA.MathProvider.Fibonacci().Skip(7).Take(1).Single(); Console.WriteLine("\nEvil A's 8th fibonacci is {0}", eighth); } static void TestPick8thOnEvilB() { Console.WriteLine("TestPick8thOnEvilB"); long eighth = EvilCompanyB.MathProvider.Fibonacci().Skip(7).Take(1).Single(); Console.WriteLine("\nEvil B's 8th fibonacci is {0}", eighth); } } } namespace EvilCompanyA { public static class MathProvider { public static IEnumerable Fibonacci() { IList il = new List(); long a = 0, b = 1; for (int i = 1; i <= 50; ++i) { Console.Write("eager{0} ",i); il.Add(a); long n = a; a += b; b = n; } return il; } } } namespace EvilCompanyB { public static class MathProvider { public static IEnumerable Fibonacci() { long a = 0, b = 1; for (int i = 1; i <= 50; ++i) { Console.Write("lazy{0} ",i); yield return a; long n = a; a += b; b = n; } } } }