Dobry wieczór,
mam pytanie odnośnie maturalnego zadania 2.2 z kwietnia 2020 roku z informatyki. Polegało ono na tym żeby napisać w pseudokodzie lub wybranym języku programowania (z niczego nowymi restrykcjami) algorytm, który odszukiwałby modę (wartość w tablicy, która występuję najczęściej) z danymi wejściowymi:
n - liczba całkowita większa od 2;
T[1, 2, ..., n] - tablica z n liczb całkowitych i dokładnie jedną modą.
Napisałem kod ale nie jestem pewien, czy otrzymałbym 5 punktów, czy 3 punkty.
def moda(T, n):
l = 1
while l < n:
for i in range(n):
m = 0
for j in range(n):
if T[i] == T[j]:
m+=1
if m == l:
moda = T[i]
break
l += 1
return moda
Przyznaję, kod jest dość prymitywny. Nie myślałem o złożoności czasowej (tu tj. sześcienna), bo nie była ona narzucona przez zadanie, jednak w schemacie punktowania 5 punktów otrzymało się w sposób następujący:
2p. - za zliczenie liczby wystąpień każdej liczby,
2p. - za znalezienie największej liczby wystąpień,
1p. - za znalezienie mody
Jak widać w załączonym kodzie, mój zlicza wszystkie możliwe (+1, co zrozumiałem po chwili namysłu nad moim kodem) liczby wystąpień, ale nie znajduje największej, tylko liczbę z największą liczbą wystąpień, czyli modę.
Chcę się dowiedzieć, czy dostałbym maks. liczbę punktów czy ucięliby mi te dwa punkty za to, że nie mój kod nie znajduje czegoś, o czym nie było mowy w zadaniu. Bardzo tego potrzebuję, ponieważ chcę wiedzieć, czy mam zwracać na to uwagę. Jeżeli mój kod w jakimś stopniu odbiega nawet od pozostałych kryteriów, proszę o tym powiedzieć, jeśli zajdzie Was ochota.
Pozdrawiam,
skalmarklarnet0291