Menu
Coddy logo textTech

Reduce

Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 35 de 64.

Reduce(f, x) combina os elementos de x em um único valor: chama f nos dois primeiros elementos, depois nesse resultado e no terceiro elemento, e assim por diante. Com +, ele soma tudo:

print(Reduce(function(acc, x) acc + x, c(3, 5, 10)))
print(Reduce(`+`, 1:5))

Saída:

[1] 18
[1] 15

Operadores como + também são funções. Escrita entre crases, `+` pode ser passada como qualquer outra função. Reduce() é mais útil quando não há uma função integrada para a combinação, como manter a mais longa entre duas palavras:

longer <- function(a, b) if (nchar(b) > nchar(a)) b else a
print(Reduce(longer, c("fig", "banana", "kiwi", "cherry")))

Saída:

[1] "banana"

O terceiro argumento, init, é o valor inicial. Ele é usado como o primeiro acc e também é o resultado quando x está vazio:

print(Reduce(`+`, c(), 0))
print(Reduce(function(acc, w) paste0(acc, toupper(substr(w, 1, 1))), c("portable", "network", "graphics"), ""))

Saída:

[1] 0
[1] "PNG"

accumulate = TRUE retorna cada resultado intermediário em vez de apenas o último, o que fornece totais acumulados:

deposits <- c(100, -30, 50, -80)
print(Reduce(`+`, deposits, accumulate = TRUE))

Saída:

[1] 100  70 120  40
challenge icon

Desafio

Fácil

Complete running_balance(start, changes). Começando por start, aplique cada alteração na ordem. Retorne uma linha por alteração com o saldo depois dela, after 1: 70, e uma última linha lowest: seguida pelo menor saldo alcançado (incluindo start).

O código fornecido lê o saldo inicial e as alterações como uma linha separada por vírgulas e imprime cada linha retornada.

Experimente você mesmo

running_balance <- function(start, changes) {
  # Escreva seu código aqui
  character(0)
}

# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(running_balance(as.numeric(input[1]), as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de R online