Skip to content
This repository was archived by the owner on Dec 1, 2025. It is now read-only.
/ Euler-s-Project Public archive

Мой первый проект на python. Совмещает решенные задачи с сайта "https://euler.jakumo.org/problems" и интерфейс tkinter.

License

Notifications You must be signed in to change notification settings

Delisseu/Euler-s-Project

Repository files navigation

Project Euler GUI на Tkinter

Описание

Desktop-приложение на Python для автоматизации решения задач Project Euler. Основной фокус: архитектура данных, вычислительная оптимизация, кеширование, независимые процессы для стабильности интерфейса.

Пользователь может:

  • выбрать задачу из списка,
  • ввести входные данные,
  • получить решение прямо в приложении.

Особенности:

  • Современный кастомный интерфейс с анимациями панелей и кнопок.
  • Вычисления выполняются в отдельном процессе, чтобы интерфейс не зависал.
  • Фоновый процесс всегда активен: лёгкие задачи запускаются без ожидания.
  • Возможность задать таймаут ожидания — процесс завершается автоматически, чтобы приложение не застряло навсегда.
  • Поддержка кеширования результатов в JSON для ускорения повторных запусков.
  • Возможность менять разрешение окна в настройках.

Главное окно

Главное окно


Функциональность

  • Выбор одной из реализованных задач Project Euler.
  • Валидация и преобразование пользовательского ввода.
  • Настройка времени ожидания фонового процесса.
  • Управление кешем решений (JSON).
  • Просмотр истории результатов в виде таблицы (pandas.DataFrame).
  • Возможность работы с массивами и списками чисел.

Как добавить новую задачу

В form.py есть словарь input_library_with_nums. Пример записи:

from Features import MathOperations

input_library_with_nums["Сумма чисел"] = (
    "Ints",                         # метод проверки ввода
    MathOperations.sum_of_numbers,  # функция из Features
    ("Введите число:",),            # подсказки для ввода
    "Сумма чисел: {reply}",         # формат ответа
    "Возвращает сумму чисел от 1 до n."  # описание
)
  • Ключ проверки ("Ints", "ListInt", и т.п.) описан в Check_methods.
  • Преобразование ввода управляется словарём Type_methods.

Кеширование

  • Все результаты сохраняются в total.json.
  • Для больших результатов запись обрезается.
  • Повторные вызовы возвращаются из кеша, что ускоряет работу.
  • Возможность очистить кеш.

Требования

  • Python 3.9+
  • Установить зависимости:
    pip install -r requirements.txt

Запуск

Убедитесь, что установлен Python 3 и зависимости, затем выполните:

python main.py

About

Мой первый проект на python. Совмещает решенные задачи с сайта "https://euler.jakumo.org/problems" и интерфейс tkinter.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages