Instructions
Create a function unique_words that takes a sentence and returns
a Set of unique words (lowercase).
Set is like an Array but:
- Only stores unique elements
- Has O(1) lookup time
- No guaranteed order
require 'set'
set = Set.new([1, 2, 2, 3]) # => #<Set: {1, 2, 3}>
set.include?(2) # => true (fast!)
Hints:
- require 'set' at the top
- Split sentence, downcase, convert to Set
- Set.new(array) removes duplicates
Your Code
require 'set' def unique_words(sentence) Set.new(sentence.downcase.split) end
RSpec.describe "unique_words" do
it "returns unique words as a Set" do
result = unique_words("Hello hello HELLO world")
expect(result).to be_a(Set)
expect(result).to eq(Set.new(["hello", "world"]))
end
it "handles empty string" do
expect(unique_words("")).to eq(Set.new)
end
it "handles single word" do
expect(unique_words("Ruby")).to eq(Set.new(["ruby"]))
end
end
Results
Click "Run Tests" to see results
1 / 5
Next: Hash Transform