Menu
Coddy logo textTech

count, all?, any?, none?

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 24 de 56.

Cuatro pequeños métodos de Enumerable que responden preguntas sobre una colección sin obligarte a escribir un bucle.

count devuelve cuántos elementos satisfacen el bloque:

[1, 2, 3, 4, 5].count { |n| n.even? }   # 2
[1, 2, 3, 4, 5].count                    # 5  (sin bloque, recuento total)

all? es verdadero cuando cada elemento satisface el bloque:

[2, 4, 6].all? { |n| n.even? }    # true
[2, 4, 7].all? { |n| n.even? }    # false

any? es verdadero cuando al menos uno cumple la condición:

[1, 2, 3].any? { |n| n.even? }    # true
[1, 3, 5].any? { |n| n.even? }    # false

none? es true cuando ninguno de ellos lo cumple:

[1, 3, 5].none? { |n| n.even? }   # true

Los métodos son de cortocircuito, any? se detiene en la primera coincidencia, all? se detiene ante el primer fallo. Son económicos.

challenge icon

Desafío

Fácil

Lee una lista de puntuaciones de exámenes (enteros) separada por comas. Una clase es una valid passing class cuando:

  • none? de las puntuaciones es negativa (un examen no registrado)
  • all? las puntuaciones son como máximo 100
  • any? puntuación es exactamente 100 (al menos una puntuación perfecta)
  • al menos 3 puntuaciones son >= 70 (usa count)

Imprime exactamente una línea:

  • Valid: <count> passing cuando se cumplen las cuatro condiciones (count es el recuento de puntuaciones >= 70)
  • Invalid de lo contrario

Para la entrada 72,80,100,65,90: 4 puntuaciones >= 70, ninguna negativa, todas <= 100, una es 100, por lo que la salida es Valid: 4 passing.

Para 72,80,90: 3 aprobados pero ninguna puntuación perfecta, por lo que es Invalid.

Hoja de referencia

Cuatro métodos de Enumerable que responden preguntas sobre una colección:

count – devuelve cuántos elementos satisfacen el bloque (o el tamaño total sin un bloque):

[1, 2, 3, 4, 5].count { |n| n.even? }  # 2
[1, 2, 3, 4, 5].count                   # 5

all? – verdadero cuando cada elemento satisface el bloque:

[2, 4, 6].all? { |n| n.even? }  # true

any? – verdadero cuando al menos un elemento satisface el bloque:

[1, 2, 3].any? { |n| n.even? }  # true

none? – verdadero cuando ningún elemento satisface el bloque:

[1, 3, 5].none? { |n| n.even? }  # true

Estos métodos tienen cortocircuito: any? se detiene en la primera coincidencia, all? se detiene en el primer fallo.

Pruébalo tú mismo

scores = gets.chomp.split(",").map(&:to_i)

# TODO: combinar all?, any?, none?, count para decidir Valid vs Invalid
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo