# JavaScript: imperativo, funcional y una sola pasada

Resuelve el mismo total con tres estilos. Verifica resultados, entrada vacía e inmutabilidad antes de discutir preferencias de programación.

Node.js 22 o superior. Descarga main.mjs y ejecútalo sin dependencias externas.

```sh
node main.mjs
```

Salida esperada / Expected output:

```text
OK: three styles, same result, unchanged input
```

## Ejercicio

Añade una política de descuentos como función pura y conserva las tres aserciones. Después decide qué efectos deben quedar fuera del cálculo.

## English

JavaScript: imperative, functional and single-pass styles

Solve the same total three ways. Verify results, empty input and unchanged data before debating programming preferences.

Node.js 22 or newer. Download main.mjs and run it without external dependencies.

Add a discount policy as a pure function and preserve the three assertions. Then decide which effects belong outside the calculation.

## Scope / Alcance

Educational local example with assertions. No production readiness or performance claim. / Ejemplo local educativo con aserciones; no se afirma preparación para producción ni rendimiento.

## Sources

- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
