transform y accumulate en C++
Map y luego reduce, al estilo de la biblioteca estándar: std::transform eleva, std::accumulate suma.
#include <algorithm>
#include <numeric>
#include <vector>
int sum_of_squares(const std::vector<int>& values) {
std::vector<int> squared(values.size());
std::transform(values.begin(), values.end(), squared.begin(),
[](int x) { return x * x; });
return std::accumulate(squared.begin(), squared.end(), 0);
}
Cómo funciona
squaredse dimensiona por adelantado para quetransformtenga dónde escribir.std::transformcorre la lambda del cuadrado sobre cada elemento y llenasquareden orden.std::accumulatepliega los cuadrados en un soloint, partiendo de0.
Palabras clave y builtins usados aquí
constintreturn
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 305
- Tokens
- 100
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 92 segundos.
Paso 2 de 3 en Algoritmos; paso 14 de 27 en Fundamentos del lenguaje.