Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.24 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication
  8. {
  9. class Program
  10. {
  11. private class Player
  12. {
  13. public string Name { get; set; }
  14. public int Value { get; set; }
  15. }
  16.  
  17. private class Group
  18. {
  19. public int Id { get; set; }
  20. public List<Player> Players = new List<Player>();
  21. public int Strength = 0;
  22. public int counter = 2;
  23. }
  24.  
  25. static void Main(string[] args)
  26. {
  27. Console.WriteLine("Wie heist die Datei in der die Spieler gespeichert sind? (Textdatei muss im Selben Ordner Liegen wie dieses Programm!)");
  28. string Dateiplatz = Console.ReadLine();
  29. //System.IO.StreamReader file = new System.IO.StreamReader(@Dateiplatz);
  30.  
  31.  
  32. int it = 0;
  33. string line = "0";
  34. using (System.IO.StreamReader filet = new System.IO.StreamReader(@Dateiplatz))
  35. {
  36. while ((line = filet.ReadLine()) != null)
  37. {
  38. it++;
  39. }
  40. }
  41. var teams = Convert.ToInt32(it / 5);
  42. var test = new string[it];
  43.  
  44.  
  45. using (System.IO.StreamReader file = new System.IO.StreamReader(@Dateiplatz))
  46. {
  47. int z = 0;
  48. while ((line = file.ReadLine()) != null)
  49. {
  50. test[z] = line;
  51. Console.WriteLine(test[z]);
  52. z++;
  53. }
  54. }
  55. var playerlist = test.Select(s => s.Split(":".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)).Select(s => new Player() { Name = s[0], Value = Convert.ToInt32(s[1]) }).OrderByDescending(s => s.Value).ThenBy(s => s.Name).ToList();
  56. var teamstärke = Math.Round((double)(playerlist.Select(s => s.Value).Sum() / teams));
  57.  
  58. var groupslist = new List<Group>();
  59. var i = 0;
  60. while (playerlist.Count > 0)
  61. {
  62. if (i == teams)
  63. i = 0;
  64.  
  65. if (playerlist.Count == 1)
  66. {
  67. AddPlayerToGroup(groupslist.OrderBy(g => g.Strength).First(), playerlist.First(), teamstärke, playerlist, true);
  68. }
  69. else
  70. {
  71. Group group = null;
  72. if (groupslist.Any(g => g.Id == i))
  73. {
  74. group = groupslist.First(g => g.Id == i);
  75. group.counter += 1;
  76. AddPlayerToGroup(group, playerlist.First(), teamstärke, playerlist);
  77.  
  78. Console.WriteLine(group.counter);
  79.  
  80. if (group.counter == 4)
  81. {
  82. AddPlayerToGroup(group, playerlist.Last(), teamstärke, playerlist);
  83. }
  84. }
  85. else
  86. {
  87. group = new Group() { Id = i };
  88. AddPlayerToGroup(group, playerlist.First(), teamstärke, playerlist);
  89. AddPlayerToGroup(group, playerlist.Last(), teamstärke, playerlist);
  90. groupslist.Add(group);
  91. }
  92. }
  93.  
  94. i++;
  95. }
  96.  
  97. foreach (var group in groupslist)
  98. {
  99. var ps = group.Players.OrderBy(p => p.Value).ToList().Select(player => $"{player.Name}({player.Value})").ToList();
  100. Console.WriteLine($"Team: {group.Id + 1}\r\nMitglieder: {string.Join(", ", ps.ToArray())}\r\nTeamstärke: {group.Strength}");
  101. Console.WriteLine();
  102. }
  103.  
  104. Console.WriteLine("Wohin Soll das ergebnis gespeichert werden? (Textdatei muss im Selben Ordner Liegen wie dieses Programm!)");
  105. Console.WriteLine("Sie können auch eine neue Datei erstellen wenn sie einen nicht vorhandenen Dateinamen eingeben (endung.txt)");
  106.  
  107. string _Dateiplatz = Console.ReadLine();
  108.  
  109. using (System.IO.StreamWriter writer = new System.IO.StreamWriter(@_Dateiplatz))
  110. {
  111. foreach (Group go in groupslist)
  112. {
  113. go.Id += 1;
  114. writer.WriteLine();
  115. writer.WriteLine("Team:" + go.Id);
  116. writer.WriteLine("Teamstärke:" + go.Strength);
  117. writer.WriteLine();
  118. foreach (Player so in go.Players)
  119. {
  120. writer.WriteLine(so.Name + " " + so.Value);
  121. }
  122. }
  123. }
  124.  
  125. Console.WriteLine();
  126. Console.ReadKey();
  127.  
  128. }
  129.  
  130. private static Group AddPlayerToGroup(Group group, Player player, double ts, ICollection<Player> source, bool forceadd = false)
  131. {
  132. if ((@group.Strength + player.Value) >= ts && forceadd) return @group; // nicht !forceadd
  133.  
  134. @group.Players.Add(player);
  135. @group.Strength += player.Value;
  136. source.Remove(player);
  137. return group;
  138. }
  139. }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement