दोस्तों के साथ कतार में


16

आप मनोरंजन पार्क में अपने सबसे अच्छे कली, जिम के साथ हैं और जैसे ही आपकी पसंदीदा सवारी देखने में आती है, आप और जिम विनिमय करते हैं। स्वाभाविक रूप से आप लाइन में लगने की दौड़ करते हैं। दुर्भाग्य से वह जीतता है क्योंकि आप एक गोल्फ खिलाड़ी हैं और वह एक वास्तविक खेल (माफ़ करना दोस्तों) खेलता है। वास्तव में, आप इतने पीछे हैं कि आप और जिम xलोगों द्वारा अलग हो गए हैं। मान लें कि लाइन की लंबाई है nऔर आप पीछे हैं और लाइन ज़िग्स और ज़ैग्स हर jलोगों को है, तो लाइन में आप किस स्थिति में जिम और जिम एक ही कॉलम में होंगे जिससे आप चैट कर सकते हैं (केवल एक पंक्ति अलग हो सकती है)?

इनपुट

3 इंटेगर

  • n- लाइन की लंबाई। यह संख्या हमेशा से अधिक या बराबर होगी jऔर उस रूप में होगी y * jजहां yएक सकारात्मक पूर्णांक (कतार में पंक्तियों की संख्या) है।
  • j- पंक्ति की एक पंक्ति में लोगों की संख्या (एक पंक्ति में स्तंभों की संख्या)। यह संख्या हमेशा 0 से अधिक होगी।
  • x- आपके और जिम के बीच लोगों की संख्या ऐसी है 0 <= x < 2j - 1। संकेत: यदि यह संख्या विषम है, तो आपका आउटपुट खाली होना चाहिए।

उत्पादन

उस पंक्ति में पूर्णांक पदों की एक सूची जिस पर जिम आपके समान कॉलम में है।
1 जब तक आप अपने उत्तर में निर्दिष्ट करते हैं, ये पूर्णांक 0 या 1-अनुक्रमित हो सकते हैं।
2 ये पूर्णांक मान सकते हैं कि आप स्थिति 0 या स्थिति n-1 पर शुरू कर सकते हैं जब तक आप अपने उत्तर में निर्दिष्ट करते हैं।

उदाहरण

कतारबद्ध उदाहरण छोटा
इस उदाहरण में, इनपुट होगा n = 9, j = 3, x = 0। आउटपुट होना चाहिए 2, 5क्योंकि आपकी स्थिति 2 या 5 है जब आप जिम के समान कॉलम में हैं

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

[9, 3, 0] -> [2, 5]
[12, 3, 0] -> [2, 5, 8]
[9, 3, 1] -> []
[9, 3, 2] -> [1, 4]
[14, 7, 10] -> [1]
[24, 4, 6] -> [0, 4, 8, 12, 16]

स्कोरिंग

यह , इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है।


4
मैं हूँ कतार यह करने के लिए कुछ दिलचस्प समाधान को देखने के लिए कुख्यात! (सॉरी बुरा सज़ा और शब्द का अनुचित उपयोग भी लेकिन जो भी हो, मुझे जज न करें: पी)
हाइपरन्यूट्रीनो

1
क्या हम खाली सरणी के बजाय एक मिथ्या मूल्य वापस कर सकते हैं?
आरɪᴋᴇʀ

@ रिकर मुझे ऐसा करने का कोई कारण नहीं दिखता। इसके लिए जाओ
पोक

जवाबों:


9

पायथन 2 , 45 41 40 37 बाइट्स

lambda n,j,x:range(j-x/2,x%2or n-x,j)

बहुत तुच्छ समाधान। मैंने सिर्फ पैटर्न के लिए जल्दी से स्कैन किया और एक पैटर्न पाया। 1-अनुक्रमित, 1 कतार के पीछे है।

-4 बाइट्स टर्नरीज़ से बचने और मूल्यों के लिए एक सरणी का उपयोग करने के बजाय
-1 बाइट @DeadPossum से कुछ प्रेरणा के लिए धन्यवाद, विपरीत क्रम में स्विच करके andटर्नरी या सरणी चयनकर्ता
-3 बाइट्स के बजाय का उपयोग करके or। केवल 1-अनुक्रमण के कारण काम करता है

इसके अलावा, 4 से बाहर सभी 4 पर अभी भी 4 पार है :(

इसे ऑनलाइन आज़माएं!


लोल, आपने अभी १४ मिनट पहले पोस्ट किया, :) मेरा संस्करण ३ बाइट्स से छोटा है:lambda n,j,x:x%2-1and range(j-x/2,n-j+1,j)
डेड पोसुम

@DeadPossum अच्छा लगा। मेरे पास एक और उपाय है कि एक बाइट उससे कम है,
लोल

रेंज के दूसरे तर्क में मुझसे गलती हुई। यह नहीं होना चाहिए n-j+1, इसलिए lambda n,j,x:x%2-1and range(j-x/2,n-x,j)कुल 40 बाइट्स में से एक से कम है
डेड पोसुम

@DeadPossum रुको, क्या हमें खाली सरणी के बजाय एक मिथ्या मूल्य वापस करने की अनुमति दी गई थी?
हाइपरनेत्रिनो

3
@FelipeNardiBatista कि "1-अनुक्रमित" का अर्थ है, btw।
आरए

2

पिप , 22 21 बाइट्स

-pध्वज के लिए कोड के 20 बाइट्स, +1 ।

c%2?lv-c/2+b*\,a/b-1

लेता है n, jऔर xकमांड-लाइन तर्क के रूप में। 0-अनुक्रमित, स्थिति 0 पर शुरू। यह ऑनलाइन कोशिश करो!

व्याख्या

यह मेरा मूल 22-बाइट संस्करण है क्योंकि यह थोड़ा अधिक समझने योग्य है।

                       a, b, c are cmdline args; l is [] (implicit)
c%2?                   Test c mod 2
    l                  If it's 1 (truthy), return empty list; else:
                a/b-1  Number of rows in the queue minus 1
               ,       Range(^)
             b*        Multiply each element by b
     b-1-c/2+          Add (b-1)-c/2 to each element
                       Output in [1;2;3] format (implicit, -p flag)

सूत्र के लिए पैटर्न को देख कर प्राप्त किया गया था n=9, j=3:

x Output
0 [2;5]
2 [1;4]
4 [0;3]

अगर हम ले x/2( 0, 1, 2), यह से घटाना j-1( 2, 1, 0), और जोड़ देते हैं करने के लिए [0;3], हम सभी मामलों में सही परिणाम मिलता है।


1

जावा 8 लैम्ब्डा, 101 बाइट्स

(n,j,x)->{int[]i=new int[n/j-1];int c=0,k=j-x/2;for(;k<n-x;k+=j)i[c++]=k;return x/2==0?i:new int[0];}

मेरे पायथन उत्तर का लगभग-प्रत्यक्ष पोर्ट। हालांकि जावा में रेंज मौजूद नहीं है।


0

हास्केल, 43 बाइट्स

(n#j)x|odd$round x=[]|m<-j-x/2=[m,m+j..n-x]

बहुत ज्यादा सीधे हाइपरनीट्रीनो से पायथन जवाब से चित्रित किया गया है

अधिक अच्छी तरह से स्वरूपित कोड:

f n j x |odd$round x = []
        |otherwise   = let m=j-x/2 in [m,m+j..n-x]

संपादित करें: यह उल्लेख करना भूल गया कि यह एक-अनुक्रमित था


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