एकल अंक का सबसे लंबा दोहराव


17

चुनौती:

एक सकारात्मक पूर्णांक को देखते हुए, कम से कम दो बार होने वाले सबसे लंबे एकल-अंकीय परिणाम का उत्पादन होता है, और एक अन्य अंक (या पूर्णांक के प्रारंभ / अंत) की सीमाएं होती हैं।

एक उदाहरण:

इनपुट: 7888885466662716666
एकल अंक का सबसे लंबा परिणाम होगा 88888( 7[88888]5466662716666) 5 की लंबाई के साथ। हालांकि, यह परिणाम केवल पूर्णांक में एक बार होता है।
इसके बजाय, इनपुट के लिए परिणाम ( ) 7888885466662716666होना चाहिए , क्योंकि यह दो बार (कम से कम) होता है।666678888854[6666]271[6666]

चुनौती नियम:

  • बाद में होने वाली लंबाई उस समय की मात्रा को प्राथमिकता देती है। (यानी इनपुट के साथ 8888858888866656665666, हम आउटपुट 88888( [88888]5[88888]66656665666, लंबाई 5, दो बार होता है), और नहीं 666( 88888588888[666]5[666]5[666],; लंबाई 3, तीन बार होता है)।
  • यदि कई बाद की लंबाई बराबर है, तो हम सबसे बड़ी घटना-गणना के साथ आउटपुट देते हैं। Ie इनपुट के साथ 3331113331119111, हम आउटपुट 111( 333[111]333[111]9[111],; लंबाई 3, तीन बार होता है), और नहीं 333( [333]111[333]1119111; लंबाई 3 के रूप में अच्छी तरह से, लेकिन दो बार होता है)
  • यदि घटना-गणना और कई बाद की लंबाई बराबर होती है, तो आप उनमें से किसी एक या सभी (किसी भी क्रम में) आउटपुट कर सकते हैं। इनपुट के साथ यानी 777333777333, संभव outputs हैं: 777; 333; [777, 333]; या [333, 777]
  • बाद में अन्य अंकों की सीमाएं होनी चाहिए (या पूर्णांक का प्रारंभ / अंत)। इनपुट 122222233433के साथ Ie परिणाम है 33( 1222222[33]4[33],; लंबाई 2, दो बार होता है) और नहीं 222( 1[222][222]33433, लंबाई 3, दोनों अमान्य के साथ दो बार होता है)।
    • यह उन सभी नंबरों पर लागू होता है जिन्हें घटना-काउंटर की ओर गिना जाता है। Ie इनपुट 811774177781382के साथ परिणाम है 8( [8]117741777[8]13[8]2,; लंबाई 1, तीन बार होता है) और नहीं 77( 811[77]41[77]781382/ 811[77]417[77]81382; लंबाई 2, एक के साथ दो बार होता है) और न ही 1( 8[1][1]774[1]7778[1]382; लंबाई 1, दो अमान्य के साथ चार बार होता है)।
  • आप मान सकते हैं कि इनपुट में कोई अंक नहीं होगा 0(यह मेल खाएगा [1-9]+)। (यह 10002000आउटपुट के परीक्षण मामलों से निपटने के लिए है 000, जहां अधिकांश भाषाओं को 0डिफ़ॉल्ट रूप से आउटपुट होना चाहिए ।)
  • आप मान सकते हैं कि इनपुट में हमेशा कम से कम एक वैध आउटपुट होगा।
  • I / O दोनों लचीले हैं। एक पूर्णांक के बजाय अंकों / बाइट्स / वर्णों की स्ट्रिंग के रूप में एक सूची / सरणी / स्ट्रीम हो सकती है।

सामान्य नियम:

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

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

Input:  7888885466662716666 / [7,8,8,8,8,8,5,4,6,6,6,6,2,7,1,6,6,6,6]
Output: 6666                / [6,6,6,6]

Input:  3331113331119111 / [3,3,3,1,1,1,3,3,3,1,1,1,9,1,1,1]
Output: 111              / [1,1,1]

Input:            777333777333                   / [7,7,7,3,3,3,7,7,7,3,3,3]
Possible outputs: 777; 333; [777,333]; [333;777] / [7,7,7]; [3,3,3]; [[7,7,7],[3,3,3]]; [[3,3,3],[7,7,7]]

Input:  122222233433 / [1,2,2,2,2,2,2,3,3,4,3,3]
Output: 33           / [3,3]

Input:  811774177781382 / [8,1,1,7,7,4,1,7,7,7,8,1,3,8,2] 
Output: 8               / [8]

Input:  555153333551 / [5,5,5,1,5,3,3,3,3,5,5,1] 
Output: 1            / [1]

Input:            12321              / [1,2,3,2,1]
Possible outputs: 1; 2; [1,2]; [2,1] / [1]; [2]; [[1],[2]]; [[2],[1]]

Input:  944949949494999494 / [9,4,4,9,4,9,9,4,9,4,9,4,9,9,9,4,9,4]
Output: 4                  / [4]

Input:  8888858888866656665666 / [8,8,8,8,8,5,8,8,8,8,8,6,6,6,5,6,6,6,5,6,6,6]
Output: 88888                  / [8,8,8,8,8]

Input:  1112221112221111               / [1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1]
Output: 111; 222; [111,222]; [222,111] / [1,1,1]; [2,2,2]; [[1,1,1],[2,2,2]]; [[2,2,2],[1,1,1]]

Input:  911133111339339339339339 / [9,1,1,1,3,3,1,1,1,3,3,9,3,3,9,3,3,9,3,3,9,3,3,9]
Output: 111                      / [1,1,1]

1
सुझाए गए परीक्षण का मामला: 8888858888866656665666। अगर मैंने चुनौती को सही ढंग से व्याख्या की, तो ब्रेकीलॉग और 05AB1E दोनों समाधान विफल हो जाते हैं।
मिस्टर एक्सकोडर

@ Mr.Xcoder जोड़ा गया, धन्यवाद।
केविन क्रूज़सेन

@Arnauld हम्म, यह मेरी राय में वैसे भी विजेताओं में से एक होगा क्योंकि यह तब होता है 222जब अन्य पूर्णांकों द्वारा बाध्य किया जाता है। मुझे लगता है कि हमें केवल उस घटना की गणना नहीं करनी चाहिए जो एक विकल्प है 1111। ओपी के लिए बेहतर प्रतीक्षा हालांकि, वास्तव में।
श्री एक्सकोडर

2
@Arnauld के लिए 1112221112221111इन subsequences और उनके मायने रखता हैं: 1111 (1), 111 (2), 222 (2)। जब से हम केवल दो बार कम से कम होने वाली दृश्यों आउटपुट, उत्पादन में से एक हो सकते हैं: 111, 222, [111,222], [222,111]। (कुछ अधिक जानकारी के लिए चौथा नियम देखें।) मूल रूप से 1111ही कभी के रूप में गिना जाएगा 1111, और के रूप में नहीं 1है और 111या 11और 11। मैं अपने परीक्षण का मामला जोड़ देंगे, लेकिन उत्पादन या तो या दोनों है 111और 222
केविन क्रूज़सेन

जवाबों:


6

05AB1E , 14 बाइट्स

γТ1›ÏD€gZQÏ.M

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

व्याख्या

γ                # group consecutive equal elements
 Т              # count the occurrence of each group among the list of groups
   1›Ï           # keep only groups with a count greater than 1
      D€gZQÏ     # keep only those with a length equal to the greatest length
            .M   # get the most common item

@ रिले: दुर्भाग्य से यह पहला तत्व प्राप्त करेगा जो जरूरी नहीं कि सबसे आम है।
एमिग्ना

उफ़ .. मुझे वो गोली याद आ गई।
रिले

5

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

Œgœ-Q$LÐṀÆṃ'

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

पिछला संस्करण - 14 बाइट्स

ŒgŒQ¬TịƲLÐṀÆṃ'

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

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

Œgœ-Q$LÐṀÆṃ' – Full program. Receives a list of digits as input.
Œg           – Group equal adjacent values.
  œ-Q$       – Multiset difference with itself deduplicate.
      LÐṀ    – Keep those that are maximal by length.
         Æṃ' – Mode. Returns the most common element(s).
-------------------------------------------------------------------------
ŒgŒQ¬TịƲLÐṀÆṃ' – Full program. Receives a list of digits as input.
Œg             – Group equal adjacent values.
  ŒQ           – Distinct sieve. Replace the first occurrences of each value by 1.
                 and the rest by 0. [1,2,3,2,3,2,5]ŒQ -> [1,1,1,0,0,0,1]       
    ¬T         – Negate and find the truthy indices.
      ịƲ       – Then index in the initial list of groups.
               – This discards the groups that only occur once.
        LÐṀ    – Find all those which are maximal by length.
           Æṃ' – And take the mode.

5

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

एक स्ट्रिंग के रूप में इनपुट लेता है। एक पूर्णांक देता है।

s=>[...s,r=q=0].map(o=d=>q=s^d?o[!o[q]|r[q.length]?q:r=q]=s=d:q+d)|r

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

टिप्पणी की गई

s =>                      // s = input string, also used as the current digit
  [ ...s,                 // split s into a list of digit characters
    r =                   // r is the final result
    q =                   // q is the current digit sequence
    0                     // append a final dummy entry to force the processing of the last
  ]                       // sequence
  .map(o =                // o is an object used to keep track of encountered sequences
       d =>               // for each digit d in the array defined above:
    q =                   //   update q:
      s ^ d ?             //     if d is not equal to the current digit:
        o[                //       this statement will ultimately update o[q]
          !o[q] |         //         if q has not been previously seen
          r[q.length] ?   //         or the best result is longer than q:
            q             //           leave r unchanged
          :               //         else:
            r = q         //           set r to q
        ] = s = d         //       reset q to d, set the current digit to d
                          //       and mark q as encountered by setting o[q]
      :                   //     else:
        q + d             //       append d to q
  ) | r                   // end of map(); return r, coerced to an integer

हो सकता है कि मैं यहां कुछ गलत कह रहा हूं, लेकिन चूंकि ...sइनपुट को अंकों के पात्रों की सूची में परिवर्तित करता है, इसलिए क्या यह स्ट्रिंग के बजाय शुरू करने के लिए अंकों के पात्रों की सूची के रूप में इनपुट लेने के लिए कम नहीं है? मैंने लचीली I / O की अनुमति दी है। (लेकिन मैं इसे अपने कोड के दूसरे भाग के साथ हस्तक्षेप मान रहा हूँ?)
केविन क्रूज़सेन

2
@ केविनक्रूजसेन समस्या यह है कि मुझे अंतिम अनुक्रम को संसाधित करने के लिए एक अतिरिक्त पुनरावृत्ति की आवश्यकता है। इसलिए मुझे पहले से ही एक सूची होने पर [...s,0]भी करने की आवश्यकता होगी s
अरनुलद

4

रेटिना , 56 बाइट्स

L`(.)\1*
O`
L$m`^(.+)(¶\1)+$
$#2;$1
N`
.+;

N$`
$.&
-1G`

इसे ऑनलाइन आज़माएं! लिंक में परीक्षण के मामले शामिल हैं। स्पष्टीकरण:

L`(.)\1*

सभी बार-बार दोहराए गए अंकों के क्रमों को सूचीबद्ध करें।

O`

सूची क्रम में क्रमबद्ध करें।

L$m`^(.+)(¶\1)+$
$#2;$1

उनके "गिनती" के साथ सभी कई अनुवर्ती सूची।

N`

गिनती के बढ़ते क्रम में क्रमबद्ध करें।

.+;

गिनती हटाएं।

N$`
$.&

लंबाई के बढ़ते क्रम में क्रमबद्ध करें। (जहां लंबाई बराबर होती है, गिनती के कारण पिछला क्रम संरक्षित है।)

-1G`

अंतिम यानी सबसे लंबी वैल्यू रखें।


4

आर , 102 बाइट्स

function(i)rep(names(sort(-(x=(x=table(rle(i)))[rowSums(x>1)>0,,drop=F])[m<-max(rownames(x)),])[1]),m)

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

चूंकि अभी तक एक आर उत्तर नहीं था, मैंने इसे एक कोशिश देने का फैसला किया, और अच्छी तरह से ... यह आसान नहीं था। मैं वास्तव में नहीं जानता कि क्या यह एक अच्छा दृष्टिकोण है, लेकिन यहाँ यह जाता है।

वर्णों के इनपुट और आउटपुट वैक्टर।


100 बाइट्स के करीब इस चुनौती के साथ आर के लिए बहुत अच्छा है।
१।



3

पॉवरशेल, 101 बाइट

($args|sls '(.)\1*'-a|%{$_.Matches}|group|?{$_.Count-1}|sort @{e={$_.Name.Length,$_.Count}})[-1].Name

स्पष्ट परीक्षण स्क्रिप्ट:

$f = {

(
    $args|          # for each argument (stings)
    sls '(.)\1*'-a| # searches all
    %{$_.Matches}|  # regex matches
    group|          # group it (Note: Count of each group > 0 by design)
    ?{$_.Count-1}|  # passthru groups with Count not equal 1
    sort @{         # sort all groups by 2 values
        e={$_.Name.Length,$_.Count}
    }
)[-1].Name          # returns name of last group (group with max values)

}

@(
    ,('7888885466662716666', '6666')
    ,('3331113331119111', '111')
    ,('777333777333', '777','333')
    ,('122222233433', '33')
    ,('811774177781382', '8')
    ,('555153333551','1')
    ,('12321', '1','2')
    ,('944949949494999494','4')
    ,('8888858888866656665666','88888')
    ,('1112221112221111','111','222')
) | % {
    $s,$e = $_
    $r = &$f $s
    "$($r-in$e): $r"
}

आउटपुट:

True: 6666
True: 111
True: 777
True: 33
True: 8
True: 1
True: 1
True: 4
True: 88888
True: 111


3

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

import Data.Lists
g!x|y<-countElem x g=(y>1,1<$x,y)
(argmax=<<(!)).group

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

(argmax=<<(!)).group       -- expands to: f i = argmax (group i !) (group i)
    group                  -- split the input list into subsequences of equal digits
                           -- e.g. "1112211" -> ["111","22","11"]

                           -- find the element of this list where the function !
                           -- returns the maximum value. First parameter to !
                           -- is the grouped input list, second parameter the
                           -- the element to look at 

g!x|
    y<-countElem x g       -- let y be the number of occurrences of x in g
  = (  ,   ,  )            -- return a triple of
     y>1                   -- a boolean y>1  (remember: True > False)  
        1<$x               -- length of x (to be exact: all elements in x
                           -- replaced by 1. This sorts the same way as the
                           -- length of x)
             y             -- y
                           -- a triples sorts lexicographical

क्या आपको Haskell + सूचियों को भाषा के रूप में उपयोग करने की आवश्यकता नहीं है क्योंकि Data.Lists आधार का हिस्सा नहीं है?

@ BWO: पता नहीं। मैंने हमेशा एक सादा "हास्केल" का उपयोग किया है, तब भी जब मैंने एक विदेशी पुस्तकालय (जैसे Glossचित्रमय आउटपुट या Matrix) के लिए आयात किया था । मैं "हास्केल + कुछ" का उपयोग करता हूं अगर मैं आयात के लिए बाइट की गिनती को शामिल नहीं करना चाहता हूं। मुझे लगता है कि हमारे पास मेटा पर यह विषय था, लेकिन मैं इसे अब और नहीं खोज सकता। अगर मुझे सही से याद है, तो हमारे पास "मानक पुस्तकालय" की कोई सामान्य परिभाषा नहीं थी। हास्केल के लिए क्या संदर्भ होना चाहिए? हास्केल रिपोर्ट, जीएचसी का आधार, हास्केल प्लैटफॉर्म, कुछ और?
नीमी

IMO यह C / JavaScript / के साथ होना चाहिए। (यदि यह मायने रखता है) हमें Haskell (GHC) या Haskell (Hugs) आदि का उपयोग करने की आवश्यकता है क्योंकि कार्यान्वयन PPCG पर एक भाषा को निर्दिष्ट करता है। तो एक के लिए GHC जवाब यह है कि आधार को शामिल किया जाएगा और अन्य सभी लोगों के लिए मुझे पता नहीं: डी
ბიმო

क्या आपके पास शायद एक TIO लिंक है ताकि इसका परीक्षण किया जा सके? या Data.Listsपुस्तकालय TIO या किसी अन्य ऑनलाइन हास्केल संकलक पर उपलब्ध नहीं है?
केविन क्रूज़सेन

1
@ केविनक्रूजसेन: हाँ टीआईओ Data.Listsगायब है। आप इसे इस संस्करण के साथ परीक्षण कर सकते हैं ।
नमि

3

आर , 85 बाइट्स

function(x,R=rle(x),a=ave(R$v,R,FUN=length))rep(R$v[o<-order(a<2,-R$l,-a)[1]],R$l[o])

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

  • इनपुट: अलग पूर्णांक अंकों का एक वेक्टर जैसेc(1,8,8...)

  • आउटपुट: अलग पूर्णांक अंकों का एक वेक्टर

स्पष्टीकरण के साथ अनियंत्रित कोड:

function(x){                # x is a vector of digits : e.g. c(1,1,8,8,1,1)

R = rle(x)                  # Get the sequences of consecutive repeating digits
                            # doing run length encoding on x, i.e. : R is a list
                            # with the digits (R$values) and the number of their
                            # consecutive occurrencies (R$lengths)
                            # N.B. you can use R$v for R$values and R$l for R$lenghts

a=ave(R$v,R,FUN=length)     # Group R$v by R$l AND R$v, count the occurrencies 
                            # for each group and "unroll" the value of each 
                            # group to the original R$v length.
                            # Here basically we count the occurrencies of the same 
                            # sequence.

o<-order(a<2,-R$l,-a)[1]    # Get the indexes used to order by a < 2 then by -R$l and
                            # finally by -a; store the first index in "o".
                            # Here basically we use order to select the first sequence 
                            # repeated at least twice, in case of ties the sequence 
                            # with the greatest length and in case of ties the most 
                            # repeated sequence.

rep(R$v[o],R$v[o])          # Using the index "o", we reconstruct the sequence repeating
                            # R$l[o] times R$v[o]
}

पूर्णांक या वर्ण अंकों के वेक्टर को स्वीकार करने वाला वैकल्पिक संस्करण:

आर , 88 बाइट्स

function(x,R=rle(x),a=ave(R$v,R,FUN=length))rep(R$v[o<-tail(order(a>1,R$l,a),1)],R$l[o])

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

  • इनपुट: अलग वर्णों या अंकों का एक वेक्टर जैसे c("1","8","8"...)याc(1,8,8...)

  • आउटपुट: अलग-अलग वर्णों का एक सदिश यदि इनपुट वर्णों का सदिश था, तो एक सदिश अंक का सदिश, यदि इनपुट अंकों का सदिश था


क्या आप एक स्पष्टीकरण जोड़ सकते हैं? मुझे समझ नहीं आ रहा है कि यह कैसे काम कर रहा है।
JayCe

@ जयके: किया! (मैंने ऐसे विवरण जोड़े हैं जो आप अच्छी तरह से जानते हैं, सिर्फ गैर-आर उपयोगकर्ताओं के लिए;))
digEmAll

Ty! यह अब समझ में आता है।
JayCe

2

लाल , 256 250 बाइट्स

func[s][p: func[b][sort parse b[collect[any keep[copy a skip thru any a]]]]first
last sort/compare collect[foreach d p p s[if 1 < k: length? to-block d[keep/only
reduce[form unique d k]]]]func[x y][(reduce[length? x/1 x/2])< reduce[length? y/1 y/2]]]

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

वास्तव में, इस समय वास्तव में लंबा समाधान ... (आह)

इनपुट को एक स्ट्रिंग के रूप में लेता है।

स्पष्टीकरण:

f: func [ s ] [
    p: func [ b ] [                        ; groups and sorts the adjacent repeating items
        sort parse b [ 
            collect [                      
                any keep[
                    copy a skip thru any a ; gather any item, optionally followed by itself  
                ]
            ]
        ]
    ]
    t: copy []
    foreach d p p s [                     ; p p s transforms the input string into a block of sorted blocks of repeating digits
        if 1 < k: length? to-block d [    ; filters only the blocks that occur more than once
            insert/only t reduce [ form unique d k ] ; stores the digits and the number of occurences
                                          ; "8888858888866656665666" -> [["5" 3] ["666" 3] ["88888" 2]]
        ]
    ]
    first last sort/compare t func [ x y ] ; takes the first element (the digits) of the last block of the sorted block of items
        [ (reduce [ length? x/1 x/2 ]) < reduce [ length? y/1 y/2 ] ] ; direct comparison of the blocks
]

2

जावा (JDK 10) , 213 बाइट्स

s->{int l=99,X[][]=new int[10][l],d,D=0,m=0,M=0;for(var x:s.split("(?<=(.))(?!\\1)"))X[x.charAt(0)-48][x.length()]++;for(;M<1&&l-->1;)for(d=0;d++<9;)if((m=X[d][l])>1&m>M){M=m;D=d;}for(;l-->0;)System.out.print(D);}

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

स्पष्टीकरण (पुराना)

s->{                                    // Lambda for Consumer<String>
 int l=99,                              //  Length of token, max is 99.
     X[][]=new int[10][l],              //  Array containing the occurrences per token
     d,                                 //  digit value
     D=0,                               //  digit holder for best sequence candidate
     m=0,                               //  holder of the current candidate
     M=0;                               //  best candidate for the current length of token.
 for(var x:s.split("(?<=(.))(?!\\1)"))  //  Tokenize the string into digit-repeating sequences
  X[x.charAt(0)-48][x.length()]++;      //   Add one occurrence for the token
 for(;M<1&&l-->1;)                      //  While no value has been found and for each length, descending. Do not decrease length if a value has been found.
  for(d=0;d++<9;)                       //   for each digit
   if((m=X[d][l])>1&m>M){               //    if the current occurrence count is at least 2 and that count is the current greatest for the length
    M=m;D=d;                            //     mark it as the current best
   }                                    //
 for(;l-->0;)System.out.print(D);       //  Output the best-fitting subsequence.
}                                       // 

क्रेडिट


1
मुझे डर है कि आपकी j*o>Mजाँच में एक छोटी सी खामी है । अगर मैं सही ढंग से समझूं तो यह अधिकतम है length * occurrence-count। लेकिन 1113311133933933933933उदाहरण के लिए एक परीक्षण के मामले के लिए, 111(3 * 2 = 6) होगा, और 33होगा (2 * 6 = 12)। इसलिए यह कम से कम दो बार होने वाली सबसे लंबी 33घटना होने के बजाय, सबसे अधिक घटना 111होती है। इसके अलावा, var r="";for(;O-->0;)r+=D;return r;के लिए golfed किया जा सकता है for(;O-->0;)System.out.print(D);जावा 10 में, या जावा 11 में भी कम: return(D+"").repeat(O);
केविन क्रूज़सेन

@ केविनक्रूजसेन मुझे लगता है कि मैंने इसे ठीक कर लिया है।
ओलिवियर ग्रेगोइरे

1
यह वास्तव में एक ही समय में गोल्फ बाइट्स का बेहतर और अच्छा तरीका है। आप अपना स्पष्टीकरण अपडेट करना भूल गए। और आप गोल्फ 1 बाइट को बदल int X[][]=new int[10][99],d,l=99,सकते हैं int l=99,X[][]=new int[10][l],d,
केविन क्रूज़सेन

1
@KevinCruijssen धन्यवाद! मैंने भी लिखने के d++<9बजाए एक और बाइट को गोलबंद किया ++d<10। बाकी के लिए क्षमा करें: मैं आज थक गया हूँ = _ =
ओलिवियर ग्रेजायर

2

रूबी , 68 67 बाइट्स

->a{(b=a.chunk &:+@).max_by{|x|[(c=b.count x)<2?0:x[1].size,c]}[1]}

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

इनपुट और आउटपुट चार्ट के सरणियों।

दृष्टिकोण बहुत सीधा है: हम लगातार अंकों के रनों की पहचान करते हैं ( पहचान फ़ंक्शन के रूप में chunkयूनीरी का उपयोग करते हुए +) और अधिकतम - रन के आकार से पहले लें (यदि शून्य होने की स्थिति में रीसेट हो तो <2 है), फिर गिनती से ही ।


2

पीसीआरई, 152 बाइट्स

(\d)(?<!(?=\1)..)(?=(\1*)(?!\1).*(?!\1).\1\2(?!\1))(?!(?:(?=\2((\3?+)(\d)(\5*)))){1,592}?(?=\2\3.*(?!\5).\5\6(?!\5))(?:\1(?=\1*\4\5(\7?+\5)))*+(?!\1))\2

इसे कार्रवाई में देखें: https://regex101.com/r/0U0dEp/1 (प्रत्येक परीक्षा कार्यक्रम में पहले मैच को देखें)

यह सिर्फ मनोरंजन के लिए है, क्योंकि रेगेक्स वास्तविक प्रोग्रामिंग भाषा नहीं है, और इसका समाधान सीमित है: पी

क्योंकि एक शून्य-चौड़ाई समूह जैसे कि (?:)+ केवल एक बार मेल खाता है और अनिश्चित काल तक नहीं दोहराता है, और क्योंकि पीसीआरई आंतरिक रूप से सीमा के साथ निर्धारित समूहों की प्रतियां बनाता है, मुझे वहां एक जादुई संख्या ("{1,592}") का उपयोग करना होगा, जो इसका मतलब है कि हम केवल एक प्रतिस्पर्धी सेट को खोजने के लिए 592 से आगे की संख्या में सन्निहित सेट देख सकते हैं जो वर्तमान में निरीक्षण से अधिक लंबा हो सकता है। इस अवधारणा के बारे में अधिक जानकारी यहाँ


1

पर्ल ५ , 88 बाइट्स

my($m,%s);++$i%2*$s{$_}++&&($n=$s{$_}/9+length)>$m&&($a=$_,$m=$n)for pop=~/((.)\2*)/g;$a

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

थोड़ा असंतुष्ट, परीक्षणों के साथ:

sub f {
  my($m,%s);
  my($i,$n,$a);           #not needed in golfed version
  ++$i % 2  *  $s{$_}++
  && ($n=$s{$_}/9+length) > $m
  && ($a=$_, $m=$n)
    for pop=~/((.)\2*)/g; #i.e. 7888885466662716666 => 7 88888 5 4 6666 2 7 1 6666
  $a
}
for(map[/\d+/g],split/\n/,join"",<DATA>){ #tests
  my($i,@e)=@$_;
  printf "%-6s   input %-24s   expected %-10s   got %s\n",
    (grep f($i) eq $_, @e) ? "Ok" : "Not ok", $i, join('|',@e), f($i);
}
__DATA__
Input:  7888885466662716666     Output: 6666
Input:  3331113331119111        Output: 111
Input:  777333777333            Output: 777|333
Input:  122222233433            Output: 33
Input:  811774177781382         Output: 8
Input:  555153333551            Output: 1
Input:  12321                   Output: 1|2
Input:  944949949494999494      Output: 4
Input:  8888858888866656665666  Output: 88888
Input:  1112221112221111        Output: 111|222

1

वोल्फ्राम भाषा (गणितज्ञ) , 67 बाइट्स

#&@@@MaximalBy[Select[Tally@Split@#,Last@#>1&],{Length@#,#2}&@@#&]&

शुद्ध कार्य। इनपुट के रूप में अंकों की एक सूची लेता है और आउटपुट के बाद (कोई विशेष क्रम में नहीं) की सूची देता है। सुनिश्चित नहीं है कि "कम से कम दो बार दिखाई देना चाहिए" खंड को अधिक सफाई से संभाला जा सकता है। इसे ऑनलाइन आज़माएं!


1
क्या आप शायद इसके लिए एक TIO लिंक जोड़ सकते हैं?
केविन क्रूज़सेन

यदि आप वास्तव में जोर देते हैं ...
LegionMammal978

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