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

75% Statements 12/16
100% Branches 0/0
0% Functions 0/1
75% Lines 12/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 171x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x          
/**
 * 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'
}