Java :: Aufgabe #209
3 Lösungen

Durchnummerierung aller möglichen geordneten Ziehungsergebnisse bei 6 aus 49
Anfänger - Java
von hollst
- 06.09.2018 um 10:28 Uhr
Beim Lotto 6 aus 49 gibt es bekanntlich 13.983.816 mögliche (geordnete) Ziehungsergebnisse (49 über 6).
Schreibe ein Programm, das jeder dieser Möglichkeiten eine natürliche Zahl zuordnet, also
1 2 3 4 5 6 -> 1
1 2 3 4 5 7 -> 2
...
...
44 45 46 47 48 49 -> 13.983.816
Viel Spaß!
Schreibe ein Programm, das jeder dieser Möglichkeiten eine natürliche Zahl zuordnet, also
1 2 3 4 5 6 -> 1
1 2 3 4 5 7 -> 2
...
...
44 45 46 47 48 49 -> 13.983.816
Viel Spaß!
Lösungen:

public static void main(String[] args) { int[] zahlen = { 1, 2, 3, 4, 5, 6 }; long zaehler = 0; DecimalFormat nf = new DecimalFormat(); while (true) { zaehler++; zahlen[5] = zahlen[5] + 1; if (zahlen[5] > 49) { zahlen[4] = zahlen[4] + 1; zahlen[5] = zahlen[4] + 1; } if (zahlen[4] > 48) { zahlen[3] = zahlen[3] + 1; zahlen[4] = zahlen[3] + 1; zahlen[5] = zahlen[4] + 1; } if (zahlen[3] > 47) { zahlen[2] = zahlen[2] + 1; zahlen[3] = zahlen[2] + 1; zahlen[4] = zahlen[3] + 1; zahlen[5] = zahlen[4] + 1; } if (zahlen[2] > 46) { zahlen[1] = zahlen[1] + 1; zahlen[2] = zahlen[1] + 1; zahlen[3] = zahlen[2] + 1; zahlen[4] = zahlen[3] + 1; zahlen[5] = zahlen[4] + 1; } if (zahlen[1] > 45) { zahlen[0] = zahlen[0] + 1; zahlen[1] = zahlen[0] + 1; zahlen[2] = zahlen[1] + 1; zahlen[3] = zahlen[2] + 1; zahlen[4] = zahlen[3] + 1; zahlen[5] = zahlen[4] + 1; } if (zahlen[0] > 44) { break; } System.out.println(Arrays.toString(zahlen) + " -> " + nf.format(zaehler)); } System.out.println(zaehler); }

import java.util.Arrays; public class lotto { //Nummern der Lottozahl-Stelle int eins = 1; int zwei = 2; int drei = 3; int vier = 4; int fuenf = 5; int sechs = 6; // Zahl von der aus die Zahlenfolge fortgeführt wird int einsc = 1; int zweic = 1; int dreic = 2; int vierc = 3; int fuenfc = 4; int sechsc= 5; int zaehler = 1; void lottozieher() { /** Jede Schleife führt die die Zahl an der jeweiligen Stelle immer weiter fort. Anschließend wird die Mindestzahl der Stelle X um eins erhöht, um Verdopplungen zu vermeiden. */ for (eins = einsc; eins < 45; eins++) { zweic++; dreic = zweic; for (zwei = zweic; zwei < 46; zwei++) { dreic++; vierc = dreic; for (drei = dreic; drei < 47; drei++) { vierc++; fuenfc = vierc; for (vier = vierc; vier < 48; vier++) { fuenfc++; sechsc = fuenfc; for (fuenf = fuenfc; fuenf < 49; fuenf++) { sechsc++; for (sechs = sechsc; sechs < 50; sechs++) { int[] zahlen = {eins, zwei, drei, vier, fuenf, sechs}; // Hier wird bei jedem Durchlauf das Array neu gefüllt und anschließend ausgegeben System.out.println(Arrays.toString(zahlen) + zaehler); zaehler++; } } } } } } } }
Mit Sicherheit nicht die schönste Variante aber es funktioniert.
Und hier die Treiberklasse:

public class treiber { public static void main(String[] args) { // TODO Auto-generated method stub lotto lottofunktion = new lotto(); lottofunktion.lottozieher(); } }

public class LottozahlenCounterApp { public static void main(String[] args) { int counter = 1; for (int i1=1; i1<45; i1++) { for (int i2=i1+1; i2<46; i2++) { for (int i3=i2+1; i3<47; i3++) { for (int i4=i3+1; i4<48; i4++) { for (int i5=i4+1; i5<49; i5++) { for (int i6=i5+1; i6<50; i6++) { System.out.format("%d %d %d %d %d %d", i1, i2, i3, i4, i5, i6); System.out.println(" -> " + counter); counter++; } } } } } } } }