फ्रीस्टेल सॉल्वर कुछ-चालें बनाएँ


54

फ़्रीसेल के खेल में, आपको इक्का से लेकर राजा तक सूट में चार नींव के ढेर बनाने का काम सौंपा जाता है, एक लेआउट पर जहां आप बारी-बारी से रंगों में नीचे की ओर निर्माण करते हैं। हालाँकि, आप एक समय में केवल एक कार्ड का निर्माण कर सकते हैं, इसलिए आपको चार "नि: शुल्क सेल" दिए जाते हैं, जिनमें से प्रत्येक में एक कार्ड हो सकता है जिससे आपको पूरे अनुक्रम को स्थानांतरित करने में मदद मिल सके। विचार यह है कि आप खेल को हल करने में मदद करने के लिए आवश्यक के रूप में नि: शुल्क कोशिकाओं में और बाहर व्यक्तिगत कार्ड बुनाई करते हैं।

आपका काम एक ऐसा कार्यक्रम बनाना है जो इन खेलों को सबसे कम संभव कदमों में हल करेगा।

आपका कार्यक्रम इनपुट के रूप में 52 कार्डों के अनुक्रम में ले जाएगा, निम्न प्रारूप में:

2S 9H 10C 6H 4H 7S 2D QD KD QC 10S AC ...

इस क्रम में प्रारंभिक लेआउट में निपटा जाएगा:

01 02 03 04 05 06 07 08
09 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52

और खेल को हल करने के लिए चालों की सूची लौटाएं। प्रत्येक चाल इस प्रारूप में होगी:

  • स्रोत ढेर का प्रतिनिधित्व करने वाले ढेर नंबर (के 1माध्यम से 8), या एक मुफ्त सेल ( Aसे D) का प्रतिनिधित्व करने वाला नंबर ।
  • एक अन्य संख्या या पत्र गंतव्य ढेर या मुफ्त सेल का प्रतिनिधित्व करता है, या Fउस सूट की नींव के लिए।

आउटपुट कुछ इस तरह दिखाई देगा:

18 28 3A 8B 8C 85 B5 35 4F etc.

एक बार एक कार्ड को नींव में डालने के बाद, इसे हटाया नहीं जा सकता है। चूंकि एक समय में केवल एक कार्ड को स्थानांतरित किया जाता है, इसलिए 3 कार्डों के अनुक्रम में 5 चालों की आवश्यकता होती है, और 5 कार्डों के अनुक्रम में 9 चालों की आवश्यकता होती है।

यदि कोई गेम असाध्य है, तो आपके प्रोग्राम को इस तरह संकेत देना चाहिए। हालाँकि, आपका प्रोग्राम किसी भी सॉल्व गेम को हल करने में सक्षम होना चाहिए।

आपके कार्यक्रम को मूल Microsoft फ्रीसेल प्रोग्राम में पाए गए 32,768 सौदों पर आंका जाएगा। मान्य होने के लिए, आपके कार्यक्रम को सौदा # 11,982 को छोड़कर हर सौदे को सफलतापूर्वक हल करना चाहिए , जो कि अकल्पनीय है। आपका स्कोर इन 32,767 सौदों को हल करने के लिए ले जाने की कुल संख्या होगी, जिसमें कम कोड एक टाई-ब्रेकर होगा।


उपरोक्त विनिर्देश द्वारा आवश्यक प्रारूप में सभी डेक के साथ एक फ़ाइल यहाँ डाउनलोड करने के लिए उपलब्ध है (5.00 एमबी फ़ाइल): https://github.com/joezeng/pcg-se-files/raw/master/freecell_decks


1
अब मुझे बस रैंडम नंबर जनरेटर को एनएबी करने की आवश्यकता है जो वे उन 32,768 गेम को उत्पन्न करते थे। : एस
जो जेड।

3
जनरेटर यहाँ है: rosettacode.org/wiki/Deal_cards_for_FreeCell
nutki

1
ये एक अच्छा बिंदु है। आप उस मामले से कैसे निपटेंगे, जिसमें कहा गया है, एक ही रंग के दो कार्ड और संख्या (जैसे 7 सी और 7 एस) दोनों मुफ्त कोशिकाओं में हैं? फिर यदि आप "C" से काले 8 में जाते हैं, तो यह उन दो कार्डों में से एक हो सकता है।
जो जेड

2
संभवतः प्रतिबंध को हटाकर आप कुछ जवाब पा सकते हैं कि सभी हल करने योग्य सौदे प्रस्तुत करने से हल होने चाहिए। फिर, हल किए गए सौदों की संख्या के आधार पर स्कोर करें, फिर सबसे कम चालों द्वारा।
mbomb007 21

1
क्या कार्ड 0-अनुक्रमित हो सकते हैं?
tuskiomi

जवाबों:


22

सी 64,643 बाइट्स, स्कोर: ~ 6.5 मिलियन

निम्न स्टैक स्निपेट (मेगो के सौजन्य से) एक एकल स्टैंडअलोन सी फाइल के रूप में सभी कोड को आउटपुट करता है:

यहां मूल स्रोत डाउनलोड करें । जीसीसी का उपयोग करें और makeफिर रीडमी में दिशानिर्देश का उपयोग करके चलाएं ।

मेरा फॉर्मेटिंग खराब है (सभी अलग-अलग फाइलें एक कोड ब्लॉक में हैं) और इसे और अधिक गोल्फ किया जा सकता है (12k बाइट्स थो)। किसी भी मदद प्यार हो जाएगा!

कुछ कोड मेरा नहीं है। मैंने इसका उपयोग अन-कॉपीराइट वाले स्रोत से किया। हालांकि मैंने चुनौती के भीतर होने के लिए इनपुट / आउटपुट विधि तय की (एक लंबा काम जब से मैं सी (5 घंटे) पर भयानक हूं)। मुझे बहुत सारे कोड को फिर से लिखना पड़ा और सब कुछ डिबग करना पड़ा। मेरे पिताजी को रबर डक (और मेरी मेमोरी प्रबंधन त्रुटियों की ओर इशारा करते हुए) और TNB पर सभी के लिए, जिन्होंने सेगफुल्स और सी के बारे में मेरे गुस्से के बारे में बताया।


आप उपयोग करने में सक्षम हो सकता है इस सवाल का जवाब लंबाई प्रतिबंध के आसपास पाने के लिए और नहीं बल्कि एक बाहरी डाउनलोड की आवश्यकता होगी, की तुलना में, इस सवाल का जवाब के भीतर अपने कोड के सभी है।
मेघो

@ मेगो का मतलब है हाँ, लेकिन यह कई फाइलों में है
क्रिस्टोफर

एक सी में कई सी फ़ाइलों को संयोजित करना आसान है।
मेघ

यहां एक स्टैक स्निपेट है जो एक एकल फ़ाइल में संयुक्त कोड दिखाता है।
Mego

@mego क्या आप इसे संपादित कर सकते हैं? मोबाइल पर
क्रिस्टोफर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.