Menu
Coddy logo textTech

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)  # false

min, max et size fonctionnent directement sur les plages :

puts (1..10).min   # 1
puts (1..10).max   # 10
puts (1..10).size  # 10

step 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, 10

Et each fonctionne exactement comme sur les tableaux :

(1..3).each { |n| puts n * n }
# 1
# 4
# 9
challenge icon

Défi

Facile

On vous donne une plage inclusive et une liste de suppositions (guesses). Évaluez les suppositions et résumez la plage.

Lisez deux lignes :

  1. Deux entiers séparés par un espace : start et end_value
  2. Une liste de suppositions entières séparées par des virgules

En utilisant la plage start..end_value, affichez :

  1. Hit: <n>, où n est le nombre de suppositions qui tombent dans la plage (utilisez include?)
  2. Span: <n>, où n est la size de la plage
  3. Multiples of 3 sum: <n>, où n est la somme de chaque multiple de 3 dans la plage (utilisez step en 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         # 10

step itère en sautant d'un pas fixe :

(0..10).step(2) { |n| puts n }
# 0, 2, 4, 6, 8, 10

each 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
quiz iconTestez-vous

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