Witam,
Program wydaje mi się być poprawny, jednak wynik różni się od poprawnego i nie otrzymałbym za niego żadnych punktów. Wynik różni się od właściwego o 320, czyli ilość danych w wierszu. Niestety nie mam pojęcia z czego to wynika.
Zadanie:
Zadanie 6. Piksele W pliku dane.txt znajduje się 200 wierszy. Każdy wiersz zawiera 320 liczb naturalnych z przedział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.
Zadanie 6.3. (0–3) Sąsiednie piksele to takie, które leżą obok siebie w tym samym wierszu lub w tej samej kolumnie. Dwa sąsiednie piksele nazywamy kontrastującymi, jeśli ich wartości różnią się o więcej niż 128. Podaj liczbę wszystkich takich pikseli, dla których istnieje przynajmniej jeden kontrastujący z nim sąsiedni piksel.
Wynik mojego programu: 1073
Poprawny wynik: 753
Program: https://pastebin.com/V4xdSBEK
Dane: https://pastebin.com/eTsPCp2W
Matura: https://cke.gov.pl/images/_EGZAMIN_MATURALNY_OD_2015/Arkusze_egzaminacyjne/2017/formula_od_2015/zasady_oceniania/MIN-R1-N.pdf
Odpowiedzi: https://cke.gov.pl/images/_EGZAMIN_MATURALNY_OD_2015/Arkusze_egzaminacyjne/2017/formula_od_2015/zasady_oceniania/MIN-R1-N.pdf
filename='dane.txt'
mylist=[]
counter=0
with open(filename) as file:
for line in file:
line=line.split(' ')
for i in range(len(line)):
line[i]=int(line[i])
mylist.append(line)
for i in range(200):
for j in range(320):
stop=0
try:
if mylist[i][j]-mylist[i+1][j]>128 or mylist[i][j]-mylist[i+1][j]<-128:
counter=counter+1
stop=1
except:
pass
if stop==0:
try:
if mylist[i][j] - mylist[i-1][j] > 128 or mylist[i][j] - mylist[i - 1][j] < -128:
counter = counter + 1
stop = 1
except:
pass
if stop==0:
try:
if mylist[i][j] - mylist[i][j+1] > 128 or mylist[i][j] - mylist[i][j+1] < -128:
counter = counter + 1
stop = 1
except:
pass
if stop==0:
try:
if mylist[i][j] - mylist[i][j-1] > 128 or mylist[i][j] - mylist[i][j-1] < -128:
counter = counter + 1
stop = 1
except:
pass
print(counter)