Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6761795
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T14:14:03+00:00 2026-05-26T14:14:03+00:00

I think it is basically an easy problem, but I’m stuck. My brain is

  • 0

I think it is basically an easy problem, but I’m stuck. My brain is blocked by this problem, so I hope you can help me.
I have 2 to N arrays of integers, like

{1,2,3,4,5}
{1,2,3,4,5,6}
{1,3,5}
.....

Now i want to have a list containing arrays of int[N] with every posibillity like

{1,1,1}
{1,1,3}
{1,1,5}
{1,2,1}
....
{1,3,1}
....
{2,1,1}
{2,1,3}
....
{5,6,5}

so there are 6*5*3 (90) elements in it.

Is there a simple algorithm to do it? I think the language didn’t matter but I prefer Java.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T14:14:03+00:00Added an answer on May 26, 2026 at 2:14 pm

    Thx for the help!
    I add a valid answer with the implementation in java for the next guy, who has the same problem. I also do it generic so u can have any CartesianProduct on any Object, not just ints:

    public class Product {
    
        @SuppressWarnings("unchecked")
        public static <T> List<T[]> getCartesianProduct(T[]... objects){
            List<T[]> ret = null;
            if (objects != null){               
                //saves length from first dimension. its the size of T[] of the returned list
                int len = objects.length;
                //saves all lengthes from second dimension
                int[] lenghtes = new int[len];
                // arrayIndex
                int array = 0;
                // saves the sum of returned T[]'s
                int lenSum = 1;
                for (T[] t: objects){
                    lenSum *= t.length;
                    lenghtes[array++] = t.length;
                }
                //initalize the List with the correct lenght to avoid internal array-copies
                ret = new ArrayList<T[]>(lenSum);
                //reusable class for instatiation of T[]
                Class<T> clazz = (Class<T>) objects[0][0].getClass();
                T[] tArray;
                //values stores arrayIndexes to get correct values from objects
                int[] values = new int[len];
    
                for (int i = 0; i < lenSum; i++){
                    tArray = (T[])Array.newInstance(clazz, len);
                    for (int j = 0; j < len; j++){
                        tArray[j] = objects[j][values[j]];
                    }
                    ret.add(tArray);
                    //value counting:
                    //increment first value
                    values[0]++;
                    for (int v = 0; v < len; v++){
                        //check if values[v] doesn't exceed array length
                        if (values[v] == lenghtes[v]){
                            //set it to null and increment the next one, if not the last
                            values[v] = 0;
                            if (v+1 < len){
                                values[v+1]++;
                            }
                        }
                    }
    
                }
            } 
            return ret;
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

This is something that I think would be very useful. Basically, I'd like there
I'm having a problem with &. Basically I haven't been able to escape this
I have a form where fields get added via JavaScript. This is fairly easy
This should be easy, but I cannot seem to get it right as I
I believe task I am trying to accomplish is fairly easy, but I have
I have one line of code which seems commented. Basically the thing I want
This is a kind of a random thing I need. Basically my setup is
Think: tiling my emacs window with eshells, a la xmonad. Is this possible? I
I think most people know how to do this via the GUI (right click
My web app, up until this point, has been fairly straight forward. I have

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.