Méthodes d'intervalle
Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 7 sur 56.
Les plages disposent de méthodes pratiques qui vous évitent d'écrire des boucles manuellement.
include? vérifie si une valeur se trouve dans la plage :
range = 1..10
puts range.include?(5) # true
puts range.include?(11) # falsemin, max et size fonctionnent directement sur les plages :
puts (1..10).min # 1
puts (1..10).max # 10
puts (1..10).size # 10step itère sur la plage en sautant d'un montant fixe, utile quand vous ne voulez pas chaque valeur :
(0..10).step(2) do |n|
puts n
end
# 0, 2, 4, 6, 8, 10Et each fonctionne exactement comme sur les tableaux :
(1..3).each { |n| puts n * n }
# 1
# 4
# 9Défi
FacileOn vous donne une plage inclusive et une liste de suppositions (guesses). Évaluez les suppositions et résumez la plage.
Lisez deux lignes :
- Deux entiers séparés par un espace :
startetend_value - Une liste de suppositions entières séparées par des virgules
En utilisant la plage start..end_value, affichez :
Hit: <n>, oùnest le nombre de suppositions qui tombent dans la plage (utilisezinclude?)Span: <n>, oùnest lasizede la plageMultiples of 3 sum: <n>, oùnest la somme de chaque multiple de 3 dans la plage (utilisezstepen commençant par le premier multiple de 3 égal ou supérieur àstart)
Pour l'entrée 1 10 sur la première ligne et 3,5,11,7,-2 sur la seconde, la sortie est :
Hit: 3
Span: 10
Multiples of 3 sum: 18(Hits : 3, 5, 7. Multiples de 3 dans 1..10 : 3+6+9 = 18.)
Aide-mémoire
Méthodes utiles de Range :
range = 1..10
range.include?(5) # true
range.min # 1
range.max # 10
range.size # 10step itère en sautant d'un pas fixe :
(0..10).step(2) { |n| puts n }
# 0, 2, 4, 6, 8, 10each fonctionne de la même manière que sur les tableaux :
(1..3).each { |n| puts n * n }Essayez vous-même
start, end_value = gets.chomp.split.map(&:to_i)
guesses = gets.chomp.split(",").map(&:to_i)
# TODO: Nombre de coups via include?, Étendue via size, somme des multiples de 3 via step
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et Flux
1Les chaînes de caractères en profondeur
Aperçu des méthodes de chaînesInterpolation de chaînesParcourir les chaînesSplit et JoinRécapitulatif - String Weaver4Blocs, Procs & Lambdas
Qu'est-ce qu'un bloc ?do..end vs AccoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes - Partie 2
Hash.new avec des valeurs par défautItérer sur les HashesHashes imbriquésFusion et transformationRécapitulatif - Compteur de fréquence10Projet - Dossiers étudiants
Présentation du projetAjouter un étudiant2Intervalles
Qu'est-ce qu'un intervalle ?Méthodes d'intervalleLes intervalles dans Case / WhenRécapitulatif - Pratique des intervalles5La puissance d'Enumerable
Select et RejectChaîner MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Data Pipeline