Challenge - 5 Problems
Ruby Predicate Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
What is the output of this Ruby code using a predicate method?
Consider the following Ruby code snippet. What will it print?
Ruby
def even_or_odd?(num) num.even? end puts even_or_odd?(7)
Attempts:
2 left
💡 Hint
Remember, the method checks if the number is even.
✗ Incorrect
The method calls num.even? which returns true if num is even, false otherwise. Since 7 is odd, it returns false.
❓ Predict Output
intermediate2:00remaining
What does this predicate method return?
What will be the output of this Ruby code?
Ruby
class String def has_vowels? !!(self =~ /[aeiou]/i) end end puts "sky".has_vowels?
Attempts:
2 left
💡 Hint
Check if the string contains any vowels.
✗ Incorrect
The method returns true if the string contains vowels, false otherwise. "sky" has no vowels, so it returns false.
🔧 Debug
advanced2:00remaining
Why does this predicate method raise an error?
This Ruby code raises an error. What is the cause?
Ruby
def positive?(num) num > 0 ? true : false end puts positive?(nil)
Attempts:
2 left
💡 Hint
Think about what happens when you compare nil with a number.
✗ Incorrect
The expression num > 0 fails because nil does not support comparison with >, causing a NoMethodError.
🧠 Conceptual
advanced1:30remaining
What is the purpose of predicate methods ending with '?' in Ruby?
Why do Ruby methods often end with a question mark '?'? Choose the best explanation.
Attempts:
2 left
💡 Hint
Think about what the '?' symbol suggests in English.
✗ Incorrect
In Ruby, methods ending with '?' are predicate methods that return true or false, indicating a yes/no question about the object.
❓ Predict Output
expert2:30remaining
What is the output of this complex predicate method?
Analyze the code and determine what it prints.
Ruby
class Array def all_even? all?(&:even?) end end arr = [2, 4, 6, 7] puts arr.all_even?
Attempts:
2 left
💡 Hint
Check if every element in the array is even.
✗ Incorrect
The method all_even? returns true only if all elements are even. Since 7 is odd, it returns false.