Matura 2018: Zadanie 4
Arkusz i pliki wymieniane w tym zadaniu można pobrać ze strony CKE.
Bezpośredni link do plików znajduje się tutaj.
Zadanie
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 | 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() |