Implementa la operación accumulate, que, dada una colección y una operación que hay que aplicar a cada elemento de la colección, devuelve una nueva colección con el resultado de aplicar esa operación a cada elemento de la colección de entrada.
Dada la colección de números:
Y la operación:
x => x * x)Tu código debería ser capaz de producir la colección de cuadrados:
Consulta el conjunto de pruebas para ver la firma que se espera de la función.
¡No toques esa funcionalidad de collect/map/fmap/como se llame que te ofrece tu biblioteca estándar! Resuelve este ejercicio por tu cuenta con otras herramientas básicas.
Es habitual llamar a #to_enum al definir métodos para un Enumerable genérico, por si no se pasa ningún bloque.
Aquí tienes un test adicional que podrías añadir:
def test_accumulate_when_block_is_deferred
skip
accumulate_enumerator = [1, 2, 3].accumulate
accumulated_result = accumulate_enumerator.map do |number|
number * number
end
assert_equal [1, 4, 9], accumulated_result
end
Regístrate en Exercism para aprender y dominar Ruby con 21 conceptos121 ejercicios y mentoría humana real, todo gratis.