Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

squareRoot(6) returns 3, squareRoot(12) returns 4; test expects squareRoot(3, 1) = 1.8 (correct: 1.7)

Abierto Apto para principiantes
#2,231 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
javascript
Área
testing-qa

Línea de trabajo

Empieza con src/algorithms/math/square-root/squareRoot.js y la expectativa que falla en squareRoot.test.js:30; compara la condición de terminación del bucle con los ejemplos del issue. Ejecuta las pruebas de raíz cuadrada y comprueba las entradas indicadas, incluida squareRoot(3, 1). El trabajo estará listo cuando los resultados se redondeen correctamente y se resuelva el bloqueo notificado en #2187.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

src/algorithms/math/square-root/squareRoot.js stops Newton's iteration when |number - root²| <= 10^-tolerance (line 31). That bounds the error of the square, not of the root. Newton's method approaches √n from above, so the loop stops on an overestimate, and rounding then goes the wrong way.

squareRoot(6);     // 3     expected 2   (√6 = 2.449)
squareRoot(12);    // 4     expected 3   (√12 = 3.464)
squareRoot(3, 1);  // 1.8   expected 1.7 (√3 = 1.732)

squareRoot.test.js:30 asserts expect(squareRoot(3, 1)).toBe(1.8), so the test enshrines the bug. For n = 0..3000 and tolerance 0..6 there are 68 wrong results.

Fix: iterate until the root stops decreasing (while (next < root)), then round. Checked on 259,695 inputs against correctly rounded Math.sqrt; the only mismatches are 53 last-digit float effects at tolerance >= 10. This also removes the hang reported in #2187 (squareRoot(65549, 11)). The #2187 change alone still returns 3 and 1.8.


Found during an independent property-based audit of this repo (full report and reproducible harness: https://github.com/devladpopov/algorithm-autopsy/tree/main/autopsy-02).

Lenguaje dominante
JavaScript
Estrellas
197k
Forks
31k
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de trekhleb/javascript-algorithms

Todos los issues de trekhleb/javascript-algorithms

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.