diff --git a/src/lib/utils/contest.ts b/src/lib/utils/contest.ts index 94f31d765..50f7867db 100644 --- a/src/lib/utils/contest.ts +++ b/src/lib/utils/contest.ts @@ -116,6 +116,7 @@ const agcLikePrefixes = getContestPrefixes(AGC_LIKE); * @example * { * utpc: 'UTPC' // University of Tokyo Programming Contest + * ttpc: 'TTPC' // Tokyo Institute of Technology Programming Contest * tupc: 'TUPC' // Tohoku University Programming Contest * } * @@ -127,6 +128,7 @@ const agcLikePrefixes = getContestPrefixes(AGC_LIKE); */ const ATCODER_UNIVERSITIES: ContestPrefix = { utpc: 'UTPC', + ttpc: 'TTPC', tupc: 'TUPC', } as const; diff --git a/src/test/lib/utils/test_cases/contest_name_and_task_index.ts b/src/test/lib/utils/test_cases/contest_name_and_task_index.ts index bb1145705..6b4b99350 100644 --- a/src/test/lib/utils/test_cases/contest_name_and_task_index.ts +++ b/src/test/lib/utils/test_cases/contest_name_and_task_index.ts @@ -251,6 +251,29 @@ const UTPC_TEST_DATA: UniversityContestsTestData = Object.fromEntries( ]), ) as UniversityContestsTestData; +type TtpcYear = '2015' | '2019' | '2022' | '2023'; +type TtpcTaskPatterns = { + [K in TtpcYear]: string[]; +}; + +const TTPC_TASK_PATTERNS: TtpcTaskPatterns = { + '2015': ['A', 'B', 'C', 'N', 'O', 'P'], + '2019': ['A', 'B', 'C', 'M', 'N', 'O'], + '2022': ['A', 'B', 'C', 'M', 'N', 'O'], + '2023': ['A', 'B', 'C', 'N', 'O', 'P'], +}; + +const TTPC_YEARS = [2015, 2019, 2022, 2023]; +const TTPC_TEST_DATA: UniversityContestsTestData = Object.fromEntries( + TTPC_YEARS.map((year) => [ + `ttpc${year}`, + { + contestId: `ttpc${year}`, + tasks: TTPC_TASK_PATTERNS[year.toString() as keyof TtpcTaskPatterns], + }, + ]), +) as UniversityContestsTestData; + type TupcYear = '2022' | '2023'; type TupcTaskPatterns = { [K in TupcYear]: string[]; @@ -290,6 +313,7 @@ const generateUniversityTestCases = ( const ALL_UNIVERSITY_TEST_DATA: UniversityContestsTestData = { ...UTPC_TEST_DATA, + ...TTPC_TEST_DATA, ...TUPC_TEST_DATA, }; diff --git a/src/test/lib/utils/test_cases/contest_name_labels.ts b/src/test/lib/utils/test_cases/contest_name_labels.ts index 6cc1025a5..07b8ce1ec 100644 --- a/src/test/lib/utils/test_cases/contest_name_labels.ts +++ b/src/test/lib/utils/test_cases/contest_name_labels.ts @@ -263,6 +263,18 @@ const generateUtpcTestCases = ( return testCase; }); }; +const generateTtpcTestCases = ( + years: number[], +): { name: string; value: TestCaseForContestNameLabel }[] => { + return years.map((year) => { + const testCase = createTestCaseForContestNameLabel(`TTPC ${year}`)({ + contestId: `ttpc${year}`, + expected: `TTPC${year}`, + }); + + return testCase; + }); +}; const generateTupcTestCases = ( years: number[], ): { name: string; value: TestCaseForContestNameLabel }[] => { @@ -278,12 +290,14 @@ const generateTupcTestCases = ( // Note: // UTPC contests on AtCoder: 2011-2014 and 2020-2023 (not held during 2015-2019) +// TTPC contests on AtCoder: 2015, 2019, 2022- // TUPC contests on AtCoder: 2022- // // See: // https://kenkoooo.com/atcoder/resources/contests.json export const universities = [ ...generateUtpcTestCases([2011, 2012, 2013, 2014, 2020, 2021, 2022, 2023]), + ...generateTtpcTestCases([2015, 2019, 2022, 2023]), ...generateTupcTestCases([2022, 2023]), ]; diff --git a/src/test/lib/utils/test_cases/contest_type.ts b/src/test/lib/utils/test_cases/contest_type.ts index 70051f08a..2095c4516 100644 --- a/src/test/lib/utils/test_cases/contest_type.ts +++ b/src/test/lib/utils/test_cases/contest_type.ts @@ -213,6 +213,7 @@ export const agcLike = [ // Note: // UTPC contests on AtCoder: 2011-2014 and 2020-2023 (not held during 2015-2019) +// TTPC contests on AtCoder: 2015, 2019, 2022- // TUPC contests on AtCoder: 2022- // // See: @@ -226,6 +227,10 @@ const universityContestIds = [ 'utpc2021', 'utpc2022', 'utpc2023', + 'ttpc2015', + 'ttpc2019', + 'ttpc2022', + 'ttpc2023', 'tupc2022', 'tupc2023', ];