Skip to content

This repository offers a statistical overview of my problem-solving progress, displaying the count of problems solved across various online judges.

Notifications You must be signed in to change notification settings

MishkatIT/ProblemSolvingStats

Β 
Β 

Repository files navigation

πŸ† Problem Solving Statistics

Last Updated Total Problems Platforms

Updated: 17 January 2026 at 11:47:06 PM β€’ Automatic

πŸ’» Competitive Programming Journey

A comprehensive overview of problem-solving achievements across multiple platforms


πŸ“Š Platform Statistics

🎯 Platform πŸ‘€ Profile βœ… Solved πŸ“ˆ Progress πŸ“… Updated On πŸ”„ Mode
Codeforces MishkatIT 2602 Codeforces Progress 17 January 2026 Automatic
LeetCode MishkatIT 412 LeetCode Progress 17 January 2026 Automatic
Vjudge MishkatIT 347 Vjudge Progress 17 January 2026 Automatic
AtCoder MishkatIT 157 AtCoder Progress 17 January 2026 Automatic
CodeChef MishkatIT 126 CodeChef Progress 17 January 2026 Automatic
CSES MishkatIT 66 CSES Progress 15 January 2026 Manual
Toph MishkatIT 37 Toph Progress 17 January 2026 Automatic
LightOJ MishkatIT 31 LightOJ Progress 17 January 2026 Automatic
SPOJ MishkatIT 18 SPOJ Progress 16 January 2026 Manual
HackerRank MishkatIT 7 HackerRank Progress 17 January 2026 Manual
UVa MishkatIT 7 UVa Progress 17 January 2026 Automatic
HackerEarth MishkatIT 2 HackerEarth Progress 15 January 2026 Manual
πŸŽ–οΈ TOTAL 3812 100% 17 January 2026

🎯 Latest Solve

πŸ“… Last Solved πŸ† Platform(s)
17 January 2026 CodeChef, Codeforces, Toph, and UVa

πŸ“… Last Solved by Platform

πŸ† Platform πŸ“… Last Solved
Codeforces Codeforces17 January 2026
CodeChef CodeChef17 January 2026
Toph Toph17 January 2026
UVa UVa17 January 2026
LeetCode LeetCode10 January 2026
AtCoder AtCoder29 November 2025
Vjudge Vjudge02 October 2025
CSES CSES18 August 2025
SPOJ SPOJ06 May 2025
LightOJ LightOJ12 August 2023
HackerRank HackerRank01 January 1970
HackerEarth HackerEarth01 January 1970

🌟 Key Highlights

πŸ₯‡ Top Platform 🎯 Main Focus πŸ“š Platforms Active
Codeforces Competitive Programming 12
2602 Problems Algorithm Mastery Multi-Platform

🎯 Want Your Own Automated Stats Tracker?

✨ Imagine Your Problem-Solving Journey Auto-Updated Daily! ✨

Tired of manually updating your competitive programming stats?
Want a beautiful, automatically updated showcase of your achievements?
Ready to track your progress across 12+ platforms effortlessly?

πŸŽ‰ You can have the same automated tracking system! πŸŽ‰


πŸ“š Setup and Usage

πŸš€ Get Started in 5 Minutes

What you'll get: Your own GitHub README that automatically updates every day with your latest problem-solving statistics from Codeforces, LeetCode, AtCoder, and 9 other platforms!

Prerequisites

  • Python 3.8 or higher
  • A GitHub account
  • pip (Python package manager)

Installation

  1. Fork this repository 🍴

  2. Clone your fork πŸ“¦

    git clone https://github.com/YOUR_USERNAME/ProblemSolvingStats.git
    cd ProblemSolvingStats
  3. Install dependencies πŸ“₯

    pip install -r requirements.txt
  4. Configure your usernames βš™οΈ

    Edit src/config.py and replace with your platform usernames/IDs:

    # Actual usernames/IDs used in URLs (can be IDs like '165802' for CSES)
    USER_CONFIG = {
        'Codeforces': 'YourUsername',
        'LeetCode': 'YourUsername',
        'AtCoder': 'YourUsername',
        'CSES': 'YourUserID',  # Can be a numeric ID
        # ... update all your platforms
    }
    
    # Display names shown in the README profile table (user-friendly names)
    PROFILE_DISPLAY_NAMES = {
        'Codeforces': 'YourDisplayName',
        'LeetCode': 'YourDisplayName',
        'CSES': 'YourDisplayName',  # Shows nice name even if ID is used in URL
        # ... keeps your profile looking clean and consistent
    }

    πŸ’‘ Pro Tip: Use PROFILE_DISPLAY_NAMES to show a consistent name across all platforms in the README, even when some platforms require numeric IDs or lowercase usernames.

  5. Run it once to test πŸ§ͺ

    python3 update_stats.py
  6. Enable GitHub Actions πŸ€–

    • Go to your repository's Actions tab
    • Click "I understand my workflows, go ahead and enable them"
    • Your stats will now update automatically every day! 🎊

Running the Scripts

Automatic Update (Recommended):

python3 update_stats.py

✨ This script will:

  • πŸ”„ Fetch your latest statistics from all 12 platforms
  • πŸ’Ύ Save results to stats.json and last_known_counts.json
  • πŸ“ Automatically generate and update your README.md
  • πŸ“Š Create beautiful progress badges and tables

Manual Update (When needed):

python3 manual_update.py

πŸ› οΈ This script will:

  • πŸ“ Let you manually enter statistics for any platform
  • πŸ’‘ Perfect when automatic fetching fails
  • 🎯 Useful for platforms without APIs

Update README Only:

python3 update_readme.py

This script updates the README.md using existing data from stats.json.


πŸ”„ Update Mechanisms

Automatic Updates (GitHub Actions)

  • Scheduled to run daily at 11:40-11:47 PM BDT (randomized timing)
  • Automatically fetches statistics from platforms with working APIs
  • Failed platforms fall back to last known values with date stamps
  • Updates are committed and pushed automatically to the repository

πŸ”„ Smart Schedule Adjustment

The repository features an intelligent scheduling system that adapts to your solving patterns:

Current Status: 🟒 Active - Updates running daily (you're actively solving problems!)

How it works:

  • Active Mode (Daily): Runs every day when you're consistently solving problems
  • Inactive Mode (Monthly): Automatically switches to monthly updates after 90 consecutive days without solving any problems
  • Automatic Recovery: Detects when you solve a new problem and immediately switches back to daily updates

Why this matters:

  • Saves GitHub Actions minutes during study breaks, vacations, or busy periods
  • Ensures timely updates when you're actively practicing
  • No manual intervention needed - the system manages itself
  • Prevents unnecessary daily runs when your stats aren't changing

The schedule check runs before each update, making the decision based on your most recent solve date across all platforms.

Manual Updates

If you need to update statistics manually:

  1. Run python3 manual_update.py to input current statistics
  2. The script will prompt you to visit each platform and enter the current solve count
  3. Statistics are automatically saved and the README is updated

Note: Each platform shows the last update date and mode (Automatic/Manual) in the statistics table.


🀝 Contributing

We welcome contributions! Whether you want to report bugs, suggest features, improve documentation, or add new platform support, your help is appreciated.

Please see CONTRIBUTING.md for detailed guidelines on how to contribute to this project.


πŸ“ Project Structure

ProblemSolvingStats/
β”œβ”€β”€ src/                          # Shared modules (NEW)
β”‚   β”œβ”€β”€ __init__.py              # Package initialization
β”‚   β”œβ”€β”€ config.py                # Centralized configuration
β”‚   β”œβ”€β”€ data_manager.py          # JSON data operations
β”‚   └── utils.py                 # Shared utility functions
β”œβ”€β”€ .github/
β”‚   └── workflows/
β”‚       └── update-stats.yml     # GitHub Actions workflow
β”œβ”€β”€ update_stats.py              # Main statistics fetcher
β”œβ”€β”€ update_readme.py             # README generator
β”œβ”€β”€ manual_update.py             # Manual input script
β”œβ”€β”€ requirements.txt             # Python dependencies
β”œβ”€β”€ last_known_counts.json       # Cached statistics
β”œβ”€β”€ .gitignore                   # Git ignore rules
└── README.md                    # This file

Key Files

  • src/config.py: All configuration constants (usernames, URLs, colors, etc.)
  • src/utils.py: Shared utility functions (date formatting, calculations, etc.)
  • src/data_manager.py: Handles all JSON file operations
  • update_stats.py: Fetches stats from 12 platforms via APIs and web scraping
  • update_readme.py: Generates and updates the README with statistics
  • manual_update.py: Interactive script for manual statistics input
  • last_known_counts.json: Stores last successful fetch for each platform

πŸ› οΈ Architecture Improvements

Recent Refactoring (2026-01-16)

The codebase has been significantly refactored to improve maintainability:

✨ What Changed:

  1. Created src/ module - Centralized shared code
  2. Eliminated duplication - Removed 327+ lines of repeated code (~20% reduction)
  3. Single source of truth - All configs now in src/config.py
  4. Reusable utilities - Common functions in src/utils.py
  5. Centralized data management - All JSON operations in src/data_manager.py

πŸ“Š Refactoring Statistics:

  • update_stats.py: 78 lines removed (10.7% reduction)
  • update_readme.py: 169 lines removed (22% reduction)
  • manual_update.py: 80 lines removed (42.5% reduction)

βœ… Benefits:

  • Easier to maintain and update
  • Consistent behavior across all scripts
  • Reduced chance of bugs from duplicate code
  • Clearer separation of concerns
  • Better code organization

Continuous Learning & Growth

"The only way to do great work is to love what you do."

GitHub Profile Views

About

This repository offers a statistical overview of my problem-solving progress, displaying the count of problems solved across various online judges.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%