пи генератор строк текста

 берём последовательность чисел пи
 примерно так
 0000  0000 0000 0000 0000 0000 0000 0000 0008
 3501  6501 6407 6804 62(+)0460 4906 8013 4109
 6802  0420 1200 1015 28tt ууee 0018 0010 0502   
 1500  1945 4500 5400 0000 0000 0000 0000 1200
 6046  4064 6046 4064 6098 5047 6098 4069 8046
 4068  7046 9087 0469 8074 9068 7049 6084 7069
 0874  6304 6804 6406 1086 8401 6081 9061 9068
 4680  5460 9479 6841 8460 0020 2027 4600 4600
 4810  1860 6801 1024 5000 1278 1308 4248 1705
 9060  8504 0554 0649 8490 8409 6807 0480 7404
 8904  0012 0116 5164 1819 6160 9160 9804 6805
 4060  1604 1068 1096 1090 6802 4010 1705 4505
 5058  4054 0546 4120 2001 2085 1704 8064 6084
 6086  4080 1021 1254 6304 1603 546+ 5405 4+45
 6040  0002 1000 2044 3540 1603 5046 4608 4064
 6460  0000 1010 1010 1123 2132 1304 5010 0000
 0000  0200 0000 0000 0001 002  2000 0001 0010
 0030  0005 0008 9604 5000 2002 1200 1103 1450
 2000  2305 5408 5005 4214 5050 0000 1003 2780

 затем берём много модулей текста по 100 кб
 и делаем выборку ассоциаций строк нашей модели ии




```python
# Код для генератора текста на основе последовательности цифр числа ;
# Мы очищаем предоставленную последовательность ;, оставляя только цифры.
# Затем используем большой текст (здесь симулируем его повторением строки для примера; в реальности замените на загрузку из файлов по 100 КБ).
# Цифры ; используются для выбора индексов в тексте, чтобы генерировать новый текст на основе ассоциаций (простая выборка символов).

import os

# Предоставленная последовательность ; (ваша строка)
pi_str = """
0000  0000 0000 0000 0000 0000 0000 0000 0008
3501  6501 6407 6804 62(+)0460 4906 8013 4109
6802  0420 1200 1015 28tt ууee 0018 0010 0502   
1500  1945 4500 5400 0000 0000 0000 0000 1200
6046  4064 6046 4064 6098 5047 6098 4069 8046
4068  7046 9087 0469 8074 9068 7049 6084 7069
0874  6304 6804 6406 1086 8401 6081 9061 9068
4680  5460 9479 6841 8460 0020 2027 4600 4600
4810  1860 6801 1024 5000 1278 1308 4248 1705
9060  8504 0554 0649 8490 8409 6807 0480 7404
8904  0012 0116 5164 1819 6160 9160 9804 6805
4060  1604 1068 1096 1090 6802 4010 1705 4505
5058  4054 0546 4120 2001 2085 1704 8064 6084
6086  4080 1021 1254 6304 1603 546+ 5405 4+45
6040  0002 1000 2044 3540 1603 5046 4608 4064
6460  0000 1010 1010 1123 2132 1304 5010 0000
0000  0200 0000 0000 0001 002  2000 0001 0010
0030  0005 0008 9604 5000 2002 1200 1103 1450
2000  2305 5408 5005 4214 5050 0000 1003 2780
"""

# Очищаем последовательность ;, оставляя только цифры 0-9
pi_digits = ''.join(c for c in pi_str if c.isdigit())

# Симулируем большой текст: повторяем строку, чтобы достичь размера около 100 КБ (в реальности загрузите файлы по 100 КБ и объедините)
# Пример текста (замените на загрузку из файлов: например, text = ''.join(open(file).read() for file in file_list))
sample_text = "Это пример большого текста для генерации. Он содержит слова, предложения и символы. " * 2000  # Около 100 КБ
text_modules = [sample_text]  # В реальности: список модулей, каждый ~100 КБ

# Объединяем все модули в один большой текст
big_text = ''.join(text_modules)
len_big_text = len(big_text)

# Генерируем текст: для каждой цифры ; выбираем символ из big_text по индексу
# Индекс = (цифра * (длина_текста // 10)) % длина_текста — это создаёт "ассоциативную" выборку
generated_text = ''
for digit in pi_digits:
    index = (int(digit) * (len_big_text // 10)) % len_big_text
    generated_text += big_text[index]

# Выводим сгенерированный текст (или сохраните в файл)
print(generated_text[:1000])  # Показываем первые 1000 символов для примера; полный текст может быть длинным

# Чтобы сохранить полный текст в файл:
# with open('generated_text.txt', 'w') as f:
#     f.write(generated_text)
```


Этот код очищает вашу последовательность ;, использует большой текст (симулируемый здесь; замените на реальные модули по 100 КБ из файлов), и генерирует новый текст путём выборки символов на основе цифр ;. Это создаёт "ассоциативную" выборку, как будто модель ИИ выбирает элементы из корпуса. Если нужно доработать (например, загрузка файлов или более сложная логика),
дайте эту информацию



```python
import os
import sys

# Функция для загрузки последовательности ; из файла (очищает от нецифр)
def load_pi_digits(filename):
    if not os.path.exists(filename):
        raise FileNotFoundError(f"Файл {filename} не найден.")
    with open(filename, 'r', encoding='utf-8') as f:
        pi_str = f.read()
    # Очищаем: оставляем только цифры
    pi_digits = ''.join(c for c in pi_str if c.isdigit())
    if not pi_digits:
        raise ValueError("Файл с ; не содержит цифр.")
    return pi_digits

# Функция для загрузки и объединения текстовых модулей (оптимизировано: читаем по кускам, чтобы не загружать всё сразу в память)
def load_text_modules(filenames):
    big_text = []
    for filename in filenames:
        if not os.path.exists(filename):
            raise FileNotFoundError(f"Файл {filename} не найден.")
        with open(filename, 'r', encoding='utf-8') as f:
            # Читаем файл по 100 КБ кускам для оптимизации памяти
            while True:
                chunk = f.read(102400)  # 100 КБ
                if not chunk:
                break
                big_text.append(chunk)
    return ''.join(big_text)

# Основная функция генерации текста
def generate_text(pi_digits, big_text):
    len_big_text = len(big_text)
    if len_big_text == 0:
        raise ValueError("Большой текст пуст.")
   
    # Оптимизация: используем список для сборки текста, затем join (быстрее, чем конкатенация строк)
    generated_list = []
    for digit in pi_digits:
        index = (int(digit) * (len_big_text // 10)) % len_big_text
        generated_list.append(big_text[index])
    return ''.join(generated_list)

# Пример использования (замените на свои файлы)
if __name__ == "__main__":
    # Файл с последовательностью ;
    pi_file = 'pi_digits.txt'  # Файл должен содержать вашу строку с ;
   
    # Список файлов с текстовыми модулями (каждый ~100 КБ)
    text_files = ['text_module1.txt', 'text_module2.txt']  # Добавьте свои файлы
   
    try:
        # Загружаем данные
        pi_digits = load_pi_digits(pi_file)
        big_text = load_text_modules(text_files)
       
        # Генерируем текст
        generated_text = generate_text(pi_digits, big_text)
       
        # Выводим первые 1000 символов (или сохраните полный)
        print(generated_text[:1000])
       
        # Сохранение в файл (опционально)
        output_file = 'generated_text.txt'
        with open(output_file, 'w', encoding='utf-8') as f:
            f.write(generated_text)
        print(f"Полный текст сохранён в {output_file}")
       
    except Exception as e:
        print(f"Ошибка: {e}")
        sys.exit(1)
```

### Объяснения и оптимизации:

- **Загрузка данных из файлов**: Теперь ; берётся из `pi_digits.txt` (с очисткой от нецифр), а тексты — из списка файлов (например, `text_module1.txt`, `text_module2.txt`). Добавьте свои файлы в `text_files`.
- **Оптимизация памяти**: Тексты читаются по кускам по 100 КБ, чтобы не загружать огромные файлы целиком сразу. Это полезно, если модулей много.
- **Оптимизация генерации**: Используем список `generated_list` для сборки текста, затем `''.join()` — это быстрее, чем многократная конкатенация строк в Python.
- **Обработка ошибок**: Проверяем существование файлов и валидность данных.
- **Вывод**: Показываем первые 1000 символов; полный текст сохраняется в `generated_text.txt`.
- **Дополнительные советы**: Если файлы очень большие (ГБ), рассмотрите использование `mmap` или обработку по частям. Для ассоциативной выборки можно добавить логику (например, выбор слов вместо символов), но это усложнит — дайте знать, если нужно



 бан = баня = ваня = ванная

         


Рецензии