Advertisement
Lavig

Практична робота №13

Mar 26th, 2023 (edited)
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.40 KB | None | 0 0
  1. def skip():
  2.     print ("_" * 60)
  3.     print ("_" * 60)
  4. skip()
  5. while True:
  6.     choice = input("""\033[32mВиберіть дію, яку потрібно виконати:
  7. \033[95m1 – Використати масив з прикладу у файлі
  8. \033[33m2 – Ввести масив самостійно\033[0m
  9. """)
  10.     if choice == "1" or choice == "Використати масив з прикладу у файлі" or choice == "1 – Використати масив з прикладу у файлі":
  11.         array = [15, 4, 10, 8, 6, 9, 16, 1, 7, 3, 11, 14, 2, 5, 12, 13]
  12.         break
  13.     elif choice == "2" or choice == "Ввести масив самостійно" or choice == "2 – Ввести масив самостійно":
  14.         while True:
  15.             array_input= input("\033[94mВведіть через пробіл числа масиву, які ви бажаєте відсортувати:\033[0m ")
  16.             array = array_input.split()
  17.             try:
  18.                 array = list(map(float, array))
  19.             except:
  20.                 print("\033[31mВведений масив складається не тільки з чисел. Спробуйте ввести інший масив!\033[0m")
  21.                 continue
  22.             for i in range(len(array)):
  23.                 if array[i].is_integer():
  24.                     array[i] = int(array[i])
  25.             break
  26.         break
  27.     else:
  28.         print("\033[31mВи неправильно ввели число. Спробуйте ще раз!\033[0m")
  29.         continue
  30. print("\033[33mПочатковий масив:", array, '\033[0m')
  31. array2 = array[:]
  32. n = len(array)
  33. operations = 0
  34. array_changes = [array.copy()]
  35. for j in range(1, n):
  36.     key = array[j]
  37.     i = j - 1
  38.     while i >= 0 and array[i] > key:
  39.         array[i+1] = array[i]
  40.         i -= 1
  41.         operations += 1
  42.         array_changes.append(array.copy())
  43.     array[i+1] = key
  44.     operations += 1
  45.     array_changes.append(array.copy())
  46. p = len(array) - 1
  47. print("\033[38;5;219mМасив після сортування за зростанням:", array, '\033[0m')
  48. print("\033[38;5;130mКількість дій, які потрібні для сортування даного масиву за зростанням, дорівнює", operations, '\033[0m')
  49. while True:
  50.     choice = input("""\033[38;5;178mЧи вивести покрокові змінення масиву?
  51. \033[38;5;37m1 – так
  52. \033[38;5;58m2 – ні\033[0m
  53. """)
  54.     if choice == "1" or choice == "так" or choice == "1 – так":
  55.         for i, change in enumerate(array_changes):
  56.             if i % 2 == 0:
  57.                 print("\033[0;95m" + str(change) + "\033[0m")
  58.             else:
  59.                 print("\033[0;33m" + str(change) + "\033[0m")
  60.         break
  61.     elif choice == "2" or choice == "ні" or choice == "2 – ні":
  62.         break
  63.     else:
  64.         print("\033[31mВи неправильно вибрали цифру. Спробуйте ще раз!\033[0m")
  65. n = len(array2)
  66. operations = 0
  67. array_changes = [array2.copy()]
  68. for j in range(1, n):
  69.     key = array2[j]
  70.     i = j - 1
  71.     while i >= 0 and array2[i] < key:
  72.         array2[i+1] = array2[i]
  73.         i -= 1
  74.         operations += 1
  75.         array_changes.append(array2.copy())
  76.     array2[i+1] = key
  77.     operations += 1
  78.     array_changes.append(array2.copy())
  79. p = len(array2) - 1
  80. print("\033[38;5;67mМасив після сортування за спаданням:", array2, '\033[0m')
  81. print("\033[38;5;208mКількість дій, які потрібні для сортування даного масиву за спаданням, дорівнює", operations, '\033[0m')
  82. while True:
  83.     choice = input("""\033[38;5;118mЧи вивести покрокові змінення масиву?
  84. \033[38;5;145m1 – так
  85. \033[38;5;124m2 – ні\033[0m
  86. """)
  87.     if choice == "1" or choice == "так" or choice == "1 – так":
  88.         for i, change in enumerate(array_changes):
  89.             if i % 2 == 0:
  90.                 print("\033[38;5;219m" + str(change) + "\033[0m")
  91.             else:
  92.                 print("\033[0;91m" + str(change) + "\033[0m")
  93.         break
  94.     elif choice == "2" or choice == "ні" or choice == "2 – ні":
  95.         break
  96.     else:
  97.         print("\033[31mВи неправильно вибрали цифру. Спробуйте ще раз!\033[0m")
  98. skip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement