java - Permutations of 4 integers in an array? -
i have write code takes input of 4 integers between 1 , 9 scanner object , combines them in way equal 24. although solution not elegant have managed compile number of if statements using variables, b, c, d , hoping store numbers entered user in array , swap values of a, b, c, d generate each possible combination of numbers
for example 1 paring might (a+b*c) - d = 24. i'd want switch values of a, b, c, d possible combinations , life of me can't figure out how this. have
public static void dagame(int a, int b, int c, int d) { int[] basearray = {a, b, c, d}; int [] keyarray = basearray.clone(); if(a > 9 || b > 9 || c > 9 || d > 9 || == 0 || b == 0 || c == 0 || d == 0){ system.out.println("you entered number greater 9 or enterered 0:"); main(null); system.exit(0); } for(int = 0; < 2; i++){ for(int j = 0; j < basearray.length; j++){ if(i == 1){ basearray = keyarray.clone(); int temp = basearray[0]; basearray[0] = basearray[3]; basearray[3] = temp; j = basearray.length - 1; } else if (i == 2){ basearray = keyarray.clone(); int temp = basearray[1]; basearray[1] = basearray[0]; basearray[0] = temp; temp = basearray[2]; basearray[2] = basearray[3]; basearray[3] = temp; j = basearray.length - 1; }else{ int temp = basearray[j]; basearray[j] = basearray[basearray.length - (1+j)]; basearray[basearray.length - (1+j)] = temp;
this misses lot of possible combinations
here 1 way it. use permutation
method on both arithmetic operations , numbers.
once have inputs the users turn them string:
void perm(std::string str, std::vector<std::string> &vec){ perm("", str, vec); } void perm(std::string prefix, std::string str, std::vector<std::string &vec){ int n = str.length(); if( n == 0 ) vec.push_back(str); for(int = 0; < n; i++){ perm(pre+ str[i], str.substr(0,i) + str.substr(i+1,n), vec); } }
now have permutation method lets have string:1234
input can permutate string 2134 3214 1243 ... etc
you can same thing arithmetic operations i.e +-*/
or can combine operation:
std::vector<std::string> vec; perm("1234" + "*-/+", vec);
now have vector permuations of numbers , operations. can prune list accept number operation number operations
. can done regex:
`\d[*|+|-|/]\d[*|+|-|/]\d[*|+|-|/]\d[*|+|-|/]` disregard last operation.
now have permutations strings
. create logic turn ints
note:
there wasted space here method should work.
Comments
Post a Comment