Create a function

```python
has_two_cube_sums(n)
```

which checks if a given number `n` can be written as the sum of two cubes in two different ways: `n = a³+b³ = c³+d³`.
All the numbers `a`, `b`, `c` and `d` should be different and greater than `0`.

E.g. 1729 = 9³+10³ = 1³+12³.

```python
has_two_cube_sums(1729); // true
has_two_cube_sums(42);   // false
```

Source: codewars | Difficulty: EASY
Tags: Fundamentals

Starter code: def has_two_cube_sums(n):
	

Solutions:
def has_two_cube_sums(n):
	cubic_list = [i ** 3 for i in range(1, int(n ** (1.0 / 3.0)) + 1)]
	return sum([n != 2 * c and n - c in cubic_list for c in cubic_list]) > 3


def has_two_cube_sums(n):
	x = 0
	for a in range(int(n ** 0.35)):
		for b in range(a, int(n ** 0.35)):
			if a ** 3 + b ** 3 == n:
				x += 1
			if x > 1:
				return True
	return False


from itertools import combinations
s = {a ** 3 + b ** 3 for (a, b) in combinations(range(1, 1000), 2)}
s.discard(19 ** 3 + 34 ** 3)

def has_two_cube_sums(n):
	return n in s


def has_two_cube_sums(n):
	if n == 1:
		return False
	high = int(n ** (1 / 3.0))
	low = int((n / 2) ** (1 / 3.0))
	return sum((abs(y - round(y)) < 1e-08 for y in [(n - x ** 3) ** (1 / 3.0) for x in range(low, high + 1)])) >= 2


def has_two_cube_sums(n):
	return len([[y, z] for y in range(1, int(n ** (1 / 3)) + 1) for z in [x for x in range(1, int(n ** (1 / 3)) + 1)] if y != z and y ** 3 + z ** 3 == n]) >= 4


has_two_cube_sums = lambda n: sum([i[0] ** 3 + i[1] ** 3 == n for i in __import__('itertools').permutations(range(1, int(n ** (1.0 / 3.0)) + 1), 2)]) >= 4