@@ -34,75 +34,36 @@ export const mergeSolveStatus = (
3434 } ) ;
3535 return map ;
3636 } , new Map < ProblemId , number > ( ) ) ;
37- const mergedProblems = problems . map (
38- ( problem ) : MergedProblem => {
39- const DateNum = Date . parse ( problem . Date as string ) ;
40- const contestId = problemContestMap . get ( problem . ProblemId ) ;
41- const extendedContest = contestId
42- ? extendedContestMap . get ( contestId )
37+ const mergedProblems = problems . map ( ( problem ) : MergedProblem => {
38+ const DateNum = Date . parse ( problem . Date as string ) ;
39+ const contestId = problemContestMap . get ( problem . ProblemId ) ;
40+ const extendedContest = contestId
41+ ? extendedContestMap . get ( contestId )
42+ : undefined ;
43+ const solvedProblem = solvedProblemsMap . get ( problem . ProblemId ) ;
44+ const firstSolvedProblem = firstSolvedProblemsMap . get ( problem . ProblemId ) ;
45+ const Difficulty =
46+ problem . ProblemId in difficulties
47+ ? difficulties [ problem . ProblemId ] [ 0 ]
4348 : undefined ;
44- const solvedProblem = solvedProblemsMap . get ( problem . ProblemId ) ;
45- const firstSolvedProblem = firstSolvedProblemsMap . get ( problem . ProblemId ) ;
46- const Difficulty =
47- problem . ProblemId in difficulties
48- ? difficulties [ problem . ProblemId ] [ 0 ]
49- : undefined ;
50- const Augmented =
51- problem . ProblemId in difficulties
52- ? difficulties [ problem . ProblemId ] [ 3 ]
53- : undefined ;
54- if ( ! extendedContest ) {
55- // コンテスト情報なし,ACしたかどうかのみ
56- const SolveDate = solvedProblem ?. Date ;
57- const SolveDateNum = SolveDate ? Date . parse ( SolveDate ) : undefined ;
58- const FirstSolveDate = firstSolvedProblem ?. Date ;
59- const FirstSolveDateNum = FirstSolveDate
60- ? Date . parse ( FirstSolveDate )
61- : undefined ;
62- const SolveStatus =
63- solvedProblem || FirstSolveDate
64- ? ProblemSolveStatus . Solved
65- : ProblemSolveStatus . Trying ;
66- return {
67- ...problem ,
68- DateNum,
69- SolveDate,
70- SolveDateNum,
71- FirstSolveDate,
72- FirstSolveDateNum,
73- SolveStatus,
74- Difficulty,
75- Augmented,
76- Index : undefined ,
77- } ;
78- }
79- // assert コンテスト情報あり
80- if ( ! firstSolvedProblem ) {
81- // 未 AC
82- return {
83- ...problem ,
84- Contest : extendedContest ,
85- DateNum,
86- SolveStatus : ProblemSolveStatus . Trying ,
87- Difficulty,
88- Augmented,
89- Index : problemIndexMap . get ( problem . ProblemId ) ,
90- } ;
91- }
92- // assert AC 済み
49+ const Augmented =
50+ problem . ProblemId in difficulties
51+ ? difficulties [ problem . ProblemId ] [ 3 ]
52+ : undefined ;
53+ if ( ! extendedContest ) {
54+ // コンテスト情報なし,ACしたかどうかのみ
9355 const SolveDate = solvedProblem ?. Date ;
9456 const SolveDateNum = SolveDate ? Date . parse ( SolveDate ) : undefined ;
95- const FirstSolveDate = firstSolvedProblem . Date ;
96- const FirstSolveDateNum = Date . parse ( FirstSolveDate ) ;
57+ const FirstSolveDate = firstSolvedProblem ?. Date ;
58+ const FirstSolveDateNum = FirstSolveDate
59+ ? Date . parse ( FirstSolveDate )
60+ : undefined ;
9761 const SolveStatus =
98- FirstSolveDateNum > extendedContest . EndDateNum
62+ solvedProblem || FirstSolveDate
9963 ? ProblemSolveStatus . Solved
100- : FirstSolveDateNum >= extendedContest . DateNum
101- ? ProblemSolveStatus . Intime
102- : ProblemSolveStatus . BeforeContest ;
64+ : ProblemSolveStatus . Trying ;
10365 return {
10466 ...problem ,
105- Contest : extendedContest ,
10667 DateNum,
10768 SolveDate,
10869 SolveDateNum,
@@ -111,10 +72,47 @@ export const mergeSolveStatus = (
11172 SolveStatus,
11273 Difficulty,
11374 Augmented,
75+ Index : undefined ,
76+ } ;
77+ }
78+ // assert コンテスト情報あり
79+ if ( ! firstSolvedProblem ) {
80+ // 未 AC
81+ return {
82+ ...problem ,
83+ Contest : extendedContest ,
84+ DateNum,
85+ SolveStatus : ProblemSolveStatus . Trying ,
86+ Difficulty,
87+ Augmented,
11488 Index : problemIndexMap . get ( problem . ProblemId ) ,
11589 } ;
11690 }
117- ) ;
91+ // assert AC 済み
92+ const SolveDate = solvedProblem ?. Date ;
93+ const SolveDateNum = SolveDate ? Date . parse ( SolveDate ) : undefined ;
94+ const FirstSolveDate = firstSolvedProblem . Date ;
95+ const FirstSolveDateNum = Date . parse ( FirstSolveDate ) ;
96+ const SolveStatus =
97+ FirstSolveDateNum > extendedContest . EndDateNum
98+ ? ProblemSolveStatus . Solved
99+ : FirstSolveDateNum >= extendedContest . DateNum
100+ ? ProblemSolveStatus . Intime
101+ : ProblemSolveStatus . BeforeContest ;
102+ return {
103+ ...problem ,
104+ Contest : extendedContest ,
105+ DateNum,
106+ SolveDate,
107+ SolveDateNum,
108+ FirstSolveDate,
109+ FirstSolveDateNum,
110+ SolveStatus,
111+ Difficulty,
112+ Augmented,
113+ Index : problemIndexMap . get ( problem . ProblemId ) ,
114+ } ;
115+ } ) ;
118116 return mergedProblems ;
119117} ;
120118
@@ -133,33 +131,31 @@ export const mergeRanking = (
133131 golferProblemMap : Map < ProblemNo , RankingProblem > ,
134132 golferPureProblemMap : Map < ProblemNo , RankingProblem >
135133) : RankingMergedProblem [ ] =>
136- mergedProblems . map (
137- ( mergedProblem ) : RankingMergedProblem => {
138- const FastestRankingProblem =
139- typeof mergedProblem . No === 'number'
140- ? speederProblemMap . get ( mergedProblem . No )
141- : undefined ;
142- const ShortestRankingProblem =
143- typeof mergedProblem . No === 'number'
144- ? golferProblemMap . get ( mergedProblem . No )
145- : undefined ;
146- const PureShortestRankingProblem =
147- typeof mergedProblem . No === 'number'
148- ? golferPureProblemMap . get ( mergedProblem . No )
149- : undefined ;
150- const ContestName = mergedProblem . Contest ?. Name ;
151- const FastestRankingUserName = FastestRankingProblem ?. UserName ;
152- const ShortestRankingUserName = ShortestRankingProblem ?. UserName ;
153- const PureShortestRankingUserName = PureShortestRankingProblem ?. UserName ;
154- return {
155- ...mergedProblem ,
156- FastestRankingProblem,
157- ShortestRankingProblem,
158- PureShortestRankingProblem,
159- ContestName,
160- FastestRankingUserName,
161- ShortestRankingUserName,
162- PureShortestRankingUserName,
163- } ;
164- }
165- ) ;
134+ mergedProblems . map ( ( mergedProblem ) : RankingMergedProblem => {
135+ const FastestRankingProblem =
136+ typeof mergedProblem . No === 'number'
137+ ? speederProblemMap . get ( mergedProblem . No )
138+ : undefined ;
139+ const ShortestRankingProblem =
140+ typeof mergedProblem . No === 'number'
141+ ? golferProblemMap . get ( mergedProblem . No )
142+ : undefined ;
143+ const PureShortestRankingProblem =
144+ typeof mergedProblem . No === 'number'
145+ ? golferPureProblemMap . get ( mergedProblem . No )
146+ : undefined ;
147+ const ContestName = mergedProblem . Contest ?. Name ;
148+ const FastestRankingUserName = FastestRankingProblem ?. UserName ;
149+ const ShortestRankingUserName = ShortestRankingProblem ?. UserName ;
150+ const PureShortestRankingUserName = PureShortestRankingProblem ?. UserName ;
151+ return {
152+ ...mergedProblem ,
153+ FastestRankingProblem,
154+ ShortestRankingProblem,
155+ PureShortestRankingProblem,
156+ ContestName,
157+ FastestRankingUserName,
158+ ShortestRankingUserName,
159+ PureShortestRankingUserName,
160+ } ;
161+ } ) ;
0 commit comments