/*
-------------------------------------------------------------------------
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.
*/
import java.util.Scanner
/*
Function: makeTrigrams
----------------------
Returns a list containing all trigrams of the given word.
Steps:
- If the word is shorter than 3 characters, return an empty list.
- Otherwise, slide a window of size 3 across the word.
- Use substring() to extract each 3‑character sequence.
The algorithm runs in O(n) time and uses O(n) space.
*/
fun makeTrigrams(word: String): List<String> {
if (word.length < 3) {
return emptyList() // No trigrams possible
}
val count = word.length - 2
val result = ArrayList<String>(count)
for (i in 0 until count) {
result.add(word.substring(i, i + 3))
}
return result
}
/*
Main program:
- Read a word from the user.
- Generate trigrams.
- Print each trigram.
*/
fun main() {
val scanner = Scanner(System.`in`)
print("Enter a word: ")
val input: String = scanner.nextLine().trim()
val trigrams: List<String> = makeTrigrams(input)
println("\nTrigrams:")
for (t in trigrams) {
println(t)
}
}
/*
run:
Enter a word: computer
Trigrams:
com
omp
mpu
put
ute
ter
*/