fork download
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. public static class Test
  6. {
  7. public static IEnumerable<T> Last<T>(this IEnumerable<T> source, int n)
  8. {
  9. using(var it = source.GetEnumerator())
  10. {
  11. var buffer = new T[n];
  12. var i = 0;
  13.  
  14. while (it.MoveNext())
  15. buffer[(i++) % n] = it.Current;
  16.  
  17. var len = Math.Min(n, i);
  18. for (int j = i - len; j < i; j++)
  19. yield return buffer[ (j + n) % n];
  20.  
  21. }
  22. }
  23.  
  24. public static void Main()
  25. {
  26. var seq = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  27. foreach (var n in seq.Last(5))
  28. Console.Write(string.Format("{0} ", n));
  29. }
  30. }
Success #stdin #stdout 0.03s 33848KB
stdin
Standard input is empty
stdout
5 6 7 8 9