Instantánea de inventario
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 55 de 56.
Un informe de inventario que pone en práctica hashes, cadenas de Enumerable, group_by y un toque de formato.
Desafío
IntermedioSe proporciona el array inventory. Cada elemento es un hash con :name, :category, :qty, y :price.
Imprime cuatro líneas:
- El valor total del inventario de todos los artículos (
qty * price, sumados), impreso como un entero. - La categoría con el mayor número de artículos, en el formato
Top category: <name> (<count>). Los empates se resuelven alfabéticamente por el nombre de la categoría. - Nombres de los artículos out of stock (
qty == 0), ordenados alfabéticamente, unidos por,. Si no hay ninguno, imprime(none). - Nombres de los 3 artículos más caros por precio unitario, del más alto al más bajo, unidos por
,. Los empates se resuelven alfabéticamente por nombre.
Para el inventario por defecto, la salida es:
232
Top category: food (3)
milk
chair, lamp, milkPruébalo tú mismo
inventory = [
{ name: "apple", category: "food", qty: 10, price: 2 },
{ name: "bread", category: "food", qty: 4, price: 3 },
{ name: "milk", category: "food", qty: 0, price: 4 },
{ name: "chair", category: "furniture", qty: 2, price: 35 },
{ name: "lamp", category: "furniture", qty: 5, price: 20 },
{ name: "pencil", category: "stationery", qty: 30, price: 1 }
]
# TODO: print total value, top category, out-of-stock names, top 3 by price
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
1Strings en profundidad
Visión general de los métodos de StringInterpolación de StringsIterar sobre StringsSplit y JoinRepaso - String Weaver4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end vs llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasResumen - Iterador personalizado7Hashes Parte 2
Hash.new con valores por defectoIteración de HashesHashes anidadosFusión y transformaciónResumen - Contador de frecuencia10Proyecto - Registros de Estudiantes
Descripción general del proyectoAgregar estudiante5Potencia de Enumerable
Select y RejectEncadenando MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byResumen - Data Pipeline