एक बरसाती दोपहर को आप रसोई की मेज़ पर अपनी दादी के साथ ताश खेलते हुए बैठे हैं। यह खेल Camicia का उनका अपना रूप है।
शुरू में यह बस एक और दोस्ताना मुकाबला ही लगता है: पत्ते पटकना, मेज़ के चारों ओर हँसी, और कभी-कभी Nonna की जीत भरी मुस्कान। लेकिन जैसे-जैसे खेल लंबा खिंचता जाता है, कुछ अजीब होने लगता है। वही पत्ते बार-बार लौटकर आते रहते हैं। आप एक के बाद एक पत्ता खेलते जाते हैं, फिर भी अंत आता ही नहीं दिखता।
आप सोचने लगते हैं। क्या यह खेल कभी खत्म होगा? या हम इसे हमेशा खेलते रह सकते हैं?
बाद में, जिज्ञासा के कारण आप ऑनलाइन खोजते हैं और आश्चर्य के साथ पता चलता है कि जो हुआ वह सिर्फ दुर्भाग्य नहीं था। हो सकता है कि आप और आपकी दादी सबसे लंबे संभव क्रमों में से किसी एक पर पहुँच गए हों! अचानक आप इस खेल में खो जाते हैं। जो एक साधारण खेल के रूप में शुरू हुआ था, वह अब एक खोज बन गया है: ऐसा खेल सचमुच कितनी देर चल सकता है? क्या आप उससे भी लंबा क्रम ढूँढ सकते हैं जो आपने रसोई की मेज़ पर खेला था? शायद इतना लंबा कि एक नया विश्व रिकॉर्ड बन जाए?
और इस तरह, हाथ में सिर्फ ताश की एक गड्डी और एल्गोरिद्म की थोड़ी-सी समझ लेकर, आप जाँच करने का मन बना लेते हैं...
इस अभ्यास में आप ताश के क्लासिक खेल Camicia जैसा एक खेल चलाने वाला प्रोग्राम लिखेंगे। आपका प्रोग्राम दोनों खिलाड़ियों की गड्डियों की शुरुआती स्थिति लेकर यह खेल तब तक चलाएगा जब तक कि वह खत्म न हो जाए, या यह पता न लगा ले कि वह कभी खत्म नहीं होगा।
यह एक छोटा उदाहरण है ऐसे खेल का जो खत्म हो जाता है।
| राउंड | खिलाड़ी A | खिलाड़ी B | ढेर | बाकी जुर्माना |
|---|---|---|---|---|
| 1 | 2 A 7 8 Q 10 | 3 4 5 6 K 9 J | - | |
| 1 | A 7 8 Q 10 | 3 4 5 6 K 9 J | 2 | - |
| 1 | A 7 8 Q 10 | 4 5 6 K 9 J | 2 3 | - |
| 1 | 7 8 Q 10 | 4 5 6 K 9 J | 2 3 A | खिलाड़ी B: 4 |
| 1 | 7 8 Q 10 | 5 6 K 9 J | 2 3 A 4 | खिलाड़ी B: 3 |
| 1 | 7 8 Q 10 | 6 K 9 J | 2 3 A 4 5 | खिलाड़ी B: 2 |
| 1 | 7 8 Q 10 | K 9 J | 2 3 A 4 5 6 | खिलाड़ी B: 1 |
| 1 | 7 8 Q 10 | 9 J | 2 3 A 4 5 6 K | खिलाड़ी A: 3 |
| 1 | 8 Q 10 | 9 J | 2 3 A 4 5 6 K 7 | खिलाड़ी A: 2 |
| 1 | Q 10 | 9 J | 2 3 A 4 5 6 K 7 8 | खिलाड़ी A: 1 |
| 1 | 10 | 9 J | 2 3 A 4 5 6 K 7 8 Q | खिलाड़ी B: 2 |
| 1 | 10 | J | 2 3 A 4 5 6 K 7 8 Q 9 | खिलाड़ी B: 1 |
| 1 | 10 | - | 2 3 A 4 5 6 K 7 8 Q 9 J | खिलाड़ी A: 1 |
| 1 | - | - | 2 3 A 4 5 6 K 7 8 Q 9 J 10 | - |
| 2 | - | 2 3 A 4 5 6 K 7 8 Q 9 J 10 | - | - |
status: "finished", cards: 13, tricks: 1
यह एक छोटा उदाहरण है ऐसे खेल का जो लूप में चला जाता है।
| राउंड | खिलाड़ी A | खिलाड़ी B | ढेर | बाकी जुर्माना |
|---|---|---|---|---|
| 1 | J 2 3 | 4 J 5 | - | - |
| 1 | 2 3 | 4 J 5 | J | खिलाड़ी B: 1 |
| 1 | 2 3 | J 5 | J 4 | - |
| 2 | 2 3 J 4 | J 5 | - | - |
| 2 | 3 J 4 | J 5 | 2 | - |
| 2 | 3 J 4 | 5 | 2 J | खिलाड़ी A: 1 |
| 2 | J 4 | 5 | 2 J 3 | - |
| 3 | J 4 | 5 2 J 3 | - | - |
| 3 | J 4 | 2 J 3 | 5 | - |
| 3 | 4 | 2 J 3 | 5 J | खिलाड़ी B: 1 |
| 3 | 4 | J 3 | 5 J 2 | - |
| 4 | 4 5 J 2 | J 3 | - | - |
राउंड 4 की शुरुआत राउंड 2 की शुरुआत से मेल खाती है। याद रखिए, संख्या वाले पत्तों की वैल्यू से कोई फर्क नहीं पड़ता।
status: "loop", cards: 8, tricks: 3
"finished" या "loop"
जो लोग इससे भी अधिक रोमांचक चैलेंज लेना चाहते हैं, उनके लिए खबर है कि जिस खेल का अंत होता है, उसमें सबसे लंबे खेल के और रिकॉर्ड ढूँढने की तलाश अब भी जारी है। इसकी 653,534,134,886,878,245,000 (करीब 654 क्विंटिलियन) संभावनाएँ हैं, और हमने अभी तक इन सबकी गणना नहीं की है!
Exercism पर साइन अप कीजिए और CoffeeScript को 97 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।