Wszystkie trzy podpunkty to ten sam szkielet: pętla po wierszach pliku, split() na dwa słowa, funkcja licząca metrykę pary, trzymanie rekordu. Zmienia się wyłącznie metryka.
Arkusz CKE — maj 2026, rozszerzony
Szkielet
najlepszy = -1
wynik = None
with open('pary.txt') as f:
for linia in f:
s1, s2 = linia.split()
m = metryka(s1, s2) # ← tu wstawiasz logikę podpunktu
if m > najlepszy:
najlepszy = m
wynik = (s1, s2)
print(wynik, najlepszy)
Plik ma 500 wierszy, więc zwykłe przejście po nich wystarcza z ogromnym zapasem.
Zadanie 3.1 — największa różnica sum kodów ASCII
def metryka(s1, s2):
f1 = sum(ord(c) for c in s1)
f2 = sum(ord(c) for c in s2)
return abs(f1 - f2)
Kontrola na pary_przyklad.txt: eddcd eededcddceeecededcc 1403
Odpowiedź dla pary.txt:
gpeeazeugmvsbzwsrxfplqdbakoxxe lhpbmoirdm 2206
Zadanie 3.2 — największa suma wspólnych wystąpień liter
Wspólne wystąpienia litery to mniejsza z dwóch liczb wystąpień — ile razy litera jest w obu słowach jednocześnie.
from collections import Counter
def metryka(s1, s2):
c1, c2 = Counter(s1), Counter(s2)
return sum(min(c1[x], c2[x]) for x in set(s1) | set(s2))
Kontrola na pary_przyklad.txt: ccccdcedddddecde ccdcdddecc 10
Odpowiedź dla pary.txt:
aacbcccaacacbcabac cccccaaaacaccbabcba 18
Zadanie 3.3 — najdłuższy prefiksosufiks co najmniej 5
Prefiksosufiks to słowo będące początkiem jednego słowa i końcem drugiego. Sprawdzasz oba kierunki.
def najdluzszy_ps(s1, s2):
best = 0
for L in range(1, min(len(s1), len(s2)) + 1):
if s1[:L] == s2[-L:]:
best = L
if s2[:L] == s1[-L:]:
best = L
return best
with open('pary.txt') as f:
for linia in f:
s1, s2 = linia.split()
d = najdluzszy_ps(s1, s2)
if d >= 5:
print(s1, s2, d)
Kontrola na pary_przyklad.txt: ececdddeed dddeedd 6
Odpowiedź dla pary.txt — siedem par spełnia warunek:
bbbbaabbababbaaaa baaaaabaaabbbabab 5
aababbbababbbbbbaab bbbbaabbababababa 7
aaaababaaaabbbb aabbbbbabbbaaaa 6
bbbbabaaabbbabb aaababaabbbbbbba 5
ccccabacbba acbbabcbcbcbaa 5
caabbccabccc cabccccabbaac 6
abaacabcccccabbbc abbbcbbbbbcabaca 5
Gdzie tracisz punkty
- 3.3 nie pyta o jedną najlepszą parę. Pyta o wszystkie pary z progiem co najmniej 5. Jeśli odruchowo użyjesz szkieletu „trzymaj maksimum", oddasz jedną parę zamiast siedmiu. To najdroższy błąd w tym zadaniu.
maxzamiastminw 3.2. Wspólne wystąpienia to mniejsza z dwóch liczb, nie większa.- Prefiksosufiks mylony z palindromem albo ze wspólnym podsłowem. To początek jednego słowa pokrywający się z końcem drugiego — i sprawdzasz obie strony.
- Pominięty plik przykładowy. Zawsze odpal najpierw na
pary_przyklad.txti porównaj z wartością kontrolną z treści. Jeśli się nie zgadza, nie ruszasz na właściwy plik.
Ten sam wzorzec w innych arkuszach
Szkielet „wczytaj plik → przetwórz wiersz → trzymaj rekord" to najczęstszy wzorzec Pythona na tej maturze:
- maj 2025, zad. 3 — Dron — ten sam szkielet, w środku geometria zamiast napisów
- grudzień 2024, zad. 3 — liczby czterocyfrowe — znowu plik, znowu metryka na wiersz
Z tego samego arkusza: zad. 1 (rekurencja), zad. 2 (przeniesienia), zad. 5 (systemy liczbowe).
Jeden szkielet obsługuje większość zadań praktycznych z ostatnich pięciu lat. Rozpisany i przypisany do konkretnych arkuszy — Variant.


