Bird
Raised Fist0
Rubyprogramming~20 mins

Spaceship operator (<=>) in Ruby - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Spaceship Operator Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this spaceship operator comparison?
Consider the following Ruby code using the spaceship operator (<=>). What will be printed?
Ruby
puts 5 <=> 10
A1
B0
Cnil
D-1
Attempts:
2 left
💡 Hint
The spaceship operator returns -1 if the left side is less than the right side.
❓ Predict Output
intermediate
2:00remaining
What does this spaceship operator expression return?
What is the output of this Ruby code snippet?
Ruby
result = 'apple' <=> 'apple'
puts result
A-1
B0
C1
Dnil
Attempts:
2 left
💡 Hint
The spaceship operator returns 0 when both sides are equal.
❓ Predict Output
advanced
2:00remaining
What is the output of this spaceship operator with arrays?
What will this Ruby code print?
Ruby
puts [1, 2, 3] <=> [1, 2, 4]
A-1
B0
C1
Dnil
Attempts:
2 left
💡 Hint
The spaceship operator compares arrays element by element.
❓ Predict Output
advanced
2:00remaining
What happens when comparing incompatible types with <=>?
What is the output of this Ruby code?
Ruby
puts 10 <=> '10'
Anil
B1
C-1
D0
Attempts:
2 left
💡 Hint
The spaceship operator returns nil when the two objects are not comparable.
🧠 Conceptual
expert
3:00remaining
How does the spaceship operator behave in custom class sorting?
Given a Ruby class with a custom <=> method, what will be the output of sorting an array of its objects? class Box attr_reader :volume def initialize(volume) @volume = volume end def <=>(other) volume <=> other.volume end end boxes = [Box.new(30), Box.new(10), Box.new(20)] sorted_volumes = boxes.sort.map(&:volume) puts sorted_volumes.inspect
A[30, 20, 10]
BRaises an error
C[10, 20, 30]
D[20, 10, 30]
Attempts:
2 left
💡 Hint
The spaceship operator defines how objects are compared during sorting.

Practice

(1/5)
1.

What does the Ruby spaceship operator <=> return when comparing two values?

easy
A. true if left is smaller, false if equal, nil if left is bigger
B. -1 if left is smaller, 0 if equal, 1 if left is bigger
C. The sum of both values
D. A boolean indicating if values are equal

Solution

  1. Step 1: Understand the spaceship operator purpose

    The spaceship operator compares two values and returns an integer indicating their order.
  2. Step 2: Recall the return values

    It returns -1 if the left value is smaller, 0 if both are equal, and 1 if the left is bigger.
  3. Final Answer:

    -1 if left is smaller, 0 if equal, 1 if left is bigger -> Option B
  4. Quick Check:

    Spaceship operator returns -1, 0, or 1 [OK]
Hint: Remember: -1 smaller, 0 equal, 1 bigger [OK]
Common Mistakes:
  • Confusing return values with booleans
  • Thinking it returns a sum or boolean
  • Mixing up which side is compared
2.

Which of the following is the correct syntax to compare a and b using the spaceship operator in Ruby?

?
easy
A. a => b
B. a =< b
C. a <= b
D. a <=> b

Solution

  1. Step 1: Identify the spaceship operator syntax

    The spaceship operator is written as <=> between two values.
  2. Step 2: Match the correct syntax

    Only a <=> b uses the correct operator symbol and order.
  3. Final Answer:

    a <=> b -> Option D
  4. Quick Check:

    Correct operator is <=> [OK]
Hint: Look for <=> exactly between variables [OK]
Common Mistakes:
  • Using => which is a hash rocket
  • Using <= or =< which are comparison operators
  • Swapping operator symbols incorrectly
3.

What is the output of the following Ruby code?

puts 5 <=> 10
puts 10 <=> 10
puts 15 <=> 10
medium
A. false true false
B. 1 0 -1
C. -1 0 1
D. 10 10 10

Solution

  1. Step 1: Evaluate each comparison

    5 <=> 10 returns -1 because 5 is smaller than 10.
    10 <=> 10 returns 0 because both are equal.
    15 <=> 10 returns 1 because 15 is bigger than 10.
  2. Step 2: Confirm output lines

    Each puts prints the result on a new line, so output is three lines: -1, 0, 1.
  3. Final Answer:

    -1 0 1 -> Option C
  4. Quick Check:

    5 < 10 = -1, equal = 0, 15 > 10 = 1 [OK]
Hint: Remember: smaller = -1, equal = 0, bigger = 1 [OK]
Common Mistakes:
  • Mixing up the order of output
  • Expecting boolean true/false instead of -1,0,1
  • Confusing <=> with < or > operators
4.

Identify the error in this Ruby code snippet using the spaceship operator:

result = 7 <=>
3
puts result
medium
A. Syntax error due to line break in operator
B. Returns nil because 7 and 3 are not comparable
C. Returns 1 as expected
D. Runtime error due to undefined variable

Solution

  1. Step 1: Check operator usage across lines

    The spaceship operator <=> must be on the same line between operands; splitting it causes syntax error.
  2. Step 2: Understand Ruby syntax rules

    Ruby does not allow breaking operators across lines without proper continuation, so this code raises a syntax error.
  3. Final Answer:

    Syntax error due to line break in operator -> Option A
  4. Quick Check:

    Operators must not be split across lines [OK]
Hint: Keep <=> on one line between values [OK]
Common Mistakes:
  • Splitting operator across lines
  • Assuming nil return for invalid syntax
  • Confusing runtime errors with syntax errors
5.

Given the array arr = [3, 1, 4, 1, 5], which code snippet correctly sorts the array in descending order using the spaceship operator?

hard
A. arr.sort { |a, b| b <=> a }
B. arr.sort { |a, b| a == b }
C. arr.sort_by { |x| x <=> 0 }
D. arr.sort { |a, b| a <=> b }

Solution

  1. Step 1: Understand sorting with spaceship operator

    The block compares two elements a and b. To sort descending, compare b to a.
  2. Step 2: Analyze each option

    arr.sort { |a, b| a <=> b } sorts ascending (a <=> b).
    arr.sort { |a, b| b <=> a } sorts descending (b <=> a).
    arr.sort_by { |x| x <=> 0 } misuses sort_by with spaceship operator.
    arr.sort { |a, b| a == b } returns boolean, invalid for sorting.
  3. Final Answer:

    arr.sort { |a, b| b <=> a } -> Option A
  4. Quick Check:

    Reverse order uses b <=> a [OK]
Hint: Reverse order: swap a and b in <=> [OK]
Common Mistakes:
  • Using a <=> b for descending sort
  • Misusing sort_by with spaceship operator
  • Returning boolean instead of integer in block
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard