Poziom rozszerzony Formuła 2023

Maj 2023

Materiały do pobrania

2_1.py
def liczba_blokow(n):
    b = 1
    poprzedni = n % 2
    n //= 2

    while n > 0:
        obecny = n % 2
        if obecny != poprzedni:
            b += 1
        poprzedni = obecny
        n //= 2

    return b


print(liczba_blokow(67))
print(liczba_blokow(245))
2_2.py
wynik = 0
def licz_bloki(n):
    liczba_blokow = 1
    liczba_binarna = list(n)
    for i in range(1, len(liczba_binarna)):
        if liczba_binarna[i] != liczba_binarna[i-1]:
            liczba_blokow += 1
    return liczba_blokow

with open("bin.txt") as f:
    for line in f:
        n = line.strip()
        if licz_bloki(n) <= 2:
            wynik += 1

print(wynik)
2_3.py
liczby_dziesietne = []

with open("bin.txt") as f:
    for line in f:
        liczba = line.strip()
        liczby_dziesietne.append(int(liczba, 2))

print(bin(max(liczby_dziesietne))[2:])
3_1.py
liczby = []
with open("pi.txt") as f:
    for line in f:
        liczba = line.strip()
        liczby.append(liczba)

licznik = 0

for i in range(len(liczby) - 1):
    fragment = int(liczby[i] + liczby[i+1])

    if fragment > 90:
        licznik += 1

print(licznik)
3_2.py
cyfry = []
with open("pi.txt") as f:
    for line in f:
        cyfry.append(line.strip())

zliczenia = [0] * 100

for i in range(len(cyfry) - 1):
    fragment = int(cyfry[i] + cyfry[i+1])
    zliczenia[fragment] += 1

min_wystapienia = min(zliczenia)
max_wystapienia = max(zliczenia)

min_fragment = zliczenia.index(min_wystapienia)
max_fragment = zliczenia.index(max_wystapienia)

print(min_fragment, min_wystapienia)
print(max_fragment, max_wystapienia)
3_3.py
cyfry = []
with open("pi.txt") as f:
    for line in f:
        cyfry.append(int(line.strip()))

def czy_rosnaco_malejacy(c):
    for k in range(2, 5):
        pierwszy = c[:k]
        drugi = c[k:]

        rosnacy = all(pierwszy[j] < pierwszy[j+1] for j in range(len(pierwszy) - 1))
        malejacy = all(drugi[j] > drugi[j+1] for j in range(len(drugi) - 1))

        if rosnacy and malejacy:
            return True

    return False

licznik = 0
for i in range(len(cyfry) - 5):
    ciag_6 = cyfry[i : i+6]
    if czy_rosnaco_malejacy(ciag_6):
        licznik += 1

print(licznik)
3_4.py
cyfry = []
with open("pi.txt") as f:
    for line in f:
        cyfry.append(line.strip())

n = len(cyfry)

inc = [1] * n
for i in range(1, n):
    if int(cyfry[i]) > int(cyfry[i-1]):
        inc[i] = inc[i-1] + 1

dec = [1] * n
for i in range(n-2, -1, -1):
    if int(cyfry[i]) > int(cyfry[i+1]):
        dec[i] = dec[i+1] + 1

max_dlugosc = 0
najlepszy_start = -1

for i in range(n-1):
    if inc[i] >= 2 and dec[i+1] >= 2:
        dlugosc = inc[i] + dec[i + 1]
        if dlugosc > max_dlugosc:
            max_dlugosc = dlugosc
            najlepszy_start = i - inc[i] + 1

wiersz_startowy = najlepszy_start + 1
znalaziony_ciag = "".join(cyfry[najlepszy_start : najlepszy_start + max_dlugosc])

print(wiersz_startowy)
print(znalaziony_ciag)
7_5.sql
SELECT SUM(Sklep.cena)
FROM Gry INNER JOIN Sklep On Gry.id_gry = Sklep.id_gry
WHERE Gry.kategoria = 'logiczna' AND Sklep.promocja = TRUE;
4.md
5.MD
wyniki2.txt
2_2:
10

2_3:
1110100011100011100
wyniki3.txt
3_1:
902

3_2:
88 80
65 124

3_3:
214

3_4:
2781
014576540
wyniki6.txt
6_1:
Miesiąc	    Maliny	Truskawki	Porzeczki
May	        9238	9287	3309
Czerwiec	9485	8916	5081
Lipiec	    11592	11339	10567
Sierpień	11045	11386	11078
Wrzesień	6532	7476	6355

6_2:
19

6_3:
Ile malinowo-truskawkowych:	    72
Ile malinowo-porzeczkowych:	    41
Ile truskawkowo-porzeczkowych:	40

6_4:
Malinowo-Truskawkowa:	    29732
Malinowo-Porzeczkowa:	    18008
Truskawkowo-Porzeczkowa:	18382
wyniki7.txt
7_1:
K2

7_2:
5 sekund	            8.16
Avalone	                8.25
Colt Express	        7.54
Jenga	                8.16
Koncept	                8.37
Mamy szpiega	        8.22
Przebiegle wielblady	7.73
Sushi Go	            8.07
Swiatowy Konflikt       7.80
Szeryf z Nottingham	    7.88

7_3:
334

7_4:
juniorzy	6	K2
seniorzy	24	K2
weterani	28	Robinson Crusoe
juniorzy	6	Terraformacja Marsa