- Szczegóły
-
Kategoria: Matura 2017
-
Opublikowano: niedziela, 28, maj 2017 18:25
-
InM
-
Odsłony: 5246
Zadanie programistyczne. W danych jest 64 tysiące liczb z zakresu 0-255 opisujących jasność kolejnych pikseli w obrazie o rozdzielczości 320x200. Liczby te są ułożone po 320 w wierszu. Otwierając ten plik z danymi w notatniku Windows (z wyłączonym zwijaniem wierszy) można znaleźć kilka krótszych wierszy. Jest to jednak błąd notatnika, który mimo wyłączonego zwijania wierszy gdy napotka odpowiednio długi wiersz i tak go zawija.
Zadanie 6.1 (2 punkty)
W zadaniu należy znaleźć najjaśniejszy i najciemniejszy punkt obrazu. Są to odpowiednio największa i najmniejsza liczba z 64 tysięcy danych. Poprawnym wynikiem jest 221 i 7.
Dwa wyniki, dwa punkty. Po jednym za każdy i chyba nie ma innej możliwości przydziału punktów.
Zadanie 6.2 (2 punkty)
W tym zdaniu należało znaleźć liczbę wierszy, które należy usunąć aby obraz był symetryczny względem pionowej osi symetrii. Wierszami tymi są zatem te, które nie są palindromami. Prosty "standardowy" program maturalny i otrzymujemy 51 palindromów, czyli wynikiem jest 149.
Jedna liczba - 2 punkty. Chyba nie ma rozsądnej liczby policzonej z jakimś małym błędem.
Zadanie 6.3 (3 punkty)
Zliczamy piksele kontrastujące. Cały obraz można podzielić na 9 obszarów, z których każdy należy inaczej rozpatrywać:
- lewy górny róg - 1 punkt - posiada dwa sąsiednie: na prawo i poniżej
- prawy górny róg - 1 punkt - posiada dwa sąsiednie punkty: na lewo i poniżej
- lewy dolny róg - 1 punkt - posiada dwa sąsiednie: na prawo i powyżej
- prawy dolny róg - 1 punkt - posiada dwa sąsiednie punkty: na lewo i powyżej
- górna krawędź bez rogów - 318 punktów - posiadają po trzy sąsiednie: na lewo, na prawo i poniżej
- dolna krawędź bez rogów - 318 punktów - posiadają po trzy sąsiednie: na lewo, na prawo i powyżej
- lewa krawędź bez rogów - 198 punktów - posiadają po trzy sąsiednie: na prawo, poniżej i powyżej
- prawa krawędź bez rogów - 198 punktów - posiadają po trzy sąsiednie: na lewo, poniżej i powyżej
- cała reszta - 62964 punkty - posiadają cztery sąsiednie
Prościej jednak każdy punkt sprawdzać w zależności od położenia:
- jeżeli nie leży na górnej krawędzi - powyżej
- jeżeli nie leży na dolnej krawędzi - poniżej
- jeżeli nie leży na lewej krawędzi - na prawo
- jeżeli nie leży na prawej krawędzi - na lewo
W każdym sposobie sprawdzania jeżeli przynajmniej jedno sprawdzanie dla danego punktu da wynik pozytywny należy zaliczyć ten punkt do punktów kontrastujących. Pod żadnym pozorem nie należy jednak zaliczać kilkakrotnie jednego punktu do punktów kontrastujących. Niezależnie od sposobu obliczania liczby punktów kontrastujących powinniśmy otrzymać 753 takie punkty.
Jednoliczbowy wynik i 3 punkty umożliwiają przydzielanie punktów za pewne błędne rozwiązania. Te błędy muszą być jednak konsekwentne. Można sobie wyobrazić potencjalne punktowane błędy:
- wielokrotne zliczanie punktów kontarstujących
- pominięcie punktów na krawędzi (w rzeczywistości są takie tylko na prawej i lewej krawędzi)
- zliczanie kontrastu jednostronnie (zliczany jest tylko jaśniejszy od sąsiedniego albo tylko ciemniejszy od sąsiedniego)
- zliczanie punktów różniących się o 128 lub więcej (a nie po więcej niż 128)
Zadanie 6.4 (4 punkty)
W tym zadaniu należało znaleźć najdłuższą pionową linię o stałej jasności. Ta najdłuższa wydaje się całkiem niedługa (5 pikseli).
Za zadanie można otrzymać 4 punkty. Nie wiem jak można zrobić mały błąd i uzyskać w ten sposób błędny wynik, za który możnaby otrzymać częściowe punkty. Prawdopodobnie to zadanie będzie zatem punktowane binarnie - 0 lub 4 punkty.
- Szczegóły
-
Kategoria: Matura 2017
-
Opublikowano: sobota, 27, maj 2017 20:05
-
InM
-
Odsłony: 10250
Zadanie bazodanowe i tak w większości rozwiązywane. Dane wczytujemy do kilku tabel. Długa treść ułatwia zapomnienie prostego zdania na początku: w plikach zawarte są informacje dotyczące meczy drużyny Galop z Kucykowa. Tak więc nie ma co szukać tej drużyny w tabeli druzyny.txt :-)
Zadanie 5.1 (3 punkty)
Zadanie składa się z dwóch części. W pierwszej tworzymy zapytanie z dwóch tabel (Drużyny i Wyniki). Grupujemy wyniki wg rodzaju meczu i nazwy miasta. Ograniczamy się do wyników z Kucykowa. Liczymy ile wierszy zostało tak zgrupowanych i otrzymujemy:
zadanie 51a
Rodzaj |
Liczba |
L |
113 |
P |
25 |
T |
6 |
W drugiej części zadania używamy tych samych tabel. Grupujemy wyniki wg roku (funkcja year) i nazwy miasta. Ponownie ograniczamy się do Kucykowa. Liczymy ile wierszy zgrupowano za każdym razem i wybieramy z tych obliczeń największą liczbę. Wynikiem jest 21 meczów w 2007 roku.
Rozdzielenie punktów może być różne, ale skłaniałbym się do podziału: 1 punkt za liczby meczów, 1 punkt za rok z największą liczbą meczów i 1 punkt za tą liczbę.
Zadanie 5.2 (2 punkty)
Wbrew pozorom zadanie nie jest łatwe. Najpierw należy policzyć bilans bramek dla każdej z drużyn a następnie wybrać te, z którymi Galop straciła tyle samo bramek co strzeliła. W wyniku otrzymujemy dwie drużyny: Nocne Pumy i Zwinne Mewy. Dwa punkty i dwie drużyny sugerują po jednym punkcie za każdą z nich, ale jakoś trudno mi sobie wyobrazić błędne rozwiązanie znajdujące tylko jedną z tych drużyn.
Zadanie 5.3 (3 punkty)
Trzy punkty i proste zapytanie zrobione z użyciem jednej tabeli. Prostsze są trzy niezależne dla każdego typu wyniku. Ostatecznie otrzymujemy 579 wygranych, 170 zremisowanych i 452 przegranych.
Naturalne wydaje się punktowanie po 1 punkcie za każdą z tych liczb. Biorąc pod uwagę, że najszybciej te wyniki można uzyskać tworząc trzy niezależne zapytania, to istnieje pewne prawdopodobieństwo pomyłki w jednej z nich.
Łatwym miejscem na popełnienie błędu jest też pominięcie jednej z części polecenia (mecze wyjazdowe) i pewnie też będzie można uzyskać za nieuwzględnienie tego warunku jednakowo we wszystkich trzech liczbach (1185, 352, 910), raczej za 1 punkt.
Zadanie 5.4 (3 punkty)
Ponownie zapytanie z użyciem danych z jednej tabeli. Wybieramy z tabeli Wyniki wszystkich sędziów, którzy sędziowali przynajmniej jeden mecz pucharowy. Jest ich 132. Dokładamy do tego wiedzę z tabeli Sędziowie (154 wiersze) i w wyniku otrzymujemy 22 sędziów.
Podobnie jak w poprzednim zadaniu można spodziewać się pominięcia warunku dotyczącym pucharowego meczu i otrzymać 150 sędziów w meczach Galopu Kucykowo (czyli 4 niesędziujących meczów Galopu). Innym błędem jest policzenie 132 sędziujących mecze pucharowe Galopu Kucykowo w stosunku do 150 sędziujących jakiekolwiek mecze Galopu Kucykowo (czyli 18 sędziujących mecze Galopu Kucykowo, ale niesędziujących ich meczów pucharowych).
- Szczegóły
-
Kategoria: Matura 2017
-
Opublikowano: środa, 24, maj 2017 18:10
-
InM
-
Odsłony: 13969
Zadanie 4.1 (1 punkt)
Zadanie trochę nietypowe jak na maturalne zadanie do wykonania w arkuszu kalkulacyjnym (w końcu 4.3 ma w poleceniu utwórz wykres). Mamy dwie tabele (faktycznie dwa pliki tekstowe, ale to żadna różnica). No ale tak to jest jak w Excelu ląduje coraz więcej funkcji przetwarzających dane jak w bazie danych (tabele przestawne, sumy pośrednie).
Tak więc w zadaniu 4.1 tworzymy zapytanie, w którym grupujemy wiersze po numerach nip w jednej kolumnie i sumujemy kilogramy w drugiej kolumnie. Dochodzi do tego posortowanie wyników po drugiej z nich i wybranie trzech największych wyników. Ostatecznie otrzymujemy:
zadanie 41
nip |
zakupiony cukier |
254-14-00-156 |
27505 |
847-48-41-699 |
26955 |
392-78-93-552 |
26451 |
W związku z tym, że za zadanie jest 1 punkt, to raczej nie ma możliwości otrzymania czegokolwiek za inny niż powyższy wynik.
Zadanie 4.2 (2 punkty)
W tym zadaniu należało podać łączną cenę bez rabatów sprzedaży cukru przez 10 lat działalności. Można było rozwiązać na dwa sposoby:
- policzyć wartość każdej transakcji (łącząc każdy wiersz tabeli cukier z jednym z wierszy tabeli cennik) i następnie zsumować wyniki
- zsumować sprzedaż cukru w każdym roku, pomnożyć uzyskane wyniki przez ceny z tabeli cennik i zsumować wynik
Pierwszy sposób łatwiejszy do wykonania w bazie danych, drugi prostszy w arkuszu (szybszy w wykonaniu dla tych co zdecydowali się na rozwiązanie zadania w arkuszu). Niezależnie od wyboru metody uzyskuje się wynik 643 267,07 zł. Za zadanie można uzyskać 2 punkty, ale wynikiem jest jedna liczba. Nie wiem jaki błąd można zrobić aby uzyskać częściowy 1 punkt. Chyba nie będzie możliwości takiej oceny.
Zadanie 4.3 (3 punkty)
W tym zadaniu trzeba stworzyć tabelkę agregującą ilości sprzedanego cukru w poszczególnych latach i na jej podstawie zrobić wykres. Jeżeli w poprzednim zadaniu najpierw zsumowaliśmy sprzedaż w poszczególnych miesiącach a potem liczyliśmy jej wartość to tabelkę już mamy :-) Jeżeli nie to robimy ją teraz. Dla korzystających z baz danych przyda się funkcja year języka SQL. Niezależnie od wyboru metody powinniśmy uzyskać wynik:
rok |
wielkość sprzedaży |
2005 |
27016 |
2006 |
27226 |
2007 |
31720 |
2008 |
36523 |
2009 |
30764 |
2010 |
32521 |
2011 |
23778 |
2012 |
26976 |
2013 |
28419 |
2014 |
35284 |
Chwilę później na podstawie powyższej tabeli tworzymy wykres (to już raczej w arkuszu kalkulacyjnym):
Za całe zadanie można mieć trzy punkty. Najprawdopodobniej za tabelkę (dane) 1 punk, zaś za sam wykres 2 punkty (w tym za: typ wykresu, odpowiednie wyskalowanie osi pionowej, dobór danych oraz opis osi/wykresu)
Zadanie 4.4 (3 punkty)
W tym zadaniu dla każdego kupującego trzeba była oddzielnie dla każdej transakcji policzyć ile zakupił łącznie z bieżącą transakcją cukru i odpowiednio policzyć rabat. Następnie zsumować wszystkie rabaty i podać jedną liczbę. Poprawnym wynikiem jest 38 126,35 zł. Niby jedna liczba i jeden poprawny wynik, ale ile możliwości niewielkich pomyłek (i zarazem możliwości przyznania niepełnych punktów):
- nieuwzględnienie bieżącej transakcji do uwzględniania rabatu
- policzenie rabatu jako rabatu jednostkowego (bez przemnożenia przez wielkość bieżącej sprzedaży)
- pomyłka w warunkach ">" zamiast "≥"
Za każdy pojedynczy (z powyższych) błąd można spodziewać się pewnych punktów, ale kilka z nich razem już raczej będą dyskwalifikowały wynik.
Zadanie 4.5 (4 punkty)
Zadanie symulacyjne. Jednak nie powiązane z pozostałymi zadaniami z serii. Przed przystąpieniem do symulacji warto policzyć obrót w każdym miesiącu, wtedy nasza symulacja zamiast kilku tysięcy wierszy będzie miała ich jedynie 120. Jak już mamy przygotowaną tabelkę ze 120 miesiącami z wielkością sprzedaży dostawiamy sobie kolejne kolumny:
- magazyn na początku miesiąca
- magazyn po uwzględnieniu bieżącej sprzedaży
- brak w magazynie do 5 ton
- zaokrąglenie poprzedniej wartości do pełnych ton w górę (czyli też wielkość dostawy)
Następnie obliczamy ile było dostaw nie mniejszych niż 4000 kg. Poprawnym wynikiem jest 14. Ponownie można popełnić błędy w kilku miejscach:
- pomyłka w warunkach ">" zamiast "≥"
- dokupienie cukru gdy nie potrzeba (sierpień 2010) - jak ktoś liczył ile razy dokupiono mniej niż 4t i nie uwzględnił braku zakupu jak kupienia mniej niż 4t
- niezaokrąglanie zakupu do pełnych ton
- ...
Tak jak poprzednio punkty będą pewnie przyznane gdy popełni się jeden błąd z powyższych błędów, ale nie liczyłbym na nie przy popełnieniu kilku błędów na raz.
- Szczegóły
-
Kategoria: Matura 2017
-
Opublikowano: poniedziałek, 22, maj 2017 20:44
-
InM
-
Odsłony: 3005
Zadanie 3.1 (1 punkt)
W tym roku na maturze czekały dwa zadania z analizy zapytania w języku SQL. W pierwszym z nich trzeba było wybrać te zapytania, których wyniki będą zawsze uporządkowane niemalejąco wg pola nazwa.
W teorii baz danych jest jasno napisane, że dane w tabeli nie mają kolejności. Jedynym sposobem osiągnięcia zadanej kolejności jest użycie klauzuli ORDER BY z odpowiednim podaniem porządku sortowania. W związku z tym, że w pytaniu chodziło o bezwarunkowe uporządkowanie wg wartości w kolumnie nazwa, to w zapytaniu słowo nazwa musi wystąpić bezpośrednio po klauzuli ORDER BY.
Poprawne odpowiedzi dadzą więc zapytania 2 i 4, zaś zapytania 1 i 3 mogą dać odpowiedzi błędne. W zapytani 1 wyniki będą posortowane przede wszystkim wg pola wartość, zaś w zapytaniu 3 kolejność odpowiedzi wg teorii baz danych jest przypadkowa (mimo iż niektóre implementacje mogą dane sortować wg pola nazwa).
Podsumowując poprawną odpowiedzią jest FPFP.
Zadanie 3.2 (1 punkt)
W kolejnym zadaniu mamy zapytanie i kilka informacji o możliwej (bądź niemożliwej) odpowiedzi.
Pierwsze zdanie jest fałszywe. Żaden numer PESEL nie pojawi się w wyniku wielokrotnie ponieważ wyniki są grupowane wg tego pola (GROUP BY pesel). Drugie zdanie jest prawdziwe ponieważ z odpowiedzi są wykluczone numery PESEL znajdujące się w w tabeli dokumenty zastrzeżone (WHERE pesel NOT IN (SELECT pesel FROM dokumenty_zastrzezone)). Trzecie zdanie jest prawdziwe ponieważ otrzymamy wynik o dwóch kolumnach (SELECT pesel, COUNT(*)). Zdanie czwarte jest fałszywe, ponieważ w wyniku nie pojawi się żaden wiersz o wartości w drugiej kolumnie równej 1 (HAVING COUNT(*) > 1).
Podsumowując poprawną odpowiedzią jest FPPF.
Zadanie 3.3 (1 punkt)
To zadnie możne być trochę dyskusyjne. W treści zadania jest kilka nie do końca wyjaśnionych kwestii. Ale o tym za chwilę, przy kolejnych zdaniach. Słyszałem kiedyś koncepcję, że każde zdanie ze słowem "może" będzie w teście na maturze z informatyki zdaniem prawdziwym. Rzeczywiście tak jest na ogół. To zadanie jednak przeczy tej teorii.
Pierwsze zdanie jest prawdziwe i chyba nie ma co nad nim dyskutować. W drugim zdaniu kluczowym słowem jest "szybko". Dysponując odpowiednim komputerem wszystko można zrobić szybko. Jednak wygenerowanie podpisu cyfrowego na podstawie klucza publicznego zadaniem do szybkiego wykonania jednak nie jest. Podobnie fałszywe jest kolejne zdanie i z tego samego powodu. Kolejną problematyczną kwestią jest skuteczność rozsyłania listów elektronicznych zawierających podmieniony nagłówek "Od:". Spora część tak spreparowanych maili zostanie usunięta przez serwery pocztowe. Rozsyłać listy elektroniczne z podmienionym nagłówkiem jednak można i jest szansa, że część z nich dotrze do adresatów.
Podsumowując poprawną odpowiedzią jest PFFP.
- Szczegóły
-
Kategoria: Matura 2017
-
Opublikowano: sobota, 20, maj 2017 19:22
-
InM
-
Odsłony: 4982
Zadanie 2.1 (2 punkty)
Mała tabelka do uzupełnienia. Po dokładnej analizie wywołań dla poszczególnych wartości uzupełniamy ją następującymi wynikami:
x |
licz(x) |
11 |
2 |
13 |
2 |
21 |
1 |
32 |
-4 |
Można się spodziewać, że na poprawne dwa poprawne wyniki (z trzech do uzupełnienia) będzie można otrzymać jeden punkt. Za jeden poprawny wynik raczej nie można liczyć na jakiekolwiek punkty.
Zadanie 2.2 (2 punkty)
Po krótkiej analizie algorytmu można zobaczyć, że każde wywołanie funkcji licz z argumentem x większym od 1 powoduje kolejne wywołanie z argumentem x/2. Wynika z tego, że sumaryczna liczba wywołań funkcji licz jest równa długości liczby x w zapisie binarnym. Zatem najmniejszą liczbą, która daje dokładnie k wywołań funkcji licz jest liczba, która w zapisie binarnym ma na pierwszej pozycji cyfrę 1 a następnie k-1 cyfr 0, zatem liczba ta jest równa 2k-1. W związku z tym, że zadanie jest punktowane dwoma punktami, być może podobna odpowiedź 2k będzie punktowana jednym punktem. Może być też jednak tak, że ta odpowiedź miała utrudnić wybranie właściwej i jedyne punkty jakie można będzie uzyskać to dwa za poprawną odpowiedź. Jak będzie zobaczymy za kilka tygodni.
Zadanie 2.3 (2 punkty)
W tym zadaniu trzeba było podać najmniejszą liczbę całkowitą większą od 100, dla której wynikiem wywołania funkcji licz(x) będzie 0.Z opowieści znajomych nauczycieli wynika, że w niektórych szkołach każdy wychodzący z egzaminu maturzysta podawał inną znalezioną najmniejszą liczbę.
Z analizy algorytmu wynika, że każdy bit 1 w zapisie bitowym argumentu x zwiększa wynik o 1, zaś każdy bit 0 zmniejsza wynik o 1. Aby wynik był równy 0 liczba x w zapisie bitowym musi mieć parzystą liczbę bitów pomijając wiodące 0. W związku z tym, że liczba ma być większa od 100 i być możliwie najmniejsza to powinna mieć osiem bitów. Najmniejszą taką liczbą jest 10000111|2, czyli 135.
Za zadanie z jednym wynikiem ponownie można otrzymać dwa punkty, zatem należy spodziewać się, że za niektóre błędy będzie można otrzymać 1 punkt. W poleceniu były podane trzy warunki:
- najmniejsza możliwa
- większa od 100
- wynik licz(x) jest równy 0
Pominięcie ostatniego z warunków (wynik 101) wydaje się dyskwalifikować rozwiązanie (nie ma żadnego związku z podaną na wstępie zadania funkcją). Pominięcie drugiego (wynik 2) powoduje szukanie totalnie banalnego rozwiązania. Jedynym pominiętym warunkiem, który nie upraszcza zanadto zadania wydaje się zatem warunek pierwszy. Po jego pominięciu (np. wyniki 139, 170) być może można liczyć na otrzymanie 1 punktu.
Mogę też sobie wyobrazić próbę podania wyniku 102 (w ośmiobitowym zapisie binarnym 01100110|2), jednak w rozumieniu tego algorytmu ta liczba jest jedynie siedmiobitowa i i raczej nie ma możliwości aby w takim przypadku otrzymać za rozwiązanie jakikolwiek punkt.