fork(29) download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication1
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. string calendar = "";
  13. calendar = (from x in Enumerable.Range(1, 12)
  14. group x by (x + 2) / 3 into g
  15. select (BuildCalendar(DateTime.Now.Year, g.ToList()[0]).Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Union(new string[] { "\r\n" })
  16. .Zip(BuildCalendar(DateTime.Now.Year, g.ToList()[1]).Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Union(new string[] { "\r\n" }), (x, y) => x.TrimEnd().PadRight(23, ' ') + y)
  17. .Zip(BuildCalendar(DateTime.Now.Year, g.ToList()[2]).Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Union(new string[] { "\r\n" }), (x, y) => x.TrimEnd().PadRight(46, ' ') + y))
  18. .Zip(Enumerable.Repeat("\r\n", 8), (x, y) => x + y)
  19. .Aggregate((serials, current) => serials + current))
  20. .Aggregate((serials, current) => serials + current);
  21. Console.WriteLine(DateTime.Now.Year + "\r\n" + calendar);
  22. }
  23.  
  24. static string BuildCalendar(int year, int month)
  25. {
  26. string calendar = new string[] { month.ToString(), "SU MO TU WE TH FR SA" }
  27. .Union(Enumerable.Range(
  28. 1 - (int)new DateTime(year, month, 1).DayOfWeek,
  29. new DateTime(year, month, 1).AddMonths(1).AddDays(-1).Day + (int)new DateTime(year, month, 1).DayOfWeek
  30. )
  31. .GroupBy(x => ((x + (int)(new DateTime(year, month, 1).DayOfWeek + 6)) / 7), (key, g) => new { GroupKey = key, Items = g })
  32. .Select(x =>
  33. x.Items.Select(y => y < 1 ? " " : Convert.ToString(y).PadLeft(2, '0') + " ")
  34. .Aggregate((serials, current) => serials + current))
  35. )
  36. .Aggregate((serial, current) => serial + "\r\n" + current);
  37. return calendar;
  38. }
  39. }
  40. }
Success #stdin #stdout 0.06s 17812KB
stdin
Standard input is empty
stdout
2017
1                      2                      3
SU MO TU WE TH FR SA   SU MO TU WE TH FR SA   SU MO TU WE TH FR SA
01 02 03 04 05 06 07            01 02 03 04            01 02 03 04 
08 09 10 11 12 13 14   05 06 07 08 09 10 11   05 06 07 08 09 10 11 
15 16 17 18 19 20 21   12 13 14 15 16 17 18   12 13 14 15 16 17 18 
22 23 24 25 26 27 28   19 20 21 22 23 24 25   19 20 21 22 23 24 25 
29 30 31               26 27 28               26 27 28 29 30 31 
                                              

4                      5                      6
SU MO TU WE TH FR SA   SU MO TU WE TH FR SA   SU MO TU WE TH FR SA
                  01      01 02 03 04 05 06               01 02 03 
02 03 04 05 06 07 08   07 08 09 10 11 12 13   04 05 06 07 08 09 10 
09 10 11 12 13 14 15   14 15 16 17 18 19 20   11 12 13 14 15 16 17 
16 17 18 19 20 21 22   21 22 23 24 25 26 27   18 19 20 21 22 23 24 
23 24 25 26 27 28 29   28 29 30 31            25 26 27 28 29 30 
30                                            

7                      8                      9
SU MO TU WE TH FR SA   SU MO TU WE TH FR SA   SU MO TU WE TH FR SA
                  01         01 02 03 04 05                  01 02 
02 03 04 05 06 07 08   06 07 08 09 10 11 12   03 04 05 06 07 08 09 
09 10 11 12 13 14 15   13 14 15 16 17 18 19   10 11 12 13 14 15 16 
16 17 18 19 20 21 22   20 21 22 23 24 25 26   17 18 19 20 21 22 23 
23 24 25 26 27 28 29   27 28 29 30 31         24 25 26 27 28 29 30 
30 31                                         

10                     11                     12
SU MO TU WE TH FR SA   SU MO TU WE TH FR SA   SU MO TU WE TH FR SA
01 02 03 04 05 06 07            01 02 03 04                  01 02 
08 09 10 11 12 13 14   05 06 07 08 09 10 11   03 04 05 06 07 08 09 
15 16 17 18 19 20 21   12 13 14 15 16 17 18   10 11 12 13 14 15 16 
22 23 24 25 26 27 28   19 20 21 22 23 24 25   17 18 19 20 21 22 23 
29 30 31               26 27 28 29 30         24 25 26 27 28 29 30 
                                              31