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, 8for n in stride(from: 10, through: 0, by: -2) {
print(n)
}
// 10, 8, 6, 4, 2, 0El 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.
Desafío
FácilLee 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:
- Los valores en el stride, unidos con
, - La cantidad de valores producidos
Para la entrada 0 / 10 / 3, la salida es:
0,3,6,9
4Para la entrada 10 / 0 / -2, la salida es:
10,8,6,4,2,0
6Hoja 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, 8stride(from:through:by:) — cerrado (incluye el valor final):
for n in stride(from: 10, through: 0, by: -2) { }
// 10, 8, 6, 4, 2, 0El 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
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
1Strings a fondo
Conteo e índicesMayúsculas, minúsculas y TrimBúsqueda en StringsDividir y unirReemplazo de subcadenasResumen: Validación de usuario4Conjuntos
Crear conjuntosUnión e intersecciónResta y diferencia simétricaSubconjunto y superconjuntoResumen - Filtro de etiquetas7Proyecto - Seguimiento de hábitos
Descripción general del proyectoMarcar como completado10Proyecto - Motor de cuestionarios
Descripción general del proyectoHacer preguntas2Rangos e Intervalos
Cerrados vs. SemiabiertosSaltos (Stride)Métodos de RangosRangos en SwitchResumen - Cuadrícula de calendario5Funciones de orden superior Pt. 1
MapFilterReduceEncadenar map, filter, reduceResumen - Estadísticas de palabras