Cartesian product of two or more lists: Difference between revisions
Content added Content deleted
(→{{header|Groovy}}: Changed to a "more natural" multiply operator overload) |
m (→{{header|Groovy}}: cosmetic changes) |
||
Line 857: | Line 857: | ||
<lang groovy>Iterable.metaClass.mixin CartesianCategory |
<lang groovy>Iterable.metaClass.mixin CartesianCategory |
||
println "\nCore Solution:" |
|||
println "[1, 2] × [3, 4] = ${[1, 2] * [3, 4]}" |
println "[1, 2] × [3, 4] = ${[1, 2] * [3, 4]}" |
||
println "[3, 4] × [1, 2] = ${[3, 4] * [1, 2]}" |
println "[3, 4] × [1, 2] = ${[3, 4] * [1, 2]}" |
||
println "[1, 2] × [] = ${[1, 2] * []}" |
println "[1, 2] × [] = ${[1, 2] * []}" |
||
println "[] × [1, 2] = ${[] * [1, 2]}" |
println "[] × [1, 2] = ${[] * [1, 2]}" |
||
println "\nExtra Credit:" |
|||
println "[1776, 1789] × [7, 12] × [4, 14, 23] × [0, 1] = ${[1776, 1789] * [7, 12] * [4, 14, 23] * [0, 1]}" |
println "[1776, 1789] × [7, 12] × [4, 14, 23] × [0, 1] = ${[1776, 1789] * [7, 12] * [4, 14, 23] * [0, 1]}" |
||
println "[1, 2, 3] × [30] × [500, 100] = ${[1, 2, 3] * [30] * [500, 100]}" |
println "[1, 2, 3] × [30] × [500, 100] = ${[1, 2, 3] * [30] * [500, 100]}" |
||
println "[1, 2, 3] × [] × [500, 100] = ${[1, 2, 3] * [] * [500, 100]}" |
println "[1, 2, 3] × [] × [500, 100] = ${[1, 2, 3] * [] * [500, 100]}" |
||
println "\nNon-Numeric Example:" |
|||
println "[John,Paul,George,Ringo] × [Emerson,Lake,Palmer] × [Simon,Garfunkle] = [" |
println "[John,Paul,George,Ringo] × [Emerson,Lake,Palmer] × [Simon,Garfunkle] = [" |
||
( ["John","Paul","George","Ringo"] * ["Emerson","Lake","Palmer"] * ["Simon","Garfunkle"] ).each { println "\t${it}," } |
( ["John","Paul","George","Ringo"] * ["Emerson","Lake","Palmer"] * ["Simon","Garfunkle"] ).each { println "\t${it}," } |
||
println "]"</lang> |
println "]"</lang> |
||
'''Output:''' |
'''Output:''' |
||
<pre> |
|||
⚫ | |||
Core Solution: |
|||
⚫ | |||
[3, 4] × [1, 2] = [[3, 1], [3, 2], [4, 1], [4, 2]] |
[3, 4] × [1, 2] = [[3, 1], [3, 2], [4, 1], [4, 2]] |
||
[1, 2] × [] = [] |
[1, 2] × [] = [] |
||
[] × [1, 2] = [] |
[] × [1, 2] = [] |
||
Extra Credit: |
|||
[1776, 1789] × [7, 12] × [4, 14, 23] × [0, 1] = [[1776, 7, 4, 0], [1776, 7, 4, 1], [1776, 7, 14, 0], [1776, 7, 14, 1], [1776, 7, 23, 0], [1776, 7, 23, 1], [1776, 12, 4, 0], [1776, 12, 4, 1], [1776, 12, 14, 0], [1776, 12, 14, 1], [1776, 12, 23, 0], [1776, 12, 23, 1], [1789, 7, 4, 0], [1789, 7, 4, 1], [1789, 7, 14, 0], [1789, 7, 14, 1], [1789, 7, 23, 0], [1789, 7, 23, 1], [1789, 12, 4, 0], [1789, 12, 4, 1], [1789, 12, 14, 0], [1789, 12, 14, 1], [1789, 12, 23, 0], [1789, 12, 23, 1]] |
[1776, 1789] × [7, 12] × [4, 14, 23] × [0, 1] = [[1776, 7, 4, 0], [1776, 7, 4, 1], [1776, 7, 14, 0], [1776, 7, 14, 1], [1776, 7, 23, 0], [1776, 7, 23, 1], [1776, 12, 4, 0], [1776, 12, 4, 1], [1776, 12, 14, 0], [1776, 12, 14, 1], [1776, 12, 23, 0], [1776, 12, 23, 1], [1789, 7, 4, 0], [1789, 7, 4, 1], [1789, 7, 14, 0], [1789, 7, 14, 1], [1789, 7, 23, 0], [1789, 7, 23, 1], [1789, 12, 4, 0], [1789, 12, 4, 1], [1789, 12, 14, 0], [1789, 12, 14, 1], [1789, 12, 23, 0], [1789, 12, 23, 1]] |
||
[1, 2, 3] × [30] × [500, 100] = [[1, 30, 500], [1, 30, 100], [2, 30, 500], [2, 30, 100], [3, 30, 500], [3, 30, 100]] |
[1, 2, 3] × [30] × [500, 100] = [[1, 30, 500], [1, 30, 100], [2, 30, 500], [2, 30, 100], [3, 30, 500], [3, 30, 100]] |
||
[1, 2, 3] × [] × [500, 100] = [] |
[1, 2, 3] × [] × [500, 100] = [] |
||
Non-Numeric Example: |
|||
[John,Paul,George,Ringo] × [Emerson,Lake,Palmer] × [Simon,Garfunkle] = [ |
[John,Paul,George,Ringo] × [Emerson,Lake,Palmer] × [Simon,Garfunkle] = [ |
||
[John, Emerson, Simon], |
[John, Emerson, Simon], |