Witam,
szukam generatora liczb działającego jak.. licznik/stoper ale z pewnymi ograniczeniami. Piszę program, który rozwiązuje równania matematyczne, w których pod niewiadome podkłada różne cyfry (0-9). Próbowałem już kilku metod generowania liczb (Math.random/Collections.shuffle), i do krótkich równań, z max 5 niewiadomymi, działają. Jednak przy większej ilości traci to sens, po prostu program liczy, liczy i się nie może doliczyć :P
- Generowanie tylu cyfr jak długi jest string:
String EqOne = ABCD;
for (int i=3;i=EqOne.length();i++){
int[] zmienne = new int [i]
}
(pewnie nawet w tych 4 linijkach zrobiłem jakiś błąd :P)
2. Wygenerowane cyfry zapisane w tablicy, aby ich wartości mógł w prosty sposób "wyciągnąć":
int zOne = zmienne[0];
int zTwo = zmienne[1];
//itd.
- Generowanie cyfr 0-9 i NIE MOGĄ się powtarzać, czyli np:
zmienne = {0, 1, 2};
zmienne = {1, 0, 9};
zmienne = {3, 1, 5};
- Generowanie liczb rosnąco, czyli 0,1,2; 0,1,3;...;1,0,2; 1,0,3;...; 9,8,7;
Pozdrawiam!
ps. kombinuję z czymś takim:
int a, b, c, zOne, zTwo, zThree;
for ( a = 0; a<10; a++){
for ( b= 0; b<10; b++){
for ( c=0; c<10;c++){
zOne = a;
zTwo = b;
zThree = c;
}
}
}
I oczywiście są generowane cyfry takie jak potrzebuję, ale widzę tutaj przynajmniej 3 problemy :P:
- Cyfry się powtarzają (czyli jest zwykłe liczenie od 000 do 999)
- Nie wiem jak zatrzymać odliczanie w momencie kiedy zostanie znaleziona odpowiedź (np. abc=126, czyli np a=2, b=7, c=9)
- Mógłbym użyć takiej składanki do każdej opcji (czyli gdy string będzie równy 3, to wtedy 3x FOR, 4 - 4xFOR, itd), ale to trochę kiepskie rozwiązanie.
ps2. Problem 1 (powtarzające się cyfry) rozwiązany ;)
int a, b, c;
for ( a = 0; a<10; a++){
for ( b= 0; b<10; b++){
for ( c=0; c<10;c++){
if (a==b)continue;
if (a==b)break;
if (a==c)continue;
if (a==c)break;
if (c==b)continue;
if (c==b)break;
int zOne = a;
int zTwo = b;
int zThree = c;
System.out.println("a = " + zOne);
System.out.println("b = " + zTwo);
System.out.println("c = " + zThree);
}
}
}