Skip to content

Instantly share code, notes, and snippets.

@talatari
Last active November 14, 2023 07:45
Show Gist options
  • Save talatari/839732b652ee2ac10c4d76a521f00ebf to your computer and use it in GitHub Desktop.
Save talatari/839732b652ee2ac10c4d76a521f00ebf to your computer and use it in GitHub Desktop.
Task 57: Merge Squads
namespace MergeSquads
{
public static class Program
{
public static void Main()
{
Army army = new Army();
Database database = new Database();
army.Work(database);
}
}
public class Database
{
private List<Soldier> _alphaSquad = new();
private List<Soldier> _betaSquad = new();
public Database()
{
CreateAlphaSquad();
CreateBetaSquad();
}
public List<Soldier> GetAlphaSquad() => new(_alphaSquad);
public List<Soldier> GetBetaSquad() => new(_betaSquad);
public void SetAlphaSquad(IEnumerable<Soldier> alphaSquad) => _alphaSquad = alphaSquad.ToList();
public void SetBetaSquad(IEnumerable<Soldier> betaSquad) => _betaSquad = betaSquad.ToList();
private void CreateAlphaSquad()
{
_alphaSquad.Add(new Soldier("John", "Smith"));
_alphaSquad.Add(new Soldier("William", "Bones"));
_alphaSquad.Add(new Soldier("David", "Brown"));
_alphaSquad.Add(new Soldier("Jessica", "Taylor"));
_alphaSquad.Add(new Soldier("Joseph", "Miller"));
_alphaSquad.Add(new Soldier("Michael", "Davis"));
}
private void CreateBetaSquad()
{
_betaSquad.Add(new Soldier("Megan", "Fox"));
_betaSquad.Add(new Soldier("Angela", "Wilson"));
_betaSquad.Add(new Soldier("Richard", "Moore"));
_betaSquad.Add(new Soldier("Thomas", "Johnson"));
_betaSquad.Add(new Soldier("Joseph", "Miller"));
_betaSquad.Add(new Soldier("Donald", "Johnson"));
}
}
public class Soldier
{
public Soldier(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public string FirstName { get; }
public string LastName { get; }
}
public class Army
{
private bool _isWork = true;
private Database _database;
public void Work(Database database)
{
_database = database;
while (_isWork)
{
Console.Clear();
ShowSoldiers();
Console.ReadKey();
}
}
private void ShowSoldiers()
{
char filteredChar = 'B';
IEnumerable<Soldier> soldiers;
IEnumerable<Soldier> betaSquad;
IEnumerable<Soldier> alphaSquad;
soldiers = _database.GetAlphaSquad().Where(soldier => soldier.LastName.StartsWith(filteredChar));
betaSquad = _database.GetBetaSquad().Union(soldiers);
_database.SetBetaSquad(betaSquad);
alphaSquad = _database.GetAlphaSquad().Where(soldier => soldier.LastName.StartsWith(filteredChar) == false);
_database.SetAlphaSquad(alphaSquad);
Console.WriteLine("\nBeta Squad:");
foreach (Soldier soldier in _database.GetBetaSquad())
{
Console.WriteLine($"Name: {soldier.FirstName}, " +
$"Rank: {soldier.LastName}");
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment