All files / web/src/components/toys/number-line/lcmHopper lcmHopperState.ts

0% Statements 0/16
0% Branches 0/1
0% Functions 0/1
0% Lines 0/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17                                 
/**
 * LCM Hopper types and utility functions.
 *
 * Pure types — no React, no side effects.
 */

// ── Guess state ────────────────────────────────────────────────────────

export type GuessResult = 'correct' | 'close' | 'wrong' | null

/** Evaluate a guess against the LCM */
export function evaluateGuess(guess: number, lcmVal: number): GuessResult {
  if (Math.abs(guess - lcmVal) <= 1) return 'correct'
  if (Math.abs(guess - lcmVal) / lcmVal <= 0.2) return 'close'
  return 'wrong'
}