Menu
CoddyTech

Reduce / Inject

Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 23 dari 56.

Terkadang kamu perlu meringkas seluruh array menjadi satu nilai, seperti jumlah, hasil kali, atau string terpanjang. reduce (juga disebut inject: method yang sama, dua nama) adalah alatnya.

Blok ini menerima dua parameter: akumulator dan elemen saat ini. Nilai kembalian blok menjadi akumulator berikutnya.

total = [1, 2, 3, 4].reduce(0) { |acc, n| acc + n }
puts total   # 10

Langkah demi langkah, akumulatornya adalah 0 → 1 → 3 → 6 → 10.

Argumen pertama adalah nilai awal akumulator. Jika kamu menghilangkannya, Ruby menggunakan elemen pertama dari array:

[1, 2, 3, 4].reduce { |acc, n| acc * n }   # 24

Untuk operasi sederhana seperti penjumlahan dan perkalian, Ruby menyediakan cara pintas, yaitu meneruskan simbol alih-alih blok:

[1, 2, 3, 4].reduce(:+)   # 10
[1, 2, 3, 4].reduce(:*)   # 24

Setelah kamu bisa membuat accumulator kustom, kamu bisa menghitung hampir apa saja dalam satu kali lintasan.

challenge icon

Tantangan

Mudah

Baca list bilangan bulat yang dipisahkan dengan koma. Cetak tiga baris:

  1. Jumlahnya (gunakan reduce(:+))
  2. Hasil kalinya (gunakan reduce(:*))
  3. Nilai maksimum, dihitung dengan reduce dan blok eksplisit, bukan dengan menggunakan max.

Untuk input 2,5,3,8, output-nya adalah:

18
240
8

Coba sendiri

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: tampilkan jumlah, hasil kali, dan nilai maksimum (dengan reduce + blok eksplisit)
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Ruby online