Acumular

Acumular

Fácil

Instruções

Implemente a operação accumulate, que, dada uma coleção e uma operação a ser aplicada em cada elemento da coleção, retorna uma nova coleção contendo 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)

Seu código deve ser capaz de produzir a coleção de quadrados:

  • 1, 4, 9, 16, 25

Dê uma olhada no conjunto de testes para ver a assinatura de função esperada.

Restrições

Não use essa funcionalidade de collect/map/fmap/seja lá o que for que a sua biblioteca padrão oferece! Resolva este exercício por conta própria usando outras ferramentas básicas.

Avançado

É comum chamar #to_enum ao definir métodos para um Enumerable genérico, caso nenhum bloco seja passado.

Aqui está um teste adicional que você pode adicionar:

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 O link abre em uma nova janela ou aba
Ruby Exercism

Tudo pronto para começar Acumular?

Crie sua conta no Exercism para aprender e dominar Ruby com 21 conceitos121 exercícios e mentoria humana de verdade, tudo de graça.