अनारक्षित सरणी में अर्ध-छांटें डालें


14

PPCG इंक। में हमारे पहले दिन में आपका स्वागत है। हमारे सबसे नए जूनियर असिस्टेंट डॉक्यूमेंट सॉर्टर के रूप में, आप यह सुनिश्चित करने के लिए ज़िम्मेदार हैं कि हमने आपके द्वारा भेजे गए सभी दस्तावेज़ों को वर्णमाला क्रम में संग्रहीत किया है। यह इतना आसान है कि एक बंदर यह कर सकता है। ठीक है, रूपक के अनुसार, जैसा कि हमने ऐसा करने के लिए एक बंदर को रखा था। अंदाज़ा लगाओ? बंदरों की बारी हमारे वर्णमाला की समझ का अभाव है। वैसे भी, वहाँ अभी गंदगी को ठीक करने का समय नहीं है, इसलिए बस स्थिति को किसी भी बदतर नहीं बनाने की कोशिश करें, ठीक है? फिर इसे प्राप्त करें! अगर आपको भूख लगती है, तो वाटर कूलर के ऊपर केले हैं। सौभाग्य!

नौकरी का विवरण

इनपुट

  • आपको स्ट्रिंग की एक सूची (संग्रह) और एक स्ट्रिंग प्राप्त होगी, जिसे उस सूची में जोड़ा जाना चाहिए (दस्तावेज़)
  • सभी तार में केवल बड़े अक्षर, लोअरकेस अक्षर और रिक्त स्थान होंगे
  • स्ट्रिंग्स हमेशा एक पत्र के साथ शुरू और समाप्त होगी

कार्य

दस्तावेज़ की लक्ष्य स्थिति निर्धारित करें: वह स्थिति जिसे संग्रह में प्राप्त करना चाहिए। लक्ष्य की स्थिति निम्नानुसार निर्धारित की जा सकती है:

  • प्रत्येक स्थिति के लिए:
    • उस स्थिति से पहले संग्रह में तार की मात्रा को गिनें जो दस्तावेज़ से पहले वर्णानुक्रम में हैं
    • उस स्थिति के बाद संग्रह में तार की मात्रा की गणना करें जो दस्तावेज़ के बाद वर्णानुक्रम में हैं
    • उपरोक्त दो गणनाओं के योग के रूप में स्थिति के स्कोर को परिभाषित करें
  • दस्तावेज़ की लक्ष्य स्थिति उच्चतम स्कोर वाली स्थिति है
  • एक टाई के मामले में, उच्चतम स्कोर वाले सभी पद समान रूप से लक्ष्य स्थिति के रूप में मान्य हैं। केवल एक को चुने जाने की आवश्यकता है।

जब छँटाई:

  • अपरकेस और लोअरकेस अक्षर बराबर हैं
  • पत्रों से पहले रिक्त स्थान आते हैं

उत्पादन

  • दस्तावेज़ के साथ संग्रह किसी भी रूप में इसे जोड़ा गया

या

  • दस्तावेज़ की लक्ष्य स्थिति, 0-आधारित या 1-आधारित इंडेक्स में

कार्य मूल्यांकन

सबसे शानदार बाइट्स जीतता है!

उदाहरण I / O

Archive:
    Applebuck Season
    Friendship is Magic
    The Ticket Master
    Griffon the BrushOff
    Boast Busters
    Bridle Gossip

Document: Dragonshy

Position scores (0-based index):
0: 0 + 3 = 3
1: 1 + 3 = 4
2: 1 + 2 = 3
3: 1 + 1 = 2
4: 1 + 0 = 1
5: 2 + 0 = 2
6: 3 + 0 = 3

Target position: 1

5
PPCG में आपका स्वागत है, यह एक अच्छी पहली पोस्ट की तरह लगता है! :) "टास्क" सेक्शन में आपके निर्देश पढ़ने में कठिन हैं, हालाँकि। क्षैतिज स्क्रॉलिंग कष्टप्रद है: मैं इसके बजाय बुलेट सूची का उपयोग करने पर विचार करूंगा। हमारे पास एक आसान सैंडबॉक्स है जहां आप समुदाय की समीक्षा के लिए चुनौतियों को पोस्ट कर सकते हैं, यदि आप चाहें।
FryAmTheEggman 14

Dragonshy मैं बस मिल गया! बहुत अच्छा :-D
लुइस मेंडो

@ लिक्स एक या दो और परीक्षण मामलों के लिए अच्छा होगा
लुइस मेंडो

जवाबों:


4

जावास्क्रिप्ट (ईएस 6), 81 बाइट्स

(a,d)=>a.map((e,i)=>d[l="toLowerCase"]()<e[l]()?s--:++s>m&&(++m,p=++i),m=s=p=0)|p

Ungolfed:

function position(archive, document) {
    var score = 0;
    var max = 0;
    var pos = 0;
    var i = 0;
    while (i < archive.length) {
        if (archive[i++].toLowerCase() > document.toLowerCase()) {
            score--;
        } else {
            score++;
            if (score > max) {
                max++;
                pos = i;
            }
        }
    }
    return pos;
}

संपादित करें: @ user81655 के लिए बहुत सारे बाइट्स सहेजे गए।


indexOfमानचित्र के दौरान सेट किए गए परिणाम चर के साथ भी कम के साथ प्रतिस्थापित किया जाएगा।
1981 में user81655

सहमत, लेकिन यह शायद ही मेरे समाधान की तरह दिखता है ...
नील

3

पायथ, 40 38 बाइट्स

मूल रूप से मुझे सिखाने के लिए @Katenkyo को श्रेय । ( यह भी है )A xnor BA==BA xor BA!=B

AQJ+],k0.e,rb0hkGteh.Msmq<hdrH0<edeZJJ

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

यह काम किस प्रकार करता है:

यह XNOR को बताता है कि क्या प्रविष्टि दस्तावेज़ से छोटी है, और क्या प्रविष्टि का सूचकांक दस्तावेज़ के सूचकांक से छोटा है।

यह उस स्थिति को खोजता है जिसमें यह योग अधिकतम है, फिर इसे आउटपुट करता है।


2

पायथन 3, 135 167 बाइट्स

def a(b,c):a=[sum(map(lambda x:x.lower()>c.lower(),b[i:]))+sum(map(lambda x:x.lower()<c.lower(),b[:i]))for i in range(0,len(b)+1)];b.insert(a.index(max(a)),c);print(b)

1

रूबी, 97 बाइट्स

अनाम फ़ंक्शन, लक्ष्य स्थिति देता है।

->a,d{d.upcase!;(0...a.size).max_by{|i|a[0,i].count{|s|s.upcase<d}+a[i..-1].count{|s|s.upcase>d}}}

जब वास्तव में संग्रह में सम्मिलित होते हैं, 110 बाइट्स :

->a,d{t=d.upcase;a.insert (0...a.size).max_by{|i|a[0,i].count{|s|s.upcase<d}+a[i..-1].count{|s|s.upcase>d}},d}

1

पायथ, 54 52 47 45 बाइट्स

AQVhlG=Ys+m>rH0rd0:G0Nm<rH0rd0gGNI>YZ=ZY=kN;k

उम्मीद इनपुट एक सूची है, पहला तत्व तार (संग्रह) की एक सूची है, दूसरा तत्व एक स्ट्रिंग (दस्तावेज़) है

AQ                                            # initialize G and H with the archive and the document
  VhlG                                        # iterate over the indexes on archive
      =Ys+                                    # concatenate and sum the following scores
          m>rH0rd0:G0N                        # map a string comparison between the document and the archives up to the index, returning true(1) for lower, and false(0) for higher
                      m<rH0rd0gGN             # same as above, but starts at the index and goes up to the end of the archive, returning false(0) for lower, and true(1) for higher
                                 I>YZ         # Check if score is higher than highest
                                     =ZY      # update highest score
                                        =kN;  # update index
                                            k # print index

यहाँ परीक्षण करें

  • इनपुट इनिशियलाइज़ेशन पर सहेजे गए 5 बाइट (धन्यवाद @ केनी लाउ)

Z को इंगित किया 0गया है यदि मैं आपके कोड को सही ढंग से पढ़ रहा हूं तो आप
Maltysen

का उपयोग करते हुए ["Applebuck Season","Friendship is Magic","The Ticket Master","Griffon the BrushOff","Boast Busters","Bridle Gossip"]\n "Dragonshy"इनपुट के रूप में और का उपयोग कर Eके बजाय @Q0और @Q1आप चार बाइट्स बचा सकता है।
लीकी नून

आप AQइसके बजाय उपयोग कर सकते हैं J@Q0K@Q1
लीके नन

1

MATL , 32 बाइट्स

hk4#S4#S%2#0)>t0whYsw~0hPYsP+K#X>

इनपुट संग्रह के लिए स्ट्रिंग्स (रिक्त स्थान द्वारा अलग किए गए कई तार और घुंघराले ब्रेसिज़ में संलग्न) और दस्तावेज़ के लिए एक स्ट्रिंग है। आउटपुट 1-आधारित है। एक टाई के मामले में पहली स्थिति वापस आ जाती है।

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

व्याख्या

h      % Concatenate archive and document as a cell array of strings
k      % Convert all strings to lowercase
4#S    % Sort and output the indices of the sorting
4#S    % Again. This gives the indices that applied to the concatenated
       % array would make it sorted
2#0)   % Separate last index (document) from the others (archive)
>      % Is it greater? Gives zero/one array the size of the archive
t      % Duplicate that array
0wh    % Prepend a 0
Ys     % Cumulative sum. This is first part of the score
w~     % Swap. Negate zero/one array
0h     % Postpend a 0
PYsP   % Reverse, cumulative sum, reverse. Second part of the score
+      % Add. This is the score of each position
K#X>   % Arg max
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.