Advertisement
Guest User

TxtTransposition

a guest
Jan 31st, 2013
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.62 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace TxtTranspose {
  6.     static class Program {
  7.         static void Main(string[] args) {
  8.             var txt = @"
  9. XCUALOVEYKBWSNG
  10. DUAWKCBEAUTYRJV
  11. YOUTHFSMGNEZLPR
  12. MHJREYWDKZLUSTJ
  13. FSUCCESSDHEALTH
  14. ENMQXPTIMELMSAQ
  15. VEXPERIENCEGHBW
  16. GHUMOURLOYMONEY
  17. SYZPOPULARITYNA
  18. AMKCFUNBXHUZYIX
  19. CWIHYSHAPPINESS
  20. HONESTYCFRIENDS
  21. KPYJAETWPOWEROC
  22. BTYACFREEDOMJMO
  23. RIWINTELLIGENCE".Trim().Replace("\r", "\n").Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  24.  
  25.             var results = new List<IEnumerable<string>>();
  26.             results.AddRange(txt.RotAll());
  27.             results.AddRange(txt.Mirror().RotAll());
  28.  
  29.             foreach (var result in results) {
  30.                 Console.WriteLine("======");
  31.                 foreach (var line in result)
  32.                     Console.WriteLine(line);
  33.             }
  34.  
  35.             Console.ReadLine();
  36.         }
  37.  
  38.  
  39.         public static IEnumerable<string> Mirror(this IEnumerable<string> foo) {
  40.             foreach (var bar in foo)
  41.                 yield return bar.Aggregate("", (p, q) => q.ToString() + p);
  42.         }
  43.  
  44.         public static IEnumerable<IEnumerable<string>> RotAll(this IEnumerable<string> foo) {
  45.             IEnumerable<string> bar = foo;
  46.             for (int i = 0; i < 4; i++)
  47.                 yield return bar = bar.Rot90();
  48.         }
  49.  
  50.         public static IEnumerable<string> Rot90(this IEnumerable<string> foo) {
  51.             for (int i = foo.First().Length - 1; i >= 0; i--)
  52.                 yield return foo.Aggregate("", (p, q) => p + q[i]);
  53.         }
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement