लगभग लेक्सोग्राफिक सूची की तुलना


9

इनपुट

दो सूचियाँ Aऔर Bनॉनवेजेटिव पूर्णांक।

उत्पादन

या तो 1, 0या -1, इस बात पर निर्भर करता है कि नीचे दिए गए मुड़ लेक्सिकोग्राफिक ऑर्डर के संबंध में Aसे बड़ा, बराबर या छोटा है । यदि आप चाहें, तो आप प्रतिस्थापित कर सकते हैं , और किसी भी अन्य तीन स्थिर मूल्यों के साथ।B10-1

मुड़ लेक्सिकोग्राफ़िक ऑर्डर साधारण लेक्सोग्राफ़िक ऑर्डरिंग की तरह है, जिसमें आप लिस्ट एलीमेंट को एलिमेंट से तुलना करते हैं, और पहले अलग-अलग इंडेक्स पर उनका ऑर्डर तय करते हैं। हालाँकि, मुड़ संस्करण में हम प्रत्येक सूचकांक पर nonnegative पूर्णांक के लिए एक अलग क्रम का उपयोग करते हैं। अर्थात्, हर सूचकांक पर i(से शुरू होता है का अनुक्रमण 1), पहले के आदेश i(से गैर नकारात्मक पूर्णांक 0के लिए i-1) उलट है, और वे सभी अन्य नंबरों से ऊपर ले जाया जाता है। इसके अलावा, "लापता तत्व" जो एक सूची को दूसरे से छोटा होने का संकेत देता है, सीधे नीचे ले जाया जाता है i-1। नेत्रहीन, सूचकांक पर आदेश iहै

i < i+1 < i+2 < i+3 < ... < [missing element] < i-1 < i-2 < i-3 < ... < 2 < 1 < 0

ध्यान दें कि पहले ...असीम रूप से कई संख्याओं को दर्शाता है। इसका अर्थ है कि निम्नलिखित सूचियाँ मुड़ क्रम के क्रम के संबंध में आरोही क्रम में हैं:

[3,2,3,4]
[3,2,3,5]
[3,2,3,10]
[3,2,3,1341]
[3,2,3]
[3,2,3,3]
[3,2,3,2]
[3,2,3,1]
[3,2,3,0]

नियम

आप एक पूर्ण कार्यक्रम या एक समारोह दे सकते हैं। सबसे कम बाइट गिनती जीतता है, और मानक खामियों को रोक दिया जाता है।

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

Output 1:
[0] []
[] [1]
[] [1,2,1,2]
[2,1] [1,1]
[0,1,2] [0,2,1]
[3,0] [3,1]
[3,1] [3]
[2] [2,2]
[2] [2,23]
[2,24] [2,23]
[2,1] [2,23]

Output 0:
[] []
[0] [0]
[1,1] [1,1]
[2,1,2] [2,1,2]

Output -1:
[1,2,1,1,2] [1,2,1,1,1]
[1,2,1,1,5] [1,2,1,1,4]
[1,2,1,1,5] [1,2,1,1]
[1,2,1] [1,2,1,1]
[1,2,1,1,5] [1,2,1,1,6]
[1,2,1,1,6] [1,2,1,1,7]

क्या इनपुट लिस्ट 0 से, 1 से, या जो भी हमारी भाषा के लिए उपयुक्त है, से अनुक्रमित हैं?
पीटर टेलर

@PeterTaylor 1 से। मैं स्पष्ट करूँगा।
ज़गारब

क्या मैं आउटपुट के लिए -1/0/1 के बजाय तुलना परिणामों के लिए हास्केल के अपने एनम का उपयोग कर सकता हूं?
जॉन ड्वोरक

@JDDvorak मैं इसकी अनुमति देता हूँ, और चुनौती को संपादित करता हूँ।
ज़गारब

जवाबों:


1

CJam - 57

q:S~=0{S~]:A:,~e>{A{_,I>{I=_I>0{W*2}?}1?[\]}%}fI]z~>2*(}?

हाँ यह अभी भी बहुत लंबा है ...

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

संक्षिप्त विवरण:
कोड आउटपुट 0 होता है यदि पारंपरिक अर्थों में सरणियाँ समान होती हैं, अन्यथा यह प्रत्येक सरणी के प्रत्येक आइटम को 2-तत्व सरणी में परिवर्तित करती है: [0 a i ] यदि i > i (0-आधारित), [1 जो कुछ भी] अगर मैं i याद कर रहा हूँ, और [2 -a i ] अगर i <= i। इस प्रक्रिया में, छोटे सरणी को बड़े आकार में भी बढ़ाया जाता है। तब रूपांतरित सरणियों की तुलना लेक्सिकोग्राफिक रूप से की जाती है और परिणाम -1/1 पर समायोजित हो जाता है।


3

पायथन 2, 76 बाइट्स

c=lambda*a:cmp(*[[(max(i-x,-1),x)for i,x in enumerate(L)]+[(0,)]for L in a])

यह प्रत्येक पूर्णांक को दो-सूचियों के साथ मुड़ क्रम में खाते में बदल देता है। पायथन 2 के cmpबिलिन बाकी काम करता है।

उपयोग:

>>> c([1,2,1,1,6], [1,2,1,1,7])
-1

1
छोटी सूची के लिए यह खाता अलग-अलग लंबी सूचियों के बीच कैसे जाता है [3,2,3,1341] < [3,2,3] < [3,2,3,0]? ( ?
Nutki

@ कुटकी यह (0,)प्रत्येक सूची के अंत में टपल जोड़ता है , जो कि किसी से भी अधिक है (-1, x)और (i-x, x)जब से कम है i-x >= 0
grc

ओह बेशक। मैं पायथन में साक्षर नहीं हूं।
नटकी

1

पर्ल, 74

अच्छा सरणी हेरफेर कार्यों के बिना perl नौकरी के लिए इष्टतम उपकरण नहीं है, लेकिन यह काम करता है।

#!perl -pa
$i=0,s/\d+,?/$s=sprintf"%9d",$&;$&>$i++?$s:~$s/ge for@F;$_=$F[0]cmp$F[1]

मुझे परखो ।


1

जे, 95 बाइट्स

(सुपर-शॉर्ट नहीं, लेकिन जो भी हो। निश्चित रूप से गोल्फ के लिए।)

f=.4 :0
m=.>:>./x,y
t=.(|+(1+m)*0>:*)@(i.@#-~])@(],m$~>&#*-&#)
x(t~(*@-&((m+#x,y)&#.))t)y
)

सभी परीक्षण मामलों को पास करना। (ग्रेट टेस्ट केस सेट! धन्यवाद!)

तरीका:

  • अधिकतम सूची को अधिकतम 1 ( m=.>:>./x,y) के साथ रखें ।(],m$~>&#*-&#
  • सूची तत्वों को बदलना इसलिए सामान्य तुलना का उपयोग किया जा सकता है। (|+(1+m)*0>:*)@(i.@#-~])
  • पर्याप्त X के साथ दो सूची से दो आधार संख्याओं की गणना। ((m+#x,y)&#.)
  • दो संख्याओं के अंतर का चिन्ह लौटना।*@-&

0

गणितज्ञ, ६५

f=-Order@@MapIndexed[If[#>Last@#2,#,a-b#]&,PadRight[{##}+1],{2}]&

उपयोग:

f[{1, 2, 1, 1, 6}, {1, 2, 1, 1, 7}]

-1

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