Ich versuche, meine Anwendung auf ein Array von Zufallszahlen zu erhalten, und verwenden Sie alle möglichen Kombinationen von Rnd (1..8). Die Kombinationen sind ein Array von Indizes (Länge zwischen 2 und 99). Ich habe einen Testcode nachgeahmt, um zu zeigen, was ich bisher gesehen habe, und habe die Ergebnisse, nach denen ich suche, in die Liste aufgenommen.sequentiellen Countdown von Array-Indizes mit Min/Max-Nummern
dies erfolgreich zu tun, wir Funktion aussehen wollen ...
private static int[] updateArray(int[] array){
for (int index = array.length - 1 ; index >= 0; index--){
if (array[index] > 1){
array[index]--;
return array;
} else if (array[index] == 1 && index != 0) {
if (array[index - 1] != 1) {
array[index - 1]--;
array[index] = maxNum;
return array;
}
}
index--;
}
return array;
}
Hinweis: ich oben nicht mit dem richtigen Algorithmus werden kann.
Hier ist der vollständige Code führt zu kompilieren ...
public class Test {
private static final int maxNum = 8;
private static int[] updateArray(int[] array){
for (int index = array.length - 1 ; index >= 0; index--){
if (array[index] > 1){
array[index]--;
return array;
} else if (array[index] == 1 && index != 0) {
if (array[index - 1] != 1) {
array[index - 1]--;
array[index] = maxNum;
return array;
}
}
index--;
}
return array;
}
private static boolean isArrayIndexesAllOnes(int[] array){
for (int element: array){
if (element != 1){
return false;
}
}
return true;
}
private static void printArrayCountdown(int[] array){
boolean downToOne = false;
while (!downToOne){
array = updateArray(array);
printArray(array);
if (isArrayIndexesAllOnes(array)){
downToOne = true;
}
}
}
private static void printArray(int[] array){
for (int index = 0; index < array.length; index++){
if (index == 0) {
System.out.print("{" + array[index] + ",");
} else if (index > 0 && index < array.length - 1){
System.out.print(array[index] + ",");
} else {
System.out.println(array[index] + "}");
}
}
}
public static void main(String[] args) {
int[] firstArray = {maxNum,maxNum};
int[] secondArray = {maxNum,maxNum,maxNum};
printArrayCountdown(firstArray);
System.out.println();
System.out.println();
printArrayCountdown(secondArray);
}
}
Erwartete Ausgabe des firstArray
...
{8,7}
{8,6}
{8,5}
{8,4}
{8,3}
{8,2}
{8,1}
{7,8}
{7,7}
{7,6}
{7,5}
{7,4}
{7,3}
{7,2}
{7,1}
{6,8}
{6,7}
{6,6}
{6,5}
{6,4}
{6,3}
{6,2}
{6,1}
{5,8}
{5,7}
{5,6}
{5,5}
{5,4}
{5,3}
{5,2}
{5,1}
{4,8}
{4,7}
{4,6}
{4,5}
{4,4}
{4,3}
{4,2}
{4,1}
{3,8}
{3,7}
{3,6}
{3,5}
{3,4}
{3,3}
{3,2}
{3,1}
{2,8}
{2,7}
{2,6}
{2,5}
{2,4}
{2,3}
{2,2}
{2,1}
{1,8}
{1,7}
{1,6}
{1,5}
{1,4}
{1,3}
{1,2}
{1,1}
Erfolg!
aber mit einer Reihe von mehr als 2-Indizes (z .: secondArray
), erhalte ich diese Ausgabe:
{8,8,7}
{8,8,6}
{8,8,5}
{8,8,4}
{8,8,3}
{8,8,2}
{8,8,1}
{8,7,8}
{8,7,7}
{8,7,6}
{8,7,5}
{8,7,4}
{8,7,3}
{8,7,2}
{8,7,1}
{8,6,8}
{8,6,7}
{8,6,6}
{8,6,5}
{8,6,4}
{8,6,3}
{8,6,2}
{8,6,1}
{8,5,8}
{8,5,7}
{8,5,6}
{8,5,5}
{8,5,4}
{8,5,3}
{8,5,2}
{8,5,1}
{8,4,8}
{8,4,7}
{8,4,6}
{8,4,5}
{8,4,4}
{8,4,3}
{8,4,2}
{8,4,1}
{8,3,8}
{8,3,7}
{8,3,6}
{8,3,5}
{8,3,4}
{8,3,3}
{8,3,2}
{8,3,1}
{8,2,8}
{8,2,7}
{8,2,6}
{8,2,5}
{8,2,4}
{8,2,3}
{8,2,2}
{8,2,1}
{8,1,8}
{8,1,7}
{8,1,6}
{8,1,5}
{8,1,4}
{8,1,3}
{8,1,2}
{8,1,1}
{7,1,1}
{6,1,1}
{5,1,1}
{4,1,1}
{3,1,1}
{2,1,1}
{1,1,1}
Logic Fehler!
Stattdessen ist hier die erwartete Ausgabe ...
{8,8,7}
{8,8,6}
{8,8,5}
{8,8,4}
{8,8,3}
{8,8,2}
{8,8,1}
{8,7,8}
{8,7,7}
{8,7,6}
{8,7,5}
{8,7,4}
{8,7,3}
{8,7,2}
{8,7,1}
{8,6,8}
{8,6,7}
{8,6,6}
{8,6,5}
{8,6,4}
{8,6,3}
{8,6,2}
{8,6,1}
{8,5,8}
{8,5,7}
{8,5,6}
{8,5,5}
{8,5,4}
{8,5,3}
{8,5,2}
{8,5,1}
{8,4,8}
{8,4,7}
{8,4,6}
{8,4,5}
{8,4,4}
{8,4,3}
{8,4,2}
{8,4,1}
{8,3,8}
{8,3,7}
{8,3,6}
{8,3,5}
{8,3,4}
{8,3,3}
{8,3,2}
{8,3,1}
{8,2,8}
{8,2,7}
{8,2,6}
{8,2,5}
{8,2,4}
{8,2,3}
{8,2,2}
{8,2,1}
{8,1,8}
{8,1,7}
{8,1,6}
{8,1,5}
{8,1,4}
{8,1,3}
{8,1,2}
{8,1,1}
{7,8,8}
{7,8,7}
{7,8,6}
{7,8,5}
{7,8,4}
{7,8,3}
{7,8,2}
{7,8,1}
{7,7,8}
{7,7,7}
{7,7,6}
{7,7,5}
{7,7,4}
{7,7,3}
{7,7,2}
{7,7,1}
{7,6,8}
{7,6,7}
{7,6,6}
{7,6,5}
{7,6,4}
{7,6,3}
{7,6,2}
{7,6,1}
{7,5,8}
{7,5,7}
{7,5,6}
{7,5,5}
{7,5,4}
{7,5,3}
{7,5,2}
{7,5,1}
{7,4,8}
{7,4,7}
{7,4,6}
{7,4,5}
{7,4,4}
{7,4,3}
{7,4,2}
{7,4,1}
{7,3,8}
{7,3,7}
{7,3,6}
{7,3,5}
{7,3,4}
{7,3,3}
{7,3,2}
{7,3,1}
{7,2,8}
{7,2,7}
{7,2,6}
{7,2,5}
{7,2,4}
{7,2,3}
{7,2,2}
{7,2,1}
{7,1,8}
{7,1,7}
{7,1,6}
{7,1,5}
{7,1,4}
{7,1,3}
{7,1,2}
{7,1,1}
{6,8,8}
{6,8,7}
{6,8,6}
{6,8,5}
{ect...}
{1,1,1}
Irgendwelche Ideen, wie diese Art von Verhalten zu bekommen?
Hinweis: Ich möchte nicht tatsächlich ausdrucken {ect...}
, um nicht 512 Zeilen zu dieser Frage hinzufügen, habe ich nur etwa 400 Zeilen ausgeschnitten.
Thanks :)
Entfernen Sie den 'Index -' in Ihrem 'updateArray' und es sollte das Problem beheben. Nein? – anishthecoder
Schließen! aber nein, es springt zwischen "{8,1,1} und {7,8,1}" ... und '{7,1,1} und {6,8,1}' ... so weiter –