/*
-------------------------------------------------------------------------
What is a trigram?
-------------------------------------------------------------------------
A trigram is a sequence of exactly three consecutive characters taken
from a word. To generate all trigrams, we slide a window of length 3
across the string. Each step produces a new 3‑character slice.
Example:
Word: "magic"
Trigrams: "mag", "agi", "gic"
Trigrams are useful in text processing, search algorithms,
and language modeling because they capture small structural patterns
inside words.
*/
/*
Function: makeTrigrams
----------------------
Returns an array containing all trigrams of the given word.
Steps:
- If the word is shorter than 3 characters, return an empty array.
- Otherwise, slide a window of size 3 across the word.
- Use substr() to extract each 3‑character sequence.
The algorithm runs in O(n) time and uses O(n) space.
*/
function makeTrigrams(string $word): array
{
if (strlen($word) < 3) {
return []; // No trigrams possible
}
$count = strlen($word) - 2;
$result = [];
for ($i = 0; $i < $count; $i++) {
$result[] = substr($word, $i, 3);
}
return $result;
}
/*
Main program:
- Read a word from the user.
- Generate trigrams.
- Print each trigram.
*/
echo "Enter a word: ";
$input = trim(fgets(STDIN));
$trigrams = makeTrigrams($input);
echo "\nTrigrams:\n";
foreach ($trigrams as $t) {
echo $t . "\n";
}
/*
run:
Enter a word: computer
Trigrams:
com
omp
mpu
put
ute
ter
*/