change Task-G
This commit is contained in:
parent
322c4561dd
commit
7c1b86f28b
50000
TaskF00/polish_wiki_excerpt.out
Normal file
50000
TaskF00/polish_wiki_excerpt.out
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,20 @@
|
||||
import re
|
||||
import sys
|
||||
|
||||
def substitute_digits(match):
|
||||
digits = match.group()
|
||||
substitution_dict = {str(i): chr(ord('a') + i) for i in range(10)}
|
||||
return ''.join(substitution_dict[digit] for digit in digits)
|
||||
|
||||
def substitute_4digits(input_string):
|
||||
pattern = re.compile(r'\d{4}')
|
||||
result = re.sub(pattern, substitute_digits, input_string)
|
||||
return result
|
||||
|
||||
|
||||
|
||||
|
||||
for line in sys.stdin:
|
||||
|
||||
result = substitute_4digits(line)
|
||||
sys.stdout.write(result)
|
3
TaskF00/simple.out
Normal file
3
TaskF00/simple.out
Normal file
@ -0,0 +1,3 @@
|
||||
dece 34 dfd gfd 5
|
||||
f33sdfsdbcdedsfsdf
|
||||
3r
|
22
TaskF01/description.txt
Normal file
22
TaskF01/description.txt
Normal file
@ -0,0 +1,22 @@
|
||||
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.
|
||||
|
||||
For each word with at least one lower case letter and one capital letter
|
||||
change every lower case letter to capital case and change every capital case
|
||||
letter to lower. In this task word means the string of "\w" metacharacters,
|
||||
lower case letter is [a-ząćęłńóśźż] class,
|
||||
capital case letter is [A-ZĄĆĘŁŃÓŚŹŻ] class.
|
||||
|
||||
POINTS: 2
|
||||
DEADLINE: 2024-01-07 23:59:59
|
File diff suppressed because it is too large
Load Diff
0
TaskF01/polish_wiki_excerpt.out
Normal file
0
TaskF01/polish_wiki_excerpt.out
Normal file
17
TaskF01/run.py
Normal file
17
TaskF01/run.py
Normal file
@ -0,0 +1,17 @@
|
||||
import re
|
||||
import sys
|
||||
|
||||
def swap_case(match):
|
||||
word = match.group()
|
||||
return ''.join(c.lower() if c.isupper() else c.upper() for c in word)
|
||||
|
||||
def transform_text(input_text):
|
||||
pattern = re.compile(r'\b(?=\w*[a-ząćęłńóśźż])(?=\w*[A-ZĄĆĘŁŃÓŚŹŻ])\w+\b')
|
||||
transformed_text = pattern.sub(swap_case, input_text)
|
||||
|
||||
return transformed_text
|
||||
|
||||
|
||||
for line in sys.stdin:
|
||||
output_text = transform_text(line.strip())
|
||||
sys.stdout.write(output_text)
|
3
TaskF01/simple.exp
Normal file
3
TaskF01/simple.exp
Normal file
@ -0,0 +1,3 @@
|
||||
ala mA KOTa
|
||||
lallaa
|
||||
żUK
|
3
TaskF01/simple.in
Normal file
3
TaskF01/simple.in
Normal file
@ -0,0 +1,3 @@
|
||||
ala Ma kotA
|
||||
lallaa
|
||||
Żuk
|
0
TaskF01/simple.out
Normal file
0
TaskF01/simple.out
Normal file
417640
TaskG00/nazwiska.txt
417640
TaskG00/nazwiska.txt
File diff suppressed because it is too large
Load Diff
@ -1,28 +0,0 @@
|
||||
import re2
|
||||
|
||||
def build_surname_regex(surnames):
|
||||
# Create a regular expression pattern from the list of surnames
|
||||
pattern = r'\b(?:' + '|'.join(surnames) + r')\b'
|
||||
return re2.compile(pattern)
|
||||
|
||||
def main():
|
||||
# Load Polish surnames from the file
|
||||
with open('polish_surnames.txt', 'r', encoding='utf-8') as file:
|
||||
polish_surnames = [line.strip().lower() for line in file]
|
||||
|
||||
# Build a DFA regex pattern from the list of surnames
|
||||
surname_regex = build_surname_regex(polish_surnames)
|
||||
|
||||
while True:
|
||||
try:
|
||||
# Read a line from standard input
|
||||
line = input()
|
||||
|
||||
# Check if the line contains any of the Polish surnames
|
||||
if surname_regex.search(line.lower()):
|
||||
print(line)
|
||||
except EOFError:
|
||||
break
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -1,4 +1,4 @@
|
||||
Use regular expressions to extract lines containing polish surnames.
|
||||
Use regular expressions to extract lines containing polish surnames. CASE INSENSITIVE
|
||||
|
||||
Download list of polish male and female surnames from here:
|
||||
|
||||
@ -7,17 +7,17 @@ Download list of polish male and female surnames from here:
|
||||
* https://dane.gov.pl/pl/dataset/1681,nazwiska-osob-zyjacych-wystepujace-w-rejestrze-pesel/resource/22817/table?page=1&per_page=20&q=&sort=
|
||||
|
||||
|
||||
Extract lines from stdin containing any of the surname.
|
||||
Look only for surnames in lowercase.
|
||||
Extract lines from stdin containing any of the surnames.
|
||||
Look only for surnames no matter casing (case insensitive).
|
||||
The surname does not have to be surrounded by space or any other special characters.
|
||||
Don't search for declined forms of surnames.
|
||||
|
||||
Check either NFA (e.g. re python library) and DFA (google re2) and compare run speed.
|
||||
Check either NFA (e.g. re python library) and DFA (google re2) and compare them.
|
||||
|
||||
Submit solution based on DFA library.
|
||||
Submit solution based on a better method.
|
||||
|
||||
NOTE: You could extract the polish surnames list, save it to a file, then commit the file to your repository.
|
||||
NOTE: You may set max_mem to a higher value than the default in re2 library.
|
||||
|
||||
POINTS: 3
|
||||
POINTS: 2
|
||||
DEADLINE: 2024-01-27 23:59:59
|
16481
TaskG03/nazwiska.txt
Normal file
16481
TaskG03/nazwiska.txt
Normal file
File diff suppressed because it is too large
Load Diff
44696
TaskG03/polish_wiki_excerpt.exp
Normal file
44696
TaskG03/polish_wiki_excerpt.exp
Normal file
File diff suppressed because one or more lines are too long
50000
TaskG03/polish_wiki_excerpt.in
Normal file
50000
TaskG03/polish_wiki_excerpt.in
Normal file
File diff suppressed because one or more lines are too long
0
TaskG03/polish_wiki_excerpt.out
Normal file
0
TaskG03/polish_wiki_excerpt.out
Normal file
18
TaskG03/run.py
Normal file
18
TaskG03/run.py
Normal file
@ -0,0 +1,18 @@
|
||||
import re2
|
||||
import sys
|
||||
|
||||
def load_surnames(file_path):
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
return [line.strip() for line in file]
|
||||
|
||||
polish_surnames = load_surnames('nazwiska.txt')
|
||||
setting = re2.Options()
|
||||
setting.max_mem = 1 << 30
|
||||
pattern = re2.compile('|'.join(polish_surnames), setting)
|
||||
|
||||
for line in sys.stdin:
|
||||
if pattern.search(line.lower()):
|
||||
print(line.strip())
|
||||
|
||||
|
||||
|
50000
TaskG04/polish_wiki_excerpt.out
Normal file
50000
TaskG04/polish_wiki_excerpt.out
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,17 @@
|
||||
import sys
|
||||
|
||||
def binary_to_utf8(binary_input):
|
||||
decimal_value = int(binary_input, 2)
|
||||
utf8_text = decimal_value.to_bytes((decimal_value.bit_length() + 7) // 8, 'big').decode('utf-8')
|
||||
return utf8_text
|
||||
|
||||
|
||||
for line in sys.stdin:
|
||||
|
||||
if not line.strip():
|
||||
print(line, end='')
|
||||
continue
|
||||
|
||||
utf8_text = binary_to_utf8(line)
|
||||
print(utf8_text)
|
||||
|
Loading…
Reference in New Issue
Block a user