Poziom rozszerzony Formuła 2023

Maj 2025

Materiały do pobrania

1_3.py
def przestaw2(n):
    w = 0
    p = 1
    while n > 0:
        r = n % 100
        a = r // 10
        b = r % 10

        if n > 9:
            w = p * a + 10 * p * b + w
        else:
            w = p * b + w
        n = n // 100
        p = p * 100
    return w

print(przestaw2(21))
1.py
def przestaw(n):
    r = n % 100
    a = r // 10
    b = r % 10
    n = n // 100
    # global licznik
    # licznik = 1 - Liczy liczbę wywołań funkcji przestaw(n)

    if n > 0:
        w = a + 10 * b + 100 * przestaw(n)
        # licznik += 1
    else:
        if a > 0:
            w = a + 10 * b
        else:
            w = b
    return w

print(przestaw(316498))
# print(licznik)
2_1.py
with open("symbole.txt") as f:
    for line in f:
        line = line.strip()
        if line == line[::-1]:
            print(line)
2_2.py
with open("symbole.txt") as f:
    tab = [list(line.strip()) for line in f]

licznik = 0

for i in range(1, len(tab) - 1):
    for j in range(1, len(tab[0]) - 1):
        znak = tab[i][j]

        if(
                tab[i - 1][j - 1] == znak and
                tab[i - 1][j] == znak and
                tab[i - 1][j + 1] == znak and
                tab[i][j - 1] == znak and
                tab[i][j] == znak and
                tab[i][j + 1] == znak and
                tab[i + 1][j - 1] == znak and
                tab[i + 1][j] == znak and
                tab[i + 1][j + 1] == znak
        ):
            licznik += 1
            print(i + 1, j+ 1)
print(licznik)
2_3.py
# znak o odpowiada cyfrze 0
# znak + odpowiada cyfrze 1
# znak * odpowiada cyfrze 2

wszystkie_liczby = []

with open("symbole.txt") as f:
    for line in f:
        line = line.strip()
        liczby = list(line)

        lista_trojkowa = []
        for liczba in liczby:
            if liczba == 'o':
                lista_trojkowa.append(0)
            elif liczba == '+':
                lista_trojkowa.append(1)
            elif liczba == '*':
                lista_trojkowa.append(2)

        liczba_trojkowa = "".join(map(str, lista_trojkowa))

        liczba = int(liczba_trojkowa, 3)
        wszystkie_liczby.append((liczba, line))

najwieksze = max(wszystkie_liczby)

print(najwieksze[0], najwieksze[1])


2_4.py
def na_trojkowy(n):
    wynik = ""

    if n == 0:
        return "0"
    while n > 0:
        wynik = str(n % 3) + wynik
        n = n // 3
    return wynik

# znak o odpowiada cyfrze 0
# znak + odpowiada cyfrze 1
# znak * odpowiada cyfrze 2

wszystkie_dziesietne = []
with open("symbole.txt") as f:
    for line in f:
        line = line.strip()
        liczby = list(line)

        lista_trojkowa = []
        for liczba in liczby:
            if liczba == "o":
                lista_trojkowa.append(0)
            elif liczba == "+":
                lista_trojkowa.append(1)
            elif liczba == "*":
                lista_trojkowa.append(2)
        liczba_trojkowa = "".join(map(str, lista_trojkowa))

        liczba_dziesietna = int(liczba_trojkowa, 3)
        wszystkie_dziesietne.append(liczba_dziesietna)

suma_wszystkich = sum(wszystkie_dziesietne)
print(suma_wszystkich)

suma_trojkowa = na_trojkowy(suma_wszystkich)
suma_trojkowa = list(suma_trojkowa)

suma_zapis_trojkowy = []
for cyfra in suma_trojkowa:
    if cyfra == "0":
        suma_zapis_trojkowy.append("o")
    elif cyfra == "1":
        suma_zapis_trojkowy.append("+")
    elif cyfra == "2":
        suma_zapis_trojkowy.append("*")

wynik_symbole = "".join(map(str, suma_zapis_trojkowy))
print(wynik_symbole)
3_1.py
import math

def wartosc_bezwzgledna(n): # Zamiast własnej funkcji można użyć abs()
    if n == 0:
        return 0
    elif n > 0:
        return n
    else:
        return n * -1

licznik = 0

with open("dron.txt") as f:
    for line in f:
        line = line.strip().split(" ")

        A = int(line[0])
        B = int(line[1])
        A = wartosc_bezwzgledna(A) # A = abs(A)
        B = wartosc_bezwzgledna(B) # B = abs(B)

        if B == 0:
            NWD = A
            if NWD > 1:
                licznik += 1

        elif B > 0:
            NWD = math.gcd(A, B)
            if NWD > 1:
                licznik += 1

print(licznik)
3_2.py
przesuniecia_A = []
przesuniecia_B = []
licznik_w_kwadracie = 0
with open("dron.txt") as f:
    for line in f:
        line = line.split()
        przesuniecia_A.append(int(line[0]))
        przesuniecia_B.append(int(line[1]))

    suma_A = 0
    lista_przesuniec_A = []
    for i in range(len(przesuniecia_A)):
        suma_A += przesuniecia_A[i]
        lista_przesuniec_A.append(suma_A)

    suma_B = 0
    lista_przesuniec_B = []
    for i in range(len(przesuniecia_B)):
        suma_B += przesuniecia_B[i]
        lista_przesuniec_B.append(suma_B)

    for i in range(len(lista_przesuniec_A)):
        x = lista_przesuniec_A[i]
        y = lista_przesuniec_B[i]

        if 0 < x < 5000 and 0 < y < 5000:
            licznik_w_kwadracie += 1

# a)
    print(licznik_w_kwadracie)

# b)
    punkty = list(zip(lista_przesuniec_A, lista_przesuniec_B))
    n = len(punkty)

    for i in range(n):
        x_B, y_B = punkty[i]

        for j in range(n):
            for k in range(j + 1, n):
                x_A, y_A = punkty[j]
                x_C, y_C = punkty[k]

                if x_B == (x_A + x_C) / 2 and y_B == (y_A + y_C) / 2:
                    print(punkty[j], punkty[i], punkty[k])
7_5.sql
SELECT DISTINCT Producent.nazwa FROM Producent
INNER JOIN Laziki ON Producent.kod_producenta = Laziki.kod_producenta
INNER JOIN Pomiary ON Laziki.nr_lazika = Pomiary.nr_lazika
INNER JOIN Obszary ON Pomiary.kod_obszaru = Obszary.kod_obszaru WHERE Obszary.nazwa_obszaru = "Arcadia" AND YEAR(Pomiary.data_pomiaru) = 2060;
1_1.txt
n                   Wynik działania funkcji przestaw    Liczba wywołań funkcji przestaw
316498              134689                              3
43657688            34566788                            4
154005710           145007501                           5
998877665544321     989786756453412                     8
1_2.txt
1. F
2. P
3. P
4. F
4.txt
D
wyniki2.txt
2_1:
++o+o++o+o++
+*+**++**+*+
*+o++**++o+*
*oo*o**o*oo*
+*++*oo*++*+
+o++oooo++o+

2_2:
3 399 5 546 2 630 11

2_3:
531246 *******o+*+o

2_4:
527865439 ++oo*+oo*++ooo*o*++
wyniki3.txt
3_1:
40

3_2:
a) 24
b) (5832, 1801) (7410, 1990) (8988, 2179)
wyniki6.txt
6_1:
41498,2 kg
3092,2943 kg

6_2:
Thaumasia

6_3:
174,5 kg
13/12/2035

6_4:
Nazwa obszaru         2033  2034  2035  2036  2037  2038
Aeolis                 5     7     11    2     13    5
Amazonis               23    20    21    29    20    25
Amenthes               10    5     9     12    10    10
Arabia                 9     10    15    8     10    7
Arcadia                7     7     11    14    5     9
Argyre                 4     4     3     3     10    7
Casius                 6     10    7     13    7     7
Cebrenia               4     5     1     1     1     1
Coprates               21    27    18    33    30    23
Diacria                2     3     2     3     3     2
Elysium                6     9     5     4     8     7
Eridania               8     19    23    20    22    16
Hellas                 1     4     2     1     3     4
Iapygia                47    51    67    53    51    33
Ismenius Lacus         6     4     5     3     9     13
Lunae Palus            11    11    9     10    10    3
Mare Acidalium         8     14    10    8     14    10
Mare Australe          2     3     2     3     2     2
Mare Boreum            14    19    8     13    14    12
Mare Tyrrhenum         2     5     3     2           2
Margaritifer Sinus     4     5     5     2     2     7
Memnonia               11    24    23    19    14    13
Noachis                13    11    11    25    17    14
Oxia Palus             3     3     1           4     2
Phaethontis            1     7     2     4     5     4
Phoenicis Lacus        25    22    25    22    15    18
Sinus Sabaeus          14    12    19    13    12    6
Syrtis Major           6     2     5     4     6     3
Tharsis                29    40    38    41    46    39
Thaumasia              2     2     4     1     2     3

6_5:
Ile razy stacja wysyłała ładunek na orbitę:	    30
Pierwszy transport na orbitę:	                29/05/2033
Ostatni transport na orbitę:	                01/09/2038
wyniki7.txt
7_1:
Mare Boreum

7_2:
Spirit 14 29/08/2066 25/07/2076

7_3:
Aeolis
Amazonis
Arabia
Elysium
Eridania
Mare Tyrrhenum
Sinus Sabaeus
Syrtis Major

7_4:
Mariner 14
Mariner 15
Mariner 20
Phoenix 13
Phoenix 3
Rosetta 1
Rosetta 8
Spirit 12
Spirit 7
Viking 17