"""Генератор задач: часы со стрелками""" from core.base_generator import BaseTaskGenerator from models.task import Task from fractions import Fraction from config import COMPLEXITY_CONFIG import random class ClockGenerator(BaseTaskGenerator): """Генератор задач про часы со стрелками""" def generate(self) -> Task: """Генерация задачи""" config = COMPLEXITY_CONFIG[self.complexity] start_hour = random.randint(1, 11) interval_length = random.randint(2, 6) end_hour = (start_hour + interval_length) % 12 if end_hour == 0: end_hour = 12 question = f"Механические часы с двенадцатичасовым циферблатом в какой-то момент сломались и перестали ходить. Найдите вероятность того, что часовая стрелка застыла, достигнув отметки {start_hour}, но не дойдя до отметки {end_hour} часов." favorable = interval_length total = 12 answer_fraction = Fraction(favorable, total) answer = round(float(answer_fraction), 2) steps = [ f"1. Полный круг циферблата: 12 часов", f"2. Интервал от {start_hour} до {end_hour}: {interval_length}", f"3. Вероятность = {interval_length}/12 = {answer_fraction}" ] return Task( type='clock', question=question, answer=answer, answer_fraction=str(answer_fraction), solution=f"Вероятность = {interval_length}/12 = {answer_fraction}", steps=steps, complexity=self.complexity ) def get_type(self) -> str: return 'clock'