word_freq.php en PHP
Un reporte de frecuencia de palabras sobre un pasaje incrustado, hecho con funciones de arreglos.
<?php
// word_freq: count word occurrences in an inline passage
$text = <<<TEXT
The quick brown fox jumps over the lazy dog.
The dog barks; the fox runs. Quick thinking, that fox.
TEXT;
preg_match_all('/[a-z]+/', strtolower($text), $matches);
$words = $matches[0];
$freq = array_count_values($words);
arsort($freq);
echo "words total: ", count($words), "\n";
echo "words unique: ", count($freq), "\n";
echo "top 5:\n";
foreach (array_slice($freq, 0, 5, true) as $word => $count) {
printf(" %-8s %d\n", $word, $count);
}
$once = array_keys(array_filter($freq, fn ($n) => $n === 1));
sort($once);
echo "seen once: ", implode(", ", $once), "\n";
Cómo funciona
preg_match_allextrae las palabras en minúscula del heredoc.array_count_valuesarma la tabla de frecuencias en una sola llamada.arsortla ordena;array_slicese queda con las cinco más frecuentes.array_filtercon una clausura encuentra las palabras vistas solo una vez.
Palabras clave y builtins usados aquí
array_count_valuesarray_filterarray_keysarray_slicearsortascountechoforeachimplodepreg_match_allprintfsortstrtolowertrue
El intento, en números
- Líneas
- 25
- Caracteres a escribir
- 649
- Tokens
- 136
- Ritmo de tres estrellas
- 85 tpm
Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 96 segundos.
Paso 1 de 3 en Bis; paso 25 de 27 en Fundamentos del lenguaje.