map y grep en Perl
Transforma y filtra listas en una línea cada uno — y luego encadena ambos en un pipeline.
use strict;
use warnings;
my @nums = (3, 1, 4, 1, 5, 9, 2, 6);
my @squares = map { $_ * $_ } @nums;
my @evens = grep { $_ % 2 == 0 } @nums;
print "@squares\n";
print "@evens\n";
# read right to left: keep the evens, then double them
my @doubled = map { $_ * 2 } grep { $_ % 2 == 0 } @nums;
print "@doubled\n";
Cómo funciona
mapcorre su bloque una vez por elemento con$_puesto, y junta una copia elevada al cuadrado.grepconserva solo los elementos cuyo bloque devuelve verdadero — aquí los pares.- Encadenadas, las llamadas se leen de derecha a izquierda:
grepelige los pares ymapduplica lo que sobrevivió.
Palabras clave y builtins usados aquí
grepmapmyprintuse
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 312
- Tokens
- 92
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 79 segundos.
Paso 2 de 3 en Listas y contexto; paso 11 de 27 en Fundamentos del lenguaje.