जादूगर से पूछो #357
1 से 9 तक प्रत्येक अंक का ठीक एक बार प्रयोग करते हुए, तीन भिन्न बनाएं, जिनमें से प्रत्येक के अंश में एक अंक और हर में दो अंक हों, तथा तीनों भिन्नों का योग एक हो।
उदाहरण के लिए, 8/16 + 9/27 + 3/24 सभी शर्तों को पूरा करता है, सिवाय इसके कि योग 23/24 के बराबर है, 1 नहीं।
[स्पॉइलर=समाधान]
उत्तर खोजने के लिए permut(9,3)*permut(6,3)*permut(3,3)/fact(3) = 60,480 संभावित क्रमपरिवर्तनों को छाँटना होगा। मुझे स्वीकार करना होगा कि मैंने कम से कम एक घंटे तक कोशिश की और कोई हल नहीं मिला।
इसलिए, मैंने नौ अंकों को क्रमबद्ध करने के सभी 362,880 तरीकों से एक प्रोग्राम बनाया और उन सभी का परीक्षण किया। सबसे मुश्किल काम नौ संख्याओं को क्रमबद्ध करने के हर संभव तरीके से क्रमबद्ध करना था। लेक्सोग्राफ़िक सॉर्टिंग का उपयोग करके इसे कैसे किया जाता है, यहाँ बताया गया है।
- सभी नौ तत्वों को एक सारणी में रखें, निम्नतम से उच्चतम तक व्यवस्थित करें।
- सारणी में वह अंतिम तत्व ढूँढें जिससे अगला तत्व बड़ा हो। यदि कोई तत्व न मिले, तो प्रोग्राम से बाहर निकलें।
- चरण 2 के बाद वाले तत्व से शुरू करते हुए, सरणी में वह अंतिम तत्व ढूंढें जो चरण 2 से बड़ा हो।
- चरण 2 और 3 से सरणी में तत्वों को बदलें।
- चरण 2 से अंत तक सरणी में तत्वों को उलट दें।
- चरण 2 पर वापस जाएँ
इस प्रक्रिया का पालन करने पर, आपको छह बार सही उत्तर मिलेगा, तीनों भिन्नों को क्रमबद्ध करने के सभी छह तरीकों के लिए एक बार। [/spoiler]
[स्पॉइलर=कोड]
मैंने निम्नलिखित कोड लिखा, 1 से 9 तक प्रत्येक अंक को लेक्सोग्राफिक क्रम में क्रमबद्ध करने के लिए तथा प्रत्येक का परीक्षण करने के लिए कि क्या यह एक हल है।
शून्य तीन_अंश(शून्य)
{
int i, x_max, y_max, temp_array[100], होल्ड, pt;
int lex_array[] = { 1,2,3,4,5,6,7,8,9 };
int num_elements = sizeof(lex_array) / sizeof(lex_array[0]);
int गिनती = 0;
बूल स्टॉप = झूठ;
डबल टोट3;
cerr << "तत्वों की संख्या =\t" << num_elements << "\n";
करना
{
गिनती++;
tot3 = (डबल)lex_array[0] / (डबल)(10 * lex_array[1] + lex_array[2]);
tot3 += (डबल)lex_array[3] / (डबल)(10 * lex_array[4] + lex_array[5]);
tot3 += (डबल)lex_array[6] / (डबल)(10 * lex_array[7] + lex_array[8]);
यदि (tot3 == 1.0)
{
cerr << गिनती << "\t";
cerr << lex_array[0] << "/" << lex_array[1] << lex_array[2] << " + ";
cerr << lex_array[3] << "/" << lex_array[4] << lex_array[5] << " + ";
cerr << lex_array[6] << "/" << lex_array[7] << lex_array[8] << "\n";
}
x_मैक्स = -1;
के लिए (i = 0; i < (num_elements - 1); i++)
{
यदि (lex_array[i] < lex_array[i + 1])
x_मैक्स = i;
}
यदि (x_max >= 0)
{
y_मैक्स = 0;
(i = x_max + 1; i < num_elements; i++) के लिए
{
यदि (lex_array[x_max] < lex_array[i])
y_मैक्स = i;
}
होल्ड = lex_array[x_max];
लेक्स_एरे[x_मैक्स] = लेक्स_एरे[y_मैक्स];
lex_array[y_max] = होल्ड;
यदि (x_max + 1 < num_elements - 1) // उलटा
{
(i = x_max + 1; i < num_elements; i++) के लिए
{
अस्थायी_सरणी[i] = लेक्स_सरणी[i];
}
पीटी = 0;
(i = x_max + 1; i < num_elements; i++) के लिए
{
lex_array[i] = temp_array[num_elements - 1 - pt];
पीटी++;
}
}
}
अन्य
रोक = सच;
} जबकि (रोक == गलत);
}
[/बिगाड़ने वाला]यह प्रश्न मेरे फोरम विजार्ड ऑफ वेगास में पूछा गया है और इस पर चर्चा की गई है।
एक आदमी के पास दस गैलन की शराब का एक केग और एक जग था। एक दिन, उसने एक जग शराब से भरा और फिर उसमें पानी भर दिया। बाद में, जब शराब और पानी अच्छी तरह मिल गए, तो उसने एक और जग भरा और फिर से केग में पानी भर दिया। अब केग में शराब और पानी बराबर मात्रा में थे।
जग की क्षमता क्या थी?
[स्पॉइलर=समाधान]
माना j = जग का आयतन.
पहली बार जग भरने के बाद, जग में 10-j गैलन वाइन बची थी। वाइन की जगह पानी डालने के बाद, पूरे केग में वाइन का अनुपात (10-j)/10 था।
जग से तनुकृत शराब निकालने के बाद, केग में 10 गैलन तनुकृत शराब बची थी। तनुकृत शराब में शुद्ध शराब की मात्रा इस प्रकार व्यक्त की जा सकती है:
(10-जे)*((10-जे)/10) = 5
(10-j)^2 = 50
j^2 - 20j + 100 = 50
जे^2 - 20जे + 50 = 0
j = (20 +/- sqrt(400-200))/2
j = (20 +/- 10*sqrt(2))/2
j = 10 +/- 5*sqrt(2)
जग, केग से बड़ा नहीं हो सकता, इसलिए हमें ऋणात्मक चिह्न का प्रयोग करना चाहिए:
j = 10 - 5*sqrt(2) =~ लगभग 2.92893218813452 गैलन.
[/बिगाड़ने वाला]यह प्रश्न मेरे फोरम विजार्ड ऑफ वेगास में पूछा गया है और इस पर चर्चा की गई है।
एक छह-पक्षीय पासे को तब तक बार-बार घुमाया जाता है जब तक कि सभी पासों का योग 13 या उससे अधिक न हो जाए। अंतिम योग का माध्य, माध्यिका और बहुलक क्या है?
माध्यिका = 14
मोड = 13
[स्पॉइलर=समाधान]
मुझे इसके लिए मार्कोव श्रृंखला का उपयोग करना पड़ा। नीचे दी गई तालिका बाएँ स्तंभ में दिए गए चलित योग के अनुसार प्रत्येक अंतिम योग की प्रायिकता दर्शाती है। 13 से 18 के योग के लिए स्पष्ट मामलों से शुरुआत करें। फिर, 0 से 12 के चलित योग के लिए, नीचे दिए गए छह कक्षों का औसत निकालें।
प्रारंभिक अवस्था की संभावनाएं पहली पंक्ति में 0 के योग के लिए पाई जा सकती हैं।
मार्कोव श्रृंखला
| रोल का योग | 13 | 14 | 15 | 16 | 17 | 18 |
|---|---|---|---|---|---|---|
| 0 | 0.279263 | 0.236996 | 0.192313 | 0.145585 | 0.097371 | 0.048472 |
| 1 | 0.290830 | 0.230791 | 0.188524 | 0.143842 | 0.097114 | 0.048899 |
| 2 | 0.293393 | 0.241931 | 0.181893 | 0.139625 | 0.094943 | 0.048215 |
| 3 | 0.289288 | 0.245178 | 0.193717 | 0.133678 | 0.091410 | 0.046728 |
| 4 | 0.280369 | 0.242560 | 0.198450 | 0.146988 | 0.086950 | 0.044682 |
| 5 | 0.268094 | 0.235687 | 0.197878 | 0.153768 | 0.102306 | 0.042267 |
| 6 | 0.253604 | 0.225827 | 0.193419 | 0.155611 | 0.111500 | 0.060039 |
| 7 | 0.360232 | 0.193566 | 0.165788 | 0.133380 | 0.095572 | 0.051462 |
| 8 | 0.308771 | 0.308771 | 0.142104 | 0.114326 | 0.081919 | 0.044110 |
| 9 | 0.264660 | 0.264660 | 0.264660 | 0.097994 | 0.070216 | 0.037809 |
| 10 | 0.226852 | 0.226852 | 0.226852 | 0.226852 | 0.060185 | 0.032407 |
| 11 | 0.194444 | 0.194444 | 0.194444 | 0.194444 | 0.194444 | 0.027778 |
| 12 | 0.166667 | 0.166667 | 0.166667 | 0.166667 | 0.166667 | 0.166667 |
| 13 | 1.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| 14 | 0.000000 | 1.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| 15 | 0.000000 | 0.000000 | 1.000000 | 0.000000 | 0.000000 | 0.000000 |
| 16 | 0.000000 | 0.000000 | 0.000000 | 1.000000 | 0.000000 | 0.000000 |
| 17 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1.000000 | 0.000000 |
| 18 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1.000000 |
यह प्रश्न मेरे फोरम ' विजार्ड ऑफ वेगास' में पूछा गया और इस पर चर्चा की गई।