In this Kata, you will be given an array of arrays and your task will be to return the number of unique arrays that can be formed by picking exactly one element from each subarray. 

For example: `solve([[1,2],[4],[5,6]]) = 4`, because it results in only `4` possiblites. They are `[1,4,5],[1,4,6],[2,4,5],[2,4,6]`. 

```if:r
In R, we will use a list data structure.
So the argument for `solve` is a list of numeric vectors.
~~~
solve(list(c(1, 2), 4, c(5, 6)))
[1] 4
~~~
```

Make sure that you don't count duplicates; for example `solve([[1,2],[4,4],[5,6,6]]) = 4`, since the extra outcomes are just duplicates. 

See test cases for more examples.

Good luck!

If you like this Kata, please try:

[Sum of integer combinations](https://www.codewars.com/kata/59f3178e3640cef6d90000d5)

[Sum of array singles](https://www.codewars.com/kata/59f11118a5e129e591000134)

Source: codewars | Difficulty: EASY
Tags: Fundamentals

Starter code: def solve(arr):
	

Solutions:
from operator import mul
from functools import reduce

def solve(arr):
	return reduce(mul, map(len, map(set, arr)), 1)


def solve(arr):
	x = 1
	for a in arr:
		x *= len(set(a))
	return x


from functools import reduce

def solve(arr):
	return reduce(int.__mul__, (len(set(lst)) for lst in arr))


from functools import reduce

def solve(arr):
	return reduce(int.__mul__, map(len, map(set, arr)))


def solve(arr):
	res = 1
	for a in arr:
		res *= len(set(a))
	return res


import functools
from operator import mul

def solve(arr):
	return functools.reduce(mul, (len(set(i)) for i in arr))


def solve(arr):
	from functools import reduce
	return reduce(lambda a, b: a * b, [len(set(a)) for a in arr])


from operator import mul
from functools import reduce

def solve(arr):
	return reduce(mul, (len(set(xs)) for xs in arr), 1)