সিকোয়েন্সে সর্বাধিক 1 এর সাথে স্ট্রিংগুলি সন্ধান করুন


16

ভূমিকা

আমি যার সাথে সবচেয়ে বেশি সাবস্ট্রিং খুঁজতে চান 1'একটি ক্রমানুসারে গুলি 0গুলি এবং' 1এর।

ইনপুট

আপনার প্রোগ্রামের দুটি ইনপুট রয়েছে , ক্রম এবং সাবস্ট্রিংয়ের দৈর্ঘ্য।

ক্রম যে কোন সংখ্যার হল 0's এবং 1এর:

01001010101101111011101001010100010101101010101010101101101010010110110110

সাবস্ট্রিং দৈর্ঘ্য কোনো ইতিবাচক নন-জিরো পূর্ণসংখ্যা হল:

5

আউটপুট

আপনার প্রোগ্রামটি প্রদত্ত দৈর্ঘ্যের প্রথম সাবস্ট্রিংয়ের সূচনা সূচককে আউটপুট দেয় যা সবচেয়ে বেশি থাকে 1। উপরের ইনপুট সহ, আউটপুটটি হ'ল:

10

স্ট্রিংয়ের প্রথম অক্ষর এর সূচকে শুরু হয় 0

স্কোরিং

সবচেয়ে কম কোড জয়!

বিধি

  • আপনার প্রোগ্রামকে অবশ্যই কোনও বৈধ ইনপুটগুলির জন্য সঠিক সূচকটি আউটপুট করতে হবে।
  • আপনি ডিফল্ট বিকল্পগুলিতে ইতিবাচক স্কোর সহ যে কোনও উত্তর থেকে আপনার ইনপুট / আউটপুট পদ্ধতিটি চয়ন করতে পারেন । আপনার উত্তরটি চয়ন করার পদ্ধতিটি নির্দিষ্ট করুন।

আপনার শিরোনাম এবং ভূমিকা বলছে "সর্বাধিক 1 এর সাথে সাবস্ট্রিংটি সন্ধান করুন"। তবে আপনার প্রোগ্রামের বিবরণে বলা হয়েছে যে আপনি একটি স্ট্রিংয়ের দৈর্ঘ্য দিচ্ছেন এবং প্রথম সাবস্ট্রিংয়ের সূচিটি সন্ধান করছেন। তাহলে কি আমাদের ধরে নেওয়া উচিত যে শিরোনাম এবং ভূমিকাটি ভুল? বেশিরভাগ লোক প্রথম অংশটি সমাধান করছে বলে মনে হচ্ছে। কে জিতলো?
স্বতঃস্বরে

@ সউস্টেফ আমি নিশ্চিত না যে আমি আপনার বিভ্রান্তি বুঝতে পেরেছি। যদি সর্বাধিকের জন্য একাধিক স্ট্রস্ট্রিং বাঁধা থাকে তবে 1আপনি যে প্রথম স্ট্রিংিংটি খুঁজে পেয়েছিলেন তা আউটপুট দেয়। আপনি সাবস্ট্রিংগুলি সেই স্ট্রিংয়ের প্রথম অক্ষরটির সূচক দিয়ে চিহ্নিত করুন। এটা কি সাহায্য করে?
hmatt1

ঠিক আছে, তাই আপনি সাবস্ট্রিংগুলিতে ক্রমটি ভেঙেছেন এবং সর্বাধিক 1 এর সাথে প্রথম স্ট্রিংয়ের সূচকটি ফেরৎ দিচ্ছেন? মনে হচ্ছে আপনি 1 এর সাবস্ট্রিংগুলি সন্ধান করছেন।
স্বতঃস্বরে

প্রয়োজনীয়তাটি কি "সর্বদা কোনও প্রদত্ত ইনপুটগুলির জন্য সঠিক সূচককে আউটপুট দিতে হবে" যদি আমরা অপরিবর্তনীয় দৈর্ঘ্য, যেমন দৈর্ঘ্য = 99 প্রদান করি তবে এখনও প্রযোজ্য?
smci

@ এসএমসিআই আপনি বৈধ ইনপুট জন্য অনুমান করতে পারেন। সাবস্ট্রিংয়ের দৈর্ঘ্য ক্রমের চেয়ে দীর্ঘতর হ'ল আপনাকে এমন কোনও মামলা পরিচালনা করতে হবে না।
hmatt1

উত্তর:


11

ডায়ালগ এপিএল, ১১

(-∘1+⍳⌈/)+/

এখানে চেষ্টা করুন। ব্যবহার:

   f ← (-∘1+⍳⌈/)+/
   4 f 0 1 1 0 1 1 1 0 0 0 0 1 1
1

ব্যাখ্যা

এটি একটি ডায়ডিক (অর্থ বাইনারি) ফাংশন যা বাম দিক থেকে স্ট্রিংয়ের দৈর্ঘ্য এবং ডান থেকে ক্রম নেয়। এর গঠনটি নিম্নলিখিত:

   ┌───┴────┐
 ┌─┴──┐     /
 ∘  ┌─┼─┐ ┌─┘
┌┴┐ + ⍳ / +  
- 1   ┌─┘    
      ⌈      

বিস্ফোরণ দ্বারা ব্যাখ্যা:

(-∘1+⍳⌈/)+/
(       )+/  ⍝ Take sums of substrings of given length, and feed to function in parentheses
    + ⌈/     ⍝ The array of sums itself, and its maximum
     ⍳       ⍝ First index of right argument in left
 -∘1         ⍝ Subtract 1 (APL arrays are 1-indexed)

উদাহরণ হিসাবে, আসুন 4এবং 0 1 1 0 1 1 1 0ইনপুট হিসাবে নেওয়া যাক । প্রথমে আমরা +/তাদের কাছে ফাংশনটি প্রয়োগ করি এবং পাই 2 3 3 3 3। তারপরে, +এবং ⌈/এই অ্যারে প্রয়োগ করে নিজেই দেয় এবং 3, এবং 2 3 3 3 3 ⍳ 3মূল্যায়ন করে 2, যেহেতু 3প্রথমটি দ্বিতীয় উপাদান হিসাবে দেখা যায়। আমরা বিয়োগ 1এবং 1চূড়ান্ত ফলাফল হিসাবে পেতে ।


আপনার উদাহরণস্বরূপ, দৈর্ঘ্য 4, তবে একক সারিতে 4 টি আইটেম নেই (01101110), সুতরাং কেন এটি কিছুতেই আউটপুট দেয়?
থমাস ওয়েলার

@ThomasW। চ্যালেঞ্জের উদাহরণটিতে টানা 5 টি একই আইটেম নেই এবং তবুও আউটপুটটি 10 ​​টি Them বেশী, যেখানে mহয় সর্বোচ্চ।
Zgarb

10

রুবি, 42

f=->s,n{(0..s.size).max_by{|i|s[i,n].sum}}

এটিকে কল করে ইনপুট নেয় eg

f['01001010101101111011101001010100010101101010101010101101101010010110110110',5]

এটি তাদের মোট ASCII মান ব্যবহার করে সাবস্ট্রিংগুলি তুলনা করে এবং সর্বোচ্চের সূচকটি প্রদান করে returns আমি নিশ্চিত নই max_byযে রুবি স্পেকের দ্বারা স্থিতিশীল হওয়ার প্রয়োজন আছে কিনা তবে এটি সি বাস্তবায়নে প্রদর্শিত হবে।


6

পাইথন 2, 56

lambda s,l:max(range(len(s)),key=lambda i:sum(s[i:i+l]))

পূর্ণসংখ্যার একটি অ্যারে গ্রহণ করে, তারপরে দৈর্ঘ্য।


এটির জন্য ইনপুট হিসাবে একটি পূর্ণসংখ্যার অ্যারের প্রয়োজন, সুতরাং আপনি যদি একটি স্ট্রিং দিয়ে শুরু করেন তবে আপনাকে এটি করতে হবে:[int(s) for s in "010010...0"]
স্মিচি

বাগ: f(ss, 999)0 (কোনওটির পরিবর্তে) ফিরে আসবে। আপনি এটা ঠিক করতে পারেন? এই তর্কসাপেক্ষে নিয়ম 1. লঙ্ঘন
smci

আপনি কি সম্পর্কে কথা বলছেন তা আমার জানা নেই। ভেরিয়েবলের মধ্যে কী আছে তা আমি কীভাবে জানতে পারি ss? Noneউত্তরটি পূর্ণসংখ্যা হিসাবে কোনও ক্ষেত্রেই কখনই পছন্দসই আউটপুট হয় না।
ফেয়ারসুম

5

ব্যাচ - 222

ব্যাচ স্পষ্টতই এই ধরণের অপারেশনের জন্য নিখুঁত ভাষা।

@echo off&setLocal enableDelayedExpansion&set s=%1&set l=-%2
:c
if defined s set/Al+=1&set "s=%s:~1%"&goto c
set s=%1&set x=0&for /l %%a in (0,1,%l%)do set c=!s:~%%a,%2!&set c=!c:0=!&if !c! GTR !x! set x=!c!&set y=%%a
echo !y!

আন-গল্ফড / বিচ্ছিন্ন:

প্রাথমিক সেটআপ. পরিবর্তনশীল sহ'ল ইনপুট স্ট্রিং, এবং ইনপুট স্ট্রিংয়ের lদৈর্ঘ্য হবে, সাব-স্ট্রিংয়ের দৈর্ঘ্য বিয়োগ করা হবে ( প্রদত্ত সাব-স্ট্রিংয়ের দৈর্ঘ্য %2যেখানে নেতিবাচক হবে %2)।

@echo off
setLocal enableDelayedExpansion
set s=%1
set l=-%2

যেমন ইনপুট দৈর্ঘ্য পান l, একটি বিশুদ্ধ ব্যাচ স্ট্রিং দৈর্ঘ্য সলিউশন ব্যবহার - এই mangle করা পরিবর্তনশীল sইনপুট স্ট্রিং সম্বলিত, তাই আমরা তারপর এটি আবার সেট।

:c
if defined s (
    set /A l += 1
    set "s=%s:~1%"
    goto c
)
set s=%1

xকোন সাব-স্ট্রিংয়ে সর্বাধিক সংখ্যক সংখ্যক সংখ্যা রয়েছে তা পরীক্ষা করতে এর মান ব্যবহার করা হয়। স্ট্রিংয়ের দৈর্ঘ্যে 0 থেকে একটি লুপ শুরু করুন, সাব-স্ট্রিং দৈর্ঘ্য (চলক l) বিয়োগ করুন । লুপের ( %%a)) বর্তমান পয়েন্ট থেকে শুরু করে সাব-স্ট্রিং পান , cইনপুট স্ট্রিং হিসাবে শুরু হয় %%aএবং %2(প্রদত্ত সাব-স্ট্রিং দৈর্ঘ্য) অক্ষর হিসাবে সেট করা হয় । যে কোনও 0গুলি এখান থেকে সরিয়ে ফেলা হয় c, তারপরে এর মানটির cসাথে তুলনা করা হয় x- অর্থাত্ 111একটি বৃহত্তর সংখ্যা 11তাই আমরা তুলনার চেয়ে বৃহত্তর কাজটি করতে কেবল স্ট্রিংটি ব্যবহার করতে পারি। yতারপরে স্ট্রিংয়ের বর্তমান অবস্থানে সেট করা হয় - যা শেষ পর্যন্ত আউটপুট হয়।

set x=0
for /l %%a in (0, 1, %l%) do (
    set c=!s:~%%a,%2!
    set c=!c:0=!
    if !c! GTR !x! (
        set x=!c!
        set y=%%a
    )
)
echo !y!

ওপিএস উদাহরণ ব্যবহার করে -

h:\>sub1.bat 01001010101101111011101001010100010101101010101010101101101010010110110110 5
10

5

সি # (রেজেক্স), 196

class Test{static void Main(string[]a){System.Console.Write(System.Text.RegularExpressions.Regex.Match(a[1],"(?=((?<o>1)|0){"+a[0]+"})(?!.+(?=[10]{"+a[0]+"})(?!((?<-o>1)|0){"+a[0]+"}))").Index);}}

আসল রেজেক্সটি এত দীর্ঘ নয়, কোডের আকার দ্বিগুণ করার জন্য সি # প্রোগ্রামের জন্য সমস্ত ফ্লাফগুলি প্রয়োজন।

আসল রেজেক্স, দৈর্ঘ্য 5 এ সেট করে:

(?=((?<o>1)|0){5})(?!.+(?=[10]{5})(?!((?<-o>1)|0){5}))
  • (?=((?<o>1)|0){5}): গ্রাস না করেই পাঁচটি অক্ষর পড়তে দেখুন এবং সমস্তকে 1"স্ট্যাক" এর মধ্যে চাপুনo
  • (?=[10]{5})(?!((?<-o>1)|0){5}): এমন একটি অবস্থানে যেখানে 5 টি অক্ষর রয়েছে সেখানে oপপ আউট করার জন্য "স্ট্যাক" তে পর্যাপ্ত আইটেম নেই , অর্থাত্ স্ট্রিংগুলিতে আরও কঠোরভাবে1 বর্তমানের অবস্থানের তুলনায় ।
  • (?!.+(?=[10]{5})(?!((?<-o>1)|0){5})): উপরে স্ট্রিং বাকি জন্য পাওয়া যাবে না বর্ণনা A স্থান যেমন অর্থাত সব অবস্থানে কম বা সমান সংখ্যা কম হয়েছে 1'র।

প্রথম ফলাফলটি গ্রহণ করলে উত্তরটি পাওয়া যায়, যেহেতু এটির সামনে সমস্ত সাবস্ট্রিংগুলি আরও কিছু সহ কিছুটা স্ট্রিং থাকে 1এবং আমরা পরীক্ষা করে দেখেছি যে বর্তমান সূচকের চেয়ে বড় যে কোনও সূচকটি এর চেয়ে কম বা সমান সংখ্যক রয়েছে 1

(এবং আমি দুর্দান্ত কিছু শিখলাম: "স্ট্যাক" ব্যাকট্র্যাকিংয়ে পুনরুদ্ধার করা হয়েছে)।


1
খুব দুর্দান্ত, আমি অনুমান করিনি যে আপনি একটি রেজিওক্স দিয়ে এটি করতে পারবেন।
হিস্টোক্র্যাট

4

পাইথ , 12

Mho/<>GNHZUG

এটি একটি ফাংশন সংজ্ঞায়িত করে g, যার জন্য সংখ্যার একটি তালিকা এবং ইনপুট হিসাবে একটি সংখ্যা প্রয়োজন। যেমন

Mho/<>GNHZUGg[0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0)5

আপনি এটি এখানে পরীক্ষা করতে পারেন: পাইথ কম্পাইলার / এক্সিকিউটার

ব্যাখ্যা:

Mho/<>GNHZUG
M             defines a function g(G,H), G is the sequence, H the sequence length
  o       UG  orders the numbers between 0 and len(G)-1 according to the following key
    <>GNH     take the subsequence G[N:N+5]
   /     Z    count the zeros in this subsequence (this is the key)
 h            return the first value of the sorted list (minimum)

বিকল্প:

Mho_s<>GNHUG

আপনি এমন একটি প্রোগ্রাম ব্যবহার করে একই দৈর্ঘ্যের উত্তর পেতে পারেন যা মানগুলির স্ট্রিং নেয় (01001 ...) তারপরে সংখ্যা: ho/<>zNQ\0Uzদুঃখের বিষয়, একটি স্ট্রিংয়ের গণনা আপনি যে স্ট্রিংয়ের সন্ধান করছেন তা স্বয়ংক্রিয়ভাবে রূপান্তরিত হয় না :(
ফ্রাইআমএইজিগম্যান

4

জে, 15 14 অক্ষর

   ([:(i.>./)+/\)

   5 ([:(i.>./)+/\) 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0
10

আমি আকর্ষণীয় মনে করি যখন কোড ভাষা গল্ফের জন্য বিশেষভাবে তৈরি ভাষাগুলি প্রকৃত ভাষাগুলি পরাজিত করে। আমার কে এন্ট্রি খাওয়া হয়েছিল বা আমি এটি পোস্ট করতাম তবে যাইহোক এটি 20 টি অক্ষরে এসেছিল।
জেসনএন

4

মতলব (৪২)

দিন sSTRING এবং বোঝাতে nসাবস্ট্রিং দৈর্ঘ্য। ফলাফল হয় r

যাকে একের sক্রম দিয়ে গণনা করুন n, তারপরে সর্বাধিক সন্ধান করুন। কনভলিউশনটি সহজেই সম্পন্ন হয়conv এবং maxফাংশনটি প্রথম সর্বোচ্চের অবস্থানে ফিরে আসে । 1ফলাফল সূচকে বিয়োগ করা প্রয়োজন , কারণ মতলব সূচী শুরু হয় 1, নয় 0

[~, r] = max(conv(s, ones(1,n), 'valid'));
r = r-1;

Golfed:

[~,r]=max(conv(s,ones(1,n),'valid'));r=r-1

4

হাস্কেল, 64 62 বাইট

n#l=0-(snd$maximum[(sum$take n$drop x l,-x)|x<-[0..length l]])

ব্যবহার:

5#[0,1,0,0,1,0,1,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,1,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,1,0,1,0,1,0,0,1,0,1,1,0,1,1,0,1,1,0]

ইনফিক্স ফাংশনটি সংজ্ঞায়িত করে আপনি 2 বাইট সংরক্ষণ করতে পারেন:n#l=...
জাগারব

আপনি এর জন্য একটি ইনফিক্স ফাংশন ব্যবহার করতে পারেন p। এছাড়াও, আমি মনে করি এটি 0অপ্রয়োজনীয় (যদিও প্রথম বন্ধনীগুলি নয়, এবং এর পরিবর্তে আপনার কোনও জায়গার প্রয়োজন হতে পারে 0)।
515

3

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

অনুরোধকৃত মানটি ফিরিয়ে দেওয়া একটি ফাংশন। ফর লুপটি সর্বাধিক মানের অবস্থান সংরক্ষণ করে চলমান মোট রেখে ইনপুট স্ট্রিংটি স্ক্যান করে।

F=(a,n)=>(x=>{for(r=t=i=x;a[i];t>x&&(x=t,r=i-n))t+=a[i]-~~a[i++-n]})(0)|r

Ungolfed

F=(a, n) => {
   for(x = r = t = i = 0; a[i]; i++)
     t += a[i] - ~~a[i-n], // ~~ convert undefined values (at negative index) to 0
     t > x && (x=t, r=i-n+1);
   return r;
}

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

F("01001010101101111011101001010100010101101010101010101101101010010110110110",5)

আউটপুট 10


আপনার কোড হ্রাস করতে, আপনাকে ভেরিয়েবলগুলি xএবং সংজ্ঞা দেওয়ার দরকার নেই r। এটি 4 বাইট হ্রাস করতে হবে, চূড়ান্ত দৈর্ঘ্য 69 বাইট। এছাড়াও, আপনি সম্ভবত এটির &&সাথে প্রতিস্থাপন করতে সক্ষম হবেন &। তবে ~~কৌতুক সহ সুন্দর !
ইসমাইল মিগুয়েল

@ ইসমাইলমিগুয়েল আপনার প্রথমে এক্স প্রয়োজন, অন্যথায় প্রথমে ত্রুটি t > x। আপনার আর ডি আর দরকার হবে: চেষ্টা করুন F("00000")। এবং && এর অনুকরণ এবংif
edc65 প্রয়োজন

আপনি পুরোপুরি ঠিক বলেছেন। আমি খেয়াল করিনি যে আপনি এটির চেয়ে কম বা সমান (x=t, r=i-n+1)হলে tতা উপেক্ষা করার প্রত্যাশা করছেন x। এটি অলস মূল্যায়নের একটি ভাল ব্যবহার! আমি আশা করি এটি অন্য কোথাও কেটে ফেলা যায় তবে আমার ধারণা আপনি সমস্ত কাজটি করেছেন did
ইসমাইল মিগুয়েল

3

পিএইচপি (96)

for($a=$b=$c=0;(($d=@substr_count($s,1,$a,$n))>$c&&($b=$a)&&($c=$d))||$a++<strlen($s););echo $b;

http://3v4l.org/J4vqa

ভেরিয়েবলগুলি $sএবং $nযথাক্রমে অনুসন্ধান স্ট্রিং এবং স্ট্রিংয়ের দৈর্ঘ্যের কমান্ড লাইনে সংজ্ঞায়িত করা উচিত।

এটি substr_count()এবং এর জন্য উপযুক্ত ফাংশনগুলির সাথে কোনও সি-জাতীয় ভাষায়ও কাজ করবে strlen()


3

গণিত, 38 36

f=#-1&@@Ordering[-MovingAverage@##]&

উদাহরণ:

f[{0,1,0,0,1,0,1,0,1,0,1,1,0,1,1,1,1,0,1,1,1,0,1,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,1,0,1,0,1,0,0,1,0,1,1,0,1,1,0,1,1,0},5]

আউটপুট:

10


2

সি # (লিনক), 148 বাইট

using System.Linq;class C{int F(string s,int l){return s.IndexOf(s.Skip(l-1).Select((c,i)=>s.Substring(i,l)).OrderBy(p=>-p.Sum(c=>c)).First());}}

বিন্যাসকৃত:

using System.Linq;

class C
{
    int F(string s, int l)
    {
        return s.IndexOf(
            s
                .Skip(l - 1)
                .Select((c, i) => s.Substring(i, l))
                .OrderBy(p => -p.Sum(c => c))
                .First()
        );
    }
}

পদ্ধতির প্যারাম হিসাবে ইনপুট নেয়।

এর মানে কি:

string result = s // string is also char collection
    .Skip(l - 1) // make it collection shorter by l-1
    .Select((c, i) => s.Substring(i, l)) // so we can iterate, and select all substrings
    .OrderBy(p => -p.Sum(c => c)) // order substrings descending by sum of characters
    .First() // take first (most ones)

return s.IndexOf(result); // find index of result string

2

স্কালা - 70 বাইট

readLine.sliding(readInt).zipWithIndex.maxBy(x=>x._1.count(_=='1'))._2

তবে যতক্ষণ জিপউইথইনডেক্সের সাথে ফাংশনটির নাম রয়েছে আমার ধারণা, স্কালা কোড গল্ফের জন্য সেরা পছন্দ নয়।


2

সি, 245 185

#include <stdio.h>
main(int argc,char **argv){char *p,*q;int i,s,m=0;for(p=argv[1];*p;p++){for(s=0,q=p;q-p<atoi(argv[2])&&*q;q++)s+=*q-'0';if(s>m){m=s;i=p-argv[1];}}printf("%d\n", i);}

বিন্যাসকৃত:

#include <stdio.h>
main(int argc, char **argv) {
        char *p, *q;
        int i, s, m = 0;
        for (p = argv[1]; *p; p++) {
                for (s = 0, q = p; q - p < atoi(argv[2]) && *q; q++)
                        s += *q - '0';
                if (s > m) {
                        m = s;
                        i = p - argv[1];
                }
        }
        printf("%d\n", i);
}

ব্যবহার:

$ ./m1s 01001010101101111011101001010100010101101010101010101101101010010110110110 5
10

1

সিজেম, 25 21 বাইট

q~_,,{1$>2$<:+~}$(]W=

এটি এখানে পরীক্ষা করুন।

স্ট্রিংয়ের দৈর্ঘ্যের জন্য পূর্ণসংখ্যা এবং ক্রম হিসাবে শূন্য এবং এরগুলির একটি অ্যারে হিসাবে ইনপুট নেয়:

5 
[0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0]

ব্যাখ্যা

q~_,,{1$>2$<:+~}$(p];
q~                    "Read and evaluate the input.";
  _,                  "Duplicate the sequence and get its length N.";
    ,                 "Get an array [0 1 ... N-1].";
     {         }$     "Sort this array stably by the result of the given block.";
      1$              "Copy the sequence.";
        >             "Slice off the first i bits.";
         2$           "Copy the substring length.";
           <          "Truncate the sequence.";
            :+        "Get the sum to find the number of 1s.":
              ~       "Bitwise complement in order to sort from highest to lowest.";
                 (    "Shift off the first index from the sorted list.";
                  ]   "Wrap the entire stack in an array.";
                   W= "Extract the last element (the result), discarding the rest.";

ফলাফলটি প্রোগ্রামের শেষে স্বয়ংক্রিয়ভাবে মুদ্রিত হয়।

নোট করুন যে আমি কাটা টুকরোগুলি বিবেচনা করছি যা পছন্দসই সাবস্ট্রিংয়ের দৈর্ঘ্যের চেয়ে শেষের কাছাকাছি শুরু হয় তবে এটি ঠিক আছে, কারণ তারা শেষ বৈধ সাবস্ট্রিংয়ের সাবস্ট্রিংস এবং অতএব 1শেষ বৈধ সাবস্ট্রিংয়ের চেয়ে বেশি এস কখনও হবে না ।


1

জাভা 329 বাইট

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

public class ssMostOnes{
public static void main(String[] a){
    int b=0,w=0;
    for(int i=0;i<a[0].length()-Integer.valueOf(a[1]);i++){
        int c=a[0].substring(i,i+Integer.valueOf(a[1])).length() - a[0].substring(i,i+Integer.valueOf(a[1])).replace("1","").length();
        if(c>w){w=c;b=i;}
    }
    System.out.println(b);
}

}


কিছু টিপস: আপনি iতৃতীয় লাইনে সূচনা করতে পারেন । বেশিরভাগ সাদা জায়গা সরিয়ে ফেলা যায়। ব্যবহার System.out.print((কোনও নতুন লাইনের প্রয়োজন নেই)। পরিবর্তে Integer.valueOf(, আপনি ব্যবহার করতে পারেন new Integer(
Ypnypn
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.