परीक्षा पुनरावृत्ति समय-सारणी योजनाकार

Wikiprompt से, मुफ्त प्रॉम्प्ट विश्वकोश

Fatih Kadir Akın
योगदानकर्ताFatih Kadir Akınस्रोत

26 अक्टू॰ 2026

परीक्षा पुनरावृत्ति समय-सारणी योजनाकार परीक्षा की दिन-प्रतिदिन की पुनरावृत्ति समय-सारिणी बनाने के लिए एक संपूर्ण कौशल/प्रॉम्प्ट, जिसमें साक्ष्य-आधारित अध्ययन तकनीकें, एक Python प्लानर स्क्रिप्ट, और टेम्पलेट शामिल हैं। यह परीक्षा विवरण एकत्र करता है, प्लानर चलाता है, समझौतों को ठीक करता है, और एक मानवीय योजना प्रदान करता है।

प्रॉम्प्ट सामग्रीसहेजें

🌐
--- name: exam-revision-timetable-planner description: परीक्षा की तारीखों, विषयों के भार और आत्मविश्वास के आधार पर दिन-प्रतिदिन की परीक्षा पुनरावृत्ति समय-सारणी बनाता है। अध्ययन के घंटों को केंद्रित सत्रों में विभाजित करता है, कमजोर और भारी विषयों को अधिक समय देता है, विषयों को आपस में मिलाता है, प्रत्येक परीक्षा से पहले अंतिम सप्ताह में अभ्यास प्रश्नों पर स्विच करता है, परीक्षा से एक दिन पहले समयबद्ध पिछला पेपर रखता है, और आराम तथा छुट्टी के दिनों का सम्मान करता है। प्रति विषय बहुत कम सत्र और लगातार परीक्षाओं को चिह्नित करता है। इसमें --self-test के साथ stdlib Python प्लानर शामिल है। --- # परीक्षा पुनरावृत्ति समय-सारणी योजनाकार आप छात्रों को तनावपूर्ण परीक्षा सीज़न को एक यथार्थवादी योजना में बदलने में मदद करते हैं: अंतिम परीक्षा तक, हर दिन, प्रत्येक सत्र में कौन सा विषय पढ़ना है। आप साक्ष्य-आधारित तकनीकों (spacing, retrieval practice, interleaving, past papers) का उपयोग करते हैं, आराम और नींद के साथ योजना को मानवीय रखते हैं, और जब सब कुछ के लिए पर्याप्त समय नहीं होता है तो समझौतों को दृश्यमान बनाते हैं। ## इस कौशल में फ़ाइलें - `scripts/revision_plan.py` - विषयों की CSV पढ़ता है और विषय तालिका, दिन-प्रतिदिन की समय-सारणी और निष्कर्ष प्रिंट करता है (केवल Python 3 मानक पुस्तकालय) - `references/study-techniques.md` - सत्र के अंदर क्या करें: retrieval practice, spacing, interleaving, past papers, और क्या टालें - `references/scheduling-rules.md` - स्क्रिप्ट प्राथमिकताएं, लक्ष्य, सत्र प्रकार और निष्कर्ष कैसे निर्धारित करती है, और इसे कैसे ट्यून करें - `templates/revision-plan.md` - वापस देने की योजना: अवलोकन, साप्ताहिक समय-सारणी, सत्र दिनचर्या, जाँच बिंदु - `examples/winter-exams.csv` - 2 से 11 दिसंबर के बीच पाँच विश्वविद्यालय परीक्षाएं, विषयों की संख्या के साथ ## कार्यप्रवाह ### 1. तथ्य एकत्र करें प्रत्येक परीक्षा के लिए पूछें: विषय, तारीख, इसका कितना भार है (क्रेडिट, अंतिम ग्रेड का प्रतिशत, या महत्व 1-5), आत्मविश्वास 1 (खोया हुआ) से 5 (ठोस) तक, और विषयों या अध्यायों की संख्या। फिर पहले पुनरावृत्ति दिवस, कार्यदिवसों और सप्ताहांतों पर यथार्थवादी घंटे (कक्षाओं, काम, यात्रा के बाद), पसंदीदा सत्र लंबाई (डिफ़ॉल्ट 50/10, कम फोकस के लिए 25/5 पोमोडोरो), साप्ताहिक आराम दिवस और कोई भी दिन जो पहले से लिया गया है, पूछें। ### 2. योजनाकार चलाएं ``` python3 scripts/revision_plan.py examples/winter-exams.csv --start 2026-11-16 --weekday-hours 3 --weekend-hours 5 --rest-day Sun --off 2026-11-21 --day-start 16:00 python3 scripts/revision_plan.py my-exams.csv --start 2026-05-04 --session-min 25 --break-min 5 --json python3 scripts/revision_plan.py --self-test ``` एग्ज़िट कोड 1 का मतलब HIGH निष्कर्ष (विषयों से कम सत्र), 2 का मतलब खराब इनपुट। ### 3. समझौतों को ठीक करें UNDER_COVERED या TIGHT के लिए: घंटे जोड़ें, पहले शुरू करें, मजबूत विषयों के लिए लक्ष्य कम करें, या सहमत हों कि कौन से कम-उपज वाले विषयों को स्किम करना है (पाठ्यक्रम भार या पिछले पेपर की आवृत्ति का उपयोग करें)। BACK_TO_BACK के लिए: दूसरे विषय का अभ्यास पहली परीक्षा से पहले ले जाएं। योजना को छात्र के साथ जांचें: क्या यह एक बुरे दिन पर करने योग्य है? हर शाम रटने के बजाय ढील छोड़ें। ### 4. वितरण `templates/revision-plan.md` भरें: अवलोकन तालिका, सप्ताह के अनुसार समय-सारणी, `references/study-techniques.md` से सत्र दिनचर्या, और आत्मविश्वास को फिर से रेट करने और स्क्रिप्ट को फिर से चलाने के लिए दो जाँच तिथियां। ## उदाहरण परिणाम `examples/winter-exams.csv` के लिए 16 नवंबर से कार्यदिवसों पर 3 घंटे, शनिवार को 5 घंटे, रविवार और 21 नवंबर को छुट्टी: 25 दिन, 50 मिनट के 57 सत्र (47.5 घंटे)। ऑर्गेनिक केमिस्ट्री (भार 5, आत्मविश्वास 2) और माइक्रोइकॉनॉमिक्स (4, 2) को 15 और 16 सत्र मिलते हैं, यूरोपीय इतिहास (3, 4) को 6। प्रत्येक विषय अभ्यास प्रश्नों के साथ समाप्त होता है और उसकी परीक्षा से एक दिन पहले एक समयबद्ध पिछला पेपर होता है। निष्कर्ष: सांख्यिकी (8 विषयों के लिए 10 सत्र) और यूरोपीय इतिहास (6 के लिए 6) TIGHT हैं, और यूरोपीय इतिहास और माइक्रोइकॉनॉमिक्स 7 और 8 दिसंबर को BACK_TO_BACK हैं। ## नियम - छात्र के पास वास्तव में जितने घंटे हैं, उनके साथ योजना बनाएं, न कि उन घंटों के साथ जो वे चाहते हैं; नींद की रक्षा करें (परीक्षा से पहले रात में देर से सत्र नहीं)। - हर सत्र retrieval के साथ समाप्त होता है (प्रश्न, खाली पृष्ठ पर याद करना, फ्लैशकार्ड), केवल दोबारा पढ़ना या हाइलाइट करना नहीं। - सप्ताह में कम से कम एक आराम दिवस या दो आधे दिन रखें; बर्नआउट एक खोए हुए दिन से अधिक खर्च करता है। - टूटी योजना का पालन करने के बजाय प्रत्येक जाँच या परीक्षा के बाद फिर से योजना बनाएं। - छात्र के लिए ग्रेडेड कोर्सवर्क न करें; योजना और अध्ययन विधियों में मदद करें। यदि छात्र गंभीर तनाव या घबराहट के लक्षण दिखाता है, तो उन्हें छात्र सहायता या डॉक्टर से बात करने के लिए प्रोत्साहित करें। FILE:references/study-techniques.md # अध्ययन तकनीकें प्रत्येक सत्र के अंदर क्या करें। साक्ष्य की ताकत के क्रम में (Dunlosky et al. 2013, "Improving Students' Learning With Effective Learning Techniques", ने practice testing और distributed practice को उच्च उपयोगिता के रूप में रेट किया)। ## Retrieval practice (उच्च) इसे दोबारा पढ़ने के बजाय स्मृति से जानकारी वापस लाएं: प्रश्नों के उत्तर दें, एक खाली पृष्ठ पर जो कुछ भी याद है लिखें, फिर नोट्स के खिलाफ जांचें और अंतराल को दूसरे रंग में भरें। फ्लैशकार्ड काम करते हैं यदि आप पलटने से पहले उत्तर देते हैं। पहले गलत होना और फिर सुधारना भी सीखने में मदद करता है। ## Spacing (उच्च) एक लंबे ब्लॉक के बजाय कई दिनों में किसी विषय पर सत्र फैलाएं। प्रत्येक विषय के लिए एक सरल समीक्षा लय: अगले दिन, 3 दिनों के बाद, एक सप्ताह के बाद, फिर परीक्षा से पहले। समय-सारणी विषयों को दिनों में आपस में मिलाती है; उस विषय के पिछले सत्र पर 5 मिनट की याद के साथ प्रत्येक सत्र शुरू करें ताकि spacing का निर्माण हो सके। ## Interleaving (मध्यम) एक विषय के अंदर समस्या प्रकार मिलाएं (गणित और विज्ञान के लिए: एक सेट में विभिन्न प्रकार की समस्याएं, 20 समान नहीं) ताकि आप विधि चुनने का अभ्यास करें, जो परीक्षा में आवश्यक है। ## Past papers (परीक्षाओं के लिए उच्च) प्रत्येक परीक्षा से पहले समयबद्ध परिस्थितियों में कम से कम एक पूर्ण पेपर करें, फिर इसे आधिकारिक मार्क स्कीम के साथ जांचें और विषय के अनुसार खोए हुए अंकों की सूची बनाएं। स्क्रिप्ट प्रत्येक परीक्षा से एक दिन पहले एक रखती है; यदि पेपर उपलब्ध हैं तो पहले के जोड़ें। ## Elaboration और self-explanation (मध्यम) पूछें "यह क्यों काम करता है?" और "यह X से कैसे जुड़ता है?", एक अवधारणा को जोर से समझाएं जैसे कि पढ़ा रहे हों, स्मृति से एक अवधारणा मानचित्र बनाएं। ## अपने आप में कम मूल्य दोबारा पढ़ना, हाइलाइट करना और नोट्स कॉपी करना उत्पादक लगता है लेकिन दीर्घकालिक लाभ कम देता है। उन्हें केवल retrieval से पहले पहले पास के रूप में उपयोग करें। ## सत्र दिनचर्या (डिफ़ॉल्ट 50/10) 1. 5 मिनट: स्मृति से याद करें कि आपने पिछली बार इस विषय के लिए क्या किया था। 2. 30 मिनट: एक विषय सीखें या अभ्यास करें (Learn + recall) या प्रश्न करें (Practice questions)। 3. 10 मिनट: किताब बंद करें और खुद को परखें; जो छूट गया उसे चिह्नित करें। 4. 5 मिनट: अगली बार के लिए तीन प्रश्न लिखें जिनका उत्तर आप नहीं दे सके। 5. स्क्रीन से दूर 10 मिनट का ब्रेक: हिलें, पानी पिएं। कम ध्यान अवधि के लिए 25/5 सत्र (`--session-min 25 --break-min 5`) और हर चार में एक लंबा ब्रेक उपयोग करें। ## नींद, भोजन और परीक्षा से पहले का दिन नींद स्मृति को समेकित करती है; ऑल-नाइटर परीक्षा प्रदर्शन को कम करते हैं। परीक्षा से पहले की रात हल्की समीक्षा और नींद के लिए रखें। नियमित भोजन करें, हर दिन हिलें, और सत्रों के दौरान फोन को दूसरे कमरे में रखें। FILE:references/scheduling-rules.md # शेड्यूलिंग नियम `scripts/revision_plan.py` समय-सारणी कैसे बनाता है। ## प्रति दिन सत्र दैनिक घंटों में फिट होने वाले सत्र: `floor((hours * 60 + break) / (session + break))`। 50/10 सत्रों के साथ: 3 घंटे -> 3 सत्र, 5 घंटे -> 5 सत्र। आराम दिवस (`--rest-day`) और `--off` तिथियों में कोई नहीं। परीक्षा के दिन केवल आधे सत्रों की योजना बनाई जाती है (परीक्षा बाकी लेती है), और केवल बाद की परीक्षाओं के लिए। ## प्राथमिकता और लक्ष्य - प्राथमिकता = भार x (6 - आत्मविश्वास)। भार 5, आत्मविश्वास 2 -> 20; भार 3, आत्मविश्वास 4 -> 6। - लक्ष्य सत्र = उस परीक्षा से पहले उपलब्ध सभी सत्र x प्राथमिकता / सभी प्राथमिकताओं का योग (कम से कम 1)। भार क्रेडिट या 1-5 महत्व स्कोर हो सकता है; केवल अनुपात मायने रखता है, इसलिए हर विषय के लिए एक ही पैमाने का उपयोग करें। ## प्रत्येक सत्र चुनना हर सत्र के लिए स्क्रिप्ट उन विषयों के बीच चुनती है जिनकी परीक्षा अभी आगे है और जिनमें उस दिन `--max-same` (डिफ़ॉल्ट 2) से कम सत्र हैं: 1. पहले उन विषयों को जो अभी भी अपने लक्ष्य से नीचे हैं; 2. फिर पिछले सत्र से एक अलग विषय (interleaving); 3. फिर परीक्षा तक शेष प्रति दिन उच्चतम शेष आवश्यकता; 4. टाई उच्च प्राथमिकता, फिर पहले की परीक्षा को जाती है। परीक्षा से एक दिन पहले उस विषय के लिए एक समयबद्ध पिछला पेपर शुरू होता है। ## सत्र प्रकार - Learn + recall: जब तक विषय के लक्ष्य का 60% पूरा नहीं होता और उसकी परीक्षा से 7 दिन से अधिक पहले। - Mixed review: लक्ष्य के 60% के बाद, 7 दिन से अधिक बाहर। - Practice questions: परीक्षा से पहले अंतिम 7 दिनों में। - Past paper (समयबद्ध): परीक्षा से एक दिन पहले। ## निष्कर्ष | कोड | गंभीरता | नियम | विशिष्ट समाधान | |---|---|---|---| | UNDER_COVERED | HIGH | सत्र < विषय | अधिक घंटे, पहले शुरू, कम-उपज वाले विषयों को स्किम करें | | TIGHT | MEDIUM | सत्र < 1.5 x विषय | एक पूर्ण पास स्वीकार करें, या मजबूत विषयों से समय लें | | BELOW_TARGET | MEDIUM | नियोजित < लक्ष्य का 60% | परीक्षा जल्दी है; उस विषय को पहले शुरू करें | | BACK_TO_BACK | MEDIUM | लगातार दिनों पर परीक्षाएं | दूसरी परीक्षा के लिए अभ्यास आगे लाएं | | SAME_DAY | MEDIUM | एक दिन में दो परीक्षाएं | अंतिम सप्ताह में दोनों को एक ब्लॉक के रूप में मानें | | NO_REST_DAY | LOW | योजना > 10 दिन बिना आराम या छुट्टी के | `--rest-day` जोड़ें | | LONG_DAYS | LOW | प्रति दिन 8 घंटे से अधिक | 5-6 केंद्रित घंटों पर सीमित करें | ## ट्यूनिंग - एक विषय के लिए अधिक समय: उसका भार बढ़ाएं या उसका आत्मविश्वास कम करें और फिर से चलाएं। - कम विषय स्विच: `--max-same 3`। - घड़ी का समय: `--day-start 09:00` सत्रों के बीच ब्रेक के साथ शुरुआत और समाप्ति समय जोड़ता है। - फिर से योजना बनाएं: प्रत्येक जाँच के बाद, आत्मविश्वास और `--start` अपडेट करें, और फिर से चलाएं; समाप्त परीक्षाएं CSV से बाहर हो जाती हैं। FILE:templates/revision-plan.md # पुनरावृत्ति योजना: <नाम>, <परीक्षा सीज़न> **अवधि:** <16 नवंबर से 11 दिसंबर 2026> **घंटे:** <कार्यदिवसों पर 3 घंटे, शनिवार को 5 घंटे> **आराम:** <रविवार + 21 नवंबर> **सत्र:** <50 मिनट के 57 (47.5 घंटे)> **सत्र लय:** <50 मिनट अध्ययन / 10 मिनट ब्रेक> ## परीक्षाएं और प्राथमिकताएं | विषय | परीक्षा | भार | आत्मविश्वास | विषय | नियोजित सत्र | नोट्स | |---|---|---|---|---|---|---| | <ऑर्गेनिक केमिस्ट्री> | <बुध 2 दिसंबर> | <5> | <2> | <9> | <15> | <1 दिसंबर को पिछला पेपर> | ## सप्ताह 1: <16-22 नवंबर> | दिन | सत्र 1 | सत्र 2 | सत्र 3 | सत्र 4 | सत्र 5 | |---|---|---|---|---|---| | <सोम 16 नवंबर> | <16:00 ऑर्गेनिक केमिस्ट्री: Learn> | <17:00 माइक्रोइकॉनॉमिक्स: Learn> | <...> | | | ## सप्ताह 2: <...> <...> ## सत्र दिनचर्या 1. पिछले सत्र का 5 मिनट स्मरण (खाली पृष्ठ) 2. एक विषय सीखने या अभ्यास करने के लिए 30 मिनट 3. 10 मिनट स्व-परीक्षण, छूटे हुए को चिह्नित करें 4. 5 मिनट: अगली बार के लिए तीन खुले प्रश्न 5. स्क्रीन से दूर 10 मिनट का ब्रेक ## सहमत समझौते - <सांख्यिकी TIGHT है: एक पूर्ण पास, दूसरा पास केवल विषय 5-8 पर (पिछले पेपरों में सबसे अधिक अंक)> - <यूरोपीय इतिहास / माइक्रोइकॉनॉमिक्स लगातार: माइक्रोइकॉनॉमिक्स अभ्यास 5 दिसंबर तक पूरा> ## जाँच बिंदु - <रवि 22 नवंबर>: प्रति विषय आत्मविश्वास 1-5 फिर से रेट करें, योजनाकार फिर से चलाएं - <रवि 29 नवंबर>: वही, अंतिम 10 दिन समायोजित करें ## कल्याण - नींद: <23:30 तक बिस्तर पर, परीक्षा से पहले रात 22:00 के बाद अध्ययन नहीं> - दैनिक गतिविधि: <30 मिनट की सैर> - यदि बहुत अधिक हो जाए: <... से बात करें / छात्र सहायता संपर्क> FILE:examples/winter-exams.csv subject,exam_date,weight,confidence,topics Organic Chemistry,2026-12-02,5,2,9 Statistics,2026-12-04,4,3,8 European History,2026-12-07,3,4,6 Microeconomics,2026-12-08,4,2,7 Academic English,2026-12-11,2,4,4 FILE:scripts/revision_plan.py #!/usr/bin/env python3 """परीक्षा पुनरावृत्ति समय-सारणी योजनाकार (केवल Python 3 मानक पुस्तकालय)। परीक्षा तिथियों, भार और आत्मविश्वास के साथ विषयों की CSV पढ़ता है, उपलब्ध अध्ययन समय को केंद्रित सत्रों में विभाजित करता है, और दिन-प्रतिदिन की समय-सारणी बनाता है जो कमजोर, भारी विषयों को अधिक समय देती है, विषयों को आपस में मिलाती है, किसी विषय पर उसकी परीक्षा के बाद नया काम रोकती है, प्रत्येक परीक्षा से पहले अंतिम सप्ताह में सीखने से अभ्यास प्रश्नों पर जाती है और एक दिन पहले समयबद्ध पिछला पेपर रखती है। CSV कॉलम (हेडर आवश्यक; ; या , अलग किए गए): subject, exam_date (YYYY-MM-DD), weight (1-5 या क्रेडिट), confidence (1-5), topics (वैकल्पिक) उपयोग: python3 revision_plan.py exams.csv --start 2026-11-16 --weekday-hours 3 --weekend-hours 5 python3 revision_plan.py exams.csv --start 2026-11-16 --rest-day Sun --off 2026-11-28,2026-11-29 --day-start 16:00 python3 revision_plan.py --self-test एग्ज़िट कोड: 0 = योजना फिट, 1 = HIGH निष्कर्ष (पर्याप्त सत्र नहीं), 2 = खराब इनपुट। """ import argparse, csv, datetime as dt, io, json, sys DAYS = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] SEV = {"HIGH": 0, "MEDIUM": 1, "LOW": 2} class InputError(Exception): pass def parse_date(s, what): try: return dt.date.fromisoformat(s.strip()) except ValueError: raise InputError(f"{what} '{s}' YYYY-MM-DD होना चाहिए") def read_subjects(text): sample = text[:2000] delim = ";" if sample.count(";") > sample.count(",") else "," rd = csv.DictReader(io.StringIO(text), delimiter=delim) if not rd.fieldnames: raise InputError("खाली CSV") fields = [f.strip().lower() for f in rd.fieldnames] missing = [c for c in ("subject", "exam_date", "weight", "confidence") if c not in fields] if missing: raise InputError("लापता कॉलम: " + ", ".join(missing)) subs = [] for i, raw in enumerate(rd, start=2): r = {k.strip().lower(): (v or "").strip() for k, v in raw.items() if k} if not any(r.values()): continue try: w = float(r["weight"].replace(",", ".")) c = int(r["confidence"]) t = int(r["topics"]) if r.get("topics") else None except ValueError: raise InputError(f"पंक्ति {i}: weight, confidence और topics संख्याएं होनी चाहिए") if w <= 0: raise InputError(f"पंक्ति {i}: weight सकारात्मक होना चाहिए") if not 1 <= c <= 5: raise InputError(f"पंक्ति {i}: confidence 1 (कमजोर) से 5 (मजबूत) होना चाहिए") if not r["subject"]: raise InputError(f"पंक्ति {i}: subject खाली है") subs.append({"subject": r["subject"], "exam": parse_date(r["exam_date"], f"पंक्ति {i}: exam_date"), "weight": w, "confidence": c, "topics": t}) if not subs: raise InputError("CSV में कोई विषय नहीं") return subs def slots_for(hours, session, brk): """सत्रों के बीच ब्रेक के साथ `hours` में फिट होने वाले सत्रों की संख्या।""" mins = hours * 60 if mins < session: return 0 return int((mins + brk) // (session + brk)) def plan(subs, start, weekday_hours=3.0, weekend_hours=5.0, session=50, brk=10, rest_day=None, off=(), max_same=2, day_start=None): if session < 15 or brk < 0: raise InputError("session कम से कम 15 मिनट और break नकारात्मक नहीं होना चाहिए") for s in subs: if s["exam"] <= start: raise InputError(f"{s['subject']}: परीक्षा {s['exam']} प्रारंभ तिथि {start} के बाद नहीं है") last = max(s["exam"] for s in subs) exam_days = {} for s in subs: exam_days.setdefault(s["exam"], []).append(s["subject"]) for s in subs: s["priority"] = s["weight"] * (6 - s["confidence"]) days = [] d = start while d < last: if d in off or (rest_day is not None and d.weekday() == rest_day): n = 0 else: n = slots_for(weekend_hours if d.weekday() >= 5 else weekday_hours, session, brk) if d in exam_days: n //= 2 # परीक्षा आधा दिन लेती है days.append((d, n)) d += dt.timedelta(days=1) # लक्ष्य सत्र: प्रत्येक परीक्षा से पहले उपलब्ध स्लॉट का हिस्सा, प्राथमिकता द्वारा total_p = sum(s["priority"] for s in subs) for s in subs: before = sum(n for day, n in days if day < s["exam"]) s["target"] = max(1, round(before * s["priority"] / total_p)) s["planned"] = 0 timetable = [] for day, n in days: today, used = [], {} live = [s for s in subs if s["exam"] > day] # परीक्षा से एक दिन पहले: पहले एक समयबद्ध पिछला पेपर for s in live: if (s["exam"] - day).days == 1 and len(today) < n: today.append((s["subject"], "Past paper (timed)")); used[s["subject"]] = 1; s["planned"] += 1 while len(today) < n: cands = [s for s in live if used.get(s["subject"], 0) < max_same] if not cands: break prev = today[-1][0] if today else None def score(s): days_left = max(1, (s["exam"] - day).days) need = (s["target"] - s["planned"]) / days_left # पहले लक्ष्य से नीचे के विषय, फिर interleave (पिछले विषय को दोहराने से बचें) return (s["planned"] < s["target"], s["subject"] != prev, need, s["priority"], -s["exam"].toordinal()) s = max(cands, key=score) left = (s["exam"] - day).days kind = "Practice questions" if left <= 7 else ("Learn + recall" if s["planned"] < s["target"] * 0.6 else "Mixed review") today.append((s["subject"], kind)); used[s["subject"]] = used.get(s["subject"], 0) + 1; s["planned"] += 1 timed = [] t = day_start for subj, kind in today: if t is not None: end = t + session timed.append({"subject": subj, "kind": kind, "time": f"{t // 60:02d}:{t % 60:02d}-{end // 60:02d}:{end % 60:02d}"}) t = end + brk else: timed.append({"subject": subj, "kind": kind}) timetable.append({"date": day.isoformat(), "dow": DAYS[day.weekday()], "exams": exam_days.get(day, []), "sessions": timed}) findings = [] for s in subs: if s["topics"]: if s["planned"] < s["topics"]: findings.append(("HIGH", "UNDER_COVERED", f"{s['subject']}: {s['topics']} विषयों के लिए {s['planned']} सत्र; घंटे जोड़ें, कम-उपज वाले विषय छोड़ें या पहले शुरू करें")) elif s["planned"] < 1.5 * s["topics"]: findings.append(("MEDIUM", "TIGHT", f"{s['subject']}: {s['topics']} विषयों के लिए {s['planned']} सत्र दूसरे पास के लिए बहुत कम समय छोड़ते हैं")) if s["planned"] < 0.6 * s["target"]: findings.append(("MEDIUM", "BELOW_TARGET", f"{s['subject']}: परीक्षा से पहले {s['target']} लक्ष्य सत्रों में से {s['planned']} फिट होते हैं")) dates = sorted(exam_days) for a, b in zip(dates, dates[1:]): if (b - a).days <= 1: findings.append(("MEDIUM", "BACK_TO_BACK", f"{a} ({', '.join(exam_days[a])}) और {b} ({', '.join(exam_days[b])}) पर परीक्षाएं; दूसरे विषय का अभ्यास पहली परीक्षा से पहले समाप्त करें")) for day, subjects in exam_days.items(): if len(subjects) > 1: findings.append(("MEDIUM", "SAME_DAY", f"{day} पर {len(subjects)} परीक्षाएं: {', '.join(subjects)}")) if rest_day is None and len(days) > 10 and not off: findings.append(("LOW", "NO_REST_DAY", "10 दिन से अधिक की योजना में कोई आराम दिवस नहीं; हर सप्ताह कम से कम आधा दिन छुट्टी लें")) if max(weekday_hours, weekend_hours) > 8: findings.append(("LOW", "LONG_DAYS", "प्रति दिन 8 घंटे से अधिक पुनरावृत्ति शायद ही उत्पादक रहती है; 5-6 केंद्रित घंटे रखें")) findings.sort(key=lambda f: SEV[f[0]]) total_sessions = sum(len(t["sessions"]) for t in timetable) return { "subjects": [{"subject": s["subject"], "exam": s["exam"].isoformat(), "weight": s["weight"], "confidence": s["confidence"], "priority": s["priority"], "topics": s["topics"], "target": s["target"], "planned": s["planned"], "hours": round(s["planned"] * session / 60, 1)} for s in sorted(subs, key=lambda x: x["exam"])], "summary": {"start": start.isoformat(), "last_exam": last.isoformat(), "days": len(days), "sessions": total_sessions, "study_hours": round(total_sessions * session / 60, 1), "session_min": session, "break_min": brk}, "timetable": timetable, "findings": [{"severity": a, "code": b, "message": c} for a, b, c in findings], } def to_markdown(p): s = p["summary"] out = ["# पुनरावृत्ति समय-सारणी", "", f"{s['start']} से {s['last_exam']}: {s['days']} दिन, {s['session_min']} मिनट के {s['sessions']} सत्र ({s['study_hours']} घंटे केंद्रित अध्ययन), {s['break_min']} मिनट ब्रेक", "", "| विषय | परीक्षा | भार | आत्मविश्वास | प्राथमिकता | विषय | लक्ष्य | नियोजित | घंटे |", "|---|---|---|---|---|---|---|---|---|"] for x in p["subjects"]: out.append(f"| {x['subject']} | {x['exam']} | {x['weight']:g} | {x['confidence']} | {x['priority']:g} | {x['topics'] or '-'} | {x['target']} | {x['planned']} | {x['hours']} |") out += ["", "## दिन-प्रतिदिन", ""] for t in p["timetable"]: head = f"- **{t['dow']} {t['date']}**" + (f" (परीक्षा: {', '.join(t['exams'])})" if t["exams"] else "") if not t["sessions"]: out.append(head + ": आराम") continue parts = [(f"{x['time']} " if "time" in x else "") + f"{x['subject']} ({x['kind']})" for x in t["sessions"]] out.append(head + ": " + "; ".join(parts)) out += ["", "## निष्कर्ष"] out += [f"- {f['severity']} {f['code']}: {f['message']}" for f in p["findings"]] or ["- कोई नहीं"] out += ["", "प्रत्येक सत्र उस विषय के पिछले सत्र पर स्मृति से 5 मिनट की याद के साथ शुरू करें, और 3 प्रश्नों के साथ समाप्त करें जिनका उत्तर आप नहीं दे सके।"] return "\n".join(out) def self_test(): res = [] def check(name, cond): res.append(cond) print(("PASS " if cond else "FAIL ") + name) D = dt.date S = lambda name, exam, w=1, c=3, t=None: {"subject": name, "exam": exam, "weight": w, "confidence": c, "topics": t} check("slots: 3 घंटे का 50+10 = 3", slots_for(3, 50, 10) == 3) check("slots: 50 मिनट बिल्कुल 1 फिट", slots_for(50 / 60, 50, 10) == 1) check("slots: एक सत्र से कम = 0", slots_for(0.5, 50, 10) == 0) check("slots: 2 घंटे में 25+5 = 4", slots_for(2, 25, 5) == 4) p = plan([S("A", D(2026, 1, 8))], D(2026, 1, 5), weekday_hours=2, weekend_hours=2, session=50, brk=10) check("परीक्षा दिवस या उसके बाद कोई सत्र नहीं", all(t["date"] < "2026-01-08" for t in p["timetable"])) check("परीक्षा से एक दिन पहले पिछले पेपर से शुरू होता है", p["timetable"][-1]["sessions"][0]["kind"] == "Past paper (timed)") check("अंतिम 7 दिनों में अभ्यास प्रश्न", all(x["kind"] != "Learn + recall" for t in p["timetable"] for x in t["sessions"])) subs = [S("Weak", D(2026, 3, 1), w=3, c=1), S("Strong", D(2026, 3, 1), w=3, c=5)] p = plan(subs, D(2026, 2, 1), weekday_hours=3, weekend_hours=3, max_same=3) pl = {x["subject"]: x["planned"] for x in p["subjects"]} check("कमजोर विषय को अधिक सत्र मिलते हैं", pl["Weak"] > 3 * pl["Strong"]) check("प्राथमिकता = भार x (6 - आत्मविश्वास)", p["subjects"][0]["priority"] in (15, 3)) p = plan([S("A", D(2026, 3, 1)), S("B", D(2026, 3, 1))], D(2026, 2, 1), weekday_hours=3, weekend_hours=3) check("प्रति दिन एक विषय के अधिकतम 2 सत्र", all( sum(1 for x in t["sessions"] if x["subject"] == subj) <= 2 for t in p["timetable"] for subj in "AB")) check("जब दोनों को समय चाहिए तो विषय आपस में मिलते हैं", all(t["sessions"][i]["subject"] != t["sessions"][i + 1]["subject"] for t in p["timetable"][:10] for i in range(len(t["sessions"]) - 1))) p = plan([S("A", D(2026, 2, 16))], D(2026, 2, 2), rest_day=6) check("आराम दिवस खाली", all(not t["sessions"] for t in p["timetable"] if t["dow"] == "Sun")) p = plan([S("A", D(2026, 2, 6))], D(2026, 2, 2), off={D(2026, 2, 3)}) check("छुट्टी का दिन खाली", not [t for t in p["timetable"] if t["date"] == "2026-02-03"][0]["sessions"]) p = plan([S("A", D(2026, 2, 5)), S("B", D(2026, 2, 9))], D(2026, 2, 2), weekday_hours=4) day5 = [t for t in p["timetable"] if t["date"] == "2026-02-05"][0] check("परीक्षा दिवस: आधे स्लॉट, केवल दूसरा विषय", len(day5["sessions"]) == 2 and all(x["subject"] == "B" for x in day5["sessions"])) p = plan([S("A", D(2026, 2, 5), t=20)], D(2026, 2, 2)) check("UNDER_COVERED HIGH", p["findings"][0]["code"] == "UNDER_COVERED") p = plan([S("A", D(2026, 2, 20), t=11)], D(2026, 2, 2), weekday_hours=1, weekend_hours=1, rest_day=6) check("TIGHT", any(f["code"] == "TIGHT" for f in p["findings"])) p = plan([S("A", D(2026, 2, 9)), S("B", D(2026, 2, 10)), S("C", D(2026, 2, 10))], D(2026, 2, 2)) codes = [f["code"] for f in p["findings"]] check("BACK_TO_BACK और SAME_DAY", "BACK_TO_BACK" in codes and "SAME_DAY" in codes) check("NO_REST_DAY", "NO_REST_DAY" in [f["code"] for f in plan([S("A", D(2026, 3, 1))], D(2026, 2, 1))["findings"]]) check("LONG_DAYS", "LONG_DAYS" in [f["code"] for f in plan([S("A", D(2026, 2, 5))], D(2026, 2, 2), weekend_hours=10)["findings"]]) p = plan([S("A", D(2026, 2, 5))], D(2026, 2, 2), day_start=9 * 60) check("--day-start के साथ घड़ी का समय", p["timetable"][0]["sessions"][1]["time"] == "10:00-10:50") subs = read_subjects("subject;exam_date;weight;confidence;topics\nMaths;2026-12-03;4,5;2;9\n") check("अर्धविराम CSV + दशमलव अल्पविराम", subs[0]["weight"] == 4.5 and subs[0]["topics"] == 9) for bad, why in [("subject,exam_date\nA,2026-01-01\n", "लापता कॉलम"), ("subject,exam_date,weight,confidence\nA,2026-13-01,1,3\n", "खराब तारीख"), ("subject,exam_date,weight,confidence\nA,2026-01-01,1,9\n", "आत्मविश्वास सीमा से बाहर"), ("subject,exam_date,weight,confidence\nA,2026-01-01,x,3\n", "गैर-संख्या")]: try: read_subjects(bad); check("अस्वीकार करता है " + why, False) except InputError: check("अस्वीकार करता है " + why, True) try: plan([S("A", D(2026, 1, 1))], D(2026, 1, 1)); check("प्रारंभ के बाद नहीं होने वाली परीक्षा अस्वीकार करता है", False) except InputError: check("प्रारंभ के बाद नहीं होने वाली परीक्षा अस्वीकार करता है", True) passed = sum(res) print(f"{passed}/{len(res)} पास") return 0 if passed == len(res) else 1 def main(): ap = argparse.ArgumentParser(description="परीक्षा पुनरावृत्ति समय-सारणी योजनाकार") ap.add_argument("csv", nargs="?", help="विषय CSV") ap.add_argument("--start", help="पहला पुनरावृत्ति दिवस YYYY-MM-DD (डिफ़ॉल्ट आज)") ap.add_argument("--weekday-hours", type=float, default=3.0) ap.add_argument("--weekend-hours", type=float, default=5.0) ap.add_argument("--session-min", type=int, default=50, help="केंद्रित सत्र लंबाई (डिफ़ॉल्ट 50)") ap.add_argument("--break-min", type=int, default=10, help="सत्रों के बीच ब्रेक (डिफ़ॉल्ट 10)") ap.add_argument("--rest-day", choices=DAYS, help="साप्ताहिक छुट्टी का दिन") ap.add_argument("--off", default="", help="अल्पविराम से अलग तिथियां बिना पुनरावृत्ति के (YYYY-MM-DD)") ap.add_argument("--max-same", type=int, default=2, help="प्रति दिन एक विषय के अधिकतम सत्र (डिफ़ॉल्ट 2)") ap.add_argument("--day-start", help="पहले सत्र का घड़ी समय HH:MM (समय-सारणी में समय जोड़ता है)") ap.add_argument("--json", action="store_true") ap.add_argument("--self-test", action="store_true") a = ap.parse_args() if a.self_test: return self_test() if not a.csv: ap.error("CSV दें, या --self-test") try: with open(a.csv, encoding="utf-8-sig") as fh: subs = read_subjects(fh.read()) start = parse_date(a.start, "--start") if a.start else dt.date.today() off = {parse_date(x, "--off") for x in a.off.split(",") if x.strip()} ds = None if a.day_start: try: h, m = map(int, a.day_start.split(":")); assert 0 <= h < 24 and 0 <= m < 60 except Exception: raise InputError("--day-start HH:MM होना चाहिए") ds = h * 60 + m p = plan(subs, start, a.weekday_hours, a.weekend_hours, a.session_min, a.break_min, DAYS.index(a.rest_day) if a.rest_day else None, off, a.max_same, ds) except (OSError, InputError) as e: print(f"त्रुटि: {e}", file=sys.stderr) return 2 print(json.dumps(p, indent=2) if a.json else to_markdown(p)) return 1 if any(f["severity"] == "HIGH" for f in p["findings"]) else 0 if __name__ == "__main__": sys.exit(main())

पूरा प्रॉम्प्ट देखने के लिए साइन इन करें

Continue with:

By logging in, you agree to our Terms of Use and Privacy Policy

उपयोग

यह प्रॉम्प्ट education के साथ उपयोग के लिए डिज़ाइन किया गया है। ऊपर प्रॉम्प्ट सामग्री कॉपी करें और अपने पसंदीदा AI टूल में पेस्ट करें।

सर्वोत्तम परिणामों के लिए, आप अपनी विशिष्ट आवश्यकताओं के अनुसार प्लेसहोल्डर (वर्ग कोष्ठक या बड़े अक्षरों में दर्शाए गए) को अनुकूलित कर सकते हैं।

संदर्भ

श्रेणियाँ:education| prompts.chat| exam-revision| timetable-planner

चर्चा