add A tasks

This commit is contained in:
Jakub Pokrywka 2021-10-10 21:15:21 +02:00
parent 80f983b481
commit a60731d812
24 changed files with 240608 additions and 6 deletions

View File

@ -8,8 +8,8 @@ Prowadzący: mgr Jakub Pokrywka
Dyżury: B1-46. Przed przyjściem proszę się umówić na spotkanie, najlepiej jest wysłać mi prywatną wiadomość na MS TEAMS.
- W celu zaliczenia przedmiotu należy zdobyć punkty za zadania na laboratoriach oraz zaliczyć kolowkium.
Punktowane zadania będziemy wykonywać na laboratoriach oraz po nich, ich ilość determinuje ocenę.
W celu zaliczenia przedmiotu należy zdobyć punkty za zadania na laboratoriach oraz zaliczyć kolokwium.
Punktowane zadania będziemy wykonywać na laboratoriach oraz po nich (przed następnymi zajęciami), ich ilość determinuje ocenę.
Oprócz tego należy zaliczyć kolokwium z wyrażeń regularnych na ostatnich zajęciach. Sam wynik kolokwium
nie będzie wpływał na ocenę, ale bez zdanego kolowkium nie da sie zaliczyć przedmiotu. Punktacja za zadania jest następująca:
- mniej niż 30 punktów - 2
@ -21,12 +21,16 @@ nie będzie wpływał na ocenę, ale bez zdanego kolowkium nie da sie zaliczyć
#### Wysyłanie zadań
Proszę stworzyć prywatne repozytorium na https://git.wmi.amu.edu.pl/ o nazwie djfz-2021-NRINDEKSU oraz dać
Proszę stworzyć prywatne repozytorium na https://git.wmi.amu.edu.pl/ o nazwie djfz-2021-sNRINDEKSU oraz dać
prawa do odczytu użytkownikowi kubapok (prowadzący przedmiot). W NRINDEKSU proszę wpisać swój nr indeksu, np. dfjz-2021-s123456.
Następnie w swoim repozytorium proszę spullować niniejsze repozytorium: `git pull git@git.wmi.amu.edu.pl:kubapok/djfz-2021.git`
W ten sposób będziemy aktualizować zadania co zajęcia.
Zadanie TaskX00 jest rozwiązane. Proszę zrobić zadanie TASKX01 lub TASKX02 w zależność od numeru indeksu.
Proszę rozwiązać zadanie TASKX02 lub TASKX03 w zależności od numeru indeksu. W tym celu należy dodac plik `run.py`
w odpowiednim katalogu. Za pomocą `run_reports.py` można sprwawdzić ilość punktów.
Do repo proszę dodawać wyłącznie plik `run.py` w odpowiednim katalogu, chyba że w zadaniu jest zaznaczone inaczej.
Proszę również nie modyfikować innych plików.
Wszystkie zadania należy robić w terminie zaznaczonym w `description.txt`. Po terminie będę podawał punktację za pomocą USUSa w "sprawdziany".

6
TaskA01/description.txt Normal file
View File

@ -0,0 +1,6 @@
Write a program to find lines containing the word "Hamlet".
Do not use regular expressions, just the simplest capabilities
of a programming language.
POINTS: 1
DEADLINE: 2021-10-24 23:59:59

106
TaskA01/shakespeare.exp Normal file
View File

@ -0,0 +1,106 @@
CLAUDIUS, King of Denmark, Hamlets uncle.
The GHOST of the late king, Hamlets father.
GERTRUDE, the Queen, Hamlets mother, now wife of Claudius.
HORATIO, Friend to Hamlet.
Dard to the combat; in which our valiant Hamlet,
His fell to Hamlet. Now, sir, young Fortinbras,
Unto young Hamlet; for upon my life,
Enter Claudius King of Denmark, Gertrude the Queen, Hamlet, Polonius,
Though yet of Hamlet our dear brothers death
But now, my cousin Hamlet, and my son—
Good Hamlet, cast thy nighted colour off,
Tis sweet and commendable in your nature, Hamlet,
Let not thy mother lose her prayers, Hamlet.
This gentle and unforcd accord of Hamlet
[_Exeunt all but Hamlet._]
For Hamlet, and the trifling of his favour,
So please you, something touching the Lord Hamlet.
Than a command to parley. For Lord Hamlet,
As to give words or talk with the Lord Hamlet.
Enter Hamlet, Horatio and Marcellus.
That I will speak to thee. Ill call thee Hamlet,
[_Ghost beckons Hamlet._]
[_Exeunt Ghost and Hamlet._]
Enter Ghost and Hamlet.
Wouldst thou not stir in this. Now, Hamlet, hear.
O Hamlet, what a falling off was there,
Adieu, adieu, adieu. Hamlet, remember me.
[_Within._] Lord Hamlet.
And what so poor a man as Hamlet is
Lord Hamlet, with his doublet all unbracd,
Of Hamlets transformation; so I call it,
And bring these gentlemen where Hamlet is.
The very cause of Hamlets lunacy.
Came this from Hamlet to her?
Lord Hamlet is a prince, out of thy star.
Enter Hamlet, reading.
How does my good Lord Hamlet?
You go to seek the Lord Hamlet; there he is.
For we have closely sent for Hamlet hither,
Of Hamlets wildness: so shall I hope your virtues
Enter Hamlet.
You need not tell us what Lord Hamlet said,
Enter Hamlet and certain Players.
How fares our cousin Hamlet?
I have nothing with this answer, Hamlet; these words are not mine.
Come hither, my dear Hamlet, sit by me.
[_Exeunt all but Hamlet and Horatio._]
[_Exeunt all but Hamlet._]
Enter Hamlet.
Enter Hamlet.
Hamlet, thou hast thy father much offended.
Why, how now, Hamlet?
O Hamlet, speak no more.
No more, sweet Hamlet.
Speak to her, Hamlet.
O Hamlet, thou hast cleft my heart in twain.
[_Exit Hamlet dragging out Polonius._]
What, Gertrude? How does Hamlet?
Hamlet in madness hath Polonius slain,
Enter Hamlet.
[_Within._] Hamlet! Lord Hamlet!
What noise? Who calls on Hamlet? O, here they come.
Enter Hamlet and Guildenstern.
Now, Hamlet, wheres Polonius?
Hamlet, this deed, for thine especial safety,—
Ay, Hamlet.
Thy loving father, Hamlet.
The present death of Hamlet. Do it, England;
Enter Hamlet, Rosencrantz, Guildenstern &c.
[_Exeunt all but Hamlet._]
I should be greeted, if not from Lord Hamlet.
Letters, my lord, from Hamlet.
From Hamlet! Who brought them?
Tis Hamlets character. Naked!
And that in Hamlets hearing, for a quality
Did Hamlet so envenom with his envy
Hamlet comes back: what would you undertake
Hamlet returnd shall know you are come home:
Enter Hamlet and Horatio, at a distance.
Hamlet oercame Fortinbras.
that young Hamlet was born,—he that is mad, and sent into England.
I hopd thou shouldst have been my Hamlets wife;
Hamlet the Dane.
Hamlet! Hamlet!
Enter Hamlet and Horatio.
[_Hamlet moves him to put on his hat._]
Come, Hamlet, come, and take this hand from me.
[_The King puts Laertess hand into Hamlets._]
Wast Hamlet wrongd Laertes? Never Hamlet.
If Hamlet from himself be taen away,
Then Hamlet does it not, Hamlet denies it.
Hamlet is of the faction that is wrongd;
His madness is poor Hamlets enemy.
Give them the foils, young Osric. Cousin Hamlet,
If Hamlet give the first or second hit,
The King shall drink to Hamlets better breath,
Now the King drinks to Hamlet. Come, begin.
Stay, give me drink. Hamlet, this pearl is thine;
Here, Hamlet, take my napkin, rub thy brows.
The Queen carouses to thy fortune, Hamlet.
[_Laertes wounds Hamlet; then, in scuffling, they change rapiers, and
Hamlet wounds Laertes._]
No, no, the drink, the drink! O my dear Hamlet!
It is here, Hamlet. Hamlet, thou art slain.
Exchange forgiveness with me, noble Hamlet.
Bear Hamlet like a soldier to the stage,

169442
TaskA01/shakespeare.in Normal file

File diff suppressed because it is too large Load Diff

2
TaskA01/simple.exp Normal file
View File

@ -0,0 +1,2 @@
Here comes Hamlet
Hamlet Hamlet again

3
TaskA01/simple.in Normal file
View File

@ -0,0 +1,3 @@
Here comes Hamlet
ABC
Hamlet Hamlet again

8
TaskA02/description.txt Normal file
View File

@ -0,0 +1,8 @@
Write a program to find lines containing the word "pies" separated by spaces.
The word does not need to have space on the left if it is the line beginning or space on the right if it is line ending.
Return line no matter of word "pies" casing.
Do not use regular expressions, just the simplest capabilities
of a programming language.
POINTS: 1
DEADLINE: 2021-10-24 23:59:59

View File

@ -0,0 +1,13 @@
Pies ten pochodzi z południowych Chin, z terenów prowincji Guangdong. Został rozpropagowany i hodowany w celach wystawowych przez hodowców w USA. Nazwa psa, pochodząca z chińskiego "shā pí" (沙皮), oznacza dosłownie "piaszczysta skóra".
Chart polski polska rasa psa myśliwskiego, znana prawdopodobnie od czasów Galla Anonima, zaliczana do grupy chartów. Dawniej użytkowana była przede wszystkim do polowań, obecnie jako pies reprezentacyjny.
Smukły pies o wąskim pysku. Chart polski jest wyraźnie mocniejszy i nie tak finezyjny w kształtach jak inne charty. Jest najwyższą z polskich ras.
Chart polski to pies silny, wytrzymały, o dobrze zbalansowanym ciele i proporcjach (wpisany jest w prostokąt oparty na dłuższym boku) pozwalających nie tylko na szybki galop, ale i na pokonywanie dużych odległości wyciągniętym kłusem. Jest psem o okrywie włosowej dobrze chroniącej go przed zimnem, wilgocią i wiatrem.
Pies wymagający sporej dawki codziennego ruchu, stąd jest idealnym towarzyszem dla ludzi uprawiających jeździectwo lub jogging.
W filmie występuje pies rasy landseer.
Bohaterami anime jest grupa łowców nagród, podróżująca statkiem kosmicznym o nazwie "Bebop": Spike Spiegel, Faye Valentine, Jet Black, haker Ed oraz genetycznie zmodyfikowany pies Ein.
Tytułowym głównym bohaterem serii jest Lucky Luke - kowboj, najszybszy rewolwerowiec na Dzikim Zachodzie i najgorszy koszmar braci Dalton. Zawsze, gdy planują oni skok na bank lub inne przestępstwo, dzielny stróż prawa staje im na drodze. W jego przygodach towarzyszą mu inteligentny koń Jolly Jumper i pies Bzik (we francuskojęzycznym oryginale: "Rantanplan").
Serial w krzywym zwierciadle przedstawia życie typowej amerykańskiej rodziny. Jej głową i jedynym żywicielem jest wiecznie sfrustrowany sprzedawca butów, Al Bundy. Kocha swojego starego dodge'a, wolny czas spędza siedząc na kanapie, oglądając telewizję i pijąc piwo lub na posiedzeniach w toalecie. Jego małżonką jest Peggy, która całymi dniami przesiaduje przed telewizorem, oglądając "The Oprah Winfrey Show", i The Phil Donahue Show zajadając się popcornem i czekoladkami, paląc przy tym papierosa za papierosem. O jej podejściu do typowo domowych zajęć świadczą zadawane przez nią pytania, np. o odkurzacz "Jak się nazywa to coś, co ciągniesz po dywanie, a ono buczy?" Tytułowymi dziećmi są nastoletni Bud oraz Kelly, którzy nie przepadają za sobą i nie przepuszczą żadnej okazji, aby sobie dokuczyć czy donieść na siebie. Kelly i Bud dojrzewają w trakcie trwania serialu, przez co trochę się zmieniają: Bud z wrednego kilkunastolatka przeistacza się w nastoletniego macho, którego nie chce żadna dziewczyna, a Kelly z każdą serią staje się coraz mniej inteligentna. Wiecznie niedocenianym członkiem rodziny jest pies Buck, który jednak żyje swoim życiem i sam troszczy się o siebie. W trakcie wszystkich dziesięciu lat trwania serialu Bundym towarzyszy dwójka sąsiadów: Marcy, najpierw ze swoim pierwszym mężem, Steve'em Rhoadesem, a następnie z Jeffersonem d'Arcym. Marcy lubi przebywać z Peggy, jest za to na bakier z Alem, natomiast Al utrzymuje dobre stosunki z mężami Marcy, szczególnie Jeffersonem Steve raczej nie darzył Bundych tak bezwzględną sympatią.
Buck (prawdziwe imię Michael; trener Steven Ritt) to pies rodziny Bundych, Briard. Głosu użycza mu Kevin Curran, a w odcinkach specjalnych Cheech Marin. Zdechł w wieku dwunastu lat (w 1996 roku Michael przeszedł na emeryturę, zdechł dziewięć miesięcy po tym, jak Bucka uśmiercono w serialu).
Lucky to drugi pies rodziny Bundych, spaniel, reinkarnacja Bucka.
20 stycznia 1974 r. o godz. 10.40 w Dolinie Mięguszowieckiej wydarzyła się największa jak do owej pory katastrofa lawinowa w Tatrach. Żlebem spod Przełęczy nad Skokiem w Grani Baszt zeszła potężna lawina, która przewaliła się przez Mięguszowiecki Potok i wdarła 140 m na przeciwległy stok, wspinając się na niego z rozpędu aż 44 m w górę. Na stoku tym, na śnieżnym pólku trenowali z instruktorem uczestnicy kursu narciarskiego ze słowackiego Technikum Budowlanego. Lawina przysypała 24 z nich. Dzięki błyskawicznej akcji ratunkowej (było to tylko 400 m od schroniska nad Popradzkim Stawem) udało się odgrzebać spod śniegu 11 płycej przywalonych. W ciągu następnych godzin i kilku dni liczne zespoły ratunkowe (z pomocą przyszło również wojsko) odgrzebały ciała 10 uczestników kursu; wśród nich nauczyciela z 12-letnim synem. Pies wskazał miejsce, gdzie po 5 godzinach od zejścia lawiny wydobyto żywego 18-latka przywalonego metrową warstwą śniegu. Ciała dwóch uczniów udało się znaleźć dopiero wiosną po stopieniu się śniegu.
Początkowo Morris wykorzystał w swoich komiksach historycznych braci Daltonów Grat, Bill i Emmett, których przedstawił jako bardzo groźnych i inteligentnych przestępców. Niestety po pierwszym spotkaniu z Lucky Luke, zostali aresztowani i skazani w więzieniu na śmierć. Morris żałował potem swojej decyzji i wraz z Gościnnym wprowadził na ich miejsce, czwórkę kuzynów (także) Daltonów Joe, Williama, Jacka i Averelle, którzy byli przeciwieństwem swoich kuzynów. Wiecznie pechowi, gamoniowaci i niezbyt inteligentni. Wkrótce stali się oni najpopularniejszymi postaciami w serii, zaraz po samym Lucky Luke i z czasem dołączył do nich pies Rantanplan. Doczekali się także solowego filmu dystrybuowanego w Polsce pt. "Lucky Luke" (oryg. "Les Dalton").

50000
TaskA02/polish_wiki_excerpt.in Normal file

File diff suppressed because one or more lines are too long

3
TaskA02/simple.exp Normal file
View File

@ -0,0 +1,3 @@
Pies ma Alę
Kot i pies to zwierzęta
pies

5
TaskA02/simple.in Normal file
View File

@ -0,0 +1,5 @@
Pies ma Alę
Ala ma psa
tu nic nie ma
Kot i pies to zwierzęta
pies

7
TaskA03/description.txt Normal file
View File

@ -0,0 +1,7 @@
Write a program to find lines containing date from 1900 to 1999 in format '19XX r.' no matter what on the left or right of the expression.
Note that part ' r.' is obligatory.
Do not use regular expressions, just the simplest capabilities
of a programming language.
POINTS: 2
DEADLINE: 2021-10-24 23:59:59

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
../TaskA02/polish_wiki_excerpt.in

3
TaskA03/simple.exp Normal file
View File

@ -0,0 +1,3 @@
Kiedyś był 1934 r.
Kiedyś był 1934 r.fsdfsdfsdf
1934 r. to jakaś data

5
TaskA03/simple.in Normal file
View File

@ -0,0 +1,5 @@
Kiedyś był 1934 r.
Kiedyś był 1934 r.fsdfsdfsdf
Kiedyś był 1935 rok
1934 r. to jakaś data
1934 to też jakaś data

7
TaskA04/description.txt Normal file
View File

@ -0,0 +1,7 @@
Write a program to find all maximum substrings of digits.
Return only these substrings separated by spaces in their order.
Do not use regular expressions, just the simplest capabilities
of a programming language.
POINTS: 3
DEADLINE: 2021-10-24 23:59:59

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
../TaskA02/polish_wiki_excerpt.in

4
TaskA04/simple.exp Normal file
View File

@ -0,0 +1,4 @@
34234 34 5
34535
34
1992 1999

5
TaskA04/simple.in Normal file
View File

@ -0,0 +1,5 @@
34234 34 dfd gfd 5
34535
fsdflskfjsdflk
fsdkfj sdf34fdfd
Firma powstała w 1992 r., z połączenia Authorware, Inc. (twórców pakietu Authorware) i MacroMind-Paracomp (producenta Macromind Director). W 1999 r. Macromedia zakupiła firmę Allaire i jej bi

View File

@ -3,4 +3,4 @@ Note: this is just an example of a task (and a solution).
The task has a solution already, do not solve it!
POINTS: 1
DEADLINE: 2021-10-11 23:59:59
DEADLINE: 2021-10-24 23:59:59

View File

@ -1,5 +1,5 @@
Print the number lines read from the standard input.
POINTS: 1
DEADLINE: 2020-10-24 23:59:59
DEADLINE: 2021-10-24 23:59:59
REMAINDER 0/2

View File

@ -0,0 +1,87 @@
from pathlib import Path
import subprocess
def get_tasks_sets(dir):
return [str(a.name).rstrip('.in') for a in Path(dir).glob('*in')]
def execute_task(dir):
task_sets = get_tasks_sets(dir)
for task_set in task_sets:
try:
with open(Path(dir,f'{task_set}.in')) as f_in, open(Path(dir,f'{task_set}.out'), 'w') as f_out:
process = subprocess.Popen(['python3' ,f'{dir}/run.py'],
stdin=f_in,
stdout=f_out,
stderr=subprocess.DEVNULL)
process.wait()
f_out.flush()
except:
pass
def get_index():
return int(Path.cwd().name.split('-')[-1][1:30])
def is_task_set_correct(dir,task_set):
try:
with open(Path(dir,f'{task_set}.out')) as f_exp, open(Path(dir,f'{task_set}.exp')) as f_out:
f_out_lines = ''.join(f_out.readlines())
f_exp_lines = ''.join(f_exp.readlines())
return f_out_lines == f_exp_lines
except:
pass
def is_task_correct(dir):
task_sets = get_tasks_sets(dir)
for task_set in task_sets:
if not is_task_set_correct(dir, task_set):
return False
return True
def does_task_match_index(dir, index):
with open(Path(dir,f'description.txt')) as f_in:
lines = f_in.readlines()
remainder_lines = [x for x in lines if x.startswith('REMAINDER')]
if len(remainder_lines) == 0:
return True
else:
remainder, modulus = remainder_lines[0].split(' ')[-1].split('/')
remainder = int(remainder)
modulus = int(modulus)
return (index % modulus) == remainder
def get_tasks(index):
all_tasks = Path('.').glob('Task*')
return [task for task in all_tasks if does_task_match_index(task, index)]
def execute_all_tasks(tasks):
for task in tasks:
execute_task(task)
def get_task_points(dir):
with open(Path(dir, 'description.txt')) as f_in:
lines = f_in.readlines()
points = int([x for x in lines if x.startswith('POINTS')][0].split(' ')[-1].rstrip())
return points
def get_report(tasks):
report = dict()
for task in tasks:
if is_task_correct(task):
report[task] = get_task_points(task)
else:
report[task] = 0
return report
def print_report(report):
for k in sorted(report):
print(f'{k}: {report[k]}')
print('')
print(f'SUMMARY: {sum(report.values())}')
INDEX = get_index()
tasks = get_tasks(INDEX)
execute_all_tasks(tasks)
report = get_report(tasks)
print_report(report)