Skip to content

Instantly share code, notes, and snippets.

@claudiobernasconi
Created August 31, 2024 07:18
Show Gist options
  • Save claudiobernasconi/3fccee28cba51870fa0dbe336f984369 to your computer and use it in GitHub Desktop.
Save claudiobernasconi/3fccee28cba51870fa0dbe336f984369 to your computer and use it in GitHub Desktop.
Sample solution for the Racing Calendar exercise of the Zero To Mastery C# and .NET Bootcamp. https://claudiobernasconi.ch/dotnet-course
namespace RacingCalendar
{
public class Driver
{
public Driver(string name)
{
Name = name;
}
public string Name { get; set; }
}
}
using RacingCalendar;
// Part 1
Console.WriteLine("The 2022 Racing Calendar");
List<Race> racingCalendar = new List<Race>();
racingCalendar.Add(new Race("Italian Grand Prix", "Monza Circuit, Monza", new DateTime(2022, 9, 11)));
racingCalendar.Add(new Race("Monaco Grand Prix", "Circuit de Monaco, Monaco", new DateTime(2022, 5, 29)));
racingCalendar.Add(new Race("United States Grand Prix", "Circuit of the Americas, Austin, Texas", new DateTime(2022, 10, 23)));
racingCalendar.Add(new Race("Australian Grand Prix", "Albert Park, Melbourne", new DateTime(2022, 4, 10)));
foreach (Race race in racingCalendar)
{
Console.WriteLine($"{race.Date.ToShortDateString()} - {race.Name} ({race.Track})");
}
Console.WriteLine("");
// Part 2
var driver1 = new Driver("Driver 1");
var added = racingCalendar[0].AddDriver(driver1);
if (added)
{
Console.WriteLine($"The driver '{driver1.Name}' has been added to the race.");
}
Console.WriteLine();
// Part 3
var driver2 = new Driver("Driver 2");
var driver3 = new Driver("Driver 3");
var waitingList = new Queue<Driver>();
waitingList.Enqueue(driver1);
waitingList.Enqueue(driver2);
waitingList.Enqueue(driver3);
var nextDriver = waitingList.Dequeue();
Console.WriteLine($"Next driver: {nextDriver.Name}");
namespace RacingCalendar
{
internal class Race
{
public Race(string name, string track, DateTime date)
{
Name = name;
Track = track;
Date = date;
Drivers = new List<Driver>();
}
public string Name { get; set; }
public string Track { get; set; }
public DateTime Date { get; set; }
public List<Driver> Drivers { get; init; }
public bool AddDriver(Driver driver)
{
if (Drivers.Count < 20)
{
Drivers.Add(driver);
return true;
}
return false;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment