Skip to content

Latest commit

 

History

History
43 lines (39 loc) · 1.25 KB

8 kyu - Exclusive "or" (xor) Logical Operator.md

File metadata and controls

43 lines (39 loc) · 1.25 KB

Task

Exclusive "or" (xor) Logical Operator Overview In some scripting languages like PHP, there exists a logical operator (e.g. &&, ||, and, or, etc.) called the "Exclusive Or" (hence the name of this Kata). The exclusive or evaluates two booleans. It then returns true if exactly one of the two expressions are true, false otherwise. For example:

false xor false == false // since both are false true xor false == true // exactly one of the two expressions are true false xor true == true // exactly one of the two expressions are true true xor true == false // Both are true. "xor" only returns true if EXACTLY one of the two expressions evaluate to true. Task Since we cannot define keywords in Javascript (well, at least I don't know how to do it), your task is to define a function xor(a, b) where a and b are the two expressions to be evaluated. Your xor function should have the behaviour described above, returning true if exactly one of the two expressions evaluate to true, false otherwise.

My solution

def xor(a,b)
  if a == b
    return false
  elsif
    a or b == true
      return true
  else
    false
 end
end

Much better factored solution

def xor(a,b)
  a ^ b
end

Alternative

def xor(a,b)
  return a != b
end