mirror of
https://github.com/TheAlgorithms/Ruby
synced 2024-12-26 21:58:56 +01:00
33 lines
1 KiB
Ruby
33 lines
1 KiB
Ruby
# Shortest Word Distance
|
|
# Given a list of words and two words word1 and word2,
|
|
# return the shortest distance between these two words in the list.
|
|
# @param {String[]} words
|
|
# @param {String} word1
|
|
# @param {String} word2
|
|
# @return {Integer}
|
|
|
|
def shortest_distance(words, word1, word2)
|
|
return 0 if word1 == word2
|
|
return 0 unless words.include?(word1) && words.include?(word2)
|
|
|
|
minimum_distance = words.length
|
|
words.each_with_index do |outer_value, outer_index|
|
|
words.each_with_index do |inner_value, inner_index|
|
|
if ((inner_value == word1 && outer_value == word2) || (inner_value == word2 && outer_value == word1)) && (minimum_distance > (outer_index - inner_index).abs)
|
|
minimum_distance = (outer_index - inner_index).abs
|
|
end
|
|
end
|
|
end
|
|
minimum_distance
|
|
end
|
|
|
|
words = %w[practice makes perfect coding makes]
|
|
word1 = 'coding'
|
|
word2 = 'practice'
|
|
puts(shortest_distance(words, word1, word2))
|
|
# Output: 3
|
|
words = %w[practice makes perfect coding makes]
|
|
word1 = 'makes'
|
|
word2 = 'coding'
|
|
puts(shortest_distance(words, word1, word2))
|
|
# Output: 1
|