Hi, I'm AmirMohammad (commonly known as Danet). Naturally, as a non-native speaker, the translation and editing process involved some assistance and AI. If you spot any technical or linguistic errors, I would be grateful if you pointed them out!
personalized problem suggestions using reference sets
In competitive programming, one of the most common hurdles is selecting the right problems to practice. Standard random generators often suggest problems that are either too trivial or completely out of your league.
To solve this, we have been developing @Lemiown_Bot, a Telegram bot designed to suggest Codeforces problems precisely tailored to your current rating and learned topics. While standard bots pick uniformly from a rating range, our approach uses a Reference Set of high-rated users to ensure the quality and relevance of the suggested problems.
The Reference Set ($$$S$$$): We mined data from a curated list of active Codeforces users ranging from Expert to International Grandmaster (IGM). Their solved problems form our global_problems database.
When you request a problem, the bot calculates a specific heuristic score (let's call it the $$$v$$$-score) based on how many experts in a rating bracket similar to yours successfully solved that problem.
Problems are then filtered (requiring $$$v\text{-score} \gt 0$$$) and sorted by their score and overall tag coverage, ensuring you get "must-know" problems rather than obscure ones.
Commands:
1. Tag Management To ensure you only get problems you actually have the prerequisites for, the bot tracks your knowledge graph.
/yadgereftam(Persian for "I learned it"): Updates your profile with new algorithmic tags you are ready to practice.
2. Problem Generation We provide several ways to query the database based on your learned tags:
/soalbede: Applies an AND filter (Intersection of selected tags)./soalbede2: Applies an OR filter (Union of selected tags)./yumyum: Returns a curated list of $$$5$$$ random problems where the problem's tags are a strict subset of your learned tags.
3. Challenge Mode (/challengemode) If your current rating is $$$X$$$, standard practice suggests solving problems slightly above your level. You can toggle Challenge Mode to adjust the difficulty distribution:
- Disabled (Standard Practice): Suggests problems in the range $$$[X - 100, X + 100]$$$.
- Enabled (Pushing Limits): Suggests problems with a $$$60\%$$$ chance for $$$X + 200$$$ and a $$$40\%$$$ chance for $$$X + 100$$$.
For those interested in the backend:
Database: We use aiosqlite with a two-table architecture (users and global_problems). Force Join: To manage server load and build a community, the bot requires joining our channel before the /start command unlocks.
Beta Testing
The bot is currently in its Beta Phase. You can try it out on Telegram via @Lemiown_bot.
Since we are actively tweaking the algorithms and database coverage, user feedback is highly appreciated. If you encounter bugs or have feature requests, please send them to our feedback endpoint in telegram: @YumYumMachine.
thanks: A huge thank you to my project collaborators, sohsoh, Ahoora, alireza_kaviani, Falaz, amirhoseinfar1385, AlefHeKaaf, ender_shayan, AmirAli-Asgari, Ehsan22, AliiSh, RadRah and others. as well as everyone else who helped test the early versions of the algorithm.
Happy coding, and may your ratings strictly increase!











