Skip to content

Contest Scoring

Your contest score is the sum of your individual challenge scores. Each challenge is scored based on how quickly you solve it, its difficulty, and any penalties you accumulate.

Per-Challenge Score

baseScore = ((timeLimit - timeTaken) / timeLimit) * difficultyWeight + difficultyWeight
aiPenalty = max(0, 1 - penaltyPerPrompt * aiPrompts)  // penalty scales with difficulty
submitPenalty = max(0, 1 - 0.05 * failedAttempts)      // -5% per failed submit

challengeScore = baseScore * aiPenalty * submitPenalty
  • If timeTaken <= 0 or timeTaken > timeLimit, the score is 0 (challenge not completed).
  • The baseScore ranges from difficultyWeight (used the entire time limit) to 2 * difficultyWeight (instant solve).
  • Each failed submission reduces your score by 5%.

Each AI prompt reduces your score by an amount that scales with the challenge difficulty — easy challenges are penalized more, since you're expected to solve them on your own:

DifficultyPenalty per AI prompt
Beginner10%
Intermediate5%
Expert3%

Challenges without a voted difficulty use their default difficulty to pick the penalty.

Per-User Score

Your total contest score is simply the sum of all your challenge scores:

userScore = sum(challengeScore for each challenge)

Rating Update (Elo)

After the contest ends, your rating is updated using an Elo-based system:

  1. Scores are normalized to [0, 1] across all participants.
  2. An expected score is calculated per the Elo formula:
    expectedScore = 1 / (1 + 10^((otherRating - myRating) / 400))
  3. Your new rating is:
    newRating = round(currentRating + 32 * (actualScore - expectedScore))
  4. The minimum rating is clamped to 100. The default starting rating is 1500.