Acumular

Acumular

Fácil

Instruções

Implementa a operação accumulate, que, dada uma coleção e uma operação a aplicar a cada elemento dessa coleção, devolve uma nova coleção com o resultado da aplicação dessa operação a cada elemento da coleção de entrada.

Dada a coleção de números:

  • 1, 2, 3, 4, 5

E a operação:

  • elevar um número ao quadrado (x => x * x)

O teu código deve ser capaz de produzir a coleção dos quadrados:

  • 1, 4, 9, 16, 25

Dá uma vista de olhos à suite de testes para veres a assinatura esperada da função.

Restrições

Não mexas na funcionalidade collect/map/fmap, ou lá como lhe chamam, que a tua biblioteca padrão oferece! Resolve este exercício sozinho, recorrendo a outras ferramentas básicas.

Avançado

É habitual chamar #to_enum quando defines métodos para um Enumerable genérico, para o caso de não ser passado nenhum bloco.

Eis um teste adicional que podes acrescentar:

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
Editar via GitHub A ligação abre numa nova janela ou separador
Ruby Exercism

Estás pronto para começar Acumular?

Inscreve-te no Exercism para aprenderes e dominares Ruby com 21 conceitos121 exercícios, e mentoria humana real, tudo grátis.