Advertisement
usmiwka80

6. List Manipulator

Nov 30th, 2024 (edited)
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.57 KB | Software | 0 0
  1. import array
  2.  
  3.  
  4. def max_indices(arr, num):
  5.     right_max = 0
  6.     max_element = arr[0]
  7.     for i in range(num):
  8.         # If found new maximum
  9.         if arr[i] > max_element:
  10.             right_max = i
  11.             max_element = arr[i]
  12.         # If arr[i] = max then rightmost
  13.         # index for max will change
  14.         elif arr[i] == max_element:
  15.             right_max = i
  16.     print(right_max)
  17.  
  18.  
  19. def min_indices(arr, num):
  20.     right_min = 0
  21.     min_element = arr[0]
  22.     for i in range(num):
  23.         # If found new minimum
  24.         if arr[i] < min_element:
  25.             right_min = i
  26.             min_element = arr[i]
  27.         # If arr[i] = min then rightmost
  28.         # index for min will change
  29.         elif arr[i] == min_element:
  30.             right_min = i
  31.     print(right_min)
  32.  
  33.  
  34. line_numbers = input().split()
  35. command_info = input()
  36. my_integers_list = []
  37. for item in line_numbers:
  38.     if item.isdigit():
  39.         integer_numbers = int(item)
  40.         my_integers_list.append(integer_numbers)
  41. while command_info != "end":
  42.     sub_list_first = []
  43.     sub_list_second = []
  44.     command = command_info.split()[0]
  45.     if command == "exchange":
  46.         index = command_info.split()[1]
  47.         index = int(index)
  48.         if index not in range(len(my_integers_list)):
  49.             print("Invalid index")
  50.         else:
  51.             for item in range(len(my_integers_list)):
  52.                 if item > index:
  53.                     sub_list_second.append(my_integers_list[item])
  54.                 else:
  55.                     sub_list_first.append(my_integers_list[item])
  56.             sub_list_second.extend(sub_list_first)
  57.             my_integers_list = sub_list_second
  58.     elif command == "max":
  59.         kind_number = command_info.split()[1]
  60.         if kind_number == "even":
  61.             even_numbers = [num for num in my_integers_list if num % 2 == 0]
  62.             if not even_numbers:
  63.                 print("No matches")
  64.             else:
  65.                 max_even = max(even_numbers)
  66.                 if even_numbers.count(max_even) > 1:
  67.                     # Convert list to Python array
  68.                     arr_even = array.array("i", even_numbers)
  69.                     n = len(arr_even)
  70.                     max_indices(arr_even, n)
  71.                 else:
  72.                     max_even_index = my_integers_list.index(max_even)
  73.                     print(max_even_index)
  74.         elif kind_number == "odd":
  75.             odd_numbers = [num for num in my_integers_list if num % 2 != 0]
  76.             if not odd_numbers:
  77.                 print("No matches")
  78.             else:
  79.                 max_odd = max(odd_numbers)
  80.                 if odd_numbers.count(max_odd) > 1:
  81.                     # Convert list to Python array
  82.                     arr_odd = array.array("i", odd_numbers)
  83.                     n = len(arr_odd)
  84.                     max_indices(arr_odd, n)
  85.                 else:
  86.                     max_odd_index = my_integers_list.index(max_odd)
  87.                     print(max_odd_index)
  88.     elif command == "min":
  89.         kind_number = command_info.split()[1]
  90.         if kind_number == "even":
  91.             even_numbers = [num for num in my_integers_list if num % 2 == 0]
  92.             if not even_numbers:
  93.                 print("No matches")
  94.             else:
  95.                 min_even = min(even_numbers)
  96.                 if even_numbers.count(min_even) > 1:
  97.                     # Convert list to Python array
  98.                     arr_even = array.array("i", even_numbers)
  99.                     n = len(arr_even)
  100.                     min_indices(arr_even, n)
  101.                 else:
  102.                     min_even_index = my_integers_list.index(min_even)
  103.                     print(min_even_index)
  104.         elif kind_number == "odd":
  105.             odd_numbers = [num for num in my_integers_list if num % 2 != 0]
  106.             if not odd_numbers:
  107.                 print("No matches")
  108.             else:
  109.                 min_odd = min(odd_numbers)
  110.                 if odd_numbers.count(min_odd) > 1:
  111.                     # Convert list to Python array
  112.                     arr_odd = array.array("i", odd_numbers)
  113.                     n = len(arr_odd)
  114.                     min_indices(arr_odd, n)
  115.                 else:
  116.                     min_odd_index = my_integers_list.index(min_odd)
  117.                     print(min_odd_index)
  118.     elif command == "first":
  119.         count = command_info.split()[1]
  120.         count = int(count)
  121.         kind_number = command_info.split()[2]
  122.         if kind_number == "even":
  123.             even_numbers = [num for num in my_integers_list if num % 2 == 0]
  124.             if not even_numbers:
  125.                 print("[]")
  126.             else:
  127.                 if count > len(my_integers_list):
  128.                     print("Invalid count")
  129.                 elif len(even_numbers) > 1:
  130.                     first_elements = [even_numbers[i] for i in range(count)]
  131.                     print(first_elements)
  132.                 else:
  133.                     print(odd_numbers)
  134.         elif kind_number == "odd":
  135.             odd_numbers = [num for num in my_integers_list if num % 2 != 0]
  136.             if not odd_numbers:
  137.                 print("[]")
  138.             else:
  139.                 if count > len(my_integers_list):
  140.                     print("Invalid count")
  141.                 elif len(odd_numbers) > 1:
  142.                     first_elements = [odd_numbers[i] for i in range(count)]
  143.                     print(first_elements)
  144.                 else:
  145.                     print(odd_numbers)
  146.     elif command == "last":
  147.         count = command_info.split()[1]
  148.         count = int(count)
  149.         kind_number = command_info.split()[2]
  150.         if kind_number == "even":
  151.             even_numbers = [num for num in my_integers_list if num % 2 == 0]
  152.             if not even_numbers:
  153.                 print("[]")
  154.             else:
  155.                 if count > len(my_integers_list):
  156.                     print("Invalid count")
  157.                 elif len(even_numbers) > 1:
  158.                     res = even_numbers[-count:]
  159.                     print(str(res))
  160.                 else:
  161.                     print(odd_numbers)
  162.         elif kind_number == "odd":
  163.             odd_numbers = [num for num in my_integers_list if num % 2 != 0]
  164.             if not odd_numbers:
  165.                 print("[]")
  166.             else:
  167.                 if count > len(my_integers_list):
  168.                     print("Invalid count")
  169.                 elif len(odd_numbers) > 1:
  170.                     res = odd_numbers[-count:]
  171.                     print(str(res))
  172.                 else:
  173.                     print(odd_numbers)
  174.     command_info = input()
  175. print(my_integers_list)
  176.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement