У меня есть функция, которая делает продукт массива:
arrayProduct(l1,l2,l3) = [[a, b, c] |
a := l1[_]
b := l2[_]
c := l3[_]
]
Если у меня есть три массива, определенных следующим образом:
animals1 = ["hippo", "giraffe"]
animals2 = ["lion", "zebra"]
animals3 = ["deer", "bear"]
Тогда вывод arrayProduct(animals1, animals2, animals3)
будет:
[["hippo","lion","deer"],["hippo","lion","bear"],["hippo","zebra","deer"],["hippo","zebra","bear"],["giraffe","lion","deer"],["giraffe","lion","bear"],["giraffe","zebra","deer"],["giraffe","zebra","bear"]]
Если я могу гарантировать, что входные данные всегда будут списками, я могу создать функцию, которая будет делать то же самое, за исключением того, что она может принимать динамическое c число списков в качестве ввода вместо просто 3?
Я также исследую, было бы также возможно сделать это только с одним аргументом, содержащим все массивы в нем, в отличие от принятия нескольких аргументов. Например:
[["hippo", "giraffe"], ["lion", "zebra"], ["deer", "bear"], ["ostrich", "flamingo"]]
Любое понимание решения с любым из подходов будет приветствоваться.