Menu
Coddy logo textTech

Aralık Metotları

Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 9 / 56.

Aralıklar gerçek Collection'lardır, bu yüzden dizilerde kullandığınız aynı araç kutusuyla birlikte gelirler.

contains, count, first ve last özelliklerinin hepsi doğrudan çalışır:

let r = 1...10
print(r.contains(5))            // true
print(r.count)                  // 10
print(r.first!, r.last!)        // 1 10

Kullandığınız çoğu dizi yöntemi burada da çalışır. filter bir dizi döndürür çünkü bir aralığı filtrelemenin sonucu bir aralık değildir:

let evens = (1...10).filter { $0 % 2 == 0 }
print(evens)                    // [2, 4, 6, 8, 10]

reduce için de durum aynı: aralıklar buna sahiptir ve hızlı toplamlar ile çarpımlar için ona başvuracaksınız.

challenge icon

Görev

Kolay

İki tam sayı okuyun (iki satır): n ve target. 1...n kapalı aralığını veri kümeniz olarak kabul edin.

Üç satır yazdırın:

  1. target aralıkta olduğunda true, aksi takdirde false
  2. Aralıktaki her değerin çarpımı (n!: faktöriyel). reduce kullanın.
  3. Aralıktaki 3'ün katı olan değerleri , ile birleştirerek yazdırın (hiçbiri uymuyorsa boş bir satır). filter kullanın.

5 / 3 girişi için çıktı şöyledir:

true
120
3

Kopya kağıdı

Aralıklar Collection protokolüne uyar ve yaygın koleksiyon metotlarını destekler:

let r = 1...10
r.contains(5)   // true
r.count         // 10
r.first!        // 1
r.last!         // 10

Bir aralık üzerinde filter işlemi bir dizi döndürür:

let evens = (1...10).filter { $0 % 2 == 0 }
// [2, 4, 6, 8, 10]

reduce doğrudan aralıklar üzerinde çalışır:

let product = (1...5).reduce(1) { $0 * $1 }  // 120
let sum = (1...5).reduce(0, +)               // 15

Kendin dene

let n = Int(readLine()!)!
let target = Int(readLine()!)!
let r = 1...n

// YAPILACAK: contains(target), reduce ile çarpım, filter ile 3'ün katları
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler