import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Zadanie6_2 {
public static void main(String[] args) {
BufferedReader bf = null;
String nameOfFile = "dane.txt";
List<Integer> data = new ArrayList<>();
// wczytywanie liczb z pliku
try {
String line = null;
bf = new BufferedReader(new FileReader(nameOfFile));
do {
line = bf.readLine();
if (line != null) {
for (String l : line.split(" ")) {
data.add(Integer.valueOf(l)); // dodawanie osobno wszystkich liczb do listy
}
}
} while (line != null);
} catch (IOException ex) {
ex.getMessage();
}
// zad 6.2
int iterator;
int p;
int counter = 0;
boolean t;
for (int i = 0; i < data.size(); i += 320) {
t = true;
iterator = i + 320;
p = iterator ;
for (int j = i; j < iterator; j++) {
p--;
if (data.get(j) != data.get(p)) {
t = false;
break;
}
}
if (!t) counter++;
}
System.out.println(counter);
}
}
Tu jest mój kod do zadania 6.2
TREŚĆ
W pliku dane.txt znajduje się 200 wierszy. Każdy wiersz zawiera 320 liczb naturalnych zprzedziału od 0 do 255, oddzielonych znakami pojedynczego odstępu (spacjami). Przedstawiają one jasności kolejnych pikseli czarno-białego obrazu o wymiarach 320 na 200 pikseli (od 0 – czarny do 255 – biały).
Napisz program(y), który(e) da(dzą) odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku wyniki6.txt, a każdą odpowiedź poprzedź numerem oznaczającym odpowiednie zadanie.
Uwaga: plik przyklad.txt zawiera dane przykładowe spełniające warunki zadania (obraz ma takie same rozmiary). Odpowiedzi dla danych z pliku przyklad.txt są podane pod poleceniami.
ZAD 6.2
Podaj, ile wynosi najmniejsza liczba wierszy, które należy usunąć, żeby obraz miał pionową ośsymetrii. Obraz ma pionową oś symetrii, jeśli w każdym wierszu i-ty piksel od lewej strony przyjmuje tę samą wartość, co i-ty piksel od prawej strony, dla dowolnego 1 ≤ i ≤ 320.
Dla danych z pliku przyklad.txt wynikiem jest 3.
Nie mogę znaleźć błędu w tym rozwiązaniu, wczytałem wszystkie liczby jako osobne elementy tablicy, jeden wiersz to 320 liczb czyli porównywałem zerowy element tablicy z 319 i jeżeli będzie on różny wyłamywałem się z wewnętrznej pętli, zwiększając iterator zewnętrznej pętli o 320 i tak do końca, nie wiem czy pomysł jest dobry, w każdym razie nie działa, ponieważ wypisuje wynik 190 a powinien 3.