juz myslem ze sie uda i bedzie dobrze no ale nie przewidzialem czegos.
Zadanie : wypelnic tablice losowymi liczbami z zakresu ilosci wierszy (czyli
jak 5 wierszy to losuje od 1-5) ale tak aby sie nie powtarzaly ani w wierszach
ani w kolumnach.
Wymodzilem cos takiego ...
for (h=1 ; h<=poziom; h++){ // cyferki w poziomie czyli ilosc kolumn
for (i=1; i<=pion ; i++) { // cyferki w pionie czyli ilosc wierszy, z tych cyferek losujemy wartosci
start:
pozycja[h] = (rand()%pion)+1;
j=0;
l=0;
do {
j++;
l++;
// sprawdzam czy sie nie powtarza w kolumnie lub w wierszu wylosowana wartosc jak sie powtarza to losuje jeszce raz
if ( pozycja[h] == pozycja[i-j][h] || pozycja[h] == pozycja[h-l] )
goto start;
}
while ( j<=(i-1) || l<=(h-1) );
printf("pozycja[%d][%d]= %d\n", h,i, pozycja[h]);
}
}
tylko ze przy koncowych pozycjach tabelki jak juz w kolumnie wykorzystane sa
wszystkie wartosci z zakresu (czyli zostala nam juz tylko jedna mozliwa liczba
do wstawienia) a pech chcial ze w poprzedniej kolumnie juz taka byla uzyta to
sie wiesza bo nie jest dozwolone zeby w wierszu byly 2 takie same.
Myslicie da sie to moje rozumowanie jakos zmodyfikowac zeby bylo ok czy
zupelnieinaczej trudniej tzreba do tego podejsc?
Zaznaczam ze nie musi to byc superszybkie super optymalne itd, byle spelnilo zalozenia, bedzie to tylko raz wykorzystane do wysnaczenia takiej tableki z ktorej wartosci potrzebne sa mi do czeghos innego.. Jakies triki/chwyty troche zaburzajace losowosc rozniez dozwolone.
Z gory dzieki za wszelka pomoc.