temp_stats.jl en Julia
Una semana de temperaturas: argmin/argmax, barras y diff.
# Summarize a week of temperature readings: extremes, mean, swings.
using Printf
readings = [
("Mon", -4.0), ("Tue", -1.5), ("Wed", 2.0), ("Thu", 3.5),
("Fri", 1.0), ("Sat", -2.5), ("Sun", -6.0),
]
temps = last.(readings)
coldest = argmin(temps)
warmest = argmax(temps)
println("Coldest: $(readings[coldest][1]) at $(temps[coldest]) C")
println("Warmest: $(readings[warmest][1]) at $(temps[warmest]) C")
@printf("Mean: %.1f C\n", sum(temps) / length(temps))
# Chart each day against the freezing line.
for (day, t) in readings
bar = "#"^max(1, Int(floor(t + 7)))
side = t > 0 ? "above" : "below"
@printf("%-4s %5.1f %s %s\n", day, t, bar, side)
end
# diff gives neighbor-to-neighbor changes in one call.
swings = abs.(diff(temps))
@printf("Sharpest overnight swing: %.1f C\n", maximum(swings))
Cómo funciona
argminyargmaxencuentran los días récord por índice.- El bucle grafica cada día contra el congelamiento con
"#"^n. abs.(diff(temps))da los saltos nocturnos en una expresión.
Palabras clave y builtins usados aquí
Intendforinusing
El intento, en números
- Líneas
- 27
- Caracteres a escribir
- 799
- Tokens
- 241
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 222 segundos.
Paso 3 de 3 en Bis; paso 27 de 27 en Fundamentos del lenguaje.