Menu
CoddyTech

O método reduce

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 62 de 78.

reduce() combina todos os elementos de um array em um valor: uma soma, um produto, o maior elemento, uma frase.

var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)
10

Ele recebe dois argumentos: uma função e um valor inicial, aqui 0. A função recebe o resultado acumulado até o momento, chamado de acumulador (acc), e o próximo elemento. O valor retornado se torna o novo acumulador:

  • acc começa em 0
  • 0 + 1 é 1, 1 + 2 é 3, 3 + 3 é 6, 6 + 4 é 10
  • após o último elemento, reduce() retorna o acumulador: 10

Para um produto, comece em 1: numbers.reduce(func(acc, n): return acc * n, 1) é 24.

Sem um valor inicial, o primeiro elemento é o início, e a função é executada a partir do segundo elemento. Isso é adequado para encontrar o maior elemento:

var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9

Em um array vazio sem valor inicial, reduce() retorna null, então forneça um valor inicial quando o array puder estar vazio.

O acumulador pode ser de qualquer tipo. Com um valor inicial de "", isso cria uma String a partir das primeiras letras:

var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # go
challenge icon

Desafio

Fácil

O programa lê uma linha de números inteiros separados por vírgulas e os armazena no array numbers. Esta parte já está escrita.

Usando reduce() para cada um deles, imprima três linhas:

  1. a soma dos números
  2. o produto deles
  3. o maior número (escreva a comparação na lambda; não chame max())

Sempre há pelo menos um número. Para a entrada 3,7,2,8,4, a saída é:

24
1344
8

Experimente você mesmo

extends Node

func _ready():
	var numbers := []
	for part in OS.read_string_from_stdin().split(","):
		numbers.append(int(part))
	# Imprima a soma, o produto e o maior número, cada um com reduce()
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 GDScript online