# Пример запуска
import M0
import M1
import M2
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()# Модуль для создания тестовых данных
import pickle
import random
import numpy as np


def создать_тестовые_файлы():
    """
    Создает два бинарных файла с тестовыми выборками для проверки программы
    """
    
    # Первый файл - нормальное распределение
    print("Создание первого тестового файла...")
    данные1 = [random.gauss(50, 15) for _ in range(30)]  # 30 элементов, μ=50, σ=15
    with open('выборка1_M3_27.bin', 'wb') as f:
        pickle.dump(данные1, f)
    print(f"Файл 'выборка1_M3_27.bin' создан. Элементов: {len(данные1)}")
    print(f"Диапазон значений: {min(данные1):.2f} - {max(данные1):.2f}")
    
    # Второй файл - равномерное распределение
    print("\nСоздание второго тестового файла...")
    данные2 = [random.uniform(-10, 10) for _ in range(25)]  # 25 элементов, от -10 до 10
    with open('выборка2_M3_27.bin', 'wb') as f:
        pickle.dump(данные2, f)
    print(f"Файл 'выборка2_M3_27.bin' создан. Элементов: {len(данные2)}")
    print(f"Диапазон значений: {min(данные2):.2f} - {max(данные2):.2f}")
    
    # Третий файл - с явными min/max для демонстрации
    print("\nСоздание демонстрационного файла...")
    данные3 = [2, 8, 3, 1, 9, 4, 7, 5, 6]  # Явные min=1, max=9
    with open('демо_выборка_M3_27.bin', 'wb') as f:
        pickle.dump(данные3, f)
    print(f"Файл 'демо_выборка_M3_27.bin' создан. Элементов: {len(данные3)}")
    print(f"Значения: {данные3}")
    print(f"Min: {min(данные3)} (индекс {данные3.index(min(данные3))})")
    print(f"Max: {max(данные3)} (индекс {данные3.index(max(данные3))})")
    
    print("\n" + "=" * 50)
    print("ТЕСТОВЫЕ ФАЙЛЫ СОЗДАНЫ:")
    print("1. выборка1_M3_27.bin - 30 элементов (нормальное распределение)")
    print("2. выборка2_M3_27.bin - 25 элементов (равномерное распределение)") 
    print("3. демо_выборка_M3_27.bin - 9 элементов (демонстрационный)")
    print("=" * 50)


def показать_содержимое_файлов():
    """
    Показывает содержимое созданных тестовых файлов
    """
    файлы = ['выборка1_M3_27.bin', 'выборка2_M3_27.bin', 'демо_выборка_M3_27.bin']
    
    for имя_файла in файлы:
        try:
            with open(имя_файла, 'rb') as f:
                данные = pickle.load(f)
            print(f"\n{имя_файла}:")
            print(f"  Элементов: {len(данные)}")
            print(f"  Min: {min(данные):.3f}, Max: {max(данные):.3f}")
            print(f"  Первые 5 элементов: {[f'{x:.3f}' for x in данные[:5]]}")
        except FileNotFoundError:
            print(f"\nФайл {имя_файла} не найден. Сначала создайте тестовые данные.")


if __name__ == "__main__":
    print("СОЗДАНИЕ ТЕСТОВЫХ ДАННЫХ ДЛЯ M3_27")
    print("=" * 40)
    
    создать_тестовые_файлы()
    
    print("\nСОДЕРЖИМОЕ СОЗДАННЫХ ФАЙЛОВ:")
    показать_содержимое_файлов()
    
    print("\nИнструкция по запуску:")
    print("1. Запустите M0.py для выполнения основной программы")
    print("2. При запросе введите имя одного из созданных файлов")
    print("3. Рекомендуется начать с 'демо_выборка_M3_27.bin' для демонстрации")