16 IEnumerable<string>? aliases =
null,
18 IEnumerable<string>? capabilityGaps =
null,
19 string? scientificNote =
null)
21 if (
string.IsNullOrWhiteSpace(code))
23 throw new ArgumentException(
24 "A canonical problem-class code is required.",
28 if (
string.IsNullOrWhiteSpace(name))
30 throw new ArgumentException(
31 "A canonical problem-class name is required.",
38 universalCoreSpecification is
null)
40 throw new ArgumentException(
41 "Executable problem classes require a universal core " +
43 nameof(universalCoreSpecification));
54 (aliases ?? Array.Empty<
string>())
55 .Where(alias => !
string.IsNullOrWhiteSpace(alias))
56 .Select(alias => alias.Trim())
57 .Distinct(StringComparer.OrdinalIgnoreCase)
58 .OrderBy(alias => alias, StringComparer.OrdinalIgnoreCase)
62 (capabilityGaps ?? Array.Empty<
string>())
63 .Where(gap => !
string.IsNullOrWhiteSpace(gap))
64 .Select(gap => gap.Trim())
65 .Distinct(StringComparer.Ordinal)
66 .OrderBy(gap => gap, StringComparer.Ordinal)