Given an integer n and an integer start.
Define an array nums where nums[i] = start + 2*i (0-indexed) and n == nums.length.
Return the bitwise XOR of all elements of nums.
 
Example 1:
Input: n = 5, start = 0
Output: 8
Explanation: Array nums is equal to [0, 2, 4, 6, 8] where (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8.
Where "^" corresponds to bitwise XOR operator.

Example 2:
Input: n = 4, start = 3
Output: 8
Explanation: Array nums is equal to [3, 5, 7, 9] where (3 ^ 5 ^ 7 ^ 9) = 8.
Example 3:
Input: n = 1, start = 7
Output: 7

Example 4:
Input: n = 10, start = 5
Output: 2

 
Constraints:

1 <= n <= 1000
0 <= start <= 1000
n == nums.length

Source: leetcode | Difficulty: EASY
Tags: Bit manipulation

Mathematics

Starter code: class Solution:
    def xorOperation(self, n: int, start: int) -> int:
        

Solutions:
class Solution:

	def xorOperation(self, n: int, start: int) -> int:
		if n == 0:
			return 0
		i = 1
		res = start
		while i != n:
			res = res ^ 2 * i + start
			i += 1
		return res


class Solution:

	def xorOperation(self, n: int, start: int) -> int:
		nums = [0] * n
		res = 0
		for i in range(n):
			nums[i] = start + 2 * i
			res = res ^ nums[i]
		return res


import functools

class Solution:

	def gen_array(self, n, s):
		for x in range(n):
			yield (s + x * 2)

	def xorOperation(self, n: int, start: int) -> int:
		return functools.reduce(lambda a, b: a ^ b, self.gen_array(n, start))


class Solution:

	def xorOperation(self, n: int, start: int) -> int:
		array = [start + 2 * i for i in range(n)]
		res = start
		for i in range(1, len(array)):
			res ^= array[i]
		return res


class Solution:

	def xorOperation(self, n: int, start: int) -> int:
		xor = 0
		for i in range(n):
			xor ^= start + 2 * i
		return xor


class Solution:

	def xorOperation(self, n: int, start: int) -> int:
		a = start
		for i in range(1, n):
			a = a ^ start + 2 * i
		return a


class Solution:

	def xorOperation(self, n: int, start: int) -> int:
		nums = []
		for i in range(n):
			nums.append(start + 2 * i)
		result = 0
		for n in nums:
			result = result ^ n
		return result