Bird
Raised Fist0
Rubyprogramming~10 mins

Spaceship operator (<=>) in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to compare two numbers using the spaceship operator.

Ruby
result = 5 [1] 3
Drag options to blanks, or click blank then click option'
A<=>
B==
C>
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using == instead of the spaceship operator.
Using > or < which only return boolean values.
2fill in blank
medium

Complete the code to compare two strings alphabetically using the spaceship operator.

Ruby
result = 'apple' [1] 'banana'
Drag options to blanks, or click blank then click option'
A<
B==
C>=
D<=>
Attempts:
3 left
💡 Hint
Common Mistakes
Using == which only checks equality.
Using < which returns boolean, not -1, 0, or 1.
3fill in blank
hard

Fix the error in the code by replacing the incorrect operator with the spaceship operator.

Ruby
result = 10 [1] 10
Drag options to blanks, or click blank then click option'
A==
B<=>
C=
D!=
Attempts:
3 left
💡 Hint
Common Mistakes
Using == which returns boolean true or false.
Using = which is assignment, not comparison.
4fill in blank
hard

Fill both blanks to create a hash that maps numbers to their comparison results with 7 using the spaceship operator.

Ruby
comparisons = Hash[[5, 7, 9].map { |num| [num, num [1] 7] if num [2] 7 }.compact]
Drag options to blanks, or click blank then click option'
A<=>
B==
C>
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using == instead of <=> in the hash values.
Using == or <=> in the filter condition incorrectly.
5fill in blank
hard

Fill all three blanks to create a hash that maps words to their length comparison with 4 using the spaceship operator and a condition.

Ruby
result = Hash[['cat', 'house', 'dog'].map { |word| [word, word.length [1] 4] if word.length [2] 4 and word [3] 'dog' }.compact]
Drag options to blanks, or click blank then click option'
A<=>
B>
C!=
D==
Attempts:
3 left
💡 Hint
Common Mistakes
Using == instead of <=> for length comparison.
Using == instead of != to exclude 'dog'.

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