गद्देदार तारों की एक सूची के बीच अधिकतम हैमिंग दूरी


18

समान लंबाई के दो तारों के बीच की हैमिंग दूरी उन पदों की संख्या है, जिस पर संबंधित वर्ण भिन्न होते हैं। यदि तार समान लंबाई के नहीं हैं, तो हैमिंग दूरी परिभाषित नहीं है।

चुनौती

एक प्रोग्राम या फ़ंक्शन लिखें, जो कि नीचे वर्णित नियमों के अनुसार आवश्यक तार की सूची से तार के सभी जोड़े के बीच से सबसे बड़ी हैमिंग दूरी पाता है।

पात्र भीतर से होंगे a-zA-Z0-9

तार लंबाई में समान नहीं हो सकते हैं, इसलिए प्रत्येक तुलना के लिए छोटी स्ट्रिंग को निम्नानुसार गद्देदार करना होगा:

  • आवश्यक लंबाई से मेल खाने के लिए शुरुआत से ही स्ट्रिंग को कई बार लपेटें
  • प्रत्येक विषम समय रैपिंग (1, 3, 5 वां, आदि) अक्षरों के मामलों को बदलें
  • a-zA-Zलपेटते समय अपरिवर्तित चीजों को छोड़ दें

उदाहरण के लिए, मान लें कि आपको 5 वर्ण स्ट्रिंग को पैड करने की आवश्यकता है ab9Cdताकि यह 18 वर्णों के साथ समाप्त हो जाए। आप के साथ समाप्त होगा:

ab9CdAB9cDab9CdAB9
     ^^^^^     ^^^

साथ ^मामले परिवर्तन करने के लिए प्रकाश डाला करने के लिए 1 और 3 के लेप के नीचे गयी।

इनपुट आउटपुट

इनपुट / आउटपुट प्रारूप लचीला है। आप मान सकते हैं कि इनपुट में कम से कम दो स्ट्रिंग्स हैं, और सभी स्ट्रिंग्स में कम से कम एक वर्ण होगा।

आउटपुट एक पूर्णांक है।

नियम

यह । मानक नियम लागू होते हैं।

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

[ "a", "b" ] => 1
[ "a", "b", "c" ] => 1
[ "a", "a", "c" ] => 1
[ "abc", "abcd" ] => 1
[ "abc12D5", "abC34d3", "ABC14dabc23DAbC89d"] => 17  
[ "a", "Aaa", "AaaA", "aAaAa", "aaaaaaaaaaaaaa", "AAaAA", "aAa" ] => 8
["AacaAc", "Aab"] => 2

संदर्भ कार्यान्वयन

मैंने (पूरी तरह से ungolfed) R कोड के साथ उदाहरणों का परीक्षण किया है कि आप यहां उन अन्य उदाहरणों की तुलना करने की कोशिश कर सकते हैं जिन्हें आप अपने कोड के साथ आज़मा सकते हैं।


1
प्रत्येक विषम समय रैपिंग के अक्षरों के मामलों को बदलें - ओह बॉय, इस आवश्यकता को मेरे समाधान के लिए एक दर्द होने जा रहा है ... मुझे चुनौती पसंद है, हालांकि, इसलिए +1
श्री Xcoder

सुझाए गए परीक्षण का मामला: ["AacaAc", "Aab"] => 2। मेरे जेली जवाब के लिए एक purposed गोल्फ उस मामले में विफल रहा होगा, लेकिन अन्य सभी को पारित करेगा।
श्री Xcoder

@ngm उत्कृष्ट चुनौती! +1
डॉन थाउजेंड

जवाबों:


7

जेली , 20 बाइट्स

वास्तव में इससे खुश नहीं हैं। गोल्फ होना चाहिए, यहां तक ​​कि ~ 15 बाइट्स तक।

LÞŒcµṁ/sḢL$ŒsÐeFn)§Ṁ

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

या एक परीक्षण सूट की जाँच करें!

व्याख्या

LcÐ / sḢL $ ŒsFeFn) or पूर्ण कार्यक्रम या विवादास्पद लिंक। एन = इनपुट। | उदाहरण: ["abc12D5", "abC34d3", "ABC14dabc23DAbC3d"]
L लंबाई द्वारा क्रमबद्ध N। | [[[ए ’, 'बी’,' सी ’,, 1’,, 2 ’, 'डी’, [5 ’], [] ए’,' बी ’, 'सी’,' 3 ’,, 4 ',' डी ',' 3 '], [' ए ',' बी ',' सी ',' 1 ',' 4 ',' डी ',' ए ',' बी ',' सी ',' 2 ',' 3 ',' डी ',' ए ',' बी ',' सी ',' 8 ',' 9 ',' डी ']] (जेली में, तार पात्रों की सूची हैं)
  Œc अनियोजित जोड़े: [x, y] सभी विशिष्ट x, y के लिए N. | [[[[ए ’, 'बी’,, सी ’,, 1’,, 2 ’,' डी’, [5 ’], [] ए’, 'बी ’,' सी’, '3 ’,’ 4 ',' डी ',' 3 ']], [[' ए ',' बी ',' सी ',' 1 ',' 2 ',' डी ',' 5 '], [' ए ',' B ',' C ',' 1 ',' 4 ',' d ',' a ',' b ',' c ',' 2 ',' 3 ',' D ',' A ',' b ' , 'सी', '8', '9', 'डी']], [['ए', 'बी', 'सी', '3', '4', 'डी', '3'], [[ए ’, 'बी’,' सी ’,, 1’,, 4 ’, 'डी’,' ए ’, c बी’, b सी ’, '2’,' 3 ’, 'डी’,
                        यहाँ, अलग से, मेरा मतलब विभिन्न पदों पर है। |
    µ) एक मोनडिक लिंक के साथ नक्शा। |
     ṁ / मोल्ड x जैसे y। यही है, चक्र x जब तक यह लंबाई y तक नहीं पहुंचता। | [[[ए ’, 'बी’,' सी ’,, 1’,, 2 ’, 'डी’, [5 ’], [] ए’,' बी ’, 'सी’,' 1 ’,, 2’ ',' डी ',' 5 ',' ए ',' बी ',' सी ',' 1 ',' 2 ',' डी ',' 5 ',' ए ',' बी ',' सी ', '1'], ['ए', 'बी', 'सी', '3', '4', 'डी', '3', 'ए', 'बी', 'सी', '3',) '4', 'डी', '3', 'ए', 'बी', 'सी', '3']]
       sL $ x की लंबाई के भाग में विभाजित करें। | [[[[ए ’, 'बी’,, सी ’,, 1’,, 2 ’,' डी’,, 5 ’]], [['ए’,' बी ’, 'सी’,' 1 ’ , '2', 'डी', '5'], ['ए', 'बी', 'सी', '1', '2', 'डी', '5'], ['ए', ' b ',' c ',' 1 ']], [[a', 'b', 'C', '3', '4', 'd', '3'], ['a', ' b ',' C ',' 3 ',' 4 ',' d ',' 3 '], [' a ',' b ',' C ',' 3 ']]
           Œs indexe समान-अनुक्रमित विखंडू (1-अनुक्रमित) के मामले को स्वैप करें। | [[[[ए ’, 'बी’,, सी ’,, 1’,, 2 ’,' डी’,, 5 ’]], [['ए’,' बी ’, 'सी’,' 1 ’ , '2', 'डी', '5'], ['ए', 'बी', 'सी', '1', '2', 'डी', '5'], ['ए', ' b ',' c ',' 1 ']], [[' a ',' b ',' C ',' 3 ',' 4 ',' d ',' 3 '], [' A ',' B ',' c ',' 3 ',' 4 ',' D ',' 3 '], [' a ',' b ',' C ',' 3 ']]
               एफ फ्लैटन। | [[[ए ’, 'बी’,' सी ’,, 1’,, 2 ’, 'डी’, [5 ’], [] ए’,' बी ’, 'सी’,' 1 ’,, 2’ ',' डी ',' 5 ',' ए ',' बी ',' सी ',' 1 ',' 2 ',' डी ',' 5 ',' ए ',' बी ',' सी ', '1'], ['ए', 'बी', 'सी', '3', '4', 'डी', '3', 'ए', 'बी', 'सी', '3',) '4', 'डी', '3', 'ए', 'बी', 'सी', '3']]
                n y के साथ असमान असमानता। | [[[0, 0, 1, 1, 1, 1, 1]], [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] , 1, 1, 1]], [[1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]]
                  Map नक्शा समाप्त करने के बाद, प्रत्येक बूल (0 या 1) सरणी का योग करें। | [[५], [१,], [१४]
                   Ṁ अधिकतम। | 17

मैं पूरी तरह से जेली से परिचित नहीं हूं, लेकिन मुझे लगता है कि आप इसे छोड़ सकते हैं और अभी भी अंत में एक ही अधिकतम प्राप्त कर सकते हैं ।
चास ब्राउन

@ChasBrown Ugh, नहीं, मुझे इसकी आवश्यकता होनी चाहिए । अन्यथा, सबसे लंबे एक की लंबाई के लिए सबसे कम पैडिंग के ṁ/बजाय, कुछ मामलों में सबसे कम लंबाई की लंबाई को ट्रिम कर देगा, जो कि हम नहीं चाहते हैं .... मुझे लगता है कि परीक्षण के मामले बहुत अच्छी तरह से चुने गए हैं। (और यह एक दुर्भाग्यपूर्ण संयोग है) ...
श्री एक्सकोडर

@ChasBrown एक उदाहरण के रूप में, कोशिश करें ["AacaAc", "Aab"]
श्री Xcoder

आह हां, मैं देख रहा हूं ... मुझे कुछ और जानने की जरूरत है जेली ... :)
चास ब्राउन

5

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

lambda a:max(sum(x!=y for x,y in zip((s+s.swapcase())*len(t),t))for s in a for t in a)

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

दो तारों को देखते हुए s,t, कम से कम चलने योग्य होने के बाद zip((s+s.swapcase())*len(t),t))से लंबाई के tuples की एक सूची होगी । यदि , तो यह "पैड आउट" वांछित मामले की अदला-बदली के साथ और हम अलग-अलग वर्णों की गणना करते हैं ।len(t)ziplen(s)<len(t)ssum

अगर len(t)<=len(s), तो परिणाम अगर हम मूल्यांकन कर रहे थे sumउससे कम या इसके बराबर होगा ; इसलिए इसका उस मामले में परिणाम पर कोई प्रभाव नहीं पड़ता है ।sumt,smax


आप 1 बाइट बचाने y!=के !=yलिए उपयोग कर सकते हैं
श्री एक्सकोडर

@श्री। Xcoder: Thx, लेकिन मैंने अपने समाधान के लिए बहुत मेहनत से समाप्त कर दिया ...
चास ब्राउन


3

जेली , 19 बाइट्स

WṁŒsÐeF=ċ0
LÞŒcç/€Ṁ

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

LÞŒcç/€Ṁ
LÞ         Sort by length
  Œc       unordered pairs
      €    to each of the pairs
    ç/     find the hamming distance with molding and swapping case (helper link)
       Ṁ   maximum

WṁŒsÐeF=ċ0
W            wrap the shorter string
 ṁ           repeat this string once for each character in the second string
    Ðe       for every other repeated string
  Œs         swap case
      F      flatten
       =     characterwise equality check between the two strings. If the first
             string is longer, the leftover characters are appended to the result.
             e.g. 'abABab' and 'xbA' give [0,1,1,'B','a','b']
        ċ0   count the number of 0s, giving the Hamming distance.

2

रूबी , 89 82 बाइट्स

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

-7 बाइट्स जीबी से।

->a{a.product(a).map{|s,t|(0...w=t.size).count{|i|(s+s.swapcase)[i%w]!=t[i]}}.max}

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



2

जावा 10 ,748 740 667 666 616 बाइट्स

यह सबसे घना और अपठनीय होना है, फिर भी मैं अब तक का सबसे लंबा गोल्फ खेल रहा हूं।

h(String[])एक स्पष्ट सरणी (कोई var args) के साथ कॉल विधि : जैसे,

h(new String[] {"a", "b", "c"});

लौटता है 1

char e(boolean w,char c){return(char)(w&(64<c&c<91|96<c&c<123)?c^32:c);}String p(String s,int l){var p="";int m=s.length(),n=l/m,r=l%m,i=0,j=0;var w=1<0;for(;i<n;++i,w=!w)for(char c:s.toCharArray())p+=e(w,c);for(;j<r;)p+=e(w,s.charAt(j++));return p;}int d(String s,String t){int l=s.length(),n=0,i=0;for(;i<l;)if(s.charAt(i)!=t.charAt(i++))++n;return n;}int h(String s,String t){int l=s.length(),m=t.length();return l>m?d(s,p(t,l)):l<m?d(p(s,m),t):d(s,t);}int h(String[]s){int l=s.length,i=0,j;int[]n=new int[l*l];for(;i<l;++i)for(j=i;++j<l;)n[i*l+j]=h(s[i],s[j]);return java.util.Arrays.stream(n).max().getAsInt();}

आप इसे ऑनलाइन आज़मा सकते हैं !

असंबद्ध और टिप्पणी:

// Encode the character (swap case)
char e(boolean w, char c) {
    return (char) (w & (64 < c & c < 91 | 96 < c & c < 123) ? c ^ 32 : c);
}

// Pad the string to desired length
String p(String s, int l) {
    var p = "";
    int m = s.length(), n = l / m, r = l % m, i = 0, j = 0;
    var w = 1 < 0;
    for (; i < n; ++i, w = !w)
        for (char c : s.toCharArray())
            p += e(w, c);
    for (; j < r;)
        p += e(w, s.charAt(j++));
    return p;
}

// Calculate the actual hamming distance between two same-length strings
int d(String s, String t) {
    int l = s.length(), n = 0, i = 0;
    for (; i < l;)
        if (s.charAt(i) != t.charAt(i++))
            ++n;
    return n;
}
// Pad the strings as needed and return their hamming distance
int h(String s, String t) {
    int l = s.length(), m = t.length();
    return l > m ? d(s, p(t, l)) : l < m ? d(p(s, m), t) : d(s, t);
}

    // Dispatch the strings and gather their hamming distances, return the max
int h(String[] s) {
    int l = s.length, i = 0, j;
    int[] n = new int[l * l];
    for (; i < l; ++i)
        for (j = i; ++j < l;)
            n[i * l + j] = h(s[i], s[j]);
    return java.util.Arrays.stream(n).max().getAsInt();
}

मुझे पता है कि एक बेहतर समाधान प्राप्त किया जा सकता है, विशेष रूप से स्ट्रिंग जोड़ी भाग के लिए।

संपादित करें : hammingDistance()दिए गए तार के सुन्न के वर्ग में अंतर सरणी के आकार को बदलकर 8 बाइट्स से दाढ़ी । यह ArrayIndexOutOfBoundsपरीक्षण के मामलों में से एक में एक फेंक को भी ठीक करता है ।

EDIT 2 : केविन क्रूज़सेन की टिप्पणियों के लिए धन्यवाद 33 बाइट्स सहेजे गए : कक्षा की घोषणा को हटा दिया गया, 1 चार्ट में नाम छोटा कर दिया गया, ऑपरेटरों को बदल दिया गया, आदि।

EDIT 3 : 1 बाइट बचाएं और ऐर-आर्ग के साथ सरणी में परिवर्तन करके शैतान द्वारा अनुमोदित स्कोर तक पहुंचें।

EDIT 4 : केविन क्रूज़सेन के लिए फिर से एक और 50 बाइट्स बचाएं var, कीवर्ड, हटाए गए StringBuilderउदाहरण आदि का उपयोग करने के लिए 8 से 10 तक जावा संस्करण को अपडेट करें ।


1
मेरे पास बहुत समय नहीं है, लेकिन गोल्फ के लिए कुछ बुनियादी चीजें: कक्षा छोड़ें, केवल विधियाँ पर्याप्त हैं। सभी विधि और चर नामों को एकल बाइट्स में बदलें .. इसलिए hammingDistanceउपयोग dया कुछ अन्य अप्रयुक्त चर के बजाय । आपके अधिकांश &&हो सकते हैं &और ||हो सकते हैं |c^' 'हो सकता है c^32boolean w = false;हो सकता है boolean w=0>1;i=0लूप आरंभीकरण में हटाया जा सकता है और ,i,jकरने के लिए बदल सकते हैं ,i=0,j++jहटाया जा सकता है और में ++जोड़ा जा सकता है .charAt(j++).toString()हो सकता है +""for(j=i+1;j<l;++j)हो सकता है for(j=0;++j<l;)। आदि आदि
केविन क्रूज़सेन

1
जावा में गोल्फ के लिए सुझाव और <सभी भाषाओं> में गोल्फ के लिए सुझाव के रूप में अच्छी तरह से के माध्यम से पढ़ने के लिए दिलचस्प हो सकता है। :)
केविन क्रूज़सेन

धन्यवाद! यह कुछ अच्छा बाइट-उठाने है। लिंक के लिए भी धन्यवाद, मैं इसे देख रहा हूँ और asap संपादित करूँगा!
जोह 1

1
शैतान द्वारा अनुमोदित स्कोर के लिए अपग्रेड किया गया। xD कुछ और छोटी बातों: StringBuilderहो सकता है StringBuffer(यदि आप जावा 10 करने के लिए स्विच यह हो सकता है var b=new StringBuffer(l);booleanऔर charतब भी हो सकता है varआप जावा 10 स्थानीय स्तर पर नहीं है, तो,। यह TIO पर उपलब्ध है )। इसके अलावा, for(;i<n;++i){for(char c:s.toCharArray())b.append(e(w,c));w=!w;}हो सकता है for(;i++<n;w=!w)for(char c:s.toCharArray())b.append(e(w,c));। और मुझे पूरा यकीन है कि आप StringBufferपूरी तरह से और सिर्फ उपयोग कर सकते हैं Stringऔर +=इसके बजाय append
केविन क्रूज़सेन

यार, कुछ महीनों के क्लीन कोड और अच्छी कोडिंग प्रैक्टिस ने मुझे यह भी भुला दिया कि कैसे भी गोल्फ बनाऊं! मैं अपना उत्तर अपडेट करूँगा और TIO को शामिल करूँगा।
joH1

1

05AB1E , 33 29 बाइट्स

Ćü)€é©εćDš«s`g∍}®€¤‚ø€ζ€€Ë_Oà

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

सबसे अधिक संभावना बाइट-काउंट में आधा किया जा सकता है, लेकिन यह काम करता है ।।

स्पष्टीकरण:

Ć           # Enclose the input-list (adding the first item to the end of the list)
            #  i.e. ['ABC1','abcD','abCd32e'] → ['ABC1','abcD','abCd32e','ABC1']
 ü)         # Pair-vectorize each of them
            #  i.e. ['ABC1','abcD','abCd32e','ABC1']
            #   → [['ABC1','abcD'],['abcD','abCd32e'],['abCd32e','ABC1']]
   ێ       # Sort each pair by length
            #  i.e. [['ABC1','abcD'],['abcD','abCd32e'],['abCd32e','ABC1']]
            #   → [['ABC1','abcD'],['abcD','abCd32e'],['ABC1','abCd32e']]
     ©      # Store this list in the register to re-use later on
ε        }  # Map each inner list in this list to:
 ć          # Head extracted
            #  i.e. ['abcD','abCd32e'] → 'abcD' and ['abCd32e']
  Dš        # Duplicate it, and swap the capitalization of the copy
            #  i.e. 'abcD' → 'ABCd'
    «       # Then merge it together
            #  i.e. 'abcD' and 'ABCd' → 'abcDABCd'
     s`     # Swap so the tail-list is at the top of the stack, and get it's single item
            #  i.e. ['abCd32e'] → 'abCd32e'
       g    # Get the length of that
            #  i.e. 'abCd32e' → 7
           # Extend/shorten the string to that length
            #  i.e. 'abcDABCd' and 7 → 'abcDABC'
®           # Get the saved list from the register again
 €¤         # Get the tail from each
            #  i.e. [['ABC1','abcD'],['abcD','abCd32e'],['abCd32e','ABC1']]
            #   → ['abcD','abCd32e','abCd32e']
           # Pair it with the other list
            #  i.e. ['ABC1','abcDABC','ABC1abc'] and ['abcD','abCd32e','abCd32e']
            #   → [['ABC1','abcDABC','ABC1abc'],['abcD','abCd32e','abCd32e']]
    ø       # Zip it, swapping rows / columns
            #  i.e. [['ABC1','abcDABC','ABC1abc'],['abcD','abCd32e','abCd32e']]
            #   → [['ABC1','abcD'],['abcDABC','abCd32e'],['ABC1abc','abCd32e']]
     €ζ     # And then zip each pair again
            #  i.e. [['ABC1','abcD'],['abcDABC','abCd32e'],['ABC1abc','abCd32e']]
            #   → [['Aa','Bb','Cc','1D'],['aa','bb','cC','Dd','A3','B2','Ce'],['Aa','Bb','CC','1d','a3','b2','ce']]
           # Then for each inner list
           #  And for each inner string
  Ë         #   Check if all characters are the same
            #    i.e. 'aa' → 1
            #    i.e. 'cC' → 0
   _        # And inverse the booleans
            #  i.e. [['Aa','Bb','Cc','1D'],['aa','bb','cC','Dd','A3','B2','Ce'],['Aa','Bb','CC','1d','a3','b2','ce']]
            #   → [[1,1,1,1],[0,0,1,1,1,1,1],[1,1,0,1,1,1,1]]
O           # Then sum each inner list
            #  i.e. [[1,1,1,1],[0,0,1,1,1,1,1],[1,1,0,1,1,1,1]] → [4,5,6]
 à          # And take the max as result
            #  i.e. [4,5,6] → 6

1

जावा 11, 387 बाइट्स

a->{int l=a.length,i=l,t,j=0,C[]=new int[l];var p=new String[l][2];for(;i-->0;p[i][0]=a[t>0?i:j],p[i][1]=a[t>0?j:i])t=a[i].length()<a[j=-~i%l].length()?1:0;i=0;for(var P:p){var s="";for(var x:P[0].getBytes())s+=(char)(x>64&x<91|x>96&x<123?x^32:x);for(P[0]=repeat(P[0]+s,t=P[1].length()).substring(0,t);t-->0;)if(P[0].charAt(t)!=P[1].charAt(t))C[i]++;i++;}for(int c:C)j=c>j?c:j;return j;}

इसे ऑनलाइन आज़माएं। (नोट: चूंकि जावा 11 अभी तक TIO पर नहीं है, इसलिए String.repeat(int)इसे repeat(String,int)उसी बाइट-काउंट के लिए अनुकरण किया गया है ।)

स्पष्टीकरण:

a->{                      // Method with String-array parameter and integer return-type
  int l=a.length,         //  Length of the input-array
      i=l,                //  Index-integer, starting at the length
      t,j=0,              //  Temp-integers
      C[]=new int[l];     //  Count-array the same size as the input
  var p=new String[l][2]; //  String-pairs array the same size as the input
  for(;i-->0              //  Loop `i` in the range [`l`, 0)
      ;                   //    After every iteration:
       p[i][0]=           //     Set the first String of the pair at index `i` to:
               a[t>0?i:j],//      The smallest of the `i`'th or `j`'th Strings of the input-array
       p[i][1]=           //     And set the second String of the pair at index `i` to:
               a[t>0?j:i])//      The largest of the `i`'th or `j`'th Strings of the input-array
    t=a[i].length()<      //    If the length of the `i`'th item is smaller than
      a[j=-~i%l].length()?//    the length of the `i+1`'th item
                          //    (and set `j` to this `i+1` with wrap-around to 0 for the last item
       1                  //     Set `t` to 1 as flag
      :                   //    Else:
       0;                 //     Set `t` to 0 as flag
                          //  We've now created the String pairs, where each pair is sorted by length
  i=0;                    //  Reset `i` to 0
  for(var P:p){           //  Loop over the pairs
    var s="";             //   Temp-String starting empty
    for(var x:P[0].getBytes())
                          //   Loop over the characters of the first String of the pair
      s+=                 //    Append the temp-String with:
         (char)(x>64&x<91|x>96&x<123?
                         //      If the current character is a letter:
           x^32          //       Swap it's case before appending it to `s`
         :               //      Else (not a letter):
          x);            //       Append it to `s` as is
    for(P[0]=            //    Now replace the first String with:
        repeat(P[0]+s,   //     The first String appended with the case-swapped first String
               t=P[1].length())
                         //     Repeated `t` amount of times,
                         //     where `t` is the length of the second String of the pair
        .substring(0,t); //     And then shorten it to length `t`
        t-->0;)          //    Inner loop over the character of the now same-length Pairs
      if(P[0].charAt(t)!=P[1].charAt(t))
                         //     If the characters at the same indices in the pair are not equal
        C[i]++;          //      Increase the counter for this pair by 1
    i++;}                //    After every iteration of the outer loop,
                         //    increase `i` by 1 for the next iteration
  for(int c:C)           //  Now loop over the calculated counts
    j=c>j?c:j;           //   And set `j` to the maximum
  return j;}             //  And finally return this maximum `j` as result

1

आर , 173 बाइट्स

function(x,U=utf8ToInt,N=nchar)max(combn(x,2,function(z,v=z[order(N(z))])sum(U(substr(Reduce(paste0,rep(c(v[1],chartr('A-Za-z','a-zA-Z',v[1])),n<-N(v[2]))),1,n))!=U(v[2]))))

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

@ngm: मैंने आपके कोड ( पाठ्यक्रम के मेरे भारी अनुकूलन के साथ ) को गोल्फ के लिए मेरी पूरी कोशिश की , लेकिन जैसा कि आप अच्छी तरह से जानते हैं, आर स्ट्रिंग्स में हेरफेर करने में बहुत गोल्फ नहीं है: पी


मुझे यकीन है कि यह 150 बाइट्स हो सकता है, लेकिन मुझे यकीन नहीं है कि अभी कैसे।
Giuseppe

@Giuseppe: मुझे उस पर भी संदेह है ... लेकिन मैं शॉर्ट स्ट्रिंग्स हेरफेर कोड लिखने में वास्तव में अच्छा नहीं हूं और R मेरी बहुत मदद नहीं करता है: D
digEmAll

@digEmAll मैं अपनी चुनौती को हल करने की कोशिश नहीं करने जा रहा हूं, लेकिन कुछ outerसंयोजनों में सभी संयोजनों को शामिल करना शामिल हो सकता है , और बदले में कोड बिंदुओं पर मॉड्यूलर अंकगणित करना शामिल है chartr
एन जी एम

@ngm: possible ... मैंने अंकगणित के दृष्टिकोण को त्याग दिया क्योंकि मैं संख्याओं को छुए बिना अक्षरों के मामले को बदलने के लिए एक छोटा समाधान / सूत्र नहीं खोज सका ...
digEmAll
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.