How to generate all trigrams (3-character sequences) from a given word in Ruby

1 Answer

0 votes
# -----------------------------------------------------------------------------
# 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

 



answered Sep 9 by avibootz

Related questions

...