Range-Methoden
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 7 von 56.
Bereiche verfügen über praktische Methoden, die Ihnen das manuelle Schreiben von Schleifen ersparen.
include? prüft, ob ein Wert innerhalb des Bereichs liegt:
range = 1..10
puts range.include?(5) # true
puts range.include?(11) # falsemin, max und size arbeiten direkt mit Bereichen:
puts (1..10).min # 1
puts (1..10).max # 10
puts (1..10).size # 10step iteriert über den Bereich und springt dabei um einen festen Betrag, was nützlich ist, wenn man nicht jeden Wert benötigt:
(0..10).step(2) do |n|
puts n
end
# 0, 2, 4, 6, 8, 10Und each funktioniert genauso wie bei Arrays:
(1..3).each { |n| puts n * n }
# 1
# 4
# 9Aufgabe
EinfachDir wird ein inklusiver Bereich und eine Liste von Schätzungen gegeben. Bewerte die Schätzungen und fasse den Bereich zusammen.
Lies zwei Zeilen ein:
- Zwei durch ein Leerzeichen getrennte Ganzzahlen:
startundend_value - Eine durch Kommas getrennte Liste von Ganzzahl-Schätzungen
Verwende den Bereich start..end_value und gib Folgendes aus:
Hit: <n>, wobeindie Anzahl der Schätzungen ist, die in den Bereich fallen (verwendeinclude?)Span: <n>, wobeindiesizedes Bereichs istMultiples of 3 sum: <n>, wobeindie Summe jedes Vielfachen von 3 im Bereich ist (verwendestepbeginnend beim ersten Vielfachen von 3 bei oder nachstart)
Für die Eingabe 1 10 in der ersten Zeile und 3,5,11,7,-2 in der zweiten Zeile lautet die Ausgabe:
Hit: 3
Span: 10
Multiples of 3 sum: 18(Treffer: 3, 5, 7. Vielfache von 3 in 1..10: 3+6+9 = 18.)
Spickzettel
Nützliche Range-Methoden:
range = 1..10
range.include?(5) # true
range.min # 1
range.max # 10
range.size # 10step iteriert, indem es um einen festen Betrag springt:
(0..10).step(2) { |n| puts n }
# 0, 2, 4, 6, 8, 10each funktioniert genau wie bei Arrays:
(1..3).each { |n| puts n * n }Probier es selbst
start, end_value = gets.chomp.split.map(&:to_i)
guesses = gets.chomp.split(",").map(&:to_i)
# TODO: Trefferanzahl via include?, Spanne via size, Summe der Vielfachen von 3 via step
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmfluss
1Strings im Detail
String-Methoden im ÜberblickString-InterpolationIterieren über StringsSplit und JoinRückblick – String Weaver4Blöcke, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas yield-SchlüsselwortBlock-ParameterProcs und LambdasZusammenfassung – Eigener Iterator7Hashes Teil 2
Hash.new mit StandardwertenIterieren über HashesVerschachtelte HashesZusammenführen und TransformierenRückblick – Häufigkeitszähler10Projekt - Studentenverwaltung
ProjektübersichtStudent hinzufügen5Enumerable-Kraftpaket
Select und RejectMap-VerkettungReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Data Pipeline8Fortgeschrittene Entscheidungslogik
Case mit Klassen & RegexMulti-Value whenTernärer OperatorInline if / unlessRückblick – Noten-Klassifizierer