MISC: Make implicit string conversion consistent across all coding contracts (#2608)

This commit is contained in:
catloversg
2026-04-03 13:53:16 +07:00
committed by GitHub
parent d1b6acc57a
commit 8dcccdc5bb
13 changed files with 376 additions and 60 deletions
@@ -1,5 +1,5 @@
import { CodingContractName } from "@enums";
import { removeBracketsFromArrayString, type CodingContractTypes } from "../ContractTypes";
import { parseArrayString, type CodingContractTypes } from "../ContractTypes";
import { exceptionAlert } from "../../utils/helpers/exceptionAlert";
import { getRandomIntInclusive } from "../../utils/helpers/getRandomIntInclusive";
@@ -127,10 +127,12 @@ export const spiralizeMatrix: Pick<CodingContractTypes, CodingContractName.Spira
return spiral.length === answer.length && spiral.every((n, i) => n === answer[i]);
},
convertAnswer: (ans) => {
const sanitized = removeBracketsFromArrayString(ans).replace(/\s/g, "").split(",");
return sanitized.map((s) => parseInt(s));
const parsedAnswer = parseArrayString(ans);
if (!spiralizeMatrix[CodingContractName.SpiralizeMatrix].validateAnswer(parsedAnswer)) {
return null;
}
return parsedAnswer;
},
validateAnswer: (ans): ans is number[] =>
typeof ans === "object" && Array.isArray(ans) && ans.every((n) => typeof n === "number"),
validateAnswer: (ans): ans is number[] => Array.isArray(ans) && ans.every((n) => typeof n === "number"),
},
};