typestar

temp_stats.odin en Odin

Una semana de máximas diarias reducida a mínima, máxima y media, con una barra por día.

// One week of daily highs: spread, mean, and a scaled bar chart.
package main

import "core:fmt"

days := [7]string{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}
temps := [7]int{61, 68, 74, 79, 72, 65, 58}

main :: proc() {
    lo, hi, sum := temps[0], temps[0], 0
    for t in temps {
        lo = min(lo, t)
        hi = max(hi, t)
        sum += t
    }
    mean := f32(sum) / len(temps)
    span := max(hi - lo, 1)

    fmt.println("day temp range                 diff")
    fmt.println("------------------------------------")
    // Bars scale to the week's spread; the +1 keeps Sunday visible.
    bars := "#####################"
    warm_days := 0
    for t, i in temps {
        width := 20 * (t - lo) / span + 1
        diff := f32(t) - mean
        if diff > 0 do warm_days += 1
        sign := "+" if diff >= 0 else ""
        fmt.printfln("%s  %d  %-21s %s%.1f", days[i], t, bars[:width],
            sign, diff)
    }
    fmt.println("------------------------------------")
    fmt.printfln("low %d, high %d, mean %.1f", lo, hi, mean)
    fmt.println("days above the mean:", warm_days)
}

Cómo funciona

  1. Una pasada rastrea el día más fresco y el más cálido con los builtin min y max.
  2. Las barras escalan a la amplitud rebanando una cadena de numerales.
  3. El ternario "+" if diff >= 0 else "" elige el signo a mano.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
35
Caracteres a escribir
968
Tokens
273
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 252 segundos.

Escribe este fragmento

Paso 3 de 3 en Bis; paso 27 de 27 en Fundamentos del lenguaje.

← Anterior