How to check whether a number is positive/zero/negative without using conditional statements in Ruby

1 Answer

0 votes
n = 89

# create text labels for each possible case
result = [
  "negative",  # index 0
  "zero",      # index 1
  "positive"   # index 2
]

# compute an index without using any conditional statements
# (n > 0) becomes 1 if true, 0 if false
# (n < 0) becomes 1 if true, 0 if false
# index = 1 + (n > 0) - (n < 0)
index = 1 + (n > 0 ? 1 : 0) - (n < 0 ? 1 : 0)

# print the classification
puts result[index]

=begin
  Checks:

  n = -3
  (n > 0) = 0
  (n < 0) = 1
  index = 1 + 0 - 1 = 0
  result = negative

  n = 0
  (n > 0) = 0
  (n < 0) = 0
  index = 1 + 0 - 0 = 1
  result = zero

  n = 89
  (n > 0) = 1
  (n < 0) = 0
  index = 1 + 1 - 0 = 2
  result = positive
=end


=begin
run:

positive
=end

 



answered Jun 27 by avibootz

Related questions

...