Matura 2018: Zadanie 4

Zadania

W ramach projektu WEGA naukowcom udało się odczytać sygnały radiowe pochodzące z przestrzeni kosmicznej. Po wstępnej obróbce zapisali je do pliku sygnaly.txt.

W pliku sygnaly.txt znajduje się 1000 wierszy. Każdy wiersz zawiera jedno niepuste słowo złożone z wielkich liter alfabetu angielskiego. Długość jednego słowa nie przekracza 100 znaków.

Napisz program(y), który(e) da(dzą) odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku wyniki4.txt, a każdą odpowiedź poprzedź numerem oznaczającym odpowiednie zadanie.

Uwaga: Plik przyklad.txt zawiera dane przykładowe spełniające warunki zadania. Odpowiedzi dla danych z pliku przyklad.txt są podane pod pytaniami.

W każdym rozwiązaniu zakładam, że pliki z danymi maturalnymi są umieszczone w folderze Dane_PR2, znajdującym się „obok” pliku z rozwiązaniem do zadania 4.

Zadanie 4.1

Naukowcy zauważyli, że po złączeniu dziesiątych liter co czterdziestego słowa (zaczynając od słowa czterdziestego) otrzymamy pewne przesłanie. Wypisz to przesłanie.

Uwaga: Każde co czterdzieste słowo ma co najmniej 10 znaków.

Dla danych z pliku przyklad.txt wynikiem jest: NIECHCIMATURAPROSTABEDZIE

Rozwiązanie

1
2
3
4
5
6
7
8
9
x = open('Dane_PR2/sygnaly.txt')
y = x.readlines()
x.close()

res = ' '.join(i[9] for i in y[39::40])

x = open('wynik4.txt', 'w')
x.write(res)
x.close()

Zadanie 4.2

Znajdź słowo, w którym występuje największa liczba różnych liter. Wypisz to słowo i liczbę występujących w nim różnych liter. Jeśli słów o największej liczbie różnych liter jest więcej niż jedno, wypisz pierwsze z nich pojawiające się w pliku z danymi.

Dla danych z pliku przyklad.txt wynikiem jest:
AKLMNOPRSTWZA 12

Rozwiązanie

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
x = open('Dane_PR2/przyklad.txt')
y = x.readlines()
x.close()

max = ['', 0]
for i in y:
    tmp = len(set(i))
    if tmp > max[1]:
        max[0] = i
        max[1] = tmp
max[0] = max[0].rstrip('\n')
max[1] = len(set(max[0]))
odp = "{} {}".format(max[0], str(max[1]))

x = open('wynik4.txt', 'a')
x.write('\n')
x.write(odp)
x.close()

Zadanie 4.3

W tym zadaniu rozważmy odległość liter w alfabecie – np. litery A i B są od siebie oddalone o 1, A i E o 4, F i D o 2, a każda litera od siebie samej jest oddalona o 0. Wypisz wszystkie słowa, w których każde dwie litery oddalone są od siebie w alfabecie co najwyżej o 10. Słowa wypisz w kolejności występowania w pliku sygnaly.txt, po jednym w wierszu.

Na przykład CGECF jest takim słowem, ale ABEZA nie jest (odległość A – Z wynosi 25).

Dla danych z pliku przyklad.txt wynikiem jest :
AAAAAAAAAI
AAAAAAAAAE
AAAAAAAAAC
AAAAAAAAAH
AAAAAAAAAC
AAAAAAAAAI
AAAAAAAAAA
BB
AAAAAAAAAA
AAAAAAAAAA
AAAAAAAAAB
AAAAAAAAAE
AAAAAAAAAD
AAAAAAAAAI
AAAAAAAAAE

Rozwiązanie

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
x = open('Dane_PR2/sygnaly.txt')
y = x.readlines()
x.close()

def odleglosc(tekst):
    zbior = set(tekst)
    m = min(zbior)
    M = max(zbior)
    return ord(M)-ord(m)


x = open('wynik4.txt', 'w')
x.write('\n')
for i in y:
    if odleglosc(i.rstrip('\n')) <= 10:
        x.write(i)
x.close()