Menu
Coddy logo textTech

Range-Methoden

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 9 von 56.

Ranges sind echte Collections, daher verfügen sie über denselben Werkzeugkasten, den Sie auch bei Arrays verwenden.

contains, count, first und last funktionieren alle direkt:

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

Die meisten Array-Methoden, die Sie verwendet haben, funktionieren ebenfalls. filter gibt ein Array zurück, da das Ergebnis des Filterns eines Bereichs selbst kein Bereich ist:

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

Dasselbe gilt für reduce: Ranges verfügen darüber, und Sie werden es für schnelle Summen und Produkte nutzen.

challenge icon

Aufgabe

Einfach

Lies zwei Ganzzahlen (zwei Zeilen) ein: n und target. Betrachte den geschlossenen Bereich 1...n als deinen Datensatz.

Gib drei Zeilen aus:

  1. true, wenn target im Bereich liegt, andernfalls false
  2. Das Produkt jedes Wertes im Bereich (n!: Fakultät). Verwende reduce.
  3. Die Werte im Bereich, die Vielfache von 3 sind, verbunden mit , (oder eine leere Zeile, wenn keine zutreffen). Verwende filter.

Für die Eingabe 5 / 3 lautet die Ausgabe:

true
120
3

Spickzettel

Bereiche (Ranges) entsprechen Collection und unterstützen gängige Collection-Methoden:

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

filter auf einem Bereich gibt ein Array zurück:

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

reduce funktioniert direkt auf Bereichen:

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

Probier es selbst

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

// TODO: contains(target), Produkt via reduce, Vielfache von 3 via filter
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss