# 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)