इमोजी समस्या (2022)
(artofproblemsolving.com)- इंटरनेट पर मिलने वाली फल·इमोजी arithmetic puzzle की एक variant को integer Diophantine equation मानकर, positive integer solution बनाने तक की प्रक्रिया को ट्रैक किया गया है
- मुख्य tool यह है कि सीधे integer solution ढूंढने के बजाय पहले rational point ढूंढे जाएं, और फिर line या tangent से नए rational points बनाने की geometric method इस्तेमाल की जाए
- variable substitution और rotation के बाद equation एक symmetric elliptic curve बन जाती है, लेकिन शुरू में दिखने वाले आसान points सीधे original problem के positive solution तक नहीं ले जाते
- elliptic curve पर दो rational points को जोड़ने वाली line, या किसी एक point की tangent, तीसरा intersection point बनाती है, और Vieta formula की वजह से वह point भी rational point रहता है
- Mathematica से कम obvious point खोजकर और operations repeat करने के बाद, original variables में वापस लौटने पर संभव बहुत बड़े positive integer solution को construct किया गया
इंटरनेट इमोजी puzzle के math problem में बदलने की प्रक्रिया
- इंटरनेट पर ऐसे इमोजी arithmetic puzzles खूब फैले हुए थे जिनमें banana की संख्या जैसी details को confusing बनाकर अलग-अलग answers निकलवाए जाते थे
- 2017 की शुरुआत में r/math पर Facebook-style fruit math puzzles से तंग आ जाने के आशय वाला एक reddit thread आया, और एक user ने fruit pictures इस्तेमाल करके एक ज्यादा मुश्किल problem बनाई
- Sridhar Ramesh ने उस problem को थोड़ा बदलकर व्यापक रूप से फैलाया, जिससे यह एक notorious problem बन गई जिसका minimum solution बहुत लंबा माना जाता था और जिसके लिए elliptic curve की जानकारी जरूरी समझी जाती थी
- लक्ष्य उस modified emoji problem को सच में solve करने की प्रक्रिया है
तैयारी का example: Pythagorean triples और rational points
- पहले Pythagorean triples खोजने की problem को एक आसान example के रूप में लिया गया है
- integer solutions को सीधे खोजने के बजाय, इसे corresponding unit circle पर rational points खोजने की problem में बदलने से structure सरल हो जाता है
- unit circle पर किसी rational point से शुरू करके rational slope वाली line खींचें, तो circle से मिलने वाला दूसरा point भी rational point बनता है
- line और circle के intersection points निकालने पर quadratic equation मिलती है
- coefficients rational होते हैं और एक root पहले से rational होता है, इसलिए Vieta formula के अनुसार दूसरा root भी rational होता है
- उल्टा, unit circle पर कोई भी दूसरा rational point starting point से जोड़ने वाली line का rational slope देता है, इसलिए सभी rational points इसी तरीके से प्राप्त किए जा सकते हैं
- यह प्रक्रिया सभी Pythagorean triples को दो positive integers और उनके multiples के standard form में express करने तक ले जाती है
- महत्वपूर्ण pattern है line से नया point पाने की method, और original emoji problem में भी मिलती-जुलती idea इस्तेमाल होती है
original equation को elliptic curve में बदलना
- emoji problem की equation से denominators हटाने के बाद, integer solutions के बजाय variable ratios के लिए rational points खोजने की problem बन जाती है
- सीधे positive integer solutions ही नहीं खोजे जाते, बल्कि positive और negative शामिल करते हुए rational points के पूरे set को पहले explore किया जाता है
- graph दो variables की swapping पर नहीं बदलता, इसलिए उसमें tilted symmetry होती है
- सुविधा के लिए variable substitution से graph को rotate करके axes के प्रति symmetric form में बनाया गया, और इस curve को elliptic curve कहा जाता है
- graph में आंखों से पहचाने जा सकने वाले आसान rational points हैं, लेकिन वे original problem के valid positive solutions से correspond नहीं करते
- इसलिए आसान points को starting points बनाकर और ज्यादा rational points बनाने पड़ते हैं
elliptic curve पर भी काम करने वाली line trick
- elliptic curve पर दो rational points (P), (Q) को जोड़ने वाली line खींचें, तो वह line curve से तीसरे point (R) पर मिलती है
- यह तीसरा intersection point भी rational point बनता है
- line equation को elliptic curve equation में substitute करने पर एक variable के लिए cubic equation मिलती है
- cubic equation के coefficients rational होते हैं
- पहले से दो roots (P), (Q) के coordinates से आए rational numbers हैं, इसलिए Vieta formula से तीसरा root भी rational होता है
- line equation में वापस substitute करने पर बाकी coordinate भी rational तय हो जाता है
- अगर (P=Q) हो, तो दो points को जोड़ने वाली line की जगह उस point पर tangent इस्तेमाल की जाती है, और intersection को multiplicity सहित calculate किया जाता है
- शुरुआत में मिले आसान points को जोड़ने या tangent खींचने पर भी सिर्फ कुछ points repeat होते हैं, और वे नए व उपयोगी points की ओर expand नहीं होते
- ये points torsion point हैं, इसलिए वही line trick repeat करने पर भी अब और नए points की तरफ escape नहीं कर पाते
valid region के अंदर rational point खोजना
- Mathematica से elliptic curve पर कम obvious rational points search किए गए, और उनमें से एक बाद की calculation में इस्तेमाल हुआ
- लक्ष्य कोई भी arbitrary rational point नहीं है, बल्कि ऐसा point है जो original variables में लौटाने पर तीनों values positive बनाता हो
- अगर सभी variables negative हों, तो सभी signs flip करके positive solution पाया जा सकता है, इसलिए एक variable को positive मानकर conditions को reverse-trace किया गया
- यह condition transformed coordinate plane में एक खास green region के रूप में दिखती है, और elliptic curve पर rational point को उस region के भीतर भेजना होता है
- manual calculation बेहद cumbersome थी, इसलिए line·tangent operations से मिलने वाले intersection coordinates के formulas Mathematica से calculate किए गए
- दो points को जोड़ने वाली line के तीसरे intersection point और किसी एक point पर tangent से बनने वाले तीसरे intersection point के लिए coordinate formulas बनाए गए, और expressions बेहद complex होने के साथ numbers भी बड़े होते गए
आखिरी positive integer solution बनाना
- starting rational point से tangent खींचकर नया point लिया गया, फिर उस point से tangent खींचकर next point पाने की प्रक्रिया repeat की गई
- कई tangent operations के बाद भी target region में सीधे entry नहीं मिली, इसलिए एक point के coordinate signs बदलकर बने point से जोड़कर एक और point बनाया गया
- अंत में पहले से बचाकर रखे गए एक “good” rational point और पहले मिले बड़े-coordinate वाले point को जोड़कर, आखिरकार target green region के अंदर rational point तक पहुंचा गया
- इस final rational point को original variables में वापस बदला गया, और denominators के least common multiple से multiply करके positive integer solution construct किया गया
- final verification में confirm किया गया कि construct किया गया बेहद बड़ा integer solution original emoji problem की equation को satisfy करता है
1 टिप्पणियां
Hacker News की राय
बस
xजैसी चीज़ों की जगह मुलायम बादल, तारे जैसे नाम इस्तेमाल करता था, और बच्चे झुंझलाते हुए भी रुचि बनाए रखते थे; बाद में उन्होंने दोस्तों की मदद करते समय भी यही कियाइस तरह की abstraction पहली बार सीखते समय कैसा लगता है, यह भूलना आसान है; यह दिखाना ज़रूरी था कि
xकोई खास चीज़ नहीं है—वह सूरज भी हो सकता है, या “बिल्लियों की कुल संख्या” जैसा कोई वाक्यांश भीलेकिन बाद में जब यह publish होता है तो readability सचमुच खराब हो जाती है। हालत ऐसी हो जाती है: “इस expression में कोई item बड़ा रोल निभा रहा है, पर आखिर इसका मतलब क्या है? किसी ने इसे
φनाम दे दिया है, इसलिए समझ नहीं आ रहा”मैं मज़ाक में कहता हूँ कि अगर आपको लगता है programmers नामकरण में खराब हैं, तो mathematicians को देखिए। Mathematicians को नाम न रख पाने की क्षमता पर अजीब-सा गर्व होता है
सबसे बुरा वह program होता है जो सीधे किसी गणित के paper से निकला हो। अगर variable में correlation coefficient है, तो उसे वही कहिए। विचार बाँटने के लिए हमारे पास हजारों साल की भाषा और notation हैं; उन्हें encrypt करके
rhoमत कहिएलेकिन असल में यह हुआ: https://chatgpt.com/share/682cce62-c53c-8003-be2c-2929395868...
संक्षेप में, model ने पूरे confidence से guess दिया, calculate किया, उसे गलत माना और फिर बार-बार कोशिश करता रहा—यहाँ तक कि वही guess दोहराता रहा। उसने symmetry को बिल्कुल नहीं पहचाना और पूरी तरह structure-less actor जैसा व्यवहार किया
आखिर में उसने मजबूती से निष्कर्ष निकाला कि इस puzzle का कोई solution नहीं है; अगर आगे की puzzles में भी model इतना खराब perform करता है, तो मुझे अपने भरोसे को अपडेट करना पड़ेगा
ChatGPT o3 से भी पूछा, और उसने 11.5 मिनट तक सोचा: https://chatgpt.com/share/682d0993-db4c-8004-a66c-3908ef7203...
क्या ChatGPT का कोई version नहीं है जो Wolfram Alpha से connected हो? जानना चाहूँगा कि वह try किया गया था या नहीं
ज़्यादा context और related examples यहाँ हैं: https://x.com/TheOisinMoran/status/1299124512240398336
किस variable का कहाँ इस्तेमाल हो रहा है, trace करना बहुत आसान हो जाता है, और code की शुद्ध structure एक नज़र में पकड़ में आती है। मैंने पहले जो example पोस्ट किया था वह यहाँ है: https://imgur.com/F27ZNfk
दुर्भाग्य से Rust और JS जैसी अधिकांश modern languages XID_Start/XID_Continue recommendation follow करती हैं, जिसकी motivation मुझे निजी तौर पर बहुत मजबूत नहीं लगती, और वे सभी emoji characters को identifiers से बाहर कर देती हैं
4की जगह कोई दूसरा constant इस्तेमाल करें तो सबसे छोटा solution वाकई विशाल number हो सकता है: https://observablehq.com/@robinhouston/a-remarkable-diophant...क्या इसमें ऐसा कोई हिस्सा है जो लोगों को बहस कराने जितना आसानी से confusing है, या यह इतनी आसान problem है कि हर कोई जल्दी-जल्दी smart दिखने की कोशिश करता है?
मुझे
10, 4, 2मिला, लेकिन शायद मैं ही confuse हुआ हूँइसलिए इसे
1 + 10 + 3के रूप में interpret किया जा सकता है