# -----------------------------------------------------------------------------
# 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.
# -----------------------------------------------------------------------------
# Generate all trigrams (3‑character sequences) from a 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 slicing to extract each 3‑character sequence.
#
# The algorithm runs in O(n) time and uses O(n) space.
def make_trigrams(word)
return [] if word.length < 3
count = word.length - 2
result = []
count.times do |i|
result << word[i, 3]
end
result
end
# Main program:
# - Read a word from the user.
# - Generate trigrams.
# - Print each trigram.
print "Enter a word: "
input = gets&.strip.to_s
trigrams = make_trigrams(input)
puts "\nTrigrams:"
trigrams.each { |t| puts t }
=begin
run:
Enter a word: computer
Trigrams:
com
omp
mpu
put
ute
ter
=end