tally y slices en Ruby
Conteo y ventanas integrados directo en Enumerable.
rolls = [4, 2, 6, 4, 4, 2, 1, 6]
puts rolls.tally.inspect
puts rolls.each_slice(3).to_a.inspect
# each_cons recorre ventanas que se solapan; cuenta las subidas
puts rolls.each_cons(2).count { |a, b| b > a }
letters = "mississippi".chars
puts letters.tally.max_by { |_, n| n }.inspect
puts letters.chunk_while { |a, b| a == b }.map(&:join).inspect
Cómo funciona
tallycuenta las ocurrencias en un hash con una sola llamada.each_slicetrocea una lista;each_consrecorre ventanas superpuestas.chunk_whileagrupa vecinos que satisfacen el bloque.
Palabras clave y builtins usados aquí
puts
El intento, en números
- Líneas
- 11
- Caracteres a escribir
- 349
- Tokens
- 101
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 87 segundos.
Paso 2 de 3 en Enumerable; paso 14 de 29 en Fundamentos del lenguaje.