সংক্ষিপ্ততম ডি ব্রুইজন তৈরি করুন


22

একটি ডি ব্রুইজন ক্রম আকর্ষণীয়: এটি হ'ল সংক্ষিপ্ত, চক্রীয় অনুক্রম যা প্রদত্ত দৈর্ঘ্যের প্রদত্ত বর্ণমালার সমস্ত সম্ভাব্য ক্রম ধারণ করে। উদাহরণস্বরূপ, যদি আমরা বর্ণমালা A, B, C এবং 3 এর দৈর্ঘ্য বিবেচনা করি তবে একটি সম্ভাব্য আউটপুট হ'ল:

AAABBBCCCABCACCBBAACBCBABAC

আপনি যে অক্ষর ব্যবহার করে প্রতি সম্ভব 3-চরিত্র ক্রম লক্ষ্য করবেন A, Bএবং Cসেখানে রয়েছে।

আপনার চ্যালেঞ্জটি হ'ল সম্ভব কয়েকটি অক্ষরে ডি ব্রুইজন ক্রম উত্পন্ন করা। আপনার ফাংশনে দুটি প্যারামিটার, ক্রমগুলির দৈর্ঘ্যের প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যার এবং বর্ণমালা সম্বলিত একটি তালিকা নেওয়া উচিত। আপনার আউটপুট তালিকা আকারে ক্রম হতে হবে।

আপনি ধরে নিতে পারেন বর্ণমালার প্রতিটি আইটেম আলাদা।

একটি জেনারেটর এখানে পাওয়া যাবে

স্ট্যান্ডার্ড লুফোলস প্রযোজ্য


অনুক্রমের দৈর্ঘ্যের প্রতিনিধিত্ব করে পূর্ণসংখ্যাটি কী অনন্য বর্ণের সংখ্যার চেয়ে বড় হতে পারে?
kukac67

হ্যাঁ। 4 দৈর্ঘ্যের একটি বাইনারি ক্রম হবে 0000111101100101
নাথান মেরিল

"আপনার চ্যালেঞ্জটি হ'ল যতটা সম্ভব চরিত্রের মধ্যে একটি ডি ব্রুইজন ক্রম উত্পন্ন করা" - এর অর্থ কি "কোড গল্ফ" বা "সবচেয়ে কম সংখ্যকতম ডি ব্রুইজন সিকোয়েন্স দৈর্ঘ্য পাওয়া"?
FryAmTheEggman 21

2
উভয়। যোগ্যতা অর্জনের জন্য, আপনার প্রোগ্রামকে অবশ্যই সংক্ষিপ্ততর অনুক্রমটি আউটপুট করতে হবে, তবে জয়ের জন্য, আপনার প্রোগ্রামটি অবশ্যই সবচেয়ে কম হওয়া উচিত।
নাথান মেরিল

2
@ এক্সেম: সাধারণত ডি ব্রুইজন সিকোয়েন্সগুলিতে মোড়ক অন্তর্ভুক্ত থাকে, যেখানে এই অনুপস্থিত অনুক্রমগুলি উপস্থিত হয়।
কিথ র্যান্ডাল

উত্তর:


6

পাইথ, 31 বাইট

এটি আমার সিজেএম উত্তরে ব্যবহৃত অ্যালগরিদমের সরাসরি রূপান্তর । গল্ফিং স্বাগত জন্য টিপস!

Mu?G}H+GG+G>Hefq<HT>G-lGTUH^GHk

এই কোডটি একটি ফাংশন সংজ্ঞা দেয় gযা দুটি আর্গুমেন্ট গ্রহণ করে, অক্ষরের তালিকার স্ট্রিং এবং সংখ্যা number

ব্যবহারের উদাহরণ:

Mu?G}H+GG+G>Hefq<HT>G-lGTUH^GHkg"ABC"3

আউটপুট:

AAABAACABBABCACBACCBBBCBCCC

কোড সম্প্রসারণ:

M                 # def g(G,H):
 u                #   return reduce(lambda G, H:
  ?G              #     (G if
    }H            #       (H in
      +GG         #          add(G,G)) else
    +G            #       add(G,
      >H          #         slice_end(H,
        e         #           last_element(
         f        #             Pfilter(lambda T:
          q       #               equal(
           <HT    #                 slice_start(H,T),
           >G     #                 slice_end(G,
             -lGT #                   minus(Plen(G),T))),
          UH      #               urange(H)))))),
  ^GH             #     cartesian_product(G,H),
  k               #     "")

এখানে চেষ্টা করুন


4

সিজেম, 52 49 48 বাইট

এটি আশ্চর্যজনকভাবে দীর্ঘ। পাইথ অনুবাদ থেকে টিপস নিয়ে এটিকে অনেক গল্ফ করা যেতে পারে।

q~a*{m*:s}*{:H\:G_+\#)GGHH,,{_H<G,@-G>=},W=>+?}*

ইনপুট মত যায়

3 "ABC"

যেমন - অক্ষরের তালিকার স্ট্রিং এবং দৈর্ঘ্য।

এবং আউটপুট হ'ল ডি ব্রুইজন স্ট্রিং

AAABAACABBABCACBACCBBBCBCCC

এটি এখানে অনলাইনে চেষ্টা করুন


1
গোশ সিজোমকে নিষিদ্ধ করা উচিত, এটি কেবল একটি গল্ফিংয়ের জন্য তৈরি করা হয় না তবে এটি প্রতিটি সম্ভাব্য গল্ফিংয়ের জন্য মনে হয় ...
flawr

2
@ অবৈধ আপনি এর পরে একটি পাইথ উত্তরের জন্য অপেক্ষা করা উচিত: পি
অপ্টিমাইজার

3

সিজেম, 52 49 বাইট

সিজেমে এখানে আলাদা পদ্ধতি রয়েছে:

l~:N;:L,(:Ma{_N*N<0{;)_!}g(+_0a=!}g]{,N\%!},:~Lf=

এর মতো ইনপুট নেয়:

"ABC" 3

এবং লিন্ডনের মতো কাজ করে

CCCBCCACBBCBACABCAABBBABAAA

এখানে চেষ্টা করুন।

এটি লিন্ডন শব্দের সাথে সম্পর্কের ব্যবহার করে । এটা তোলে দৈর্ঘ্যের সমস্ত লিন্ডন শব্দ উত্পন্ন এন lexicographic অনুক্রমে (যেমন উইকিপিডিয়া প্রবন্ধে রূপরেখা), তারপর ড্রপ যাদের দৈর্ঘ্য ভাগ নেই এন । এটি ইতিমধ্যে ডি ব্রুইজন ক্রমটি পেয়েছে, তবে যেহেতু আমি লিন্ডনের শব্দগুলিকে অঙ্কের স্ট্রিং হিসাবে উত্পন্ন করছি, তারপরে আমারও শেষেরগুলিতে সংশ্লিষ্ট অক্ষরগুলির সাথে প্রতিস্থাপন করা দরকার।

গল্ফিং কারণে, আমি বর্ণমালার পরবর্তী অক্ষরগুলি কম অভিধানের ক্রম হিসাবে বিবেচনা করি।


1

জাভাস্ক্রিপ্ট (ES6) 143

মার্টিনের আসওয়ারের মতো লিন্ডন শব্দগুলি ব্যবহার করে, মাত্র 3 গুণ দীর্ঘ ...

F=(a,n)=>{
  for(w=[-a[l='length']],r='';w[0];)
  {
    n%w[l]||w.map(x=>r+=a[~x]);
    for(;w.push(...w)<=n;);
    for(w[l]=n;!~(z=w.pop()););
    w.push(z+1)
  }
  return r
}

টেস্ট ফায়ারফক্স / ফায়ারবাগ কনসোলটি

console.log(F("ABC",3),F("10",4))

আউটপুট

CCCBCCACBBCBACABCAABBBABAAA 0000100110101111

1

পাইথন 2, 114 বাইট

আমার পদ্ধতির কারণে কীভাবে এটি আরও গল্ফ করা যায় আমি সত্যিই নিশ্চিত নই।

def f(a,n):
 s=a[-1]*n
 while 1:
    for c in a:
     if((s+c)[len(s+c)-n:]in s)<1:s+=c;break
    else:break
 print s[:1-n]

এটি অনলাইনে চেষ্টা করুন

Ungolfed:

এই কোড থেকে একটি তুচ্ছ পরিবর্তন হয় আমার সমাধান আরো সাম্প্রতিক চ্যালেঞ্জ করতে।

def f(a,n):
    s=a[-1]*n
    while 1:
        for c in a:
            p=s+c
            if p[len(p)-n:]in s:
                continue
            else:
                s=p
                break
        else:
            break
    print s[:1-n]

একমাত্র কারণ [:1-n]প্রয়োজন কারণ ক্রমটি মোড়ানো-চারপাশে অন্তর্ভুক্ত।


1

পাওয়ারশেল, 164 96 বাইট

-68 O($n*2^n)পরিবর্তে পুনরাবৃত্ত জেনারেটরের সাথে বাইটসO(n*log(n))

param($s,$n)for(;$z=$s|% t*y|?{"$($s[-1])"*($n-1)+$x-notmatch-join"$x$_"[-$n..-1]}){$x+=$z[0]}$x

অবহেলিত এবং পরীক্ষার স্ক্রিপ্ট:

$f = {

param($s,$n)                    # $s is a alphabet, $n is a subsequence length
for(;                           # repeat until...
    $z=$s|% t*y|?{              # at least a character from the alphabet returns $true for expression:
        "$($s[-1])"*($n-1)+$x-notmatch  # the old sequence that follows two characters (the last letter from the alphabet) not contains
        -join"$x$_"[-$n..-1]    # n last characters from the new sequence
}){
    $x+=$z[0]                   # replace old sequence with new sequence
}
$x                              # return the sequence

}

@(
    ,("ABC",  2, "AABACBBCC")
    ,("ABC",  3, "AAABAACABBABCACBACCBBBCBCCC")
    ,("ABC",  4, "AAAABAAACAABBAABCAACBAACCABABACABBBABBCABCBABCCACACBBACBCACCBACCCBBBBCBBCCBCBCCCC")
    ,("ABC",  5, "AAAAABAAAACAAABBAAABCAAACBAAACCAABABAABACAABBBAABBCAABCBAABCCAACABAACACAACBBAACBCAACCBAACCCABABBABABCABACBABACCABBACABBBBABBBCABBCBABBCCABCACABCBBABCBCABCCBABCCCACACBACACCACBBBACBBCACBCBACBCCACCBBACCBCACCCBACCCCBBBBBCBBBCCBBCBCBBCCCBCBCCBCCCCC")
    ,("ABC",  6, "AAAAAABAAAAACAAAABBAAAABCAAAACBAAAACCAAABABAAABACAAABBBAAABBCAAABCBAAABCCAAACABAAACACAAACBBAAACBCAAACCBAAACCCAABAABAACAABABBAABABCAABACBAABACCAABBABAABBACAABBBBAABBBCAABBCBAABBCCAABCABAABCACAABCBBAABCBCAABCCBAABCCCAACAACABBAACABCAACACBAACACCAACBABAACBACAACBBBAACBBCAACBCBAACBCCAACCABAACCACAACCBBAACCBCAACCCBAACCCCABABABACABABBBABABBCABABCBABABCCABACACABACBBABACBCABACCBABACCCABBABBABCABBACBABBACCABBBACABBBBBABBBBCABBBCBABBBCCABBCACABBCBBABBCBCABBCCBABBCCCABCABCACBABCACCABCBACABCBBBABCBBCABCBCBABCBCCABCCACABCCBBABCCBCABCCCBABCCCCACACACBBACACBCACACCBACACCCACBACBACCACBBBBACBBBCACBBCBACBBCCACBCBBACBCBCACBCCBACBCCCACCACCBBBACCBBCACCBCBACCBCCACCCBBACCCBCACCCCBACCCCCBBBBBBCBBBBCCBBBCBCBBBCCCBBCBBCBCCBBCCBCBBCCCCBCBCBCCCBCCBCCCCCC")
    ,("01",   3, "00010111")
    ,("01",   4, "0000100110101111")
    ,("abcd", 2, "aabacadbbcbdccdd")
    ,("0123456789", 3, "0001002003004005006007008009011012013014015016017018019021022023024025026027028029031032033034035036037038039041042043044045046047048049051052053054055056057058059061062063064065066067068069071072073074075076077078079081082083084085086087088089091092093094095096097098099111211311411511611711811912212312412512612712812913213313413513613713813914214314414514614714814915215315415515615715815916216316416516616716816917217317417517617717817918218318418518618718818919219319419519619719819922232242252262272282292332342352362372382392432442452462472482492532542552562572582592632642652662672682692732742752762772782792832842852862872882892932942952962972982993334335336337338339344345346347348349354355356357358359364365366367368369374375376377378379384385386387388389394395396397398399444544644744844945545645745845946546646746846947547647747847948548648748848949549649749849955565575585595665675685695765775785795865875885895965975985996667668669677678679687688689697698699777877978878979879988898999")
    ,("9876543210", 3, "9998997996995994993992991990988987986985984983982981980978977976975974973972971970968967966965964963962961960958957956955954953952951950948947946945944943942941940938937936935934933932931930928927926925924923922921920918917916915914913912911910908907906905904903902901900888788688588488388288188087787687587487387287187086786686586486386286186085785685585485385285185084784684584484384284184083783683583483383283183082782682582482382282182081781681581481381281181080780680580480380280180077767757747737727717707667657647637627617607567557547537527517507467457447437427417407367357347337327317307267257247237227217207167157147137127117107067057047037027017006665664663662661660655654653652651650645644643642641640635634633632631630625624623622621620615614613612611610605604603602601600555455355255155054454354254154053453353253153052452352252152051451351251151050450350250150044434424414404334324314304234224214204134124114104034024014003332331330322321320312311310302301300222122021121020120011101000")
) |% {
    $s,$n,$e = $_
    $r = &$f $s $n
    "$($r-eq$e): $r"
}

আউটপুট:

True: AABACBBCC
True: AAABAACABBABCACBACCBBBCBCCC
True: AAAABAAACAABBAABCAACBAACCABABACABBBABBCABCBABCCACACBBACBCACCBACCCBBBBCBBCCBCBCCCC
True: AAAAABAAAACAAABBAAABCAAACBAAACCAABABAABACAABBBAABBCAABCBAABCCAACABAACACAACBBAACBCAACCBAACCCABABBABABCABACBABACCABBACABBBBABBBCABBCBABBCCABCACABCBBABCBCABCCBABCCCACACBACACCACBBBACBBCACBCBACBCCACCBBACCBCACCCBACCCCBBBBBCBBBCCBBCBCBBCCCBCBCCBCCCCC
True: AAAAAABAAAAACAAAABBAAAABCAAAACBAAAACCAAABABAAABACAAABBBAAABBCAAABCBAAABCCAAACABAAACACAAACBBAAACBCAAACCBAAACCCAABAABAACAABABBAABABCAABACBAABACCAABBABAABBACAABBBBAABBBCAABBCBAABBCCAABCABAABCACAABCBBAABCBCAABCCBAABCCCAACAACABBAACABCAACACBAACACCAACBABAACBACAACBBBAACBBCAACBCBAACBCCAACCABAACCACAACCBBAACCBCAACCCBAACCCCABABABACABABBBABABBCABABCBABABCCABACACABACBBABACBCABACCBABACCCABBABBABCABBACBABBACCABBBACABBBBBABBBBCABBBCBABBBCCABBCACABBCBBABBCBCABBCCBABBCCCABCABCACBABCACCABCBACABCBBBABCBBCABCBCBABCBCCABCCACABCCBBABCCBCABCCCBABCCCCACACACBBACACBCACACCBACACCCACBACBACCACBBBBACBBBCACBBCBACBBCCACBCBBACBCBCACBCCBACBCCCACCACCBBBACCBBCACCBCBACCBCCACCCBBACCCBCACCCCBACCCCCBBBBBBCBBBBCCBBBCBCBBBCCCBBCBBCBCCBBCCBCBBCCCCBCBCBCCCBCCBCCCCCC
True: 00010111
True: 0000100110101111
True: aabacadbbcbdccdd
True: 0001002003004005006007008009011012013014015016017018019021022023024025026027028029031032033034035036037038039041042043044045046047048049051052053054055056057058059061062063064065066067068069071072073074075076077078079081082083084085086087088089091092093094095096097098099111211311411511611711811912212312412512612712812913213313413513613713813914214314414514614714814915215315415515615715815916216316416516616716816917217317417517617717817918218318418518618718818919219319419519619719819922232242252262272282292332342352362372382392432442452462472482492532542552562572582592632642652662672682692732742752762772782792832842852862872882892932942952962972982993334335336337338339344345346347348349354355356357358359364365366367368369374375376377378379384385386387388389394395396397398399444544644744844945545645745845946546646746846947547647747847948548648748848949549649749849955565575585595665675685695765775785795865875885895965975985996667668669677678679687688689697698699777877978878979879988898999
True: 9998997996995994993992991990988987986985984983982981980978977976975974973972971970968967966965964963962961960958957956955954953952951950948947946945944943942941940938937936935934933932931930928927926925924923922921920918917916915914913912911910908907906905904903902901900888788688588488388288188087787687587487387287187086786686586486386286186085785685585485385285185084784684584484384284184083783683583483383283183082782682582482382282182081781681581481381281181080780680580480380280180077767757747737727717707667657647637627617607567557547537527517507467457447437427417407367357347337327317307267257247237227217207167157147137127117107067057047037027017006665664663662661660655654653652651650645644643642641640635634633632631630625624623622621620615614613612611610605604603602601600555455355255155054454354254154053453353253153052452352252152051451351251151050450350250150044434424414404334324314304234224214204134124114104034024014003332331330322321320312311310302301300222122021121020120011101000

আরও দেখুন: এগুলি সমস্তকে শাসন করার জন্য একটি রিং। ওয়ান স্ট্রিং এ সবগুলিকে ধারণ করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.