го булево

СodeWars, Golang решаем задачи #4

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:

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.

Examples:
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.

Задача 8 уровня сложности (на сайте кодварс 8 самый легкий, 1 самый сложный). Необходимо в зависимости от сочетания двух переменных возвращать истина или ложеь

В задаче дана функция принимающая две булевные переменные и возвращающая булево по определенным правилам

func Xor(a, b bool) bool {
  
}

Первая мысль была написать через if

func Xor(a, b bool) bool {
	res := true
	if a == b {
		res = false
	}
	return res
}

Все работает, все хорошо. Посмотрев 5 секунд на код он показался излишним и немного оптимизирован

func Xor(a, b bool) bool {
  return a != b
}

Решение минималистичное и работает быстрее. Переменных меньше, а значит и потребление памяти меньше. Конечно смотря на эту задачу никаких проблем с производительностью быть не может, но в случае высоконагруженных проектов это важно. Кстати это решение оказалось best practice. Небольшая тренировка на работу с булевыми переменными.


Опубликовано

в

,

от

Комментарии

Добавить комментарий