using System;
using System.Linq ;
using System.Collections .Generic ;
using System.Globalization ;
public class Test
{
public static void Main( )
{
var datesList = new List< DateTime> ( ) {
new DateTime( 2013 , 1 , 1 ) , new DateTime( 2013 , 8 , 1 ) , new DateTime( 2013 , 10 , 1 ) ,
new DateTime( 2013 , 1 , 15 ) , new DateTime( 2013 , 1 , 22 ) , new DateTime( 2013 , 1 , 28 ) ,
new DateTime( 2013 , 2 , 10 ) , new DateTime( 2013 , 2 , 11 ) , new DateTime( 2013 , 2 , 22 ) ,
} ;
var abRotations = datesList
.GroupBy ( d => CultureInfo.CurrentCulture .Calendar .GetWeekOfYear ( d, CalendarWeekRule.FirstDay , DayOfWeek.Monday ) )
.Select ( ( wg, i) => new { WeekGroup = wg, Index = i } )
.GroupBy ( x => x.Index % 2 ) ;
List< DateTime> A_Rotation = abRotations.First ( ) .SelectMany ( x => x.WeekGroup ) .ToList ( ) ;
List< DateTime> B_Rotation = abRotations.Last ( ) .SelectMany ( x => x.WeekGroup ) .ToList ( ) ;
Console.WriteLine ( "A-Rotation weeks: " + A_Rotation.Count ) ;
foreach ( DateTime aDate in A_Rotation)
Console.WriteLine ( aDate.ToString ( ) ) ;
Console.WriteLine ( "B-Rotation weeks: " + B_Rotation.Count ) ;
foreach ( DateTime bDate in B_Rotation)
Console.WriteLine ( bDate.ToString ( ) ) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CnVzaW5nIFN5c3RlbS5HbG9iYWxpemF0aW9uOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJICAgdmFyIGRhdGVzTGlzdCA9IG5ldyBMaXN0PERhdGVUaW1lPigpIHsgCiAgICAgICAgICAgICAgICBuZXcgRGF0ZVRpbWUoMjAxMywxLDEpLG5ldyBEYXRlVGltZSgyMDEzLDgsMSksbmV3IERhdGVUaW1lKDIwMTMsMTAsMSksCiAgICAgICAgICAgICAgICBuZXcgRGF0ZVRpbWUoMjAxMywxLDE1KSxuZXcgRGF0ZVRpbWUoMjAxMywxLDIyKSxuZXcgRGF0ZVRpbWUoMjAxMywxLDI4KSwKICAgICAgICAgICAgICAgIG5ldyBEYXRlVGltZSgyMDEzLDIsMTApLG5ldyBEYXRlVGltZSgyMDEzLDIsMTEpLG5ldyBEYXRlVGltZSgyMDEzLDIsMjIpLAogICAgICAgICAgICB9OwogICAgICAgIHZhciBhYlJvdGF0aW9ucyA9IGRhdGVzTGlzdAogICAgICAgICAgICAuR3JvdXBCeShkID0+IEN1bHR1cmVJbmZvLkN1cnJlbnRDdWx0dXJlLkNhbGVuZGFyLkdldFdlZWtPZlllYXIoZCwgQ2FsZW5kYXJXZWVrUnVsZS5GaXJzdERheSwgRGF5T2ZXZWVrLk1vbmRheSkpCiAgICAgICAgICAgIC5TZWxlY3QoKHdnLCBpKSA9PiBuZXcgeyBXZWVrR3JvdXAgPSB3ZywgSW5kZXggPSBpIH0pCiAgICAgICAgICAgIC5Hcm91cEJ5KHggPT4geC5JbmRleCAlIDIpOwogICAgCiAgICAgICAgTGlzdDxEYXRlVGltZT4gQV9Sb3RhdGlvbiA9IGFiUm90YXRpb25zLkZpcnN0KCkuU2VsZWN0TWFueSh4ID0+IHguV2Vla0dyb3VwKS5Ub0xpc3QoKTsKICAgICAgICBMaXN0PERhdGVUaW1lPiBCX1JvdGF0aW9uID0gYWJSb3RhdGlvbnMuTGFzdCgpLlNlbGVjdE1hbnkoeCA9PiB4LldlZWtHcm91cCkuVG9MaXN0KCk7CgogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJBLVJvdGF0aW9uIHdlZWtzOiAiICsgQV9Sb3RhdGlvbi5Db3VudCk7CiAgICAgICAgZm9yZWFjaCAoRGF0ZVRpbWUgYURhdGUgaW4gQV9Sb3RhdGlvbikKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoYURhdGUuVG9TdHJpbmcoKSk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkItUm90YXRpb24gd2Vla3M6ICIgKyBCX1JvdGF0aW9uLkNvdW50KTsKICAgICAgICBmb3JlYWNoIChEYXRlVGltZSBiRGF0ZSBpbiBCX1JvdGF0aW9uKQogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShiRGF0ZS5Ub1N0cmluZygpKTsKCgl9ICAgCn0KCiAgICAK