import time
import sys
import random
import string

def typewriter_effect(text, speed=0.05):
    print("--- Эффект печатной машинки ---")
    for char in text:
        sys.stdout.write(char)
        sys.stdout.flush()
        time.sleep(speed)
    print("\n")

def hacker_effect(text, speed=0.03, ticks_per_letter=3):
    print("--- Эффект подбора (Matrix) ---")
    charset = string.ascii_letters + string.digits + "!@#$%^&*()_+-=[]{}|;:,.<>?"
    
    for i in range(len(text) + 1):
        # Делаем несколько циклов подбора случайных символов перед фиксацией правильной буквы
        for _ in range(ticks_per_letter):
            remaining_length = len(text) - i
            random_chars = ''.join(random.choice(charset) for _ in range(remaining_length))
            
            # Символ \r возвращает каретку в начало строки, перезаписывая ее
            sys.stdout.write('\r' + text[:i] + random_chars)
            sys.stdout.flush()
            time.sleep(speed)
    print("\n")

# Запускаем анимации
typewriter_effect("Привет! Это текст, который печатается сам.")
time.sleep(1) # пауза перед второй анимацией
hacker_effect("СИСТЕМА ВЗЛОМАНА. ДОСТУП РАЗРЕШЕН.")
