একাধিক রান সহ সংখ্যা


30

কার্য

সংখ্যার সেটটি সন্ধান করুন যাতে বাইনারি উপস্থাপনায় 1কমপক্ষে একটি দ্বারা পৃথক দুটি বা তার বেশি রান রয়েছে 0

উদাহরণস্বরূপ, 4 বিট দীর্ঘ যে সংখ্যাগুলির জন্য:

 0 0000        (no ones)
 1 0001        (only one run)
 2 0010        (only one run)
 3 0011        (only one run)
 4 0100        (only one run)
 5 0101 Valid
 6 0110        (only one run)
 7 0111        (only one run)
 8 1000        (only one run)
 9 1001 Valid
10 1010 Valid
11 1011 Valid
12 1100        (only one run)
13 1101 Valid
14 1110        (only one run)
15 1111        (only one run)

ইনপুট

একটি পূর্ণসংখ্যা ব্যাপ্তিটিতে কিছু ইনপুট দিয়ে অ্যাপ্লিকেশনটিকে সরবরাহ করে 3 .. 32। এটি গণনা করতে বিটের সর্বোচ্চ সংখ্যার প্রতিনিধিত্ব করে।

ইনপুট nনির্দেশ করে যে সংখ্যাগুলি পরীক্ষা করা দরকার।0 .. 2n-1

আউটপুট

মানদণ্ড পূরণ করে সমস্ত সংখ্যার একটি সীমিত (আপনার পছন্দ) তালিকা। সংখ্যাগুলি ক্রমতে উপস্থাপন করতে হবে। একটি অতিরিক্ত ট্রেলিং ডিলিমিটার গ্রহণযোগ্য। ডেটা স্ট্রাকচারের ঘেরগুলি (যেমন []এবং অনুরূপ) এছাড়াও গ্রহণযোগ্য।

উদাহরণ

Input: 3
Output: 5

Input: 4
Output: 5, 9, 10, 11, 13

Input: 5
Output: 5, 9, 10, 11, 13, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27, 29

এটি - ন্যূনতম পরিমাণে বাইট জয়ের উত্তর।


আমি মনে করি আপনি এন = 5 এর জন্য 23 মিস করেছেন।
xnor

@xnor আপনি সঠিক আছেন আপনাকে ধন্যবাদ, এবং হ্যাঁ, এটি এএল 94695 এর সমতুল্য নয়। হুম। oeis.org/A101082 বনাম oeis.org/A166934

@ VTCAKAVSMoACE হ্যাঁ যদি কেউ সীমিত করে রাখে এবং শেষ লাইনে \nএকটি লাগিয়ে রাখে \n, তবে ,ট্রেলিং দিয়ে সীমিত করাও ,গ্রহণযোগ্য হবে। আপডেট করা হয়েছে।

1
ইনপুট কি তালিকার মতো হতে পারে [1, 2, 3]?
kirbyfan64sos

@ kirbyfan64sos হ্যাঁ। আপডেট করা হয়েছে।

উত্তর:


7

পাইথ, 12 বাইট

f<2r.BT8U^2Q

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

ধারণা

যে কোনও ধনাত্মক সংখ্যার বাইনারি প্রতিনিধিত্ব সর্বদা 1 এস এর রান দিয়ে শুরু হয় , সম্ভবত অন্যান্য, 0 এস এবং 1 এর বিকল্প রান দ্বারা অনুসরণ করা । কমপক্ষে তিনটি পৃথক রান থাকলে, তাদের মধ্যে দুটিরই 1 টি রানের গ্যারান্টি রয়েছে ।

কোড

              (implicit) Store the evaluated input in Q.
         ^2Q  Calculate 2**Q.
f       U     Filter; for each T in [0, ..., 2**Q-1]:
    .BT         Compute T's binary representation.
   r   8        Perform run-length encoding.
                This returns a list of character/run-length pairs.
 <2             Discard the trailing two pairs.
                This returns a non-empty array if there are more than 2 runs.
              Keep T if the array was truthy (non-empty).

22

পাইথন, 48

lambda n:[i for i in range(2**n)if'01'in bin(i)]

আমি এটি ব্যাপকভাবে overthink হয়েছে। আমাদের কেবল বাইনারি সম্প্রসারণ রয়েছে কিনা তা খতিয়ে দেখা দরকার '01'

সেখানে দুটি রান হওয়ার জন্য ডানদিকের একটিটি অবশ্যই একটি এর আগে হওয়া উচিত 0। যদি কেবল একটি রান থাকে, তবে কোনও শীর্ষস্থানীয় 0থাকবে না, যাতে এটি ঘটে না।


পুরানো উত্তর:

lambda n:[i for i in range(2**n)if len(set(bin(i).split('0')))>2]

পাইথন বাইনারি উপস্থাপনা এখানে খুব সুন্দরভাবে কাজ করে। একটি বাইনারি নম্বর যেমন লেখা হয় bin(9)=='0b10110''0'একটি তালিকায় ফলাফল বিভক্ত

  • 0যে কোনও দুটি টানা দুইয়ের মধ্যে 0এবং যে কোনও ফাইনালের ডানদিকে শুরুর বাঁদিকে খালি স্ট্রিং0
  • bএক বা একাধিক নেতৃস্থানীয় চিঠিটি পরে
  • 1এর নেতৃত্বাধীন নয় এমন রান

প্রথম দুটি বিভাগ সর্বদা উপস্থিত থাকে, তবে শেষেরটি কেবল তখনই উপস্থিত থাকে যদি সেখানে এমন একটি রান 1থাকে যার মধ্যে শীর্ষস্থানীয় থাকে না '1', এবং কেবলমাত্র যদি একাধিক রান থাকে তবেই 1। সুতরাং, তালিকায় 2স্বতন্ত্র উপাদানগুলির চেয়ে বেশি রয়েছে কিনা তা যাচাই করা যথেষ্ট ।

পাইথন 3.5 {*_}এর জায়গায় আনপ্যাক করে 2 টি অক্ষর সাশ্রয় করে set(_)


/01/পরিবর্তে ধারণাটি ব্যবহার করার জন্য ধন্যবাদ /10+1/পার্লে আমি সেটার সুবিধা নিয়েছি ।
msh210

13

রুবি, 44 40 38 টি চর

অতিক্রম করা 44 এখনও নিয়মিত 44; (

->n{(0..2**n).select{|x|/01/=~'%b'%x}}

একটি বেনামে ফাংশন (প্রকৃতপক্ষে) যা পূর্ণসংখ্যা নেয় এবং একটি অ্যারে প্রদান করে returns

রেজেক্স ব্যবহার করুন /10+1/: একটি 1, কমপক্ষে একটি 0এবং তারপরে আরেকটি 1পয়েন্ট @histocrat আউট যদি 01স্ট্রিং যে কোন জায়গায়, সেখানে আবশ্যক একটি হতে 1এটা আগে কোথাও।


1
একটি ফরম্যাট স্ট্রিং ব্যবহার করে এখানে একটু খাটো: /10+1/=~'%b'%x। এছাড়াও, আপনি অন্তর্ভুক্ত ব্যাপ্তি ( 0..2**n) ব্যবহার করে একটি অক্ষর সংরক্ষণ করতে পারেন যেহেতু 2**nকখনও একাধিক রান থাকবে না।
হিস্টোক্র্যাট

@ হিস্টোক্র্যাট হু, আমি কখনই জানতাম না যে আপনি স্ট্রিংয়ের ক্রম এবং রেজেক্সটি ফ্লিপ করতে পারবেন =~। ধন্যবাদ!
ডোরকনবব

1
অপেক্ষা করুন, প্রকৃতপক্ষে রেজেক্স /01/ঠিক একইভাবে কাজ করে। যদি একটি 01থাকে তবে কোথাও কোথাও বাম দিকে 1 থাকতে হবে।
হিস্টোক্র্যাট

@ হিস্টোরোকট ওহ, এতো চালাক! এটি দুটি চরিত্র সংরক্ষণ করে।
ডুরকনব

7

জুলিয়া, 43 41 বাইট

n->filter(i->ismatch(r"01",bin(i)),1:2^n)

এটি একটি নামহীন ফাংশন তৈরি করে যা একটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি অ্যারে প্রদান করে। এটি হিস্টোক্রেটসের রেজেক্স ট্রিক ব্যবহার করে (ডুরকনব এর উত্তরে ব্যবহৃত), যেখানে 01কেবল পূর্ববর্তী 1 থাকলে মিলবে।

Ungolfed:

function f(n::Int)
    # Take the integers from 1 to 2^n and filter them down to
    # only those such that the binary representation of the integer
    # matches the regex /01/.
    filter(i -> ismatch(r"01", bin(i)), 1:2^n)
end

হিস্টোক্র্যাটসের কৌশল, আমার নয়। :)
ডুরকনব

@ ডুরকনব ওহে ওহে এখন আপনারা দুজনেই ক্রেডিট পাবেন। :)
অ্যালেক্স এ।

6

মতলব, 79 68 64 59

ধারণাটি বাইনারি সংখ্যাকে জিরো এবং সংখ্যার অ্যারে হিসাবে ব্যাখ্যা করছে এবং তারপরে প্রতি জোড়া প্রতিবেশীর মধ্যে পরম পার্থক্য গণনা করছে। যদি আমাদের 1 বা 2 এর বেশি গুনের পার্থক্য থাকে তবে স্পষ্টতই আমাদের দুটি বা তার বেশি সংখ্যক রান রয়েছে run নোট করুন যে এটি কেবলমাত্র যদি কাজ করে আমরা অগ্রণী শূন্যগুলি ছাড়াই বাইনারি সংখ্যার প্রতিনিধিত্ব করি works

@(n)find(arrayfun(@(k)sum(~~diff(dec2bin(k)+0))>1,1:2^n-1))

পুরানো সংস্করণ:

k=1:2^input('')-1;k(arrayfun(@(k)sum(~~diff(dec2bin(k)+0))>1,k))

for k=1:2^input('')-1;if sum(~~diff(dec2bin(k)+0))>1;disp(k);end;end

for k=1:2^input('')-1;if sum(~~conv(dec2bin(k)+0,[-1,1],'v'))>1;disp(k);end;end

6

জাভাস্ক্রিপ্ট (ES7), 89 85 72 69 62 বাইট

পবিত্র গরু, জেএসে রেঞ্জ তৈরি করা সহজ নয়। সম্ভবত এটি একটি আসল forলুপের সাথে সংক্ষিপ্ত হবে । না, আমি মিথ্যা বললাম; এটা আসলে কিছুটা দীর্ঘ। আচ্ছা ভালো. আমি অনুমান করি আমাকে কেবল 27 টি বাইট সংরক্ষণের জন্য স্থির করতে হবে। (Mwr247 কে 7 ধন্যবাদ!)

x=>[for(a of Array(1<<x).keys())if(/01/.test(a.toString(2)))a]

ফায়ারফক্সের সর্বশেষতম সংস্করণগুলিতে সঠিকভাবে কাজ করে তবে সম্ভবত অন্য কোনও ব্রাউজারে নয়। চেষ্টা কর:

<!--                               Try the test suite below!                              --><strong id="bytecount" style="display:inline; font-size:32px; font-family:Helvetica"></strong><strong id="bytediff" style="display:inline; margin-left:10px; font-size:32px; font-family:Helvetica; color:lightgray"></strong><br><br><pre style="margin:0">Code:</pre><textarea id="textbox" style="margin-top:5px; margin-bottom:5px"></textarea><br><pre style="margin:0">Input:</pre><textarea id="inputbox" style="margin-top:5px; margin-bottom:5px">5</textarea><br><button id="testbtn">Test!</button><button id="resetbtn">Reset</button><br><p><strong id="origheader" style="font-family:Helvetica; display:none">Original Code Output:</strong><p><div id="origoutput" style="margin-left:15px"></div><p><strong id="newheader" style="font-family:Helvetica; display:none">New Code Output:</strong><p><div id="newoutput" style="margin-left:15px"></div><script type="text/javascript" id="golfsnippet">var bytecount=document.getElementById("bytecount");var bytediff=document.getElementById("bytediff");var textbox=document.getElementById("textbox");var inputbox=document.getElementById("inputbox");var testbtn=document.getElementById("testbtn");var resetbtn=document.getElementById("resetbtn");var origheader=document.getElementById("origheader");var newheader=document.getElementById("newheader");var origoutput=document.getElementById("origoutput");var newoutput=document.getElementById("newoutput");textbox.style.width=inputbox.style.width=window.innerWidth-50+"px";var _originalCode="x=>[for(a of Array(1<<x).keys())if(/01/.test(a.toString(2)))a]";function getOriginalCode(){if(_originalCode!=null)return _originalCode;var allScripts=document.getElementsByTagName("script");for(var i=0;i<allScripts.length;i++){var script=allScripts[i];if(script.id!="golfsnippet"){originalCode=script.textContent.trim();return originalCode}}}function getNewCode(){return textbox.value.trim()}function getInput(){try{var inputText=inputbox.value.trim();var input=eval("["+inputText+"]");return input}catch(e){return null}}function setTextbox(s){textbox.value=s;onTextboxChange()}function setOutput(output,s){output.innerHTML=s}function addOutput(output,data){output.innerHTML+='<pre style="background-color:'+(data.type=="err"?"lightcoral":"lightgray")+'">'+escape(data.content)+"</pre>"}function getByteCount(s){return(new Blob([s],{encoding:"UTF-8",type:"text/plain;charset=UTF-8"})).size}function onTextboxChange(){var newLength=getByteCount(getNewCode());var oldLength=getByteCount(getOriginalCode());bytecount.innerHTML=newLength+" bytes";var diff=newLength-oldLength;if(diff>0){bytediff.innerHTML="(+"+diff+")";bytediff.style.color="lightcoral"}else if(diff<0){bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgreen"}else{bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgray"}}function onTestBtn(evt){origheader.style.display="inline";newheader.style.display="inline";setOutput(newoutput,"");setOutput(origoutput,"");var input=getInput();if(input===null){addOutput(origoutput,{type:"err",content:"Input is malformed. Using no input."});addOutput(newoutput,{type:"err",content:"Input is malformed. Using no input."});input=[]}doInterpret(getNewCode(),input,function(data){addOutput(newoutput,data)});doInterpret(getOriginalCode(),input,function(data){addOutput(origoutput,data)});evt.stopPropagation();return false}function onResetBtn(evt){setTextbox(getOriginalCode());origheader.style.display="none";newheader.style.display="none";setOutput(origoutput,"");setOutput(newoutput,"")}function escape(s){return s.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}window.alert=function(){};window.prompt=function(){};function doInterpret(code,input,cb){var workerCode=interpret.toString()+";function stdout(s){ self.postMessage( {'type': 'out', 'content': s} ); }"+" function stderr(s){ self.postMessage( {'type': 'err', 'content': s} ); }"+" function kill(){ self.close(); }"+" self.addEventListener('message', function(msg){ interpret(msg.data.code, msg.data.input); });";var interpreter=new Worker(URL.createObjectURL(new Blob([workerCode])));interpreter.addEventListener("message",function(msg){cb(msg.data)});interpreter.postMessage({"code":code,"input":input});setTimeout(function(){interpreter.terminate()},1E4)}setTimeout(function(){getOriginalCode();textbox.addEventListener("input",onTextboxChange);testbtn.addEventListener("click",onTestBtn);resetbtn.addEventListener("click",onResetBtn);setTextbox(getOriginalCode())},100);function interpret(code,input){window={};alert=function(s){stdout(s)};window.alert=alert;console.log=alert;prompt=function(s){if(input.length<1)stderr("not enough input");else{var nextInput=input[0];input=input.slice(1);return nextInput.toString()}};window.prompt=prompt;(function(){try{var evalResult=eval(code);if(typeof evalResult=="function"){var callResult=evalResult.apply(this,input);if(typeof callResult!="undefined")stdout(callResult)}}catch(e){stderr(e.message)}})()};</script>

( এই পৃষ্ঠা থেকে স্নিপেট নেওয়া হয়েছে )

পরামর্শ স্বাগত!


আপনি ব্যবহার করতে পারেন .keys()পরিবর্তে .fill()এবং aপরিবর্তে i62 জন্য খনি গিঁট:x=>[for(a of Array(1<<x).keys())if(/01/.test(a.toString(2)))a]
Mwr247

@ এমডব্লিউ 247 ধন্যবাদ! আমি আশ্চর্য হই যে এটি 62 বছরের কম
বয়সীতেও

6

হাস্কেল, 68 61 53 বাইট

দামিয়েন থেকে উন্নতি

g x|x`mod`4==1=x>4|2>1=g$x`div`2
a x=filter g[1..2^x]

ইতিহাস:

এটি বাগটি স্থির করে (স্যুইচড == এবং =, এবং দুটির শক্তির পরিবর্তে বর্গ)। এবং সত্যটি 2> 1 দিয়ে এবং 1> 2 দিয়ে মিথ্যা করুন। এছাড়াও উল্লেখ করতে ধন্যবাদ যে 2 ^ x সর্বদা ব্যর্থ হয়। থমাস কোওয়া এবং নিমিকে ধন্যবাদ

g x|x<5=1>2|x`mod`4==1=2>1|2>1=g$x`div`2
a x=filter g[1..2^x]

মূলত

g x|x<5=False|x`mod`4=1==True|2>1=g$x`div`2
a x=filter g[1..(x^2-1)]

যদি এটি পুরো প্রোগ্রাম হতে হয়,

g x|x<5=False|x`mod`4==1=True|2>1=g$x`div`2
main=interact$show.a
a x=filter g[1..2^(read x)]

1
লাম্বডাস ভাল আছেন, যেহেতু ওপি কোনও নামকৃত ফাংশন বা প্রোগ্রাম লিখতে নির্দিষ্ট করে নি। যাইহোক, পিপিসিজিতে আপনাকে স্বাগতম!
lirtosiast

1
আমি মনে করি আপনি বলতে চাইছেন 1..(2^x-1)যা 1.. (2^x)2 2 x থেকে সর্বদা ব্যর্থ হয়।
lirtosiast

আপনি ধ্রুবক প্রতিস্থাপন করতে পারেন Falseএবং Trueসঙ্গে 1>2এবং 1<2। আশেপাশে প্রথম বন্ধনের দরকার নেই 2^x-1। (বিটিডাব্লু: আপনার টাইপো আছে: এটি অবশ্যই হবে 4==1=True)।
নিমি

টাইপো সংশোধনের জন্য ধন্যবাদ। এটা আমার সময় গভীর রাত ছিল।
আকাংকা

দুর্দান্ত কৌশল! আমি মনে করি আপনি g কে কমিয়ে আনতে পারবেন: gx | x mod4 == 1 = x> 4 | 2> 1 = g $ x div2
ড্যামিয়েন

5

এপিএল, 34 27 বাইট

{0~⍨{⍵×2<+/2≢/⍵⊤⍨⍵/2}¨⍳2*⍵}

এটি একটি নামবিহীন মোনাডিক ফাংশন তৈরি করে যা ডানদিকে একটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি অ্যারে প্রদান করে।

ব্যাখ্যা:

                     }¨⍳2*⍵}  ⍝ For each integer from 1 to 2^input...
              ⍵⊤⍨⍵/2         ⍝ Get the binary representation as a vector
           2≢/                ⍝ Pairwise non-match, yielding a boolean vector
       2<+/                   ⍝ Check whether the number of trues is >2
     ⍵×                       ⍝ Yield the integer if so, otherwise 0
{0~⍨{                         ⍝ Remove the zeros from the resulting array

ডেনিসের জন্য 7 টি বাইট সংরক্ষণ করা!


4

আর, 55 47 বাইট

(@ অ্যালেক্স.এর কিছু সহায়তায়)

cat(grep("10+1",R.utils::intToBin(1:2^scan())))

কোনও সুবিধাজনক উপায়ে রূপান্তরিত সংখ্যার প্রদর্শন করতে আর-র একটি বিল্ট ইন ফাংশন নেই, তাই আমি এটির R.utils::intToBinজন্য ব্যবহার করছি , বাকি সমস্তগুলি কেবল মিলিত রেইগেক্স এক্সপ্রেশনটির অবস্থানের প্রতিবেদন করুন এবং স্টাডুটে মুদ্রণ করুন যখন একটি দ্বারা পৃথক করা হয়েছিল স্থান।


আমি মনে করি এর জন্য ডিফল্ট পৃথককারীটি catএকটি স্থান, সুতরাং আপনি ,sep=","7 বাইট সংরক্ষণ করে পুরোপুরি বাদ দিতে পারেন ।
অ্যালেক্স এ

@AlexA। হ্যাঁ, তাই আমি কি এখানে একটি স্পেসটি সেপ হিসাবে ব্যবহার করতে পারি? আমি নিশ্চিত ছিলাম না
ডেভিড আরেনবার্গ

1
ওপি আপনার পছন্দসইয়ের একটি ডিলিমিটার বলেছে, তাই আমি মনে করি যে কোনও স্থান যথেষ্ট যুক্তিসঙ্গত বলে মনে হচ্ছে। :)
অ্যালেক্স এ

এটি কি সত্যই বিড়ালের কাজটি প্রয়োজন? এটি ছাড়া এটি আউটপুটটি সীমিত করা হবে। বাম হাতের কাউন্টারটি ইউআই এর অংশ, আপনি যদি কোনও ফাইলটিতে লিখেন তবে এটি অন্তর্ভুক্ত হবে না সুতরাং এটি আউটপুটটির অংশ নয়।
freekvd

@ ফ্রিভিডি এটি ছাড়াই মুদ্রণ করবে না, এই সাইটের নির্বোধ বিধি সম্পর্কে কিছু।
ডেভিড আরেনবুর্গ

4

সিজেম, ১৪

2qi#{2b2,#)},p

ডেনিসকে 3 বাইট সংক্ষিপ্ত ধন্যবাদ। এটি অনলাইনে চেষ্টা করুন


কীভাবে 2be`,2>
jimmy23013

2
2be`2>এবং 2,#)পাশাপাশি কাজ করা উচিত। এছাড়াও, ওপি স্পষ্ট করে দিয়েছে যে আউটপুট তালিকা আকারে মুদ্রণ করা যায়।
ডেনিস

4

জাভাস্ক্রিপ্ট (ES6), 69 68 67 62 বাইট

a=>[...Array(1<<a).keys()].filter(i=>/01/.test(i.toString(2)))

আজ আমি ভরাট বা মানচিত্রের ব্যবহার ছাড়াই গতিশীলভাবে অ্যারে পূরণের একটি নতুন সংক্ষিপ্ততর উপায় আবিষ্কার করেছি। করায় x=>[...Array(x).keys()]0 থেকে x পর্যন্ত রেঞ্জের অ্যারে ফিরে আসবে। আপনি যদি নিজের নিজস্ব পরিসর / মানগুলি সংজ্ঞায়িত করতে চান তবে x=>[...Array(x)].map((a,i)=>i)এটি ব্যবহার করুন , কারণ এটি কেবল কয়েক বাইট বেশি।


4

জাভা, 214 165 155 154 148 141 110 বাইট

এই জমাটি জাভাতে কোনও সংখ্যার বাইনারি স্ট্রিং প্রতিনিধিত্বকারী কখনও শুরুর শূন্য থাকে না তা এই সত্যটি কাজে লাগায়। "01" স্ট্রিং যদি কোনও সংখ্যার বাইনারি উপস্থাপনায় উপস্থিত হয় তবে অবশ্যই এটি করা উচিত এটি "1" সংখ্যার দ্বিতীয় উপস্থিতি চিহ্নিত ।

Golfed:

String f(int l){String r="";for(long i=5;i<1L<<l;++i)if(Long.toString(i,2).contains("01"))r+=i+", ";return r;}

Ungolfed:

public class NumbersWithMultipleRunsOfOnes {

  public static void main(String[] a) {
    // @formatter:off
    String[][] testData = new String[][] {
      { "3", "5" },
      { "4", "5, 9, 10, 11, 13" },
      { "5", "5, 9, 10, 11, 13, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27, 29" }
    };
    // @formatter:on

    for (String[] data : testData) {
      System.out.println("Input: " + data[0]);
      System.out.println("Expected: " + data[1]);
      System.out.print("Actual:   ");
      System.out.println(new NumbersWithMultipleRunsOfOnes().f(Integer.parseInt(data[0])));
      System.out.println();
    }
  }

  // Begin golf
  String f(int l) {
    String r = "";
    for (long i = 5; i < 1L << l; ++i)
      if (Long.toString(i, 2).contains("01")) r += i + ", ";
    return r;
  }
  // End golf
}

প্রোগ্রাম আউটপুট (মনে রাখবেন, পেছনের ডিলিমিটারগুলি গ্রহণযোগ্য হবে):

Input: 3
Expected: 5
Actual:   5, 

Input: 4
Expected: 5, 9, 10, 11, 13
Actual:   5, 9, 10, 11, 13, 

Input: 5
Expected: 5, 9, 10, 11, 13, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27, 29
Actual:   5, 9, 10, 11, 13, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27, 29, 

আপনি intকাউন্টার ভেরিয়েবলের জন্য ব্যবহার করবেন না?
flawr

জাভাতে সমস্ত পূর্ণসংখ্যার প্রকার স্বাক্ষরযুক্ত নয়। 32 বিট ইতিবাচক পূর্ণসংখ্যার সাথে কাজ করার জন্য, একটি 64 বিট longপ্রয়োজন required উপরন্তু, একটি ব্যবহার intআসলে হবে বৃদ্ধি কারণে উল্লেখ কোডের আকার Integerরাপার ক্লাস যা সংখ্যা পার্সিং করে। আমি মনে করি স্থান বাঁচানোর সম্ভাব্য জায়গাটি রেজেক্স হবে তবে আমার পরীক্ষায় দেখা গেছে যে আমার নেতৃত্ব দিতে হবে এবং অনুসরণ করতে হবে.*

ওহ ঠিক আছে, কিন্তু আমি ভেবেছিলাম আপনি কি দিয়ে Longর‌্যাপারটি ব্যবহার করতে পারবেন int? (ভাল না এই ক্ষেত্রে কিন্তু সাধারণত?)
flawr

হ্যাঁ, প্যারামিটার হিসাবে ব্যবহার intকরার longসময় এটি প্রচার করবে Long। এই ক্ষেত্রে যদিও intসাইন বিটের কারণে ব্যবহারের কোনও উপায় নেই তবে Integerএটি দীর্ঘতর Long। তবুও, আমি জাভা হিসাবে ভার্বোস হিসাবে কোনও ভাষা থেকে কিছু অতিরিক্ত স্থান নিচু করার কয়েকটি উপায় খুঁজে পেয়েছি।

আপনি কি new Long()পরিবর্তে ব্যবহার করতে পারেন Long.parseLong()?
Ypnypn

4

সি (জিসিসি) , 111 99 বাইট

long i,x;main(a,b)char**b;{for(;++i<1L<<atol(b[1]);x>>ffsl(~x)-1&&printf("%ld,",i))x=i>>ffsl(i)-1;}

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

12 বাইট শ্যাভেজ @ সিলিংক্যাটকে ধন্যবাদ!

Ungolfed:

int main(int a, char **b) {
  for(long i = 0, x = 0; ++i < (1LL << atol(b[1])); ) {
    x = i >> (ffsl(i) - 1);
    if (x >> (ffsl(~x) - 1))
      printf("%ld,", i);
  }
}

Ffsl () ফাংশনটি আপনাকে প্রথম বিটের সূচক দেয় যা দীর্ঘ পূর্ণসংখ্যায় সেট করা হয়। সুতরাং আমরা i = 12 ^ সংখ্যা_ফেস_বিট থেকে লুপ করব। আমরা সর্বনিম্ন উল্লেখযোগ্য প্রান্তে পর পরের সমস্ত শূন্য বিট অপসারণ না করা পর্যন্ত আমরা ডান স্থানান্তরিত xহয়ে iরইলাম। তারপরে, আমরা xসর্বনিম্ন লক্ষণীয় শেষে একটানা 1 টি বিট অপসারণ না করা অবধি ডান স্থানান্তরিত করব । যদি ফলাফলটি এখনও শূন্য হয় না তবে আমরা একটি মিল খুঁজে পেয়েছি।


2
আমি বলতে চাই যে আমি সত্যিই পছন্দ করি যে কেউ "স্ট্রিং এবং রেজেক্সে রূপান্তর" পদ্ধতির পরিবর্তে কিছুটা ম্যানিপুলেশন উত্তর করেছিলেন।

@ মিশেলটি আমি আশ্চর্য হই যে কেবল আদিম বিটওয়াইজ অপারেশনগুলি ব্যবহার করে একটি সংক্ষিপ্ত সমাধান রয়েছে কিনা।
lirtosiast

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

মজাদার. আপনি পরীক্ষাটি এর মতো করেও লিখতে পারেন: if (popcount(i ^ (i*2))>3)এবং পপকাউন্ট () বিটওয়াইএসএন্ডস এবং শিফ্ট ক্রিয়াকলাপগুলিতে বিস্তৃত করুন। তবে এতে বেশ লম্বা কোড আসবে।
জি স্লাইপেন

1
টমাসকওয়া y = x | (x-1) সমস্ত ডানদিকে 0 বিট চালু করতে। তারপরে z = y এবং (y + 1) সমস্ত পিছনে থাকা 1 টি বিট বন্ধ করতে। Z যদি শূন্য নয়, তবে মূল সংখ্যার একাধিক রান ছিল had
অ্যালকিমিস্ট

3

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

f=n=>Array(1<<n).fill().map((_,x)=>/01/.test(x.toString(2))?x+',':'').join``

//TEST
for(i=1;i<16;i++)O.innerHTML+=i+' -> '+f(i)+'\n'
<pre id=O></pre>


@ডলক নং, ফলাফলটি এমন কিছু হবে,,,,,5,,,,9,10,11,,13,,,,17,18,19,20,21,22,23,,25,26,27,,29,,
এডসি 65

3

কে 5, 19 বাইট

এটি ডেনিসের সমাধান হিসাবে অনুরূপ নীতিগুলি পরিচালনা করে, তবে সুবিধা নেওয়ার জন্য কম বিল্টিন সহ।

{&2<+/'~0=':'+!x#2}

প্রথমে বাইনারি এক্স-টিপলস ( +!x#2) এর একটি সিরিজ তৈরি করুন , তারপরে প্রতিটি টিপলের জন্য প্রতিটি পয়েন্টটি আবিষ্কার করুন যে আমরা যদি এই উদ্দেশ্যে (1 ~0=':') তালিকার 1-এলিমেন্টটিকে 0 হিসাবে বিবেচনা করি তবে অঙ্কটি আগেরটির সাথে মেলে না । আমাদের সমাধানগুলি যেখানে প্রতিটি রান গণনার যোগফলের তুলনায় দুটি কম। ( &2<+/')।

প্রতিটি মধ্যবর্তী পদক্ষেপ দেখানো আরও পরিষ্কার:

  4#2
2 2 2 2

  !4#2
(0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1)

  +!4#2
(0 0 0 0
 0 0 0 1
 0 0 1 0
 0 0 1 1
 0 1 0 0
 0 1 0 1
 0 1 1 0
 0 1 1 1
 1 0 0 0
 1 0 0 1
 1 0 1 0
 1 0 1 1
 1 1 0 0
 1 1 0 1
 1 1 1 0
 1 1 1 1)

  ~0=':'+!4#2
(0 0 0 0
 0 0 0 1
 0 0 1 1
 0 0 1 0
 0 1 1 0
 0 1 1 1
 0 1 0 1
 0 1 0 0
 1 1 0 0
 1 1 0 1
 1 1 1 1
 1 1 1 0
 1 0 1 0
 1 0 1 1
 1 0 0 1
 1 0 0 0)

  +/'~0=':'+!4#2
0 1 2 1 2 3 2 1 2 3 4 3 2 3 2 1

  2<+/'~0=':'+!4#2
0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0

  &2<+/'~0=':'+!4#2
5 9 10 11 13

এবং সব একসাথে:

  {&2<+/'~0=':'+!x#2}'3 4 5 
(,5
 5 9 10 11 13
 5 9 10 11 13 17 18 19 20 21 22 23 25 26 27 29)

2

পিপ, 13 + 1 = 14 বাইট

কমান্ড লাইন থেকে ইনপুট নেয় এবং -sআউটপুট সংখ্যার মধ্যে ফাঁকির জন্য পতাকা ব্যবহার করে ।

01NTB_FI,2**a

খুব সোজা: বিল্ড range(2**a)এবং ফিল্টার চালু lambda _: "01" in toBinary(_)01স্বাধীনভাবে ধারণাটি ভাবতে পেরে আমি বেশ খুশি হয়েছিলাম । আশেপাশে কোনও কোটের প্রয়োজন নেই 01কারণ এটি একটি সংখ্যাগত আক্ষরিক হিসাবে স্ক্যান করে (পিপগুলিতে সংখ্যা এবং স্ট্রিং একই ধরণের)।


2

জুলিয়া, 40 বাইট

n->filter(i->count_ones(i$i>>1)>2,1:2^n)

এটি অন্যান্য জুলিয়া সমাধানের জন্য কিছুটা ভিন্ন পদ্ধতির ব্যবহার করে - বিট স্ট্রিংয়ের "01" এর জন্য স্ট্রিং অনুসন্ধান না করে সংখ্যাটি শর্তটি সন্তুষ্ট করে কিনা তা নির্ধারণ করতে এটি কিছু গণিত ব্যবহার করে।

i$i>>1যেখানে শূন্য থেকে এক, বা এক থেকে শূন্যে পরিবর্তন হবে সেই জায়গাগুলিতে কেবল সেইগুলিই থাকবে। এর মতো, iশূন্য এবং একটি পর্যাপ্ত সময়ের মধ্যে পিছনে পিছনে স্যুইচ করার জন্য কমপক্ষে তিনটি অবশ্যই থাকতে হবে । count_onesসংখ্যার সন্ধান করে এবং তারপরে filterপর্যাপ্ত পরিমাণ নেই এমনগুলি সরিয়ে দেয়।


2

সি ++, 197 188 141 বাইট

Note: এই লেখা হয়েছিল এবং MSVC ++, 2013 ব্যবহার পরীক্ষিত এটা প্রদর্শিত #includeING<iostream> এই কাজ তৈরি করার প্রয়োজনীয় সি হেডার সব অন্তর্ভুক্ত করা হয়েছে। এটি আরও উপস্থিত হয় যে কোডটি আর সত্যিকারের সি ++ নয়, তবে সি ++ ব্যবহার করে সংকলন করলে সেই শিরোলেটের কৌশলটি মঞ্জুর করে যা আরও বেশি সি সি শিরোনামের তুলনায় কোডের আকারকে হ্রাস করে।

ব্যবহার printfপরিবর্তে করা coutএকটি দম্পতি বাইট সংরক্ষণ করে।

Golfed:

#include<iostream>
int main(int a,char**b){char c[34];for(long i=5;i<1L<<atol(b[1]);++i){_ltoa(i,c,2);if(strstr(c,"01"))printf("%ld\n",i);}}

Ungolfed:

#include <iostream>
int main(int a, char **b) {
  char c[34];
  for (long i = 5; i < 1L << atol(b[1]); ++i) {
    _ltoa(i, c, 2);
    if (strstr(c, "01"))
      printf("%ld\n", i);
  }
}

Yoiu '\n'std :: endl (সাধারণভাবে) এর পরিবর্তে ব্যবহার করতে পারেন বা ','যেহেতু যে কোনও বিভাজক বৈধ এবং একটি অনুবর্তনকারী ঠিক আছে।
জি। স্লিপেন

রেগেক্সগুলির পরিবর্তে, আপনি কেবল এটি দিয়ে করতে পারেন strstr(c,"01")
জি স্লাইপেন

@ জি.স্লাইপেন ধন্যবাদ! আমি সত্যিই আমার জাভা সমাধানটি অনুলিপি করে সি ++ তে রূপান্তর করেছি, তবে সাধারণ সমাধানটি প্রায়শই সেরা। আমার সম্ভবত এখন জাভা এর সাথে অনুরূপ কিছু করা উচিত।

দুটি ছোট ত্রুটি: 1<<atol(b[1])হওয়া উচিত 1L<<atol(b[1]), অন্যথায় এই অভিব্যক্তিটির ফলাফল একটি স্বাক্ষরিত 32 বিট পূর্ণসংখ্যার হবে, যার অর্থ কোডটি কেবলমাত্র 2 ^ 30 অবধি চলবে। %ldমুদ্রণের জন্য 2 ^ 31 থেকে 2 ^ 32 এর মধ্যে নম্বর মুদ্রণের জন্য প্রিন্টফের ব্যবহার করা উচিত ।
জি স্লিপেন

2

পার্ল 5, 55 53 49 47 41 বাইট

sprintf("%b",$_)=~/01/&&say for 0..2**<>

54 52 48 46 40 বাইট, এর -Eপরিবর্তে পতাকার জন্য এক -e


পরিবর্তে ব্যবহার সম্পর্কে ইঙ্গিতটির জন্য xnor ধন্যবাদ , যা দুটি বাইট সংরক্ষণ করেছে।/01//10+1/

পরিবর্তে ডেনিসকে ব্যবহার করার পরামর্শের জন্য ধন্যবাদ , যা ছয়টি বাইট সংরক্ষণ করেছিল।<>$ARGV[0]


2

সি, 84 81 বাইট

long i,j,k;main(){for(scanf("%ld",&j);++i<1L<<j;k&k+1&&printf("%ld ",i))k=i|i-1;}

এটি সহজ বিটওয়াইজ অপারেটরগুলি ব্যবহারের সম্ভাবনা সম্পর্কে এই প্রশ্নের উত্তর আমি অন্য সি উত্তরে যে মন্তব্য করেছি তার ভিত্তিতে। I | (i-1) বিবৃতিতে সমস্ত পিছনে 0 বিট 1 এ স্যুইচ করে এটি কাজ করে। তারপরে এটি কে & (কে + 1) ব্যবহার করে 1 টি বিট পিছনে 0 বিট করে। এটির শূন্যের ফলস্বরূপ যদি সেখানে কেবল একটি রান থাকে এবং অন্যথায় শূন্য হয় না। আমি অনুমান করি যে দীর্ঘ 64৪-বিট, তবে এর পরিবর্তে int64_t ব্যবহার করে তিনটি বাইট ব্যয়ে এটি সংশোধন করতে পারে।

Ungolfed

long i,j,k;
main()
{
    for(scanf("%ld",&j);++i<1L<<j;)
    {
        k=i|(i-1);
        if((k&(k+1)) == 0)
            printf("%d ",i);
    }
}

int64_tশুধুমাত্র যদি আপনি সংজ্ঞায়িত হয় #include<stdint.h>। bit৪ বিট অপারেশন নিশ্চিতকরণের long longজন্য 5 বাইট ব্যয়ে প্রকারের প্রয়োজন ।
chqrlie

মনে রাখবেন যে আপনি বিন্যাসের long iজন্য অপরিজ্ঞাপিত আচরণকে পাশ %dকাটাচ্ছেন। উল্লেখ্য যে ()জন্য অতিরিক্ত হয় &এবং |অপারেটর। এই ফিক্সিং 3 বাইট সঞ্চয়! long i,j,k;main(){for(scanf("%ld",&j);++i<1L<<j;k&k+1&&printf("%ld ",i))k=i|i-1;}
chqrlie

@ chqrlie সব খুব ভাল পয়েন্ট। ধন্যবাদ.
Alchymist


1

পাইথন 2.7, 89 বাইট

print[i for i in range(1,2**input())if[n[:1]for n in bin(i)[2:].split("0")].count("1")-1]

আমি মনে করি এটি কিছুটা গল্ফ করা যেতে পারে।


@ mbomb007 আমি চেষ্টা করেছিলাম, এটি কার্যকর হয়নি।
লুভজো

@ mbomb007 আপনি কি পাইথন ২.7 ব্যবহার করছেন?
লুভজো

২.7 এর কোন সংস্করণটি কী বিবেচনা করে? আমি এটি repl.it (2.7.2) এ চালান এবং এটি কাজ করে না, তবে আইডিয়ন (২. 2..১০) কাজ করে। এটি repl.it এ কেবল একটি বাগ হতে পারে, তবে এটি কোনও সংস্করণের পার্থক্য নয়।
mbomb007

আপনার প্রোগ্রামটি ভুলভাবে 0আউটপুট প্রিন্ট করে।
mbomb007

এছাড়াও print[i for i in range(2**input())if[n[:1]for n in bin(i)[2:].split("0")].count("1")-1]দুটি বাইট সংক্ষিপ্ত। তবে 0আপনি যদি ব্যবহার করেন তবে ঠিক একই দৈর্ঘ্য (89) হবে range(1,2**input())
mbomb007

1

টিআই-বেসিক, 34 32 30 বাইট

একটি টিআই -83 + / 84 + সিরিজের ক্যালকুলেটরের জন্য।

For(X,5,e^(Ans
If log(sum(2=int(4fPart(X/2^randIntNoRep(1,Ans
Disp X
End

একটি সংখ্যার জন্য ১ টির দুটি রান রাখতে, এটিতে দুটি থাকতে হবে 10 টি যখন আমরা বাইনারি উপস্থাপনের উপরে একটি পিছনে শূন্যটি পরীক্ষা করি।

বরং বাইনারি উপস্থাপনা তৈরী করা এবং একটি জন্য চেক 10, আমরা গাণিতিকভাবে 4 (দ্বারা বাকি ব্যবহার করে বিট জোড়া পরীক্ষা int(4fPart(), যা দেব 2যেখানে একটি 10। যেহেতু আমরা অর্ডার সম্পর্কে যত্ন নিই না, randIntNoRep(তা হল ক্ষয়কারীদের তালিকা তৈরি করার সবচেয়ে সংক্ষিপ্ততম উপায়।

আমরা log(রান সংখ্যাটি পরীক্ষা করতে ব্যবহার করি :

  • যদি কমপক্ষে 2 রান থাকে, তবে log(ইতিবাচক, এবং সংখ্যাটি প্রদর্শিত হয়।

  • যদি একটি রান হয়, তবে এটি log(0 হয়, এবং সংখ্যাটি প্রদর্শিত হয় না।

  • যদি কোনও রান না থাকে (যা প্রথমে X = 2 ^ Ans এ ঘটে), তারপরে log(একটি ERR: DOMAIN নিক্ষেপ করে, আউটপুটটি ঠিক সঠিক পয়েন্টে থামিয়ে দেয়।

আমরা e^(Ansলুপটির শেষ যুক্তি হিসাবে ব্যবহার করি For(— এটি সর্বদা বৃহত্তর 2^Ans, তবে e^(এটি একটিমাত্র টোকেন, তাই এটি একটি বাইট আরও খাটো।

এন = 4 এর জন্য ইনপুট / আউটপুট:

4:prgmRUNSONES
               5
               9
              10
              11
              13

তারপরে ক্যালকুলেটর একটি ত্রুটি ছুড়ে দেয়; ত্রুটির স্ক্রিনটি এরকম দেখাচ্ছে:

ERR:DOMAIN
1:Quit
2:Goto

1 টিপে চাপলে হোম স্ক্রিনটি আবার প্রদর্শিত হয়:

4:prgmRUNSONES
               5
               9
              10
              11
              13
           Error

টিআই ক্যালকুলেটরগুলি কোনও বিসিডি ফ্লাটে সমস্ত সংখ্যার নির্ভুলতার 14 অঙ্কের সাথে সঞ্চয় করে, কোনও ইনট বা বাইনারি ফ্লোট নয়। অতএব, দুটি এর চেয়ে বড় দুটি দ্বারা বিভাজনগুলি 2^14সঠিক নাও হতে পারে। যদিও আমি যাচাই করেছি যে সবচেয়ে জটিল সংখ্যা, 3*2^30-1এবং 2^32-1, সঠিকভাবে পরিচালনা করা হয়েছে, তবুও আমি রাউন্ডিং ত্রুটির সম্ভাবনাটি অস্বীকার করি না। কোনও ইনপুটের জন্য ত্রুটি থাকলে আমি অবাক হব।


আপনি 32 বাইট কিভাবে গণনা করবেন? এটি আমার কাছে 70 টির মতো (নতুন লাইনের সহ) looks
এমএস 210

টিআই-বেসিক টোকানাইজড; এটি একটি স্বত্বাধিকারী অক্ষর এনকোডিং ব্যবহার করে যাতে এই সমস্ত কমান্ড একটি করে প্রতিটি বাইট এবং অন্যটি দুটি হয়। এই এনকোডিং দ্বারা স্কোর করা সম্প্রদায়ের sensকমত্য - দেখুন sensকমত্য - বিশদর জন্য meta.codegolf.stackexchange.com/a/4764/39328 দেখুন।
lirtosiast

ওহ ঠান্ডা. ধন্যবাদ এফওয়াইআই
এমএস 210

1
  • এটি flawr এর উত্তর পরাজিত করতে পারে না কিন্তু আমি প্রশ্নের মোহন প্রতিহত করতে পারে না

মতলব(90)(70)

j=input('');for l=2:j-1,a=1;for k=l:-1:2,a=a+2^k;a:a+2^(k-1)-2,end,end

ফাঁসি

4

উত্তর =

5

উত্তর =

9    10    11

উত্তর =

13

নীতি

  • সংখ্যার ধারাবাহিকটি 1 এর ফলস্বরূপ স্ট্রিপের ফল, যার অর্থ f (n, l) = 2 ^ l + 2 ^ (l + 1) + .... 2 ^ n

ব্যবধান থেকে নেওয়া যে কোনও সংখ্যা] f (n, l), f (n, l) + 2 ^ (l-1) [যেখানে l> 1 এই শর্তটি যাচাই করে, সুতরাং ফলাফলটি এই সিরিজের অবহেলার ফলাফল পদ n।

এক্স = 1

x = x + 1 = 01,

এক্স = X + + 2 ^ 0 =11 ,

এক্স = এক্স + 1 টি =001,

এক্স = X + + 2 ^ 1 =011 ,

এক্স = X + + 2 ^ 0 =111 ,

এক্স = এক্স + 1 টি =0001,

এক্স = X + + 2 ^ 2 =0011 ,

এক্স = X + + 2 ^ 1 =0111 ,

এক্স = X + + 2 ^ 0 =0111 ,

এক্স = এক্স + 1 টি =1111 ...

x + 1, x = x + 2 ^ n, x = x + 2 ^ (এন -1) ... x = x + 2 ^ 0

আমার প্রোগ্রাম প্রতিটি দুটি লাইনের মধ্যে পরিসর মুদ্রণ করে (যদি বিদ্যমান থাকে)


সম্পাদনা: দুর্ভাগ্যক্রমে এটি এটিকে আরও গল্ফ করে না তবে আমি এই ধারণাটি প্রক্রিয়া করার আরও একটি পদ্ধতির যোগ করতে চেয়েছিলাম

অনেকটা সংগ্রামের পরে আমি এই সিরিজের গাণিতিক উপস্থাপনাটি সফল করতে পেরেছি যা হ'ল:

2 ^ l (0 + 1 + 2 ^ 1 + ... 2 ^ কে) l + কে <এন এর সাথে

= 2 ^ ঠ (2 ^ K-1)

স্কোর = 90

@(n)setdiff(0:2^n-1,arrayfun(@(x)2^mod(x,(n+1)-fix(x/(n+1)))*(2^fix(x/(n+1))-1),0:(n+1)^2))

1

সি, 103 102 বাইট

long i,x;main(int a,char**b){for(;++i<1L<<atoi(b[1]);)for(x=i;x>4&&(x%4!=1||!printf("%ld,",i));x/=2);}

01বাইনারি উপস্থাপনায় প্যাটার্নটির বিষয়ে xnor মন্তব্যের সুযোগ নিয়ে জি.স্লাইপেন এন্ট্রিতে বিস্তৃতকরণ (প্রকৃতপক্ষে চুক্তি করা) , তবে কেবলমাত্র স্ট্যান্ডার্ড ফাংশন এবং কিছুটা বিড়ম্বনা using

অবরুদ্ধ সংস্করণ:

long i, x;
main(int a, char**b) {
    for (; ++i < 1L << atoi(b[1]);) {
        for (x = i; x > 4 && (x % 4 != 1 || !printf("%ld,", i)); x /= 2)
            ;
    }
}

অভ্যন্তরীণ লুপটি iবাইনারি প্যাটার্নটির জন্য স্ক্যান 01করে পুনরাবৃত্তভাবে xডানদিকে সরিয়ে যতক্ষণ না এতে 3 বিট থাকে। printfমুদ্রিত অক্ষরের সংখ্যা প্রদান করে, তাই কখনই না 0, সুতরাং printfকোনও breakবিবৃতি প্রয়োজন বর্জন করে, অভ্যন্তরীণ লুপ পরীক্ষাটি পরে ব্যর্থ হয় ।

সি ++, 129 128 বাইট

একই ধারণাটি গ্রহণ করে, সি ++ বৈকল্পিক এখানে রয়েছে:

#include<iostream>
long i,x;int main(int a,char**b){for(;++i<1L<<atoi(b[1]);)for(x=i;x>4&&(x%4!=1||!(std::cout<<i<<','));x/=2);}

প্রযুক্তিগতভাবে, আমার অতিরিক্ত 5 বাইটের জন্য 64 বিট অপারেশন এবং গণনা নিশ্চিত করার জন্য iএকটি long longকরা উচিত 2^32, তবে আধুনিক প্ল্যাটফর্মগুলিতে 64 বিট ইনট রয়েছে।


1

জাভাস্ক্রিপ্ট ES6, 60 বাইট

কোড

n=>[...Array(1<<n).keys()].filter(g=x=>x>4?x%4==1|g(x>>1):0)

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

ব্যাখ্যা

[...Array(1<<n).keys()]                                          Create an array of numbers from 0 to 2^n-1
                       .filter(                                  Find the numbers which meet criteria
                               g=x=>x>4?                  :0     If x is less than or equal to four return zero (false/invalid)
                                        x>4?x%4==1|              If the binary pattern ends with 01 return one (true/valid)
                                                   g(x>>1)       Otherwise bitshift right by one and try again

0

সি (সাজান - জিসিসিতে সতর্কতা সহ সংকলন) - 103

এটি প্রিন্টফ ছাড়া কোনও ধরণের লাইব্রেরি ফাংশন ব্যবহার করে না। আপনি এটি দেখে বুঝতে পারেন যে এটিকে মানদণ্ডের মান্যতা তৈরি করতে বা ইউবি এড়াতে কোনও প্রচেষ্টা করা হয়নি।

x,c;main(n,v){n--;for(;c<1<<n;c++)for(v=0;v<32;v++)if(c&1<<v){if(x&&x<v&&printf("%d ",c))break;x=v+1;}}

এটিকে সামঞ্জস্যপূর্ণ করার জন্য আপনাকে স্টিডিওএইচ সহ অনেকগুলি কাজ করতে হবে যা এটিকে যতটা সম্ভব ছোট করার স্পিরিটের বিরুদ্ধে হবে।

এটির সংক্ষিপ্ত করার জন্য কারও কাছে যদি পরামর্শ থাকে তবে দয়া করে আমাকে জানান।



0

পাইথন, 44 বাইট

ঠিক আছে, এটি সম্ভবত ছোট হতে পারে তবে এটি আমার প্রথম কোডগল্ফ:

x=1
while True:
    if '01' in bin(x):
        print(x)
    x+=1

এই প্রশ্নের উত্তরটি ভাবুন, দয়া করে ভোটটি ডাউন করবেন না যদি তা না হয় তবে নীচে এটিতে যা ভুল তা পোস্ট করুন।


1
আপনাকে পেতে ইনপুট নিতে হবে ( input()আদর্শ) nএবং তারপরে 2^n-1অনির্দিষ্টকালের জন্য লুপিং না করে কেবল গণনা করা উচিত। এছাড়াও, আপনি নেস্টিংয়ের জন্য 4 এবং 8 এর পরিবর্তে 1 এবং 2 স্পেস ব্যবহার করতে পারেন, এবং mapএকটি তালিকা বোঝার ব্যবহার বা সম্ভবত আপনার কোডটি খুব অল্প করে ছোট করবে।
মেগো

0

ভাল স্কোর এর অন্য একটি পৃথক মতলব উত্তর।

মতলব 60(57)

@(n)find(mod(log2(bitcmp(1:2^n,fix(log2(1:2^n)+1))+1),1))

ফাঁসি

>> @(n)find(mod(log2(bitcmp(1:2^n,fix(log2(1:2^n)+1))+1),1))

ans =

@(n)find(mod(log2(bitcmp(1:2^n,fix(log2(1:2^n)+1))+1),1))

>> ans(5)

ans =

 5     9    10    11    13    17    18    19    20    21    22    23    25    26    27    29

  • ধারণাটি এক্স সংখ্যাগুলি তুলেছে যেখানে বাইনারি উপস্থাপনা - (x) +1 এর কেবলমাত্র একটির উপস্থিতি নেই1

উদাহরণ:

0000111প্রত্যাখ্যান করা হয়েছে কারণ ~ x = 1111, ~ x + 1 = এ 00001এক অঙ্ক = 1 রয়েছে

0100111গ্রহণ করা হয়েছে কারণ ~ x = 1011, ~ x + 1 = এ 0111অনেকগুলি 1 রয়েছে

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