Mam tablicę array[110], w której znajdują się losowo wygenerowane bity (1 lub 0). Teraz chcę tą tablicę podzielić na 7 grup, które zaczynać się będą od kolejnej potęgi liczby 2 (czyli 1,2,4,8,16,32,64...), a następnie będzie następowały wypisanie 2 wartości, ominięcie 2 i tak aż do końca tablicy.
Przykład (w nawiasie nr indeksu w tablicy array[110]; indeksy numeruję od 1, a nie od 0 aby łatwiej wytłumaczyć:
1(1),1(2), 0(3), 0(4), 1(5), 1(6), 1(7), 0(8), 1(9), 1(10), 0(11)...,0(109).
Dla pierwszej grupy bitów zaczynam wypisywanie od indeksu 1 (ale jako, że traktowany jest w kodzie Hamminga jako nieznany, więc go pominę), a potem omijam 1, wypisuję 1 itd.:
1(1) <-unknown(?), 1(2)<-skip, 0(3)<-output, 0(4)<-skip, 1(5)<-output, 1(6)<-skip, 1(7)<-output, 0(8)<-skip, 1(9)<-output, 1(10)<-skip, 0(11)<-output.
Druga grupa (indeks 2):
1(2)<-unknown(?), 0(3)<-output, 0(4)<-skip, 1(5)<-skip, 1(6)<-output, 1(7)<-output, 0(8)<-skip, 1(9)<-skip, 1(10)<-output, 0(11)<-output
Trzecia grupa:
0(4)<-unknown(?), 1(5)<-output, 1(6)<-output, 1(7)<-output, 0(8)<-skip, 1(9)<-skip, 1(10)<-skip, 0(11)<-skip.
Czyli, w grupie 1 wypisywany jest 1 bit, omijany 1,. itd aż do końca tablicy. W 2 grupie, wypisywanych jest 2, omijanych 2, wypisywanych 2, omijanych 2 itd.
Ja takie wypisywanie zrobiłem przez utworzenie nowej tablicy int [] wypisz = new int { tu wpisałem numery indeksów które chcę wypisać }, a w pętli te wartości wypisałem.
int wypisz3 []= {5,6,7, 12,13,14,15, 20,21,22,23, 28,29,30,31, 36,37,38,39, 44,45,46,47,
52,53,54,55, 60,61,62,63, 68,69,70,71, 76,77,78,79, 84,85,86,87, 92,93,94,95, 100,101,102,103, 108,109};
for (int k : skip3)
{
System.out.print(tab[k] + "("+k+")"+",");
if (k%18==0)
{
System.out.println("");
}
}
Jak to wykonać z automatu w pętli? Czyli "wypisz 4 wartości, omiń 4, wypisz 4, omiń 4", a dla grupy np. o indeksie 16 = wypisz 16 bitów , omiń 16 bitów,wypisz 16, omiń 16 ,.itd.