Menu
CoddyTech

Metoda reduce

Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 62 z 78.

reduce() łączy wszystkie elementy tablicy w jedną wartość: sumę, iloczyn, największy element lub zdanie.

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

Przyjmuje dwa argumenty: funkcję i wartość początkową, tutaj 0. Funkcja otrzymuje dotychczasowy wynik, nazywany akumulatorem (acc), oraz kolejny element. To, co zwraca, staje się nowym akumulatorem:

  • acc zaczyna od 0
  • 0 + 1 to 1, 1 + 2 to 3, 3 + 3 to 6, 6 + 4 to 10
  • po ostatnim elemencie reduce() zwraca akumulator: 10

Dla iloczynu zacznij od 1: numbers.reduce(func(acc, n): return acc * n, 1) wynosi 24.

Bez wartości początkowej pierwszym elementem jest początek, a funkcja działa od drugiego elementu. To pasuje do wyszukiwania największego elementu:

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

W przypadku pustej tablicy bez wartości początkowej reduce() zwraca null, więc podaj wartość początkową, jeśli tablica może być pusta.

Akumulator może mieć dowolny typ. Wartość początkowa "" pozwala zbudować ciąg znaków z pierwszych liter:

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

Wyzwanie

Łatwy

Program odczytuje jeden wiersz liczb całkowitych oddzielonych przecinkami i zapisuje je w tablicy numbers. Ta część jest już napisana.

Używając reduce() dla każdej z nich, wypisz trzy wiersze:

  1. sumę liczb
  2. ich iloczyn
  3. największą liczbę (zapisz porównanie w lambdzie; nie wywołuj max())

Zawsze jest co najmniej jedna liczba. Dla wejścia 3,7,2,8,4 wynikiem jest:

24
1344
8

Spróbuj swoich sił

extends Node

func _ready():
	var numbers := []
	for part in OS.read_string_from_stdin().split(","):
		numbers.append(int(part))
	# Wypisz sumę, iloczyn i największą liczbę, używając za każdym razem reduce()
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator GDScript online