Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication
- {
- class Program
- {
- private class Player
- {
- public string Name { get; set; }
- public int Value { get; set; }
- }
- private class Group
- {
- public int Id { get; set; }
- public List<Player> Players = new List<Player>();
- public int Strength = 0;
- public int counter = 2;
- }
- static void Main(string[] args)
- {
- Console.WriteLine("Wie heist die Datei in der die Spieler gespeichert sind? (Textdatei muss im Selben Ordner Liegen wie dieses Programm!)");
- string Dateiplatz = Console.ReadLine();
- //System.IO.StreamReader file = new System.IO.StreamReader(@Dateiplatz);
- int it = 0;
- string line = "0";
- using (System.IO.StreamReader filet = new System.IO.StreamReader(@Dateiplatz))
- {
- while ((line = filet.ReadLine()) != null)
- {
- it++;
- }
- }
- var teams = Convert.ToInt32(it / 5);
- var test = new string[it];
- using (System.IO.StreamReader file = new System.IO.StreamReader(@Dateiplatz))
- {
- int z = 0;
- while ((line = file.ReadLine()) != null)
- {
- test[z] = line;
- Console.WriteLine(test[z]);
- z++;
- }
- }
- 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();
- var teamstärke = Math.Round((double)(playerlist.Select(s => s.Value).Sum() / teams));
- var groupslist = new List<Group>();
- var i = 0;
- while (playerlist.Count > 0)
- {
- if (i == teams)
- i = 0;
- if (playerlist.Count == 1)
- {
- AddPlayerToGroup(groupslist.OrderBy(g => g.Strength).First(), playerlist.First(), teamstärke, playerlist, true);
- }
- else
- {
- Group group = null;
- if (groupslist.Any(g => g.Id == i))
- {
- group = groupslist.First(g => g.Id == i);
- group.counter += 1;
- AddPlayerToGroup(group, playerlist.First(), teamstärke, playerlist);
- Console.WriteLine(group.counter);
- if (group.counter == 4)
- {
- AddPlayerToGroup(group, playerlist.Last(), teamstärke, playerlist);
- }
- }
- else
- {
- group = new Group() { Id = i };
- AddPlayerToGroup(group, playerlist.First(), teamstärke, playerlist);
- AddPlayerToGroup(group, playerlist.Last(), teamstärke, playerlist);
- groupslist.Add(group);
- }
- }
- i++;
- }
- foreach (var group in groupslist)
- {
- var ps = group.Players.OrderBy(p => p.Value).ToList().Select(player => $"{player.Name}({player.Value})").ToList();
- Console.WriteLine($"Team: {group.Id + 1}\r\nMitglieder: {string.Join(", ", ps.ToArray())}\r\nTeamstärke: {group.Strength}");
- Console.WriteLine();
- }
- Console.WriteLine("Wohin Soll das ergebnis gespeichert werden? (Textdatei muss im Selben Ordner Liegen wie dieses Programm!)");
- Console.WriteLine("Sie können auch eine neue Datei erstellen wenn sie einen nicht vorhandenen Dateinamen eingeben (endung.txt)");
- string _Dateiplatz = Console.ReadLine();
- using (System.IO.StreamWriter writer = new System.IO.StreamWriter(@_Dateiplatz))
- {
- foreach (Group go in groupslist)
- {
- go.Id += 1;
- writer.WriteLine();
- writer.WriteLine("Team:" + go.Id);
- writer.WriteLine("Teamstärke:" + go.Strength);
- writer.WriteLine();
- foreach (Player so in go.Players)
- {
- writer.WriteLine(so.Name + " " + so.Value);
- }
- }
- }
- Console.WriteLine();
- Console.ReadKey();
- }
- private static Group AddPlayerToGroup(Group group, Player player, double ts, ICollection<Player> source, bool forceadd = false)
- {
- if ((@group.Strength + player.Value) >= ts && forceadd) return @group; // nicht !forceadd
- @group.Players.Add(player);
- @group.Strength += player.Value;
- source.Remove(player);
- return group;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement