Created
August 31, 2024 07:18
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace RacingCalendar | |
{ | |
public class Driver | |
{ | |
public Driver(string name) | |
{ | |
Name = name; | |
} | |
public string Name { get; set; } | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}"); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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