Planta el Cultivo - Free Code Camp #155 Daily Challenge
2 min
Plant The Crop - Análisis y Explicación
Enunciado del Problema
Dado:
- Un número que representa el tamaño de un campo agrícola
- Una unidad de medida (‘acres’ o ‘hectáreas’)
- Un tipo de cultivo
Determina cuántas plantas de ese cultivo caben en el campo.
Conversión de unidades:
- 1 acre = 4046,86 m²
- 1 hectárea = 10.000 m²
Espacio requerido por planta:
| Cultivo | m² por planta |
|---|---|
| corn | 1 |
| wheat | 0.1 |
| soybeans | 0.5 |
| tomatoes | 0.25 |
| lettuce | 0.2 |
Devuelve el número de plantas que caben, redondeado hacia abajo.
Análisis Inicial
¿Qué pide el reto?
Convertir el área del campo a metros cuadrados, buscar el espacio requerido por planta según el cultivo, y dividir. El resultado se redondea hacia abajo.
Casos de Prueba
getNumberOfPlants(1, 'acres', 'corn') // 4046
getNumberOfPlants(2, 'hectares', 'lettuce') // 100000
getNumberOfPlants(20, 'acres', 'soybeans') // 161874
getNumberOfPlants(3.75, 'hectares', 'tomatoes') // 150000
getNumberOfPlants(16.75, 'acres', 'tomatoes') // 271139Desarrollo de la Solución
Enfoque y Diagrama
- Convertir el área a m² según la unidad.
- Buscar el espacio por planta del cultivo.
- Dividir área total entre espacio por planta.
- Redondear hacia abajo.
flowchart TD A["Entrada: tamaño, unidad, cultivo"] --> B["Convertir a m²"] B --> C["Buscar espacio por planta"] C --> D["Dividir área / espacio"] D --> E["Redondear hacia abajo"] E --> F["Resultado: plantas"]
Implementación en JavaScript
function getNumberOfPlants(size, unit, crop) {
const unitToM2 = {
acres: 4046.86,
hectáreas: 10000,
hectareas: 10000, // por si acaso
}
const cropToM2 = {
corn: 1,
wheat: 0.1,
soybeans: 0.5,
tomatoes: 0.25,
lettuce: 0.2,
}
const area = size * unitToM2[unit]
const space = cropToM2[crop]
return Math.floor(area / space)
}Análisis de Complejidad
- Temporal: (acceso a diccionario y aritmética básica)
- Espacial: (variables escalares y diccionarios pequeños)
Casos Edge y Consideraciones
- Si la unidad o el cultivo no existen, retorna
NaNoundefined(se asume entrada válida). - Si el tamaño es 0, retorna 0.
- Si el tamaño es negativo, retorna negativo o
NaN(no contemplado). - Si el espacio por planta es mayor que el área, retorna 0.
Reflexiones y Aprendizajes
- Diccionarios para mapear unidades y cultivos.
- Conversión de unidades y aritmética básica.
- Redondeo hacia abajo para no exceder la capacidad real.
¿Qué se podría mejorar?
- Validar entradas no reconocidas o negativas.
- Internacionalizar unidades si se requiere.