Блог пользователя vivid_stareium

Автор vivid_stareium, история, 8 месяцев назад, По-английски

Hello Codeforces!

I’m excited to share a tool I’ve been working on: CF Rating Predictor.

While many tools display official rating changes, we often lack a way to quantitatively represent the impact of our Virtual Participations (VP) during training. This tool integrates your actual contest history with your VP records to simulate a continuous rating trajectory, giving you a measurable view of your progress.

Live Demo: https://cf-vp-predictor-7pgzwzseurssuzy5uqktit.streamlit.app/ GitHub: https://github.com/vividStareium/cf-vp-predictor

CF Rating Predictor Demo

Features

VP Integration: Automatically scans your submission history to find Virtual Participations and calculates their potential impact on your rating.

Smart Simulation Algorithm: For each VP, the tool finds "proxy" participants from the same contest with similar ratings to calculate a realistic rating Delta.

Unrated Contest Support: Includes logic to handle unrated scenarios based on rating caps and provides a toggle to show or hide these contests in the chart.

Advanced Visualization: Optimized chart rendering that handles "time-clustered" matches (contests occurring close in time) by dynamically calculating axis offsets to prevent overlapping.

Technical Highlights & Optimizations

Since Codeforces has a vast amount of contest data, I focused heavily on performance:

Storage Efficiency: Redesigned the data storage format for both memory and disk using compact structures, significantly reducing resource pressure.

Concurrency: Implemented batched requests using ThreadPoolExecutor to speed up data fetching while remaining stable and respecting API rate limits.

Lazy Loading: Contest data is synced to the local cache only when needed, ensuring the initial load is as fast as possible.

How to use

Enter your Handle.

Set your Initial Rating (the rating you had before your first recorded contest/VP).

Toggle "Show Official Rating Comparison" to see the gap between your real path and the simulated one.

I'd love to hear your feedback or suggestions for new features!

Update (2025-01-09): Enhanced Data Synchronization

Based on user feedback regarding data caching issues, I have pushed a significant update to the Cache Management system:

New "Refresh Personal Data" Button: I replaced the generic "Clear Cache" button with a smart refresh feature.

Fix for Recent VPs: Previously, if you participated virtually in a contest and then re-checked immediately, the data might not update due to disk caching. This update ensures that clicking the refresh button forces a re-fetch of your latest rank and VP status.

Fix for "Handle Not Found": Solves edge cases where a handle was incorrectly cached as "invalid" or "no data."

  • Проголосовать: нравится
  • +60
  • Проголосовать: не нравится

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by vivid_stareium (previous revision, new revision, compare).

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by vivid_stareium (previous revision, new revision, compare).

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

ggggggggggggggreat!!!!!!!!!

»
8 месяцев назад, скрыть # |
Rev. 3  
Проголосовать: нравится +3 Проголосовать: не нравится

Apologies, everyone. Due to a higher-than-expected number of users, our server requests are currently being rate-limited by Codeforces. I'm working on a fix as we speak. If you encounter any unexpected issues, please wait a few minutes before trying again. Thanks for your patience!

»
8 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Deeply sorry for the recent service interruptions! I apologize for any inconvenience caused.

To ensure everyone can use the tool successfully, I've implemented a cooldown mechanism:

Look for Sidebar Alerts: If the server is blocked, a red countdown timer will appear in the sidebar.

Automatic Recovery: Please do not refresh the page during the countdown. The request will automatically resume once the timer hits zero.

Wait for it: If you see a "403" or "Rate Limit" message, please give the system about 3 minutes to mitigate the traffic naturally.

If you have any experience or tips on handling Codeforces API rate limits more efficiently, I would be deeply grateful for your advice!

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

Bro can enter an initial rating of 9007199254740909

  • »
    »
    8 месяцев назад, скрыть # ^ |
     
    Проголосовать: нравится +3 Проголосовать: не нравится

    The original intent of this feature is to allow newcomers who already have some competitive programming experience to self-calibrate their starting point.

    However, please keep in mind that setting your rating too high might prevent you from participating in rated rounds (due to Division limits). Of course, if you just want to have some fun, feel free to set it to something like 998244353. Hope you enjoy it!

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by vivid_stareium (previous revision, new revision, compare).

»
8 месяцев назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

noticing this creative projext while struggling with a 1800*,orz