Menu
Coddy logo textTech

Saltos (Stride)

Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 8 de 56.

Un rango avanza un paso a la vez. Cuando quieras un tamaño de paso diferente, o contar hacia atrás, usa stride.

Dos variantes: stride(from:to:by:) se detiene antes del segundo valor (semiabierto), stride(from:through:by:) puede incluirlo (cerrado):

for n in stride(from: 0, to: 10, by: 2) {
    print(n)
}
// 0, 2, 4, 6, 8
for n in stride(from: 10, through: 0, by: -2) {
    print(n)
}
// 10, 8, 6, 4, 2, 0

El argumento by: debe tener el signo correcto: positivo al contar hacia arriba, negativo al contar hacia abajo. Si no coinciden, el bucle se ejecutará cero veces.

challenge icon

Desafío

Fácil

Lee tres números enteros (tres líneas): start, end, step. El paso (step) puede ser positivo o negativo. El rango es inclusivo en ambos extremos (usa stride(from:through:by:)).

Imprime:

  1. Los valores en el stride, unidos con ,
  2. La cantidad de valores producidos

Para la entrada 0 / 10 / 3, la salida es:

0,3,6,9
4

Para la entrada 10 / 0 / -2, la salida es:

10,8,6,4,2,0
6

Hoja de referencia

Usa stride cuando necesites un tamaño de paso personalizado o contar hacia atrás.

stride(from:to:by:) — semiabierto (excluye el valor final):

for n in stride(from: 0, to: 10, by: 2) { }
// 0, 2, 4, 6, 8

stride(from:through:by:) — cerrado (incluye el valor final):

for n in stride(from: 10, through: 0, by: -2) { }
// 10, 8, 6, 4, 2, 0

El valor de by: debe coincidir con la dirección: positivo al contar hacia arriba, negativo al contar hacia abajo. Una discrepancia produce cero iteraciones.

Pruébalo tú mismo

let start = Int(readLine()!)!
let end = Int(readLine()!)!
let step = Int(readLine()!)!

// TODO: stride(from:through:by:), unir con coma, luego imprimir el recuento
quiz iconPonte a prueba

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