Compare commits

...

16 Commits

Author SHA1 Message Date
41b58e6808 commit 2024-01-29 23:18:03 +01:00
d84cd90855 commit ktory powinien powstac tydzien temu 2024-01-29 21:35:28 +01:00
mxsgd
9033821f8e G05 2024-01-22 11:40:08 +01:00
ee7d0e9e08 G05 2024-01-18 15:17:03 +01:00
mxsgd
f4afb37947 G05 2024-01-18 15:09:46 +01:00
ef25cc15f7 Update run_report 2024-01-14 17:27:15 +01:00
mxsgd
566bb7c07c F fixes 2024-01-14 17:25:11 +01:00
mxsgd
bc7afb24c1 F .in update ehhh 2024-01-13 23:20:30 +01:00
mxsgd
3b5056ca2d F .in update ehhh 2024-01-13 23:19:50 +01:00
mxsgd
27bcde8f09 F 2024-01-07 21:21:03 +01:00
mxsgd
841655da18 third attempt 2024-01-04 12:45:47 +01:00
mxsgd
77de00fd23 update 2024-01-03 19:19:38 +01:00
mxsgd
2e63e7e82c update 2023-12-28 12:43:08 +01:00
mxsgd
d80adf4e0f update 2023-12-17 21:57:50 +01:00
5e9c631528 update 2023-12-17 21:57:42 +01:00
maks
484523b145 as 2023-11-19 22:43:18 +01:00
269 changed files with 1616842 additions and 44 deletions

View File

@ -2,7 +2,7 @@
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.10" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/encodings.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/TaskF05/simple.out" charset="windows-1252" />
</component>
</project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>

View File

@ -2,7 +2,7 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/djfz-2023-s464933n.iml" filepath="$PROJECT_DIR$/.idea/djfz-2023-s464933n.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/djfz-2023.iml" filepath="$PROJECT_DIR$/.idea/djfz-2023.iml" />
</modules>
</component>
</project>

167
README.md
View File

@ -10,13 +10,13 @@ Gdyby była potrzeba przedyskutowania czegoś to możemy zostać po zajęciach.
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 się zaliczyć przedmiotu. Punktacja za zadania jest następująca:
- mniej niż 30 punktów - 2
- 30-34- 3
- 35-39- 3.5
- 40-44- 4
- 45-49- 4.5
- więcej niż 49- 5
nie będzie wpływał na ocenę, ale bez zdanego kolokwium nie da się zaliczyć przedmiotu. Punktacja za zadania jest następująca:
- mniej niż 29 punktów - 2
- 29-33- 3
- 34-38- 3.5
- 39-43- 4
- 44-48- 4.5
- więcej niż 48- 5
#### Wysyłanie zadań
@ -239,3 +239,156 @@ re.search('\\', r'a\bc')
re.search(r'\\', r'a\bc')
re.search('\\\\', r'a\bc')
```
## Zajęcia 4 27.11.2023 Wyrażenia regularne 2
E00 - E09 - po jedno dla każdego
E10 - E36 - po jedno dla każdego
E37 - E43 - po jedno dla każdego
E44 - E48 - po jedno dla każdego
## Zajęcia 5 11.12.2023 Wyrażenia regularne 3
F00 - F05 - do wykonania przez każdego
Proszę o przekopiowanie sobie pliku polish_wiki_excerpt.in z zadania F00 do katalogów z pozostałymi zadaniami
#### 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)
```
F00 - F05 - do wykonania przez każdego
## Zajęcia 6 8.01.2024 Kodowanie i re2
Proszę o przekopiowanie sobie pliku polish_wiki_excerpt.in z zadania F00 do katalogów G00, G03.
Instalacja biblioteki re2: 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
```
setting = re2.Options()
setting.max_mem = 1 << 30 # to jest rozmiar podany w bajtach, czyli tutaj 1GB - to jest maksimum o ile możemy podnieść limit
pattern = re2.compile(regexp, setting)
```
time # mierzenie czasu działania
```
start = time.time()
withre2()
d1 = t1ime.time() - start
print(f'That took {d1:.2f} seconds.\n')
```
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
```
## KOLOKWIUM 2024-01-22
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 — `^` `$`
W repozytorium znajdują się przykładowe pliki z zadaniami.

9
TaskB00/test1.out Normal file
View File

@ -0,0 +1,9 @@
NO
YES
NO
NO
NO
NO
NO
NO
NO

14
TaskB01/test.out Normal file
View File

@ -0,0 +1,14 @@
YES
NO
YES
NO
YES
NO
NO
YES
NO
NO
NO
NO
NO
NO

View File

@ -1 +0,0 @@
q

File diff suppressed because it is too large Load Diff

6
TaskB05/simple.out Normal file
View File

@ -0,0 +1,6 @@
NO
YES
NO
NO
YES
YES

201
TaskB07/fsa_description.arg Normal file
View File

@ -0,0 +1,201 @@
0 0 a
0 0 b
0 0 c
0 0 d
0 0 e
0 0 f
0 0 g
0 0 h
0 0 i
0 0 j
0 0 k
0 0 l
0 0 m
0 0 n
0 1 o
0 0 p
0 0 r
0 0 s
0 0 t
0 0 u
0 0 v
0 0 w
0 0 x
0 0 y
0 0 z
1 0 a
1 0 b
1 0 c
1 0 d
1 0 e
1 0 f
1 0 g
1 0 h
1 0 i
1 0 j
1 0 k
1 0 l
1 0 m
1 0 n
1 0 o
1 2 p
1 0 r
1 0 s
1 0 t
1 0 u
1 0 v
1 0 w
1 0 x
1 0 y
1 0 z
2 0 a
2 0 b
2 0 c
2 0 d
2 0 e
2 0 f
2 0 g
2 3 h
2 0 i
2 0 j
2 0 k
2 0 l
2 0 m
2 0 n
2 0 o
2 0 p
2 0 r
2 0 s
2 0 t
2 0 u
2 0 v
2 0 w
2 0 x
2 0 y
2 0 z
3 0 a
3 0 b
3 0 c
3 0 d
3 4 e
3 0 f
3 0 g
3 0 h
3 0 i
3 0 j
3 0 k
3 0 l
3 0 m
3 0 n
3 0 o
3 0 p
3 0 r
3 0 s
3 0 t
3 0 u
3 0 v
3 0 w
3 0 x
3 0 y
3 0 z
4 0 a
4 0 b
4 0 c
4 0 d
4 0 e
4 0 f
4 0 g
4 0 h
4 0 i
4 0 j
4 0 k
4 5 l
4 0 m
4 0 n
4 0 o
4 0 p
4 0 r
4 0 s
4 0 t
4 0 u
4 0 v
4 0 w
4 0 x
4 0 y
4 0 z
5 0 a
5 0 b
5 0 c
5 0 d
5 0 e
5 0 f
5 0 g
5 0 h
5 6 i
5 0 j
5 0 k
5 0 l
5 0 m
5 0 n
5 0 o
5 0 p
5 0 r
5 0 s
5 0 t
5 0 u
5 0 v
5 0 w
5 0 x
5 0 y
5 0 z
6 7 a
6 0 b
6 0 c
6 0 d
6 0 e
6 0 f
6 0 g
6 0 h
6 0 i
6 0 j
6 0 k
6 0 l
6 0 m
6 0 n
6 0 o
6 0 p
6 0 r
6 0 s
6 0 t
6 0 u
6 0 v
6 0 w
6 0 x
6 0 y
6 0 z
7 7 a
7 7 b
7 7 c
7 7 d
7 7 e
7 7 f
7 7 g
7 7 h
7 7 i
7 7 j
7 7 k
7 7 l
7 7 m
7 7 n
7 7 o
7 7 p
7 7 r
7 7 s
7 7 t
7 7 u
7 7 v
7 7 w
7 7 x
7 7 y
7 7 z
7

96
TaskB07/run.py Normal file
View File

@ -0,0 +1,96 @@
# B00 (2021)
#
import sys
class FSA:
def __init__(self):
self.initial_state = '0' # zakładamy dla uproszczenia, że initial state = 0
self.final_states = set()
self.transitions = dict()
self.alphabet = set()
def add_transition(self, state_from, state_to, symbol):
if state_from in self.transitions.keys():
self.transitions[state_from][symbol] = state_to
else:
self.transitions[state_from] = dict()
self.transitions[state_from][symbol] = state_to
def add_final_state(self, state):
self.final_states.add(state)
def get_final_state(self, string):
current_state = self.initial_state
for symbol in string:
current_state = self.transitions[current_state][symbol]
return current_state
def accepts(self, string):
if self.get_final_state(string) in self.final_states:
return True
else:
return False
fsa = FSA()
# def build_fsa(self): #, dfa_desciption
table = open(sys.argv[1]) # dfa_desciption
for line in table:
line = line.rstrip('\n')
if len(line.split('\t')) == 3:
a, b, c = line.split('\t')
fsa.add_transition(a, b, c) #self
fsa.alphabet.add(c) #self
elif len(line.split('\t')) == 1:
fsa.add_final_state(line) #self
else:
assert False
# def run_dfa(self): # , input
for line in sys.stdin: # open(input)
line = line.rstrip()
line_n = list(line)
for i in range(len(line_n)):
if line_n[i] not in fsa.alphabet: #self
line_n[i] = 'x'
if fsa.accepts(line_n): #self
print('YES')
else:
print('NO')
# def run_dfa_and_compare(self, input, expected):
#
# accepts = []
#
# for line in open(input): # sys.stdin
# line = line.rstrip()
#
# line_n = list(line)
#
# for i in range(len(line_n)):
# if line_n[i] not in self.alphabet:
# line_n[i] = 'x'
#
# if self.accepts(line_n):
# accepts.append('YES')
# else:
# accepts.append('NO')
#
# i = 0
# for line in open(expected):
# if line.rstrip() != accepts[i]:
# print('Incorrect in line ' + str(i))
# return
# i = i + 1
# print('Correct')

File diff suppressed because it is too large Load Diff

View File

0
TaskB07/simple.out Normal file
View File

View File

@ -1,5 +1,5 @@
import sys
import copy
class FSA:
@ -20,11 +20,27 @@ class FSA:
else:
self.transitions[state_from] = dict()
self.transitions[state_from][symbol] = {state_to}
def get_final_state(self, string):
current_states = {self.initial_state}
for symbol in string:
new_current_states = set()
for current_state in current_states:
try:
new_current_states |= self.transitions[current_state][symbol]
except:
pass
current_states = copy.deepcopy(new_current_states)
return current_states
def add_final_state(self, state):
self.final_states.add(state)
def accepts(self, string):
final_states = self.get_final_states(string)
for final_state in final_states:
if final_state in self.final_states:
return True
return False
fsa = FSA()
table = open(sys.argv[1])

View File

@ -1,9 +1,7 @@
import sys
class FSA:
def __init__(self,):
class NFA:
def __init__(self):
self.initial_state = '0'
self.final_states = set()
@ -24,25 +22,32 @@ class FSA:
def add_final_state(self, state):
self.final_states.add(state)
def get_final_states(self, string):
current_states = {self.initial_state}
for symbol in string:
current_states = {state for current_state in current_states for state in self.transitions.get(current_state, {}).get(symbol, set())}
return current_states
fsa = FSA()
def accepts(self, string):
return any(final_state in self.final_states for final_state in self.get_final_states(string))
nfa = NFA()
table = open(sys.argv[1])
for line in table:
line = line.rstrip()
if len(line.split('\t')) == 3:
a, b, c = line.split('\t')
fsa.add_transition(a, b, c)
fsa.alphabet.add(c)
line = line.rstrip('\n')
if len(line.split(' ')) == 3:
a, b, c = line.split(' ')
c = c.replace("'","")
c = list(c)
for x in c:
nfa.add_transition(a, b, x)
nfa.alphabet.add(x)
elif len(line.split(' ')) == 1:
nfa.add_final_state(line)
else:
fsa.add_final_state(line)
assert False
for line in sys.stdin:
line = line.rstrip()
if fsa.accepts(line):
print('YES')
else:
print('NO')
print("YES" if nfa.accepts(line.strip()) else "NO")

View File

@ -0,0 +1,7 @@
YES
YES
YES
NO
NO
NO
NO

File diff suppressed because it is too large Load Diff

40
TaskC06/run.py Normal file
View File

@ -0,0 +1,40 @@
import sys
class FSA:
def __init__(self):
self.initial_state = '0'
self.final_states = set()
self.transitions = dict()
self.alphabet = set()
def add_transition(self, state_from, state_to, symbol):
if state_from in self.transitions.keys():
if symbol not in self.transitions[state_from].keys():
self.transitions[state_from][symbol] = {state_to}
else:
self.transitions[state_from][symbol] |= {state_to}
else:
self.transitions[state_from] = dict()
self.transitions[state_from][symbol] = {state_to}
def add_final_state(self, state):
self.final_states.add(state)
def get_all_paths(self):
paths = []
stack = [('', '0')]
while stack:
current_path, current_state = stack.pop()
if current_state in self.final_states:
paths.append(current_path)
if current_state in self.transitions:
for symbol, states in self.transitions[current_state].items():
stack.extend((current_path + symbol, state) for state in states)
return sorted(paths)
fsa = FSA()
for line in sys.stdin:
parts = line.strip().split('\t')
if parts == ['']: break
[fsa.add_transition(parts[0], parts[1], parts[2]) for parts in [parts]] if len(parts) == 3 else fsa.add_final_state(parts[0])
for path in fsa.get_all_paths():
print(path)

View File

@ -0,0 +1,4 @@
biały
dom
piła
stali

View File

@ -0,0 +1,3 @@
biały
piła
stali

11
TaskD01/run.py Normal file
View File

@ -0,0 +1,11 @@
import re
import sys
def re_find_hamlet(input):
for _, l in enumerate(input, start=1):
if re.search(r'\bHamlet\b', l):
print(l.strip())
re_find_hamlet(sys.stdin)

2
TaskD01/simple.out Normal file
View File

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

11
TaskD02/run.py Normal file
View File

@ -0,0 +1,11 @@
import re
import sys
def pies(input):
for _, l in enumerate(input, start=1):
if re.search(r'\bpies\b', l, flags=re.IGNORECASE):
print(l.strip())
pies(sys.stdin)

3
TaskD02/simple.out Normal file
View File

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

11
TaskD03/run.py Normal file
View File

@ -0,0 +1,11 @@
import re
import sys
def pog_champ(input):
for _, l in enumerate(input, start=1):
if re.search(r'19\d{2} r\.', l):
print(l.strip())
pog_champ(sys.stdin)

3
TaskD03/simple.out Normal file
View File

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

12
TaskD04/run.py Normal file
View File

@ -0,0 +1,12 @@
import re
import sys
def find_numbers(s):
return re.compile(r'\d+').findall(s)
input = sys.stdin.read().splitlines()
for l in input:
r = find_numbers(l)
print(f"{' '.join(r)}\n" if r else '', end='')

4
TaskD04/simple.out Normal file
View File

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

36
TaskE00/description.txt Normal file
View File

@ -0,0 +1,36 @@
Liczby podzielne przez 5
========================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy zadany napis jest liczbą całkowitą
podzielną przez 5. Napis nie powinien zawierać zer nieznaczących.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string check, if the given string is an integer divisible by 5.
The string should not contain leading zeros.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 0.
Attention. The task is for students whose students id remainder of the division by 10 is 0.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 0/10

10
TaskE00/test.exp Normal file
View File

@ -0,0 +1,10 @@
yes
yes
no
yes
no
no
yes
no
yes
no

10
TaskE00/test.in Normal file
View File

@ -0,0 +1,10 @@
-1005
-50
-76
0
00
01000
1000
353
465
@!q

35
TaskE01/description.txt Normal file
View File

@ -0,0 +1,35 @@
Liczby podzielne przez 25
=========================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy zadany napis jest dodatnią liczbą
podzielną przez 25.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string check, if the given string is a positive integer divisible by 25.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 1.
Attention. The task is for students whose students id remainder of the division by 10 is 1.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 1/10

8
TaskE01/test.exp Normal file
View File

@ -0,0 +1,8 @@
no
yes
yes
yes
no
no
no
no

8
TaskE01/test.in Normal file
View File

@ -0,0 +1,8 @@
0
1000
111111125
25
353
465
@!q
x50

36
TaskE02/description.txt Normal file
View File

@ -0,0 +1,36 @@
Kody pocztowe
=============
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy wydobyć z kodu pocztowego kod miasta (2 pierwsze
cyfry). Jeśli napis nie jest kodem pocztowym, należy wypisać "<NONE>".
Zakładamy, że kod pocztowy składa się z 2 cyfr, minusa i 3 cyfr. Jeśli
napis nie spełnia podanych warunków, należy wypisać "<NONE>".
For each string, extract the postal code of a city (2 first digits).
If the string is not a postal code, you should print "<NONE>".
We assume that the postal code consists of 2 digits, minus character, and 3 digits.
If the string doesn't fulfill the condition, you should print "<NONE>".
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 2.
Attention. The task is for students whose students id remainder of the division by 10 is 2.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 2/10

6
TaskE02/test.exp Normal file
View File

@ -0,0 +1,6 @@
<NONE>
<NONE>
23
<NONE>
61
<NONE>

6
TaskE02/test.in Normal file
View File

@ -0,0 +1,6 @@
!@#$%^&
0-333
23-000
61-23
61-680
BigFoot

37
TaskE03/description.txt Normal file
View File

@ -0,0 +1,37 @@
Numer NIP
=========
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest numerem NIP zapisanym w
formacie xxx-xxx-xx-xx bądź xxx-xx-xx-xxx. Nie trzeba brać pod uwagę sumy
kontrolnej.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string check, if the string is NIP number written in
xxx-xxx-xx-xx bądź xxx-xx-xx-xxx format. You don't need to consider a checksum.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 3.
Attention. The task is for students whose students id remainder of the division by 10 is 3.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 3/10

9
TaskE03/run.py Normal file
View File

@ -0,0 +1,9 @@
import sys
import re
for line in sys.stdin:
numbers = re.fullmatch(r"(\d{3}-\d{3}-\d{2}-\d{2})|(\d{3}-\d{2}-\d{2}-\d{3})", line.replace("\n", ""), flags=re.IGNORECASE)
if numbers:
print("yes")
else:
print("no")

5
TaskE03/test.exp Normal file
View File

@ -0,0 +1,5 @@
yes
yes
yes
no
no

5
TaskE03/test.in Normal file
View File

@ -0,0 +1,5 @@
000-00-00-000
345-45-12-334
345-455-12-34
345-455-12-349
3454551234

5
TaskE03/test.out Normal file
View File

@ -0,0 +1,5 @@
yes
yes
yes
no
no

37
TaskE04/description.txt Normal file
View File

@ -0,0 +1,37 @@
Telefon filmowy
===============
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest 9-cyfrowym numerem
telefonu zapisanym w formacie "NNN-NNN-NNN" badź "NNN NNN NNN" zaczynającym
sie od kombinacji "555".
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, you should check, if the string is a 9-digit phone number
written in "NNN-NNN-NNN" or "NNN NNN NNN" format, which starts with "555".
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 4.
Attention. The task is for students whose students id remainder of the division by 10 is 4.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 4/10

12
TaskE04/test.exp Normal file
View File

@ -0,0 +1,12 @@
no
no
no
yes
no
yes
no
yes
yes
no
no
no

12
TaskE04/test.in Normal file
View File

@ -0,0 +1,12 @@
055-555-555
505-324-555
551-233-455
555 000 000
555 000-000
555 123 456
555-000 000
555-000-000
555-123-456
556 345 667
556 345 6675
556 345-667

38
TaskE05/description.txt Normal file
View File

@ -0,0 +1,38 @@
Akronim
=======
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest akronimem (ciągiem co
najmniej dwóch i co najwyżej pięciu wielkich liter. Dodatkowo należy
uwzględnić akronimy "PCMCIA" i "WYSIWYG".
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the string is an acronym (sequence
of at least 2 and at most 5 capital letters.
Additionally, you should include acronyms "PCMCIA" i "WYSIWYG".
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 5.
Attention. The task is for students whose students id remainder of the division by 10 is 5.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 5/10

11
TaskE05/test.exp Normal file
View File

@ -0,0 +1,11 @@
no
yes
yes
no
yes
yes
no
no
no
yes
yes

11
TaskE05/test.in Normal file
View File

@ -0,0 +1,11 @@
AAAAAA
ABCDE
ATX
P
PC
PCMCIA
PCMCIB
Pc
WYSIWYA
WYSIWYG
ZZZZ

35
TaskE06/description.txt Normal file
View File

@ -0,0 +1,35 @@
Liczba pięcio bądź sześciocyfrowa
=================================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis reprezentuje liczbę pięcio-
bądź sześciocyfrową. Liczba nie powinna zawierać zer nieznaczących.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the given string represents
5 or 6 digits number. The number should not contain leading zeros.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 6.
Attention. The task is for students whose students id remainder of the division by 10 is 6.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 6/10

10
TaskE06/test.exp Normal file
View File

@ -0,0 +1,10 @@
no
no
yes
yes
yes
yes
no
no
yes
yes

10
TaskE06/test.in Normal file
View File

@ -0,0 +1,10 @@
012345
0123456
10000
100001
12345
123456
333333333333
9999
99999
999999

35
TaskE07/description.txt Normal file
View File

@ -0,0 +1,35 @@
Gwiazdek
========
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis składa się z samych gwiazdek
(co najmniej jednej).
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the given string consists of only asterisks (at least one).
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 7.
Attention. The task is for students whose students id remainder of the division by 10 is 7.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 7/10

7
TaskE07/test.exp Normal file
View File

@ -0,0 +1,7 @@
yes
yes
yes
yes
no
no
no

7
TaskE07/test.in Normal file
View File

@ -0,0 +1,7 @@
*
**
***
***********
*a
+
a*

38
TaskE08/description.txt Normal file
View File

@ -0,0 +1,38 @@
Chichot
=======
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest chichotem tzn. "hi"
powtórzonym przynajmniej 2 razy, po czym następuje opcjonalny ciąg
wykrzykników.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the given string consists of a sequence
"hi" repeated at least 2 times followed by optional sequences of
exclamation marks.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 8.
Attention. The task is for students whose students id remainder of the division by 10 is 8.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 8/10

10
TaskE08/test.exp Normal file
View File

@ -0,0 +1,10 @@
no
no
no
no
yes
yes
yes
yes
yes
no

10
TaskE08/test.in Normal file
View File

@ -0,0 +1,10 @@
!!!!!
!hi
hi
hi!!!
hihi
hihi!!!!!!!!!
hihihi
hihihi!
hihihihihihihihi
ih!

36
TaskE09/description.txt Normal file
View File

@ -0,0 +1,36 @@
Wielka litera i dwie cyfry w środku
===================================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis zawiera podciąg składający
się z wielkiej litery i dwóch cyfr.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the given string contains a substring
consisting of the capital letter and two digits.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 10 z resztą 9.
Attention. The task is for students whose students id remainder of the division by 10 is 9.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 9/10

9
TaskE09/test.exp Normal file
View File

@ -0,0 +1,9 @@
yes
no
no
yes
no
no
no
yes
yes

9
TaskE09/test.in Normal file
View File

@ -0,0 +1,9 @@
G3923d
G9
Ha3a5
Z00
Z0x0
az33a
dsdg34
hahaA39dsdsd
sssssssssssU23

37
TaskE10/description.txt Normal file
View File

@ -0,0 +1,37 @@
Podzielność liczby wystąpień
============================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy zadany napis jest potęgą liczby 2
zapisaną w systemie szesnastkowym. Liczba nie powinna zawierać zer
nieznaczących.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the given string is a power of 2 written in the hexadecimal system.
The number should not contain leading zeros.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 10.
Attention. The task is for students whose students id remainder of the division by 27 is 10.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 10/27

12
TaskE10/test.exp Normal file
View File

@ -0,0 +1,12 @@
no
no
no
yes
yes
yes
no
no
yes
yes
no
no

12
TaskE10/test.in Normal file
View File

@ -0,0 +1,12 @@
0
0008000
08000
1
2
400
400 400
4020
8000
800000
8888
A0

40
TaskE11/description.txt Normal file
View File

@ -0,0 +1,40 @@
Podzielność przez cztery
========================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy zadany napis - zapisany
dziesiętnie bądź szesnastkowo jest podzielny przez 4. Zapis szesnastkowy
jest sygnalizowany przez prefiks "0x", cyfry szesnastkowe zapisywane jako
wielkie litery. Liczba nie powinna zawierać zer nieznaczących.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the given string (written in hexadecimal
or decimal system) is divisible by 4. A hexadecimal number
is prefixed by "0x" and hexadecimal letters are capital letters.
The number should not contain leading zeros.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 11.
Attention. The task is for students whose students id remainder of the division by 27 is 11.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 11/27

17
TaskE11/test.exp Normal file
View File

@ -0,0 +1,17 @@
yes
no
yes
no
no
no
yes
no
yes
no
yes
yes
no
yes
yes
no
yes

17
TaskE11/test.in Normal file
View File

@ -0,0 +1,17 @@
0
088
0x0
0x00B
0x00C
0x2
0x34
0xB
0xC
1
100000
16
34
34536
4
4 4
88

38
TaskE12/description.txt Normal file
View File

@ -0,0 +1,38 @@
Nie koński łeb
==============
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest numerem telefonu
zapisanym w formacie N-NNN-NNNNN-NNNN (N to dowolna cyfra), innym niż numer
telefonu 1-500-56773-4323.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string check, if the given string is a phone number
wirtten in N-NNN-NNNNN-NNNN format (N is any digit), other than
1-500-56773-4323 phone number.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 12.
Attention. The task is for students whose students id remainder of the division by 27 is 12.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 12/27

6
TaskE12/test.exp Normal file
View File

@ -0,0 +1,6 @@
no
yes
yes
no
yes
yes

6
TaskE12/test.in Normal file
View File

@ -0,0 +1,6 @@
09-333-56773-4324
1-500-00000-0000
1-500-55773-4323
1-500-56773-4323
1-500-56773-4324
9-333-56773-4324

42
TaskE13/description.txt Normal file
View File

@ -0,0 +1,42 @@
Nie koński łeb 2
================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest napisem złożonym z
ciągu 5 wielkich liter i 4 wielkich liter oddzielonych spacją, które
wstukane na standardowym telefonie dadzą inny numer niż uzyskane przez
wstukanie napisu "HORSE HEAD". Zakładamy standardowe mapowanie liter na
cyfry w telefonie ("ABC" - 2, "DEF" - 3 itd.)
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string check, if the given string consists of
5 capital letters and 4 capital letter separated by space,
which written in old cellphone keyboard shows another number than typing
"HORSE HEAD". We assume standard old cellphone keyboard mapping
("ABC" - 2, "DEF" - 3 etc.)
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 13.
Attention. The task is for students whose students id remainder of the division by 27 is 13.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 13/27

9
TaskE13/test.exp Normal file
View File

@ -0,0 +1,9 @@
no
yes
no
no
no
yes
no
yes
no

9
TaskE13/test.in Normal file
View File

@ -0,0 +1,9 @@
0MORSE HEAD
AAAAA BBBB
AAAAAA BBBB
GOSRE IDAD
HORSE HEAD
MORSE HEAD
MORSEHEAD
ZOSRE IDAD
morse head

38
TaskE14/description.txt Normal file
View File

@ -0,0 +1,38 @@
Nie 555
=======
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest 9-cyfrowym numerem
telefonu zapisanym w formacie "NNN-NNN-NNN" badź "NNN NNN NNN"
niezaczynającym sie od kombinacji "555".
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string check, if the given number is 9 digit phone
number written in "NNN-NNN-NNN" or "NNN NNN NNN" format,
which does not start with "555"
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 14.
Attention. The task is for students whose students id remainder of the division by 27 is 14.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 14/27

7
TaskE14/test.exp Normal file
View File

@ -0,0 +1,7 @@
yes
yes
yes
no
yes
no
no

7
TaskE14/test.in Normal file
View File

@ -0,0 +1,7 @@
055-555-555
505-324-555
551-233-455
555-123-456
556 345 667
556 345 6675
556 345-667

40
TaskE15/description.txt Normal file
View File

@ -0,0 +1,40 @@
Wynik-zwycięstwo
================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis reprezentuje wynik meczu
piłkarskiego (dwie liczby oddzielone dwukropkiem bądź minusem), przy czym
pierwsza liczba jest większa od drugiej. Maksymalna liczba bramek
zwycięskiej drużyny wynosi 11.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the given string stands for
a soccer match result (two numbers separated by colon or minus character).
The first number should be greater than the second.
The maximum number of leading team is 11.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 15.
Attention. The task is for students whose students id remainder of the division by 27 is 15.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 15/27

12
TaskE15/test.exp Normal file
View File

@ -0,0 +1,12 @@
no
yes
yes
no
no
yes
no
yes
yes
no
no
yes

12
TaskE15/test.in Normal file
View File

@ -0,0 +1,12 @@
10-10
10-9
11-10
11-11
12:0
2:1
2:5
3-1
5:2
5:2 3:1
5:21
7-0

41
TaskE16/description.txt Normal file
View File

@ -0,0 +1,41 @@
Równanie
========
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis reprezentuje proste równanie
typu "A @ B = C", gdzie w miejscu A, B, C mogą pojawić się liczby dodatnie
(bez nieznaczących zer) bądź zmienna "x" (zmienna "x" - dokładnie jeden raz
w całym równaniu. '@' którąś z operacji - '+', '-', '*', '/'. Operatory
arytmetyczne i równości mogą być otoczone przez spacje.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the given string stands for "A @ B = C" equation,
where A, B, C are positive integers (no leading zeros) or "x" variable (only
one "x" in the queation). "@" is of on '+', '-', '*', '/' operators.
Arithmetic operators may be separated by spaces.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 16.
Attention. The task is for students whose students id remainder of the division by 27 is 16.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 16/27

8
TaskE16/test.exp Normal file
View File

@ -0,0 +1,8 @@
yes
no
no
yes
yes
yes
no
yes

8
TaskE16/test.in Normal file
View File

@ -0,0 +1,8 @@
14 / x = 2
2 + 2 + x = 8
2 + 2 = 4
2 + x = 4
23 - x=13
5+2=x
x + x = 16
x* 343=90900

39
TaskE17/description.txt Normal file
View File

@ -0,0 +1,39 @@
Formy czasownika
================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest formą czasownika
zakończonego na "ować". Należy uwzględnić wszystkie formy z wyjątkiem
imiesłowów. Napis musi być ciągiem małych liter (włącznie z polskimi
literami).
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the string is a verb ending with "ować".
You should include all forms, but a participle. The string should
be a sequence of lower case letters (including polish letters)
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 17.
Attention. The task is for students whose students id remainder of the division by 27 is 17.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 17/27

10
TaskE17/test.exp Normal file
View File

@ -0,0 +1,10 @@
no
yes
no
yes
yes
yes
no
yes
yes
yes

10
TaskE17/test.in Normal file
View File

@ -0,0 +1,10 @@
Abonować
abonować
abonowaćxxx
anonsuje
anonsuję
modemowałyście
prowokowany
prowokuj
sprowokuje
óęererłujemy

41
TaskE18/description.txt Normal file
View File

@ -0,0 +1,41 @@
Numer wiersza z Ewangelii
=========================
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest oznaczeniem wiersza z
Ewangelii (w rodzaju "Mt 17, 3"). Skróty Ewangelii - "Mt", "Mk", "Łk", "J",
liczba rozdziałów odpowiednio - 28, 16, 24, 22. Wiersz liczba z zakresu
1-99 (nie trzeba sprawdzać czy faktycznie tyle jest w poszczególnych
rozdziałach).
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the string is Evangel line number
(like "Mt 17, 3"). Evangel abbreviations - "Mt", "Mk", "Łk", "J",
paragraphs numbers correspondingly 28, 16, 24, 22. Verset name is 1-99.
You don't need to check if there are such versets in the real Evangel.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 18.
Attention. The task is for students whose students id remainder of the division by 27 is 18.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 18/27

8
TaskE18/test.exp Normal file
View File

@ -0,0 +1,8 @@
yes
no
yes
no
yes
yes
yes
no

8
TaskE18/test.in Normal file
View File

@ -0,0 +1,8 @@
J 22, 99
J 23, 1
Mk 16, 9
Mk 17, 9
Mk 7, 9
Mt 1, 1
Łk 24, 3
Łk 30, 1

35
TaskE19/description.txt Normal file
View File

@ -0,0 +1,35 @@
Potęga setki
============
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy zadany napis jest potęgą liczby
100.
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the given string is the power of 100.
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 19.
Attention. The task is for students whose students id remainder of the division by 27 is 19.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 19/27

9
TaskE19/test.exp Normal file
View File

@ -0,0 +1,9 @@
no
yes
no
yes
yes
yes
no
no
no

9
TaskE19/test.in Normal file
View File

@ -0,0 +1,9 @@
-100
1
10
100
10000
1000000
1001
2000
500

35
TaskE20/description.txt Normal file
View File

@ -0,0 +1,35 @@
Numer telefonu
==============
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy wskazać czy zadany napis jest numerem telefonu.
Zakładamy, że numer telefonu składa się z dwóch cyfr opcjonalnie
poprzedzonych zerem, po których następuje spacja i 7 cyfr w formacie
N-NNN-NNN. Jeśli napis spełnia podane warunki, należy wypisać
"yes", w przeciwnym wypadku "no".
For each string, indicate whether it is a phone number. We assume, that the phone
number consists of two digits (optionally prefixed by zero), followed
by space and 7 digits in N-NNN-NNN format. If the string fulfills the condition, print "yes", otherwise "no".
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 20.
Attention. The task is for students whose students id remainder of the division by 27 is 20.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 20/27

9
TaskE20/run.py Normal file
View File

@ -0,0 +1,9 @@
import sys
import re
for line in sys.stdin:
numbers = re.match(r'^(0?[0-9]{2}) (\d{1}-\d{3}-\d{3})$', line.replace("\n", ""), flags=re.IGNORECASE)
if numbers:
print('yes')
else:
print("no")

6
TaskE20/test.exp Normal file
View File

@ -0,0 +1,6 @@
yes
yes
no
yes
yes
no

6
TaskE20/test.in Normal file
View File

@ -0,0 +1,6 @@
00 0-000-000
000 0-000-000
0000 0-000-000
061 5-555-553
61 5-555-553
61 5-555-5534

6
TaskE20/test.out Normal file
View File

@ -0,0 +1,6 @@
yes
yes
no
yes
yes
no

40
TaskE21/description.txt Normal file
View File

@ -0,0 +1,40 @@
Koński łeb
==========
Napisać program, który wczytuje kolejne wiersze ze standardowego
wejścia i analizuje każdy wiersz (bez znaku końca wiersza). Należy w
jak największym stopniu wykorzystać wyrażenia regularne (np. nie wolno
użyć negacji jako operacji w danym języku programowania, jeśli da się
to wyrazić w samym wyrażeniu regularnym). Tam, gdzie to możliwe należy
użyć pojedynczego wyrażenia regularnego.
Write a program, which loads consecutive lines from standard input
and analyze every line (with no newline character). You should
use regular expressions to the greatest extent possible (e.g. you
can not use negation in the programming language if it is
possible to express the same in regular expression). Wherever possible,
use one regular expression.
Dla każdego napisu należy sprawdzić, czy napis jest napisem złożonym z
ciągu 5 wielkich liter i 4 wielkich liter oddzielonych spacją, które
wstukane na standardowym telefonie dadzą taki sam numer jak przy wstukaniu
napisu "HORSE HEAD". Zakładamy standardowe mapowanie liter na cyfry w
telefonie ("ABC" - 2, "DEF" - 3 itd.)
Jeśli napis spełnia tak określony warunek, należy wypisać na
standardowym wyjściu 'yes', w przeciwnym razie — 'no'.
For each string, check if the string consists of 5 capital letters
and 4 lower case letter separated by space, which written on
an old cell phone keyboard gives the same number as typing "HORSE HEAD".
We assume standard old phone keyboard mapping ("ABC" - 2, "DEF" - 3, etc.)
If the string fulfills the condition, you should print 'yes' on the
standard output and 'no' otherwise.
UWAGA! Zadanie przeznaczone dla studentów, których numer indeksu
dzieli się przez 27 z resztą 21.
Attention. The task is for students whose students id remainder of the division by 27 is 21.
POINTS: 1
DEADLINE: 2023-12-10 23:59:59
REMAINDER: 21/27

9
TaskE21/test.exp Normal file
View File

@ -0,0 +1,9 @@
no
no
no
yes
yes
no
no
no
no

Some files were not shown because too many files have changed in this diff Show More