ओवरहैंड किए गए फेरबदल का विश्लेषण करें


13

रॉड दो खिलाड़ियों के बीच एक कार्ड गेम का संचालन कर रहा है: जॉर्ज और टिम। वर्तमान में, टिम कार्ड फेरबदल कर रहा है। रॉड को संदेह है कि टिम धोखा देने की कोशिश कर रहा है, इसलिए उसे यह जांचने के लिए आपकी मदद चाहिए कि फेरबदल उचित है।

टिम ओवरहैंडिंग फेरबदल कर रहा है: वह डेक के नीचे से कार्ड का ढेर काटता है, फिर डेक के शीर्ष पर ढेर के ऊपर से विभिन्न हिस्सों को काटता है और प्रक्रिया को कुछ बार दोहराता है।

रॉड ईगल-आइड है और यह देख सकता है कि टिम हर बार कितने कार्ड काट रहा है, हालांकि वह गणना नहीं कर सकता है और जितनी जल्दी हो सके कार्ड का ट्रैक रख सकता है। यह वह जगह है जहां आप आते हैं: रॉड आपको एक कार्यक्रम या फ़ंक्शन लिखना चाहता है जो विस्तृत फेरबदल की जानकारी प्राप्त करता है और निर्धारित करता है कि क्या फेरबदल उचित, कमजोर या एक चाल है।

  • यदि फेरबदल के बाद, आसन्न कार्ड के 25 से कम जोड़े आसन्न (उसी क्रम में) रहते हैं, तो फेरबदल उचित है और खेल चल सकता है।
  • यदि आसन्न कार्ड के कम से कम 25 (लेकिन सभी नहीं) जोड़े आसन्न रहते हैं, तो फेरबदल कमजोर होता है और रॉड टिम को सिर पर बांधेगा और उसे कुछ और फेरबदल करने के लिए कहेगा।
  • यदि अंत में सभी कार्ड एक ही स्थिति में रहते हैं, तो टिम स्पष्ट रूप से धोखा दे रहा है और रॉड उसे एक बड़े ट्राउट के साथ मिटा देगा।

यह कोड गोल्फ है, इसलिए सबसे छोटा कोड जीतता है।

इनपुट:

आपको कई लाइनों पर, 0 और 52 (दोनों अनन्य) के बीच की संख्या को अंतरिक्ष से अलग किया जाएगा, जहां प्रत्येक पंक्ति फेरबदल के एक दौर का प्रतिनिधित्व करती है जो शुरू होती है और सभी कार्डों के साथ समाप्त होती है।

प्रत्येक पंक्ति में, पहली संख्या डेक के नीचे से कार्ड की कटौती की संख्या है, और प्रत्येक बाद की संख्या कार्ड की एक संख्या है जो वह अपने हाथ से डेक के शीर्ष पर ड्रॉप करता है। यदि कोई कार्ड एक लाइन पर अंतिम संख्या के बाद रहता है, तो आपको यह मान लेना चाहिए कि टिम उन्हें डेक के ऊपर रखता है।

इनपुट मान्य होने की गारंटी है। संख्याओं की कम से कम एक पंक्ति होती है, और प्रत्येक पंक्ति में कम से कम 2 संख्याएँ होती हैं। प्रत्येक पंक्ति पर पहली संख्या एक ही पंक्ति के सभी अन्य संख्याओं के योग से छोटी नहीं है। एक अनुगामी न्यूलाइन वैकल्पिक है, आप मान सकते हैं कि इनपुट में एक है या इसमें एक नहीं है।

आउटपुट:

यदि फेरबदल कमजोर है और "चाल" यदि टिम सभी कार्डों को एक ही क्रम में रख रहे हैं तो आपके कार्यक्रम को "निष्पक्ष" प्रिंट करना चाहिए या "वापस" आना चाहिए। एक अनुगामी न्यूलाइन वैकल्पिक है।

उदाहरण:

डेक को 52 कार्ड माना जाता है, लेकिन प्रदर्शन प्रयोजनों के लिए, मैं 10 कार्ड के छोटे डेक का उपयोग करूंगा।

इनपुट:

5 3 1
4 2 2

प्रारंभिक डेक, ऊपर से देखे गए: 0 1 2 3 4 5 6 7 8 9
50 1 2 3 4( 5 6 7 8 9हाथ में)
35 6 7 0 1 2 3 4( 8 9हाथ में)
18 5 6 7 0 1 2 3 4( 9हाथ में)
लाइन ➜ के अंत 9 8 5 6 7 0 1 2 3 4
49 8 5 6 7 0( 1 2 3 4हाथ में)
21 2 9 8 5 6 7 0( 3 4हाथ में)
23 4 1 2 9 8 5 6 7 0
4 जोड़े आसन्न रहते हैं:(3 4) (1 2) (5 6) (6 7)

परीक्षण के मामलों:

43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5

आउटपुट: fair


43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5

आउटपुट: weak


29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3

आउटपुट: fair


24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27

आउटपुट: weak


26 13
26 13
26 13
26 13

आउटपुट: trick


50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

आउटपुट: weak


50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

आउटपुट: trick


50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

आउटपुट: fair

आवश्यकताएँ:

  • यदि आप एक फ़ंक्शन लिखते हैं, तो यह या तो मानक इनपुट से पढ़ सकता है या एकल स्ट्रिंग पैरामीटर के रूप में इनपुट प्राप्त कर सकता है। साथ ही, फ़ंक्शन आउटपुट को प्रिंट कर सकता है या वापस कर सकता है।
  • लिनक्स में प्रोग्राम को स्वतंत्र रूप से उपलब्ध सॉफ्टवेयर का उपयोग करके चलाया जा सकता है।
  • स्रोत कोड को केवल ASCII वर्णों का उपयोग करना चाहिए।
  • कोई मानक खामियां नहीं हैं।

2
ASCII पर प्रतिबंध क्यों? कई भाषाएं (APL, मशीन कोड, TI-BASIC) ASCII का उपयोग बिल्कुल भी नहीं करती हैं, इसलिए आप उन का अनादर कर रहे हैं।
lirtosiast

@ThomasKwa क्योंकि मुझे गैर-ASCII वर्णों को प्रदर्शित करने और गिनने से जुड़े मुद्दे पसंद नहीं हैं। उन भाषाओं में से कुछ में ASCII अभ्यावेदन या विकल्प हैं। मुझे लगता है कि यह बहुत कठोर प्रतिबंध नहीं है, और यह खेल के मैदान को थोड़ा समतल करता है।
aditsu छोड़ दिया क्योंकि एसई EVIL

मुझे लगता है कि "एंट्रीज जैसे स्कोरिंग सिस्टम जो केवल प्रिंट करने योग्य एएससीआईआई अक्षरों का उपयोग करते हैं, उनकी बाइट की गिनती लॉग (95) / लॉग (256) से गुणा होगी" बेहतर विकल्प होगा यदि आप प्रिंट करने योग्य एएससीआई सबमिशन को प्रोत्साहित करना चाहते हैं। तर्क यह है कि समान स्कोर वाली प्रविष्टियों की सूचना सामग्री बराबर होगी। निजी तौर पर, मैं अभी भी बाइट्स द्वारा एक सादे स्कोरिंग पसंद करूंगा।
lirtosiast

@ThomasKwa ठीक है, इस बारे में कैसे? केवल प्रिंट करने योग्य यूनिकोड वर्ण, UTF-8 एन्कोडिंग में बाइट्स की गिनती
aditsu छोड़ दिया क्योंकि एसई ईवीआईएल जूल 14'20 एम

जवाबों:




2

जावास्क्रिप्ट, 292 289 बाइट्स

यह शायद कुछ और बाइट्स निचोड़ सकता है, लेकिन यह अभी के लिए एक त्वरित पहला पास है:

d=[];for(i=0;i<52;i+=1)d[i]=i
s=prompt().split('\n')
s.forEach(function(e,i){s[i]=e.split(' ')
h=d.splice(-s[i][0],99)
for(j=1;j<s[i].length;j+=1)d.unshift.apply(d,h.splice(0,s[i][j]))
d.unshift.apply(d,h)})
for(c=0;i>1;i-=1)if(d[i-2]==d[i-1]-1)c+=1
alert(c<25?"fair":c<51?"weak":"trick")

संपादित करें: iआसन्न कार्डों की संख्या की गिनती करते समय डेक-बिल्डिंग लूप से मूल्य का पुन: उपयोग करके 3 बाइट्स सहेजे गए ।

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