TaskB00
This commit is contained in:
parent
6cc8ddc5b7
commit
0d51b47582
364
TaskB00/README.md
Normal file
364
TaskB00/README.md
Normal file
@ -0,0 +1,364 @@
|
|||||||
|
|
||||||
|
## Zajęcia 1
|
||||||
|
|
||||||
|
### Informacje na temat przedmiotu
|
||||||
|
|
||||||
|
Prowadzący: Jacek Kałużny
|
||||||
|
|
||||||
|
mail: duszekjk@gmail.com
|
||||||
|
|
||||||
|
#### Wysyłanie zadań
|
||||||
|
|
||||||
|
Proszę stworzyć prywatne repozytorium na https://git.wmi.amu.edu.pl/ o nazwie jfz-2023-sNRINDEKSU oraz dać
|
||||||
|
prawa do odczytu dla prowadzącego zajęcia. W NRINDEKSU proszę wpisać swój nr indeksu, np. jfz-2023-s123456.
|
||||||
|
|
||||||
|
Następnie w swoim repozytorium proszę spullować niniejsze repozytorium: `git pull git@github.com:duszekjk/jezykiformalne.git`
|
||||||
|
W ten sposób będziemy aktualizować zadania co zajęcia.
|
||||||
|
|
||||||
|
Zadania robimy do końca soboty poprzedzającej zajęcia
|
||||||
|
|
||||||
|
Rozwiązanie zapisujemy w pliku run.py
|
||||||
|
|
||||||
|
|
||||||
|
## Zajęcia 2 Wyrażenia regularne
|
||||||
|
|
||||||
|
Dokumentacja wyrażeń regularnych w python3: https://docs.python.org/3/library/re.html
|
||||||
|
|
||||||
|
### Podstawowe funkcje
|
||||||
|
|
||||||
|
search - zwraca pierwsze dopasowanie w napisie
|
||||||
|
|
||||||
|
findall - zwraca listę wszystkich dopasowań (nienakładających się na siebie)
|
||||||
|
|
||||||
|
match - zwraca dopasowanie od początku string
|
||||||
|
|
||||||
|
To tylko podstawowe funkcje, z których będziemy korzystać. W dokumentacji opisane są wszystkie.
|
||||||
|
|
||||||
|
### Obiekt match
|
||||||
|
|
||||||
|
```
|
||||||
|
import re
|
||||||
|
answer = re.search('na','banan')
|
||||||
|
print(answer)
|
||||||
|
print(answer.start())
|
||||||
|
print(answer.end())
|
||||||
|
print(answer.group())
|
||||||
|
|
||||||
|
answer = re.search('na','kabanos')
|
||||||
|
print(answer)
|
||||||
|
type(answer)
|
||||||
|
|
||||||
|
if answer:
|
||||||
|
print(answer.group())
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
```
|
||||||
|
|
||||||
|
### Metaznaki
|
||||||
|
|
||||||
|
|
||||||
|
- [] - zbiór znaków
|
||||||
|
- . - jakikolwiek znak
|
||||||
|
|
||||||
|
- ^ - początek napisu
|
||||||
|
- $ - koniec napisu
|
||||||
|
|
||||||
|
- ? - znak występuje lub nie występuje
|
||||||
|
- \* - zero albo więcej pojawień się
|
||||||
|
- \+ - jeden albo więcej pojawień się
|
||||||
|
- {} - dokładnie tyle pojawień się
|
||||||
|
|
||||||
|
- | - lub
|
||||||
|
- () - grupa
|
||||||
|
- \ -znak ucieczki
|
||||||
|
|
||||||
|
- \d digit
|
||||||
|
- \D nie digit
|
||||||
|
- \s whitespace
|
||||||
|
- \S niewhitespace
|
||||||
|
|
||||||
|
|
||||||
|
### Flagi
|
||||||
|
|
||||||
|
Można użyć specjalnych flag, np:
|
||||||
|
`re.search('ma', 'AlA Ma KoTa', re.IGNORECASE)`.
|
||||||
|
|
||||||
|
### Przykłady (objaśnienia na laboratoriach)
|
||||||
|
|
||||||
|
Do nauki lepiej użyć pythona w wersji interaktywnej, a najlepiej ipython.
|
||||||
|
|
||||||
|
```
|
||||||
|
import re
|
||||||
|
|
||||||
|
text = 'Ala ma kota i hamak, oraz 150 bananów.'
|
||||||
|
|
||||||
|
re.search('ma',text)
|
||||||
|
re.match('ma',text)
|
||||||
|
re.match('Ala ma',text)
|
||||||
|
re.findall('ma',text)
|
||||||
|
|
||||||
|
re.findall('[mn]a',text)
|
||||||
|
re.findall('[0-9]',text)
|
||||||
|
re.findall('[0-9abc]',text)
|
||||||
|
re.findall('[a-z][a-z]ma[a-z]',text)
|
||||||
|
re.findall('[a-zA-Z][a-zA-Z]ma[a-zA-z0-9]',text)
|
||||||
|
re.findall('\d',text)
|
||||||
|
|
||||||
|
re.search('[0-9][0-9][0-9]',text)
|
||||||
|
re.search('[\d][\d][\d]',text)
|
||||||
|
|
||||||
|
re.search('\d{2}',text)
|
||||||
|
re.search('\d{3}',text)
|
||||||
|
|
||||||
|
re.search('\d+',text)
|
||||||
|
|
||||||
|
re.search('\d+ bananów',text)
|
||||||
|
re.search('\d* bananów','Ala ma dużo bananów')
|
||||||
|
re.search('\d* bananów',text)
|
||||||
|
re.search('ma \d? bananów','Ala ma 5 bananów')
|
||||||
|
re.search('ma ?\d? bananów','Ala ma bananów')
|
||||||
|
re.search('ma( \d)? bananów','Ala ma bananów')
|
||||||
|
|
||||||
|
re.search('\d+ bananów','Ala ma 10 bananów albo 20 bananów')
|
||||||
|
re.search('\d+ bananów$','Ala ma 10 bananów albo 20 bananów')
|
||||||
|
|
||||||
|
text = 'Ala ma kota i hamak, oraz 150 bananów.'
|
||||||
|
|
||||||
|
re.search('\d+ bananów',text)
|
||||||
|
|
||||||
|
re.search('\d+\sbananów',text)
|
||||||
|
|
||||||
|
re.search('kota . hamak',text)
|
||||||
|
|
||||||
|
re.search('kota . hamak','Ala ma kota z hamakiem')
|
||||||
|
|
||||||
|
re.search('kota .* hamak','Ala ma kota lub hamak')
|
||||||
|
|
||||||
|
re.search('\.',text)
|
||||||
|
|
||||||
|
re.search('kota|psa','Ala ma kota lub hamak')
|
||||||
|
|
||||||
|
re.findall('kota|psa','Ala ma kota lub psa')
|
||||||
|
|
||||||
|
re.search('kota (i|lub) psa','Ala ma kota lub psa')
|
||||||
|
|
||||||
|
re.search('mam (kota).*(kota|psa)','Ja mam kota. Ala ma psa.').group(0)
|
||||||
|
|
||||||
|
re.search('mam (kota).*(kota|psa)','Ja mam kota. Ala ma psa.').group(1)
|
||||||
|
|
||||||
|
re.search('mam (kota).*(kota|psa)','Ja mam kota. Ala ma psa.').group(2)
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Przykłady wyrażenia regularne 2 (objaśnienia na laboratoriach)
|
||||||
|
|
||||||
|
#### ^
|
||||||
|
```
|
||||||
|
re.search('[0-9]+', '123-456-789')
|
||||||
|
re.search('[^0-9][0-9]+[^0-9]', '123-456-789')
|
||||||
|
```
|
||||||
|
|
||||||
|
#### cudzysłów
|
||||||
|
'' oraz "" - oznaczają to samo w pythonie
|
||||||
|
|
||||||
|
' ala ma psa o imieniu "Burek"'
|
||||||
|
|
||||||
|
" ala ma psa o imieniu 'Burek' "
|
||||||
|
|
||||||
|
' ala ma psa o imieniu \'Burek\' '
|
||||||
|
|
||||||
|
" ala ma psa o imieniu \"Burek\" "
|
||||||
|
|
||||||
|
#### multiline string
|
||||||
|
|
||||||
|
#### raw string
|
||||||
|
|
||||||
|
przy raw string znaki \ traktowane są jako zwykłe znaki \
|
||||||
|
|
||||||
|
chociaż nawet w raw string nadal są escapowane (ale wtedy \ pozostają również w stringu bez zmian)
|
||||||
|
|
||||||
|
https://docs.python.org/3/reference/lexical_analysis.html
|
||||||
|
|
||||||
|
dobra praktyka - wszędzie escapować
|
||||||
|
|
||||||
|
```
|
||||||
|
'\\'
|
||||||
|
print('\\')
|
||||||
|
|
||||||
|
r'\\'
|
||||||
|
print(r'\\')
|
||||||
|
|
||||||
|
|
||||||
|
print("abcd")
|
||||||
|
print("ab\cd")
|
||||||
|
print(r"ab\cd")
|
||||||
|
|
||||||
|
print("ab\nd")
|
||||||
|
print(r"ab\nd")
|
||||||
|
|
||||||
|
|
||||||
|
print("\"")
|
||||||
|
print(r"\"")
|
||||||
|
|
||||||
|
print("\")
|
||||||
|
print(r"\")
|
||||||
|
|
||||||
|
re.search('\\', r'a\bc')
|
||||||
|
re.search(r'\\', r'a\bc')
|
||||||
|
re.search('\\\\', r'a\bc')
|
||||||
|
```
|
||||||
|
|
||||||
|
#### RE SUB
|
||||||
|
```
|
||||||
|
re.sub(pattern, replacement, string)
|
||||||
|
|
||||||
|
re.sub('a','b', 'ala ma kota')
|
||||||
|
```
|
||||||
|
|
||||||
|
#### backreferencje:
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
re.search(r' \d+ \d+', 'ala ma 41 41 kota')
|
||||||
|
re.search(r' \d+ \d+', 'ala ma 41 123 kota')
|
||||||
|
re.search(r' (\d+) \1', 'ala ma 41 41 kota')
|
||||||
|
re.search(r' (\d+) \1', 'ala ma 41 123 kota')
|
||||||
|
```
|
||||||
|
|
||||||
|
#### lookahead ( to sa takie assercje):
|
||||||
|
```
|
||||||
|
re.search(r'ma kot', 'ala ma kot')
|
||||||
|
re.search(r'ma kot(?=[ay])', 'ala ma kot')
|
||||||
|
re.search(r'ma kot(?=[ay])', 'ala ma kotka')
|
||||||
|
re.search(r'ma kot(?=[ay])', 'ala ma koty')
|
||||||
|
re.search(r'ma kot(?=[ay])', 'ala ma kota')
|
||||||
|
|
||||||
|
re.search(r'ma kot(?![ay])', 'ala ma kot')
|
||||||
|
re.search(r'ma kot(?![ay])', 'ala ma kotka')
|
||||||
|
re.search(r'ma kot(?![ay])', 'ala ma koty')
|
||||||
|
re.search(r'ma kot(?![ay])', 'ala ma kota')
|
||||||
|
```
|
||||||
|
|
||||||
|
#### named groups
|
||||||
|
```
|
||||||
|
r = re.search(r'ma (?P<ilepsow>\d+) kotow i (?P<ilekotow>\d+) psow', 'ala ma 100 kotow i 200 psow')
|
||||||
|
r.groups()
|
||||||
|
r.groups('ilepsow')
|
||||||
|
r.groups('ilekotow')
|
||||||
|
```
|
||||||
|
|
||||||
|
#### re.split
|
||||||
|
```
|
||||||
|
('a,b.c,d').split(',')
|
||||||
|
('a,b.c,d').split(',')
|
||||||
|
('a,b.c,d').split(',.')
|
||||||
|
re.split(r',', 'a,b.c,d')
|
||||||
|
re.split(r'[.,]', 'a,b.c,d')
|
||||||
|
```
|
||||||
|
#### \w word character
|
||||||
|
```
|
||||||
|
\w - matchuje Unicod word character , jeżeli flaga ASCII to [a-zA-Z0-9_]
|
||||||
|
\w - odwrotne do \W, jezeli flaga ASCI to [^a-zA-Z0-9_]
|
||||||
|
|
||||||
|
re.findall(r'\w+', 'ala ma 3 koty.')
|
||||||
|
re.findall(r'\W+', 'ala ma 3 koty.')
|
||||||
|
```
|
||||||
|
#### początek albo koniec słowa | word boundary
|
||||||
|
```
|
||||||
|
re.search(r'\bkot\b', 'Ala ma kota')
|
||||||
|
re.search(r'\bkot\b', 'Ala ma kot')
|
||||||
|
re.search(r'\bkot\b', 'Ala ma kot.')
|
||||||
|
re.search(r'\bkot\b', 'Ala ma kot ')
|
||||||
|
|
||||||
|
re.search(r'\Bot\B', 'Ala ma kot ')
|
||||||
|
re.search(r'\Bot\B', 'Ala ma kota ')
|
||||||
|
```
|
||||||
|
#### MULTILINE
|
||||||
|
```
|
||||||
|
re.findall(r'^Ma', 'Ma kota Ala\nMa psa Jacek')
|
||||||
|
re.findall(r'^Ma', 'Ma kota Ala\nMa psa Jacek', re.MULTILINE)
|
||||||
|
```
|
||||||
|
#### RE.COMPILE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## zajęcia 6
|
||||||
|
|
||||||
|
instalacja https://pypi.org/project/google-re2/
|
||||||
|
|
||||||
|
### DFA i NDFA
|
||||||
|
|
||||||
|
```
|
||||||
|
import re2 as re
|
||||||
|
n = 50
|
||||||
|
regexp = "a?"*n+"a"*n
|
||||||
|
s = "a"*n
|
||||||
|
re.match(regexp, s)
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
re.match(r"(\d)abc\1", "3abc3") # re2 nie obsługuje backreferencji
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
re2 max memory - podniesienie limitu
|
||||||
|
time # mierzenie czasu działania
|
||||||
|
|
||||||
|
|
||||||
|
gdyby ktoś chciał poczytać więcej:
|
||||||
|
https://swtch.com/~rsc/regexp/regexp1.html
|
||||||
|
|
||||||
|
### UTF-8
|
||||||
|
```
|
||||||
|
c = "ℋ"
|
||||||
|
ord(c)
|
||||||
|
chr(8459)
|
||||||
|
8* 16**2 + 0 * 16**(1) + 0*16**(0)
|
||||||
|
15*16**3 + 15* 16**2 + 15 * 16**(1) + 15*16**(0)
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
xxd -b file
|
||||||
|
xxd file
|
||||||
|
```
|
||||||
|
|
||||||
|
termin oddawania zadań - 15. listopada
|
||||||
|
|
||||||
|
|
||||||
|
## Zajęcia 7
|
||||||
|
https://www.openfst.org/twiki/bin/view/GRM/Thrax
|
||||||
|
|
||||||
|
https://www.cs.jhu.edu/~jason/465/hw-ofst/hw-ofst.pdf
|
||||||
|
|
||||||
|
Wszystkie zadania proszę robić na wzór `TaskH00`. Proszę umieszczać gramatykę w pliku `grammar.grm` oraz
|
||||||
|
opisywać finalną regułę nazwą `FinalRule`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## KOLOKWIUM
|
||||||
|
Operatory, obowiązujące na kolokwium
|
||||||
|
====================================
|
||||||
|
|
||||||
|
* kwantyfikatory `-` `*` `+` `?` `{n}` `{n,}` `{n, m}`
|
||||||
|
* alternatywa — `|`
|
||||||
|
* klasy znaków — `[...]`
|
||||||
|
* zanegowane klasy znaków — `[^...]`
|
||||||
|
* dowolny znak — `.`
|
||||||
|
* unieważnianie znaków specjalnych — \
|
||||||
|
* operatory zakotwiczające — `^` `$`
|
||||||
|
|
||||||
|
|
||||||
|
Na kolokwium do każdego z 4 pytań będą 3 podpunkty. Na każdy podpunkt odpowiadamy TAK/NIE. Czas trwania to 15 minut.
|
||||||
|
|
||||||
|
- zawsze daszek i dolar
|
||||||
|
- nie bierzemy pod uwagę capturing (jeżeli są pytania o równoważne)
|
||||||
|
- proponuję wydrukować cały test w wersji bez opdowiedzi i sprawdzać
|
||||||
|
|
||||||
|
|
||||||
|
Do zaliczenia należy zdobyć conajmniej 10 punktów.
|
5
TaskB00/TaskA01/description.txt
Normal file
5
TaskB00/TaskA01/description.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
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
|
28
TaskB00/TaskA01/run.py
Normal file
28
TaskB00/TaskA01/run.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
def openFile(fileName,hamletArray = ['H','a', 'm', 'l', 'e', 't']):
|
||||||
|
with open(fileName, "r", encoding="utf-8") as file:
|
||||||
|
for row in file:
|
||||||
|
repCounter = 0
|
||||||
|
counter = 0
|
||||||
|
checkWord =''
|
||||||
|
for i in row:
|
||||||
|
if i == hamletArray[counter]:
|
||||||
|
checkWord+=i
|
||||||
|
counter+=1
|
||||||
|
if checkWord == 'Hamlet':
|
||||||
|
checkWord = ''
|
||||||
|
counter = 0
|
||||||
|
repCounter+=1 #if in one row more than one Hamlet it will write the row only once
|
||||||
|
if repCounter == 1:
|
||||||
|
print(row.strip())
|
||||||
|
else:
|
||||||
|
checkWord = ''
|
||||||
|
counter = 0
|
||||||
|
print('---------------------SHAKESPEARE.EXP--------------------------------------')
|
||||||
|
openFile('shakespeare.exp')
|
||||||
|
print('----------------------SHAKESPEARE.EXP-----------------------------------')
|
||||||
|
openFile('shakespeare.in')
|
||||||
|
print('------------------------SIMPLE.IN------------------------------------')
|
||||||
|
openFile('simple.in')
|
||||||
|
print('-----------------------SIMPLE.EXP--------------------------------------')
|
||||||
|
openFile('simple.exp')
|
106
TaskB00/TaskA01/shakespeare.exp
Normal file
106
TaskB00/TaskA01/shakespeare.exp
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
CLAUDIUS, King of Denmark, Hamlet’s uncle.
|
||||||
|
The GHOST of the late king, Hamlet’s father.
|
||||||
|
GERTRUDE, the Queen, Hamlet’s mother, now wife of Claudius.
|
||||||
|
HORATIO, Friend to Hamlet.
|
||||||
|
Dar’d 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 brother’s 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 unforc’d 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. I’ll 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 unbrac’d,
|
||||||
|
Of Hamlet’s transformation; so I call it,
|
||||||
|
And bring these gentlemen where Hamlet is.
|
||||||
|
The very cause of Hamlet’s 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 Hamlet’s 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, where’s 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 Hamlet’s character. ’Naked!’
|
||||||
|
And that in Hamlet’s hearing, for a quality
|
||||||
|
Did Hamlet so envenom with his envy
|
||||||
|
Hamlet comes back: what would you undertake
|
||||||
|
Hamlet return’d shall know you are come home:
|
||||||
|
Enter Hamlet and Horatio, at a distance.
|
||||||
|
Hamlet o’ercame Fortinbras.
|
||||||
|
that young Hamlet was born,—he that is mad, and sent into England.
|
||||||
|
I hop’d thou shouldst have been my Hamlet’s 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 Laertes’s hand into Hamlet’s._]
|
||||||
|
Was’t Hamlet wrong’d Laertes? Never Hamlet.
|
||||||
|
If Hamlet from himself be ta’en away,
|
||||||
|
Then Hamlet does it not, Hamlet denies it.
|
||||||
|
Hamlet is of the faction that is wrong’d;
|
||||||
|
His madness is poor Hamlet’s enemy.
|
||||||
|
Give them the foils, young Osric. Cousin Hamlet,
|
||||||
|
If Hamlet give the first or second hit,
|
||||||
|
The King shall drink to Hamlet’s 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
TaskB00/TaskA01/shakespeare.in
Normal file
169442
TaskB00/TaskA01/shakespeare.in
Normal file
File diff suppressed because it is too large
Load Diff
2
TaskB00/TaskA01/simple.exp
Normal file
2
TaskB00/TaskA01/simple.exp
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Here comes Hamlet
|
||||||
|
Hamlet Hamlet again
|
3
TaskB00/TaskA01/simple.in
Normal file
3
TaskB00/TaskA01/simple.in
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Here comes Hamlet
|
||||||
|
ABC
|
||||||
|
Hamlet Hamlet again
|
7
TaskB00/TaskA02/description.txt
Normal file
7
TaskB00/TaskA02/description.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
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
|
13
TaskB00/TaskA02/polish_wiki_excerpt.exp
Normal file
13
TaskB00/TaskA02/polish_wiki_excerpt.exp
Normal 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
TaskB00/TaskA02/polish_wiki_excerpt.in
Normal file
50000
TaskB00/TaskA02/polish_wiki_excerpt.in
Normal file
File diff suppressed because one or more lines are too long
67
TaskB00/TaskA02/run.py
Normal file
67
TaskB00/TaskA02/run.py
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
def checkFirstSymbol(character):
|
||||||
|
if character == 'P' or character == 'p' or character == ' ':
|
||||||
|
return character
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def checkLastSymbol(character):
|
||||||
|
if (character == '\t'
|
||||||
|
or character == '\n'
|
||||||
|
or character == '.'
|
||||||
|
or character == ','
|
||||||
|
or character == ';'
|
||||||
|
or character == '!'
|
||||||
|
or character == ' '
|
||||||
|
or character == '?'
|
||||||
|
or character == '-'
|
||||||
|
or character == ')'):
|
||||||
|
return character
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
def openFile(fileName):
|
||||||
|
with open(fileName, "r", encoding="utf-8") as file:
|
||||||
|
for row in file:
|
||||||
|
lastWordSymbol = ''
|
||||||
|
counter = 0
|
||||||
|
checkWord = []
|
||||||
|
for i in row:
|
||||||
|
if lastWordSymbol == '' or lastWordSymbol == ' ':
|
||||||
|
if i == 'P' or i=='p':
|
||||||
|
checkWord+=i
|
||||||
|
lastWordSymbol = i
|
||||||
|
|
||||||
|
elif lastWordSymbol == checkFirstSymbol(lastWordSymbol):
|
||||||
|
checkWord += i
|
||||||
|
lastWordSymbol = i
|
||||||
|
elif lastWordSymbol == 'i' and i=='e':
|
||||||
|
checkWord += i
|
||||||
|
lastWordSymbol = i
|
||||||
|
elif lastWordSymbol == 'e' and i == 's':
|
||||||
|
checkWord += i
|
||||||
|
lastWordSymbol = i
|
||||||
|
elif lastWordSymbol == 's' and i == checkLastSymbol(i):
|
||||||
|
checkWord += i
|
||||||
|
lastWordSymbol = i
|
||||||
|
else:
|
||||||
|
checkWord=[]
|
||||||
|
lastWordSymbol=''
|
||||||
|
if (len(checkWord)>=5 and checkWord[0]==checkFirstSymbol(checkWord[0])
|
||||||
|
and checkWord[1] == 'i'
|
||||||
|
and checkWord[2] == 'e'
|
||||||
|
and checkWord[3] == 's'
|
||||||
|
and checkWord[4] == checkLastSymbol(checkWord[4])):
|
||||||
|
print(row, end ='')
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print('---------------------SHAKESPEARE.EXP--------------------------------------')
|
||||||
|
openFile('polish_wiki_excerpt.exp')
|
||||||
|
print('----------------------SHAKESPEARE.EXP-----------------------------------')
|
||||||
|
openFile('polish_wiki_excerpt.in')
|
||||||
|
print('------------------------SIMPLE.IN------------------------------------')
|
||||||
|
openFile('simple.in')
|
||||||
|
print('-----------------------SIMPLE.EXP--------------------------------------')
|
||||||
|
openFile('simple.exp')
|
3
TaskB00/TaskA02/simple.exp
Normal file
3
TaskB00/TaskA02/simple.exp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Pies ma Alę
|
||||||
|
Kot i pies to zwierzęta
|
||||||
|
(pies)
|
5
TaskB00/TaskA02/simple.in
Normal file
5
TaskB00/TaskA02/simple.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Pies ma Alę
|
||||||
|
Ala ma psa
|
||||||
|
tu nic nie ma
|
||||||
|
Kot i pies to zwierzęta
|
||||||
|
pies
|
6
TaskB00/TaskA03/description.txt
Normal file
6
TaskB00/TaskA03/description.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
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
|
951
TaskB00/TaskA03/polish_wiki_excerpt.exp
Normal file
951
TaskB00/TaskA03/polish_wiki_excerpt.exp
Normal file
File diff suppressed because one or more lines are too long
0
TaskB00/TaskA03/polish_wiki_excerpt.in
Normal file
0
TaskB00/TaskA03/polish_wiki_excerpt.in
Normal file
51
TaskB00/TaskA03/run.py
Normal file
51
TaskB00/TaskA03/run.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
|
||||||
|
def checkNumber(i):
|
||||||
|
if (i == '0'
|
||||||
|
or i == '1'
|
||||||
|
or i == '2'
|
||||||
|
or i == '3'
|
||||||
|
or i == '4'
|
||||||
|
or i == '5'
|
||||||
|
or i == '6'
|
||||||
|
or i == '7'
|
||||||
|
or i == '8'
|
||||||
|
or i == '9'):
|
||||||
|
return i
|
||||||
|
def openFile(fileName, ageArray = ['1', '9', None, None, ' ', 'r', '.']):
|
||||||
|
with open(fileName, "r", encoding="utf-8") as file:
|
||||||
|
for row in file:
|
||||||
|
repCounter = 0
|
||||||
|
counter = 0
|
||||||
|
checkWord =[]
|
||||||
|
for i in row:
|
||||||
|
if counter != 2 and counter !=3:
|
||||||
|
if i == ageArray[counter]:
|
||||||
|
checkWord+=i
|
||||||
|
counter +=1
|
||||||
|
else:
|
||||||
|
checkWord = []
|
||||||
|
counter = 0
|
||||||
|
if counter == 7:
|
||||||
|
repCounter+=1
|
||||||
|
checkWord = []
|
||||||
|
counter = 0
|
||||||
|
if repCounter == 1:
|
||||||
|
print(row.strip())
|
||||||
|
|
||||||
|
else:
|
||||||
|
if i==checkNumber(i):
|
||||||
|
checkWord+=i
|
||||||
|
counter+=1
|
||||||
|
else:
|
||||||
|
checkWord = []
|
||||||
|
counter = 0
|
||||||
|
|
||||||
|
print('---------------------SHAKESPEARE.EXP--------------------------------------')
|
||||||
|
openFile('polish_wiki_excerpt.exp')
|
||||||
|
print('----------------------SHAKESPEARE.EXP-----------------------------------')
|
||||||
|
openFile('polish_wiki_excerpt.in')
|
||||||
|
print('------------------------SIMPLE.IN------------------------------------')
|
||||||
|
openFile('simple.in')
|
||||||
|
print('-----------------------SIMPLE.EXP--------------------------------------')
|
||||||
|
openFile('simple.exp')
|
3
TaskB00/TaskA03/simple.exp
Normal file
3
TaskB00/TaskA03/simple.exp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Kiedyś był 1934 r.
|
||||||
|
Kiedyś był 1934 r.fsdfsdfsdf
|
||||||
|
1934 r. to jakaś data
|
5
TaskB00/TaskA03/simple.in
Normal file
5
TaskB00/TaskA03/simple.in
Normal 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
|
6
TaskB00/TaskA04/description.txt
Normal file
6
TaskB00/TaskA04/description.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
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
|
19939
TaskB00/TaskA04/polish_wiki_excerpt.exp
Normal file
19939
TaskB00/TaskA04/polish_wiki_excerpt.exp
Normal file
File diff suppressed because it is too large
Load Diff
0
TaskB00/TaskA04/polish_wiki_excerpt.in
Normal file
0
TaskB00/TaskA04/polish_wiki_excerpt.in
Normal file
44
TaskB00/TaskA04/run.py
Normal file
44
TaskB00/TaskA04/run.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
|
||||||
|
def checkNumber(i):
|
||||||
|
if (i == '0'
|
||||||
|
or i == '1'
|
||||||
|
or i == '2'
|
||||||
|
or i == '3'
|
||||||
|
or i == '4'
|
||||||
|
or i == '5'
|
||||||
|
or i == '6'
|
||||||
|
or i == '7'
|
||||||
|
or i == '8'
|
||||||
|
or i == '9'):
|
||||||
|
return i
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
def openFile(fileName):
|
||||||
|
with open(fileName, "r", encoding="utf-8") as file:
|
||||||
|
for row in file:
|
||||||
|
lastCharacter = ''
|
||||||
|
checkWord =''
|
||||||
|
for i in row:
|
||||||
|
if i == checkNumber(i):
|
||||||
|
if lastCharacter != checkNumber(lastCharacter):
|
||||||
|
checkWord += ' '
|
||||||
|
checkWord += i
|
||||||
|
else:
|
||||||
|
checkWord += i
|
||||||
|
if i == '\n':
|
||||||
|
if checkWord != '':
|
||||||
|
print(checkWord)
|
||||||
|
checkWord = ''
|
||||||
|
lastCharacter = i
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print('---------------------SHAKESPEARE.EXP--------------------------------------')
|
||||||
|
openFile('polish_wiki_excerpt.exp')
|
||||||
|
print('----------------------SHAKESPEARE.EXP-----------------------------------')
|
||||||
|
openFile('polish_wiki_excerpt.in')
|
||||||
|
print('------------------------SIMPLE.IN------------------------------------')
|
||||||
|
openFile('simple.in')
|
||||||
|
print('-----------------------SIMPLE.EXP--------------------------------------')
|
||||||
|
openFile('simple.exp')
|
4
TaskB00/TaskA04/simple.exp
Normal file
4
TaskB00/TaskA04/simple.exp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
34234 34 5
|
||||||
|
34535
|
||||||
|
34
|
||||||
|
1992 1999
|
5
TaskB00/TaskA04/simple.in
Normal file
5
TaskB00/TaskA04/simple.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
cd jfz34234 34 dfd gfd 5
|
||||||
|
34535
|
||||||
|
fsdflskf3jsdf3lk
|
||||||
|
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
|
29
TaskB00/run.py
Normal file
29
TaskB00/run.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import sys
|
||||||
|
def write_answer(answer):
|
||||||
|
with open('test1.out', 'a') as file:
|
||||||
|
file.write(answer+'\n')
|
||||||
|
def find_next_position(position, character):
|
||||||
|
with open('fsa_description.arg', 'r') as readed_used_table:
|
||||||
|
for row_used_table in readed_used_table:
|
||||||
|
line = row_used_table.strip().split('\t')
|
||||||
|
if position == line[0] and character == line[2]:
|
||||||
|
return True,line[1]
|
||||||
|
# used_table = sys.argv[1]
|
||||||
|
# input_file = sys.argv[2]
|
||||||
|
with open('test1.out', 'w') as readed_output_file:
|
||||||
|
with open('test1.in', 'r') as readed_input_file:
|
||||||
|
for row_input_file in readed_input_file:
|
||||||
|
result = False
|
||||||
|
next_position = None
|
||||||
|
position = '0'
|
||||||
|
for character in row_input_file:
|
||||||
|
if character =='\n':
|
||||||
|
if position=='3':
|
||||||
|
write_answer('YES')
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
write_answer('NO')
|
||||||
|
break
|
||||||
|
result, next_position = find_next_position(position,character)
|
||||||
|
if result == True:
|
||||||
|
position = next_position
|
8
TaskB00/test1.out
Normal file
8
TaskB00/test1.out
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
NO
|
||||||
|
YES
|
||||||
|
NO
|
||||||
|
NO
|
||||||
|
NO
|
||||||
|
NO
|
||||||
|
NO
|
||||||
|
NO
|
Loading…
Reference in New Issue
Block a user