typestar

Vistas con Span en Mojo

Un Span toma prestada una ventana sobre una lista, sin copiar nada de ella.

def total(values: Span[Int, _]) -> Int:
    var sum = 0
    for value in values:
        sum += value
    return sum


def main():
    var samples = [3, 1, 4, 1, 5, 9, 2, 6]
    print(total(Span(samples)))
    print(total(Span(samples)[2:5]))
    var window = Span(samples)[0:3]
    window[0] = 100
    print(samples[0])

Cómo funciona

  1. Span[Int, _] deja el origen sin fijar, así que se le puede pasar cualquier lista.
  2. Rebanar un span angosta la ventana a un subrango.
  3. Escribir a través del span muta la lista original.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
276
Tokens
96
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 82 segundos.

Escribe este fragmento

Paso 4 de 4 en Memoria; paso 20 de 22 en Parámetros y SIMD.

← Anterior Siguiente →