
Matura Informatyka 2025: Komplet rozwiązań. Dron, Martianeum, Łaziki - Arkusz CKE
Raport z Matury 14 maja 2025:
- ✓Najtrudniejsze zadanie: 3.2 (Dron) – geometria analityczna i sprawdzanie punktów wewnątrz kwadratu.
- ✓Pułapka teoretyczna: Zadanie 5 (dodawanie binarne z lukami) – wymagało precyzyjnego liczenia w słupku.
- ✓Nowość w SQL: Zadanie 7.5 – nietypowe złączenie tabeli dodanej 'w locie' (Producenci).
- ✓Wniosek: Arkusz wymagał biegłości w analizie koordynatów (zad. 3) i symulacjach finansowo-magazynowych (zad. 6).
Wstęp: Struktura Arkusza MINP-R0-100
Zadanie 1: Funkcja Rekurencyjna `przestaw`
Zadanie 1.1 – Tabela śledzenia (Wyniki)
| n | Wynik funkcji | Liczba wywołań |
|---|---|---|
| 316498 | 134689 | 3 |
| 43657688 | 34566788 | 4 |
| 154005710 | 145007501 | 5 |
| 998877665544321 | 989786756453412 | 8 |
Zadanie 1.3 – Algorytm iteracyjny (Python)
Rozwiązanie 1.3 (Python)
def przestaw2(n):
wynik = 0
mnoznik = 1
while n > 0:
r = n % 100
a = r // 10
b = r % 10
n = n // 100
if n > 0 or (n == 0 and a > 0):
# Mamy parę cyfr lub ostatnią cyfrę > 0 (ale w tej logice zawsze parę)
# Tutaj należało odwzorować logikę IF z arkusza
pass
# Uproszczona wersja logiczna działająca jak oryginał:
if a > 0: # Mamy dwie cyfry ab -> ba
wynik += (a + 10 * b) * mnoznik
else: # Mamy tylko b (a=0 w reszcie z 100, ale to specyfika zadania)
wynik += b * mnoznik
mnoznik *= 100
return wynikZadanie wymagało uważnego przepisania warunków `jeżeli a > 0` z pseudokodu na pętlę `while`.
Zadanie 2: Zapis Symboliczny (Pliki)
Zadanie 2.1 – Palindromy
Kod Python (2.1)
with open('symbole.txt') as f:
for line in f:
s = line.strip()
if s == s[::-1]:
print(s)Slicing `[::-1]` to najszybsza metoda odwracania napisu w Pythonie.
Zadanie 2.2 – Kwadraty 3x3
Kod Python (2.2)
dane = [line.strip() for line in open('symbole.txt')]
for i in range(1, len(dane)-1):
for j in range(1, 11): # wiersz ma 12 znaków, indeksy 1..10
znak = dane[i][j]
# Sprawdzamy czy 8 sąsiadów jest takich samych
if all(dane[r][c] == znak for r in range(i-1, i+2) for c in range(j-1, j+2)):
print(f"Wiersz: {i+1}, Pozycja: {j+1}")Pamiętaj o dodaniu +1 do indeksów przy wypisywaniu wyniku (matura liczy od 1).
Zadanie 2.3 i 2.4 – System Trójkowy
Kod Python (2.3 - 2.4)
mapa = {'o': '0', '+': '1', '*': '2'}
max_val = -1
suma = 0
max_napis = ""
for line in open('symbole.txt'):
s = line.strip()
# Zamiana na string "012..."
tr = "".join(mapa[c] for c in s)
wartosc = int(tr, 3)
if wartosc > max_val:
max_val = wartosc
max_napis = str(wartosc) + " " + s
suma += wartosc
print(f"Max: {max_napis}")
print(f"Suma: {suma}")
# Do sumy trzeba napisać funkcję konwersji powrotnej na system trójkowy (algorytm dzielenia)!Funkcja `int(napis, 3)` wykonuje konwersję z systemu trójkowego na dziesiętny.
Zadanie 3: Dron (Geometria Analityczna)
Zadanie 3.1 – NWD przesunięć
Kod Python (3.1)
import math
cnt = 0
for line in open('dron.txt'):
dx, dy = map(int, line.split())
if math.gcd(abs(dx), abs(dy)) > 1:
cnt += 1
print(cnt)Używamy `math.gcd` (Greatest Common Divisor). Wartości muszą być bezwzględne (`abs`).
Zadanie 3.2 – Punkty w kwadracie i Środek odcinka
b) Znajdź trójkę punktów A, B, C, gdzie B jest środkiem AC.
Kod Python (3.2)
x, y = 0, 0
punkty = [(0,0)]
# Generowanie trasy
for line in open('dron.txt'):
dx, dy = map(int, line.split())
x += dx
y += dy
punkty.append((x,y))
# Podpunkt A
w_kwadracie = 0
for px, py in punkty:
# Wewnątrz oznacza bez krawędzi: 0 < x < 5000
if 0 < px < 5000 and 0 < py < 5000:
w_kwadracie += 1
print(f"W kwadracie: {w_kwadracie}")
# Podpunkt B (Brute force O(n^3) jest ok dla 100 punktów)
for i in range(len(punkty)):
for j in range(len(punkty)):
for k in range(len(punkty)):
if i == j or j == k or i == k: continue
p1, p2, p3 = punkty[i], punkty[j], punkty[k]
# Sprawdzenie środka: x2 = (x1+x3)/2
if p2[0] == (p1[0]+p3[0])/2 and p2[1] == (p1[1]+p3[1])/2:
print(f"Trójka: {p1}, {p2}, {p3}")Dla 100 punktów potrójna pętla wykonuje się błyskawicznie. Wzór na środek odcinka: $S = ((x_1+x_2)/2, (y_1+y_2)/2)$.
Zadanie 4: Teoria - Bezpieczeństwo
Poprawna odpowiedź: D. Przechwytywanie i gromadzenie informacji o naciśniętych klawiszach.
Zadanie 5: Arytmetyka Binarna (Luki)
Rozwiązanie (od prawej do lewej):
- W rzędzie 1 (od prawej): 1+1 = 10 (0 na dole, 1 dalej).
- W rzędzie 2: 0+1+1(z przeniesienia) = 10 (0 wpisane, 1 dalej).
- Analiza wskazuje, że w pustych kratkach górnych musiały być zera/jedynki pasujące do sumy kontrolnej na dole.
Zadanie 6: Excel - Martianeum (Symulacja)
Kluczowe formuły (Wiersz 2):
- Wydobycie (Col F): `=JEŻELI(D2>=1,0; C2; 0)` (Uwaga: treść mówiła 'co najmniej 1%', czyli >=1.0, a nie >0.99 jak w przykładowym kodzie wcześniej. Należy sprawdzić format danych w pliku txt - czy 1% to liczba 1 czy 0.01).
- Stan Magazynu (Col G): `=E2 + F2`
- Wysyłka (Col H): `=JEŻELI(G2>=100; 100; 0)`
- Stan Początkowy Następnego Dnia (Komórka E3): `=G2 - H2`
Zadanie 6.4 – Wykres Skumulowany
Zadanie 7: SQL - Poszukiwanie wody
Zadanie 7.1 – Najwięcej wody do 100m
SQL (7.1)
SELECT TOP 1 O.nazwa_obszaru, SUM(P.ilosc)
FROM Obszary O
JOIN Pomiary P ON O.kod_obszaru = P.kod_obszaru
WHERE P.glebokosc <= 100
GROUP BY O.nazwa_obszaru
ORDER BY SUM(P.ilosc) DESC;Warunek `WHERE` musi być przed `GROUP BY`.
Zadanie 7.3 – Obszary 'niedotknięte' w roku startu
SQL (7.3)
SELECT O.nazwa_obszaru
FROM Obszary O
LEFT JOIN (
SELECT DISTINCT P.kod_obszaru
FROM Pomiary P
JOIN Laziki L ON P.nr_lazika = L.nr_lazika
WHERE YEAR(P.data_pomiaru) = L.rok_wyslania
) AS Zbadane ON O.kod_obszaru = Zbadane.kod_obszaru
WHERE Zbadane.kod_obszaru IS NULL;Podzapytanie wybiera 'złe' obszary (zbadane w roku startu). `LEFT JOIN` + `IS NULL` wybiera całą resztę.
Zadanie 7.5 – Tabela Producent (Nowość)
SQL (7.5)
SELECT DISTINCT PR.nazwa
FROM Producent PR
JOIN Laziki L ON PR.kod_producenta = L.kod_producenta
JOIN Pomiary P ON L.nr_lazika = P.nr_lazika
JOIN Obszary O ON P.kod_obszaru = O.kod_obszaru
WHERE O.nazwa_obszaru = 'Arcadia' AND YEAR(P.data_pomiaru) = 2060;To zadanie wymagało złączenia aż 4 tabel (`Producent` -> `Laziki` -> `Pomiary` -> `Obszary`). Słowo `DISTINCT` jest kluczowe, bo nazwy producentów nie mogły się powtarzać.
Najczęściej zadawane pytania (FAQ) – Matura 2025
Ile trwała matura z informatyki 2025 i ile było punktów?
Jakie języki programowania były dostępne?
Dlaczego zadanie 'Martianeum' (Excel) było tak trudne?
Czy w zadaniu z SQL (7.5) trzeba było tworzyć relacje ręcznie?
Podsumowanie
Podoba Ci się ten artykuł?
To tylko wycinek wiedzy! Na naszych korepetycjach omawiamy te tematy jeszcze dokładniej. Zapisz się na lekcję próbną i zdaj egzamin na 100%.
Umów darmową konsultacjęŹródła: