Poziom rozszerzony Formuła 2023

Czerwiec 2026

Materiały do pobrania

1_1.py
def Szyfr(T, k):
    n = len(T)
    S = [""] * n

    a = n // k
    c = n - a
    for i in range(1, n+1):
        if i % k == 0:
            b = i // k
            S[n - a + b - 1] = T[i - 1]
        else:
            S[c - 1] = T[i - 1]
            c -= 1

    return "".join(S)

print(Szyfr("defragmentacja", 3)) # Wynik: ajatemaredfgnc
print(Szyfr("tropikalny", 5)) # Wynik: nlakportiy
1_2.py
def Szyfr(T, k):
    n = len(T)
    S = [""] * n

    a = n // k
    c = n - a
    for i in range(1, n+1):
        if i % k == 0:
            b = i // k
            S[n - a + b - 1] = T[i - 1]
        else:
            S[c - 1] = T[i - 1]
            c -= 1

    return "".join(S)

print(Szyfr("defragmentacja", 1)) # Wynik: defragmentacja
print(Szyfr("tropikalny", 1)) # Wynik: tropikalny

# Podaj wartość klucza k, dla której zawsze szyfrogram i tekst jawny są identyczne: k = 1
1_3.py
def Szyfr(T, k):
    n = len(T)
    S = [""] * n

    a = n // k
    c = n - a
    for i in range(1, n+1):
        if i % k == 0:
            b = i // k
            S[n - a + b - 1] = T[i - 1]
        else:
            S[c - 1] = T[i - 1]
            c -= 1

    return "".join(S)

print(Szyfr("defragmentacja", 15)) # Wynik: ajcatnemgarfed
print(Szyfr("defragmentacja", 16)) # Wynik: ajcatnemgarfed
print(Szyfr("defragmentacja", 17)) # Wynik: ajcatnemgarfed

# Odp: k > n
3_1.py
with open("dane.txt") as f:
    napis = f.readline().strip()

wynik = 0

for i in range(0, len(napis) - 2, 2):
    if napis[i:i+2] == napis[i+2:i+4]:
        wynik += 1

print(wynik)
3_2.py
def czy_pierwsza(n):
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

with open("dane.txt") as f:
    napis = f.read().strip()

n = len(napis)
wynik = ""

for dlugosc in range(n, 1, -2):
    for i in range(0, n - dlugosc + 1, 2):
        fragment = napis[i:i + dlugosc]

        if czy_pierwsza(sum(ord(c) for c in fragment)):
            wynik = fragment
            break

    if wynik:
        break

print(wynik)
3_3.py
with open("dane.txt") as f:
    napis = f.read().strip()

liczniki = {}
for i in range(0, len(napis), 2):
    para = napis[i:i+2]

    if para in liczniki:
        liczniki[para] += 1
    else:
        liczniki[para] = 1

posortowane = sorted(liczniki, key=lambda x: liczniki[x])

wynik = ""

for para in posortowane:
    wynik += para

print(wynik)
4_1.py
miasta = []
with open("mapa.txt") as f:
    for line in f:
        line = line.strip().split()
        miasta.append(line)

najwieksza = 0
numer = 0

for i in range(len(miasta)):
    populacja = int(miasta[i][2])

    if populacja > najwieksza:
        najwieksza = populacja
        numer = i + 1

print(numer, najwieksza)
4_2.py
miasta = []
with open("mapa.txt") as f:
    for line in f:
        line = line.strip().split()
        miasta.append(line)

najmniejsza = 5000

for i in range(len(miasta)):
    for j in range(i + 1, len(miasta)):
        x1 = int(miasta[i][0])
        y1 = int(miasta[i][1])
        x2 = int(miasta[j][0])
        y2 = int(miasta[j][1])

        odleglosc = abs(x1 - x2) + abs(y1 - y2)

        if odleglosc < najmniejsza:
            najmniejsza = odleglosc

print(najmniejsza)

for i in range(len(miasta)):
    for j in range(i+1, len(miasta)):
        x1 = int(miasta[i][0])
        y1 = int(miasta[i][1])
        x2 = int(miasta[j][0])
        y2 = int(miasta[j][1])

        odleglosc = abs(x1 - x2) + abs(y1 - y2)

        if odleglosc == najmniejsza:
            print(i + 1, j + 1)
4_3.py
miasta = []
with open("mapa.txt") as f:
    for line in f:
        line = line.strip().split()
        miasta.append(line)

najwiekszy_bok = 0
najwieksza_ludnosc = 0

for bok in range(1, 251):
    suma = 0

    for i in range(len(miasta)):
        x = int(miasta[i][0])
        y = int(miasta[i][1])
        populacja = int(miasta[i][2])

        if x > 0 and x < bok and y > 0 and y < bok:
            suma += populacja

    gestosc = suma / (bok * bok)

    if gestosc > 2:
        najwiekszy_bok = bok
        najwieksza_ludnosc = suma

print(najwiekszy_bok, najwieksza_ludnosc)
8_4.sql
SELECT Kategorie.Nazwa_Kategorii, COUNT(Oceny.Id_Oceny)
FROM Kategorie INNER JOIN Oceny
ON Kategorie.Id_Kategorii = Oceny.Id_Kategorii
GROUP BY Kategorie.Nazwa_Kategorii;
8_5.sql
SELECT TOP 1 Oceny.Id_Ucznia FROM Oceny INNER JOIN Kategorie
ON Oceny.Id_Kategorii = Kategorie.Id_Kategorii
WHERE Oceny.Ocena = 6 AND Kategorie.Nazwa_kategorii = "sprawdzian"
GROUP BY Oceny.Id_Ucznia ORDER BY COUNT(Oceny.Id_Oceny) DESC;
5.md
6.md
wyniki3.txt
3_1:
17

3_2:
INRZWZASEKYPYPYIEKDLEKODASINWNWNUPJNINEKYPDLUZASJNINYPUPWZRZJNILRZRZILNYUZWZRZZAZABYASASWZUZURUZJNDLDLEKURYIUPWNWZILWZJNWNNYEKUPASYIDLILWZEKIERZEKWZUZUZYIILINASINUZRAZAILRZWNYPURODWNINZAEKEKYPYIEKILNYWNNYDLRZDLILWZDLYPZAIEUZILRZZAUZURININODDLINILEKLOYIYIDLASILYIUZDLJNWZRZOZEKASRZINJNUZEKWZODASASUZDLURURDLRZODZALOWZRARARZZAINYPRZRAINOZRZZAURYPURYIRZEKINUZURYPJNINEKODZAUPURUPYPWZILASUZUZRZEKILRAEKODLOINNYJNODUZJNILILWNILYPASEKLOINURODEKILILASUPIEOZILZALTWZILUZYPWZJNEKINDLRZRARZUZINDLWNIELTLODLJNINILYPASYPZAILASDLDLJNRZINUZILJNRAINYIRAWZODNY

3_3:
BYLTOZIELONYUPRAWNYIURODZAJNYPASWZDLUZRZEKINIL
wyniki4.txt
4_1:
254 2483

4_2:
2
30 170
120 176
422 637
426 599
737 778

4_3:
114 26078
wyniki7.txt
7_1:
6399
16/08/2023

7_2:
29

7_3:
Miesiąc	    Suma z Liczba_kg
Styczeń	    91769
Luty	    86776
Marzec	    99704
Kwiecień	78678
Maj	        98806
Czerwiec	86931
Lipiec	    88897
Sierpień	105548
Wrzesień	89532
Październik	83961
Listopad	96910
Grudzień	80636

7_4:
Największy stan magazynu:	11224 kg
Data:	                    25/08/2023

7_5:
3126
wyniki8.txt
8_1:
Plec	ŚredniaOfOcena
k	    3.57
m	    3.73

8_2:
N10
N22

8_3:
Miesiac	Ocena	LiczbaWystapien
01	    1	    74
02	    4	    21
03	    3	    42
04	    1	    46
05	    6	    22
06	    6	    8
09	    1	    44
10	    1	    66
11	    1	    107
12	    6	    109