typestar

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

  1. preg_match_all extrae las palabras en minúscula del heredoc.
  2. array_count_values arma la tabla de frecuencias en una sola llamada.
  3. arsort la ordena; array_slice se queda con las cinco más frecuentes.
  4. array_filter con una clausura encuentra las palabras vistas solo una vez.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en Bis; paso 25 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →