namespace Nonemm.Contests.Multipliers; /// US states and Canadian provinces, in the groupings contests count. public static class StatesAndProvinces { /// The 48 contiguous states. public static readonly IReadOnlySet ContiguousStates = new HashSet(StringComparer.OrdinalIgnoreCase) { "AL", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY", }; public static readonly IReadOnlySet AllStates = new HashSet(ContiguousStates.Concat(["AK", "HI"]), StringComparer.OrdinalIgnoreCase); /// The 13 Canadian provinces and territories. public static readonly IReadOnlySet Provinces = new HashSet(StringComparer.OrdinalIgnoreCase) { "NS", "QC", "ON", "MB", "SK", "AB", "BC", "NT", "NB", "NL", "PE", "YT", "NU", }; /// What ARRL DX counts for a DX station: the contiguous states, the District /// of Columbia, and the Canadian provinces and territories. public static readonly IReadOnlySet ArrlDxMultipliers = new HashSet(ContiguousStates.Concat(["DC"]).Concat(Provinces), StringComparer.OrdinalIgnoreCase); public static bool IsStateOrProvince(string text) => AllStates.Contains(text.Trim()) || Provinces.Contains(text.Trim()) || text.Trim().Equals("DC", StringComparison.OrdinalIgnoreCase); }