#27
import numpy as np
import matplotlib.pyplot as plt
import pickle
import os
import random
from statistics import mean

def функция1(выборка):
    """Поиск индексов min и max элементов"""
    if not выборка:
        return -1, -1
    
    min_idx = выборка.index(min(выборка))
    max_idx = выборка.index(max(выборка))
    return min_idx, max_idx

def функция2(выборка, N):
    """Разделение на группы и расчет средних"""
    if N <= 0:
        return []
    
    средние = []
    for i in range(0, len(выборка), N):
        группа = выборка[i:i+N]
        средние.append(mean(группа))
    
    return средние

def M2():
    while True:
        имя_файла = input("Введите имя бинарного файла: ")
        if os.path.exists(имя_файла):
            break
        print("Файл не найден!")
    
    with open(имя_файла, 'rb') as f:
        выборка = pickle.load(f)
    
    min_idx, max_idx = функция1(выборка)
    print(f"Индекс min: {min_idx}, значение: {выборка[min_idx]}")
    print(f"Индекс max: {max_idx}, значение: {выборка[max_idx]}")
    print(f"Число элементов: {len(выборка)}")
    
    N = int(input("Введите число элементов в группе: "))
    средние = функция2(выборка, N)
    print(f"Средние по группам: {средние}")
    
    # График
    plt.figure(figsize=(10, 6))
    plt.plot(выборка, 'b.-', alpha=0.7)
    plt.title('Исходная выборка')
    plt.xlabel('Индекс')
    plt.ylabel('Значение')
    plt.grid(True)
    plt.show()
    
    return выборка, min_idx, max_idx, средние

def M0():
    выборка, min_idx, max_idx, средние = M2()
    print(f"Min: {выборка[min_idx]} (индекс {min_idx})")
    print(f"Max: {выборка[max_idx]} (индекс {max_idx})")
    print(f"Средние по группам: {средние}")

def создать_тестовые_файлы():
    # Первый файл
    данные1 = [random.gauss(0, 1) for _ in range(30)]
    with open('выборка1_M3_27.bin', 'wb') as f:
        pickle.dump(данные1, f)
    
    # Второй файл
    данные2 = [random.uniform(-5, 5) for _ in range(25)]
    with open('выборка2_M3_27.bin', 'wb') as f:
        pickle.dump(данные2, f)

# Пример запуска
if __name__ == "__main__":
    print("=== M3_27: Анализ выборки с группировкой ===")
    создать_тестовые_файлы()
    print("Созданы тестовые файлы: выборка1_M3_27.bin и выборка2_M3_27.bin")
    
    # Тестовый пример
    тест_выборка = [1, 5, 3, 8, 2, 7, 4, 6]
    min_idx, max_idx = функция1(тест_выборка)
    средние = функция2(тест_выборка, 3)
    print(f"Тестовая выборка: {тест_выборка}")
    print(f"Min индекс: {min_idx}, Max индекс: {max_idx}")
    print(f"Средние по группам: {средние}")
    
    M0()