Yevhenii Mianovskyi

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
# 1) дано масив з числами, по ньому подувати масив де і-тому елементу буде відовідати мінімум i-того та (i+1)-шого елементів
# * вирішити задачу без того щоб витягувати елементи зі списку за індексом
[1, 3, 2, 7, 8, 10, 2, 3, 5] -> [1, 2, 2, 7, 8, 2, 2, 3]
[12, 10, 0, 7, 3, 44, 2, 17, 1, 5] -> [10, 0, 0, 3, 3, 2, 2, 1, 1]
#solution using zip()
my_list = [1, 3, 2, 7, 8, 10, 2, 3, 5]
new_list = []
lookup = list(zip(my_list, my_list[1:]))
for item in lookup:
new_list.append(min(item))
print(new_list)
#solution using indices
my_list = [1, 3, 2, 7, 8, 10, 2, 3, 5]
x = 0
new_list = []
while x < (len(my_list) - 1):
if my_list[x] <= my_list[x + 1]:
new_list.append(my_list[x])
else:
new_list.append(my_list[x + 1])
x = x + 1
print(new_list)
# 2) дано рядок з цифрами, буквами, спецсимволами - по рядку сформувати список слів що є в ньомо (словом вважає послідовність ЛИШЕ букв)
'dsf45hiu2nfiuerhf34ref894fhqich82349f298ch29f8qh5hf8985eqh98fh' -> ['dsf', 'hiu', 'nfiuerhf', 'ref', 'fhqich', 'f', 'ch', 'f', 'qh', 'hf', 'eqh', 'fh']
'aw@#@sdfsf23123a21b 34 sdf sdfsd sdf sdf sdf 234234 dsdfsdf' -> ['aw', 'sdfsf', 'a', 'b', 'sdf', 'sdfsd', 'sdf', 'sdf', 'sdf', 'dsdfsdf']
my_str = 'dsf45hiu2nfiuerhf34ref894fhqich82349f298ch29f8qh5hf8985eqh98fh'
chars = ''
for item in my_str:
if item.isalpha():
chars += item
else:
chars += ' '
final_list = chars.split()
print(final_list)
# 3) правильна дужкова структура, це структура в якій кожній відкриваючій дужці відповідає рівно одна закриваюча
#(формальне означення, '' - правильна структура, якщо А - правильна то і '(A)' теж правильна, якщо A i B правильні структури, то і 'AB' теж правильні)
# Завдання дан рядок, в якому лише '(' та ')' - завдання сказати чи це правильна структура
def par_checker(input_str):
open_parenthesis = []
for par in input_str:
if par == '(':
open_parenthesis.append(par)
else:
if len(open_parenthesis) == 0:
return False
else:
del open_parenthesis[-1]
if len(open_parenthesis) == 0:
return True
else:
return False
string = "))(())(("
print(par_checker(string))
# 4) Дано список з парної кількості елментів. В кожній парі, перший елемент це значення, а другий кількість раз це значення зустрічається в розшифрованому масиві
# Розшифрувати масив даний масив
[1, 3, 2, 2, 4, 1] -> [1, 1, 1, 2, 2, 4]
[12, 3, 5, 7, 12, 0, 3, 2] -> [12, 12, 12, 5, 5, 5, 5, 5, 5, 5, 3, 3]
my_list = [12, 3, 5, 7, 12, 0, 3, 2]
keys = []
values = []
final_list = []
for (index, item) in enumerate(my_list):
if index % 2 == 0:
keys.append(item)
else:
values.append(item)
pairs = list(map(list, zip(keys, values)))
for item in pairs:
for i in range(item[-1]):
final_list.append(item[0])
print(final_list)
# 5) - Звортня до задачі #4 - по задоному списку, побудувати шифрування
input_str = [12, 12, 12, 12, 13, 13, 13, 13, 5, 5, 5, 5, 5, 5, 5, 3, 3, 4, 4, 4, 4, 5]
final_list = [input_str[0]]
previous_value = input_str[0]
counter = 0
for i in range(len(input_str)):
if input_str[i] == previous_value:
counter += 1
else:
final_list.append(counter)
final_list.append(input_str[i])
counter = 1
previous_value = input_str[i]
final_list.append(counter)
print(final_list)