কিছুটা, একটা নিবল বা বাইট?


45

এই চ্যালেঞ্জ দ্বারা অনুপ্রাণিত

পরিসীমাটিতে একটি পূর্ণসংখ্যা দেওয়া হয় 0 <= n < 2**64, এটি ন্যূনতম আকারের কন্টেইনারটি আউটপুট দেয় এটি এর বাইরে ফিট করতে পারে

  • বিট: 1
  • স্তন্যপান: 4
  • বাইট: 8
  • সংক্ষিপ্ত: 16
  • int: 32
  • দীর্ঘ: 64

Testcases:

0 -> 1
1 -> 1
2 -> 4
15 -> 4
16 -> 8
123 -> 8
260 -> 16
131313 -> 32
34359750709 -> 64

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins



1
@ এথ প্রডাকশন এটি হ'ল তবে হায়, এটি হয় না (এটি করে এমন একটি অ্যালগরিদম লিখতে আমার অনেক বেশি সময় লেগেছিল)
ব্লু

আমি যদি সমস্যাটি বুঝতে পারি ... অপেক্ষা করুন, এটির চেয়ে সমস্ত কি পরবর্তী মৌলিক কাঠামোর সাথে গোল করে সংখ্যাটি সংযুক্ত করতে প্রয়োজনীয় বিটগুলির পরিমাণ?
z0rberg এর

2
ধন্যবাদ! আমি মন্তব্যটি লেখার সময় এবং এটির দেরীতে সম্পাদনা করার সময় এটি উপলব্ধি করেছিলাম। আমার ধারণা আমি কথা বলতে রাবার হাঁসের দরকার ...
z0rberg এর

2
@ ড্যানিয়েল উত্তরগুলি এখানে অন্য প্রশ্নের সম্পূর্ণ ভিন্ন দৃষ্টিভঙ্গি নিয়েছে। যখন আমি বলি 'অনুপ্রাণিত' এর অর্থ এটি 'সদৃশ' নয়। এই প্রশ্নের জন্য বৈধ হতে কোনও উত্তর তুচ্ছভাবে সংশোধন করা যায়নি
ব্লু

উত্তর:



22

পাইথন, 39 বাইট

f=lambda n:4**(n>1)*(n<16)or 2*f(n**.5)

2 এর আউটপুটগুলি এড়ানোর জন্য কিছু বিশেষ ক্যাসিং সহ nনীচের দিকে যাওয়ার জন্য বর্গমূলকে কতবার নিতে হবে তা গণনা করে 16

2 যদি অন্তর্ভুক্ত করা হয়, আমরা করতে পারে

f=lambda n:n<2or 2*f(n**.5)

সাথে সত্য 1।


৪১ বাইট:

f=lambda n,i=1:i*(2**i>n)or f(n,i<<1+i%2)

বারবার ঘনঘনকারী iপর্যন্ত দ্বিগুণ 2**i>n। থেকে অগ্রাহ্য i=1করার i=4একটি অতিরিক্ত বিট নাড়াচাড়া যখন দ্বারা iবিজোড় হয়।

Alt 45 বাইট:

f=lambda n,i=4:4**(n>1)*(2**i>n)or 2*f(n,i*2)

7
কোনও সমস্যার জন্য এতগুলি সমাধান নিয়ে আপনি কীভাবে আসতে পারেন তা আমাকে অবাক করে দেওয়া কখনই থামে না। মূলত একজন প্রোগ্রামার হিসাবে আমি একটি সমস্যার সমাধান খুঁজতে এবং এটি কাজ না করা পর্যন্ত এটি নিয়ে কাজ করতে শিখেছি। মনে করি গল্ফ সম্পর্কে আমার এখনও অনেক কিছু শেখার আছে! সম্মান.
এলপেড্রো

@ এক্সনর, 10 বা 1 এর বর্গমূল সর্বদা 1 (অসীম পুনরাবৃত্তিতে or 2*f(n**.5)) থাকে যখন আপনার প্রথম উত্তরের আউটপুটটি কীভাবে আসে ?
dfernan

2
@ ডিফারান আমি বিশ্বাস করি যে অংশটি orতার আগে মূল্যায়ন করা হয় যদি অংশটির আগে মিথ্যা (শূন্য) কিছু মূল্যায়ন করে। N = 0 এর জন্য, এবং n = 1 এর n>1জন্য False, যা একটি সংখ্যাসূচক প্রকাশে শূন্য হিসাবে বিবেচিত হয় তা n<16মূল্যায়ন করে এবং মূল্যায়ন করে True, যা একটি সংখ্যাসূচক ভাব হিসাবে এক হিসাবে বিবেচিত হয়। তাই 4**(n>1)*(n<16)১।
ট্রাইকোপল্যাক্স

1
@ থ্রিচোপ্লেক্স, এটা ঠিক। ব্যাখ্যা করার জন্য ধন্যবাদ.
dfernan

12

জে, 19 বাইট

মোনাডিক ক্রিয়াটি ডানদিকে নম্বরটি নিয়ে এবং ধারক আকারটি থুথু দেয়। এটি লেখার বেশ কয়েকটি সমতুল পদ্ধতি রয়েছে তাই আমি উভয়কেই অন্তর্ভুক্ত করেছি।

2^2(>.+1=>.)@^.#@#:
2^s+1=s=.2>.@^.#@#:

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

2^2(>.+1=>.)@^.#@#: NB. takes one argument on the right...
                 #: NB. write it in binary
               #@   NB. length (i.e. how many bits did that take?)
  2          ^.     NB. log base 2 of that
   (>.     )@       NB. ceiling
      +1=>.         NB. +1 if needed (since no container is two bits wide)
2^                  NB. base 2 exponential

কি দুর্দান্ত তা হল আমরা জেতে লগ বেস 2 নেওয়ার দুটি ভিন্ন উপায় দেখতে পাচ্ছি The প্রথমটি সুস্পষ্ট 2^., যা একটি সংখ্যার লগারিদম। দ্বিতীয়টি #@#:, যা "বেস -২ উপস্থাপনার দৈর্ঘ্য" হিসাবে পড়া যায়। এটি প্রায় এক-প্লাস-তল-লগ-বেস-লগ-এর সমতুল্য, এক- #:0তালিকার তালিকাকে বাদ দিলে 0, আমরা যা চাই ঠিক তা-ই। এটি 1+2<.@^.1&>.8 বাইট দ্বারা বীট ।

আরপিএল-এ ব্যবহৃত:

   f =: 2^2(>.+1=>.)@^.#@#:
   f 131313
32
   f 34359750709
64
   (,.f"0) 0 1 2 15 16 123 260
  0  1
  1  1
  2  4
 15  4
 16  8
123  8
260 16

পুরাতন, অত্যধিক চতুর 20 বাইট সমাধান।

2&^.(>.+1=>.&.)@#@#: NB. takes one argument on the right...
                #@#: NB. how many bits
2&^.                 NB. log base 2 of that
     >.              NB. ceiling
       +1=>.         NB. +1 if needed (since no container is two bits wide)
    (       &.)      NB. undo log base 2

9

পাইথন, 53 50 49 বাইট

lambda n:[w for w in[1,4,8,16,32,64]if n<2**w][0]

1
lambda n:[w for w in[1,4,8,16,32,64]if n<2**w][0]এক বাইট খাটো
ব্লু

ঠিক সেরকমই কিছু পোস্ট করতে চলেছিলাম। +1
এলপিড্রো 21

8

গণিত, 44 39 38 বাইট

ধন্যবাদ 5 জ্যাকেটের জন্য জালিয়াতি এবং 1 বাইটের জন্য @ মার্টিনইেন্ডার।

FirstCase[{1,4,8,16,32,64},x_/;2^x>#]&

তালিকার প্রথম উপাদানগুলিকে সন্ধান করে {1, 4, 8, 16, 32, 64}যেমন ইনপুটটির চেয়ে 2 ^ সংখ্যা বেশি।



7

জাভাস্ক্রিপ্ট (ES7), 35 বাইট

n=>[1,4,8,16,32,64].find(b=>2**b>n)

2
একটি পুনরাবৃত্ত সংস্করণ যেমন আরও f=(n,b=1)=>2**b>n&&b-2?b:f(n,b*2)খাটো হওয়া উচিত।
আর্নৌল্ড

6

গণিত, 46 43 38 বাইট

3 বাট বাঁচানোর জন্য জংহওয়ান মিন এবং মার্টিন ইন্ডারকে ধন্যবাদ! একটি বড় 5-বাইট সঞ্চয় করার জন্য নেজেনিসিসকে ধন্যবাদ!

2^⌈Log2@BitLength@#⌉/.{2->4,0->1}&

নামহীন ফাংশন ইনপুট হিসাবে একটি nonnegative পূর্ণসংখ্যা গ্রহণ এবং একটি ধনাত্মক পূর্ণসংখ্যা ফিরে। BitLength@#ইনপুটটিতে বিটের সংখ্যা গণনা করে এবং তারপরে 2^⌈Log2@...⌉2 এর ক্ষুদ্রতম শক্তিটিকে কমপক্ষে বিটের সংখ্যার চেয়ে বৃহত হিসাবে গণনা করে। অবশেষে, /.{2->4,0->1}বিশেষ ক্ষেত্রে কেটে যায় যে বিট এবং ন্যাবলের মধ্যে কোনও "নিবলিট" নেই এবং অদ্ভুত ইনপুটটির উত্তরও ঠিক করে 0


2
BitLength@#পরিবর্তে ব্যবহার করে 3 বাইট সংরক্ষণ করুন ⌊1+Log2@#⌋। তারপর পরিবর্তে প্রতিস্থাপন সঙ্গে 1আপনি প্রতিস্থাপন করতে পারেন 0, অন্য 2 বাইট সংরক্ষণ এবং আপনি প্রথম বাঁধা করছি।
নেজেনিসিস

1
এটি আসলে পুরোপুরি দিয়ে করা যায় BitLengthআমার উত্তর
নেজিনিসিস

4

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

n->filter(x->n<big(2)^x,[1;2.^(2:6)])[1]

এটি একটি বেনামে ফাংশন যা 2 ব্যতীত 0 থেকে 6 পর্যন্ত 2 এর পাওয়ারগুলির একটি অ্যারে তৈরি করে এবং কেবলমাত্র সেই উপাদানগুলিতে এটি ফিল্টার করে x যেমন 2 x ইনপুটটির চেয়ে বড়। প্রথম যেমন উপাদান হ'ল উত্তর। দুর্ভাগ্যক্রমে এর জন্য x = 64 এ BigIntওভারফ্লো এড়াতে 2 এ উন্নীত করতে হবে ।

এটি আসলে orlp এর পাইথন উত্তরের সাথে বেশ মিল, যদিও আমি এই পদ্ধতির কথা বলার আগে এটি দেখিনি।

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


4

পার্ল 6 , 30 বাইট

{first 1+<*>$_,1,4,8,16,32,64}

+<পার্ল 6 এর বাম বিট শিফট অপারেটর, যা অন্য অনেক ভাষা কল করে <<


4

হাস্কেল, 31 বাইট

f n=[2^i|i<-0:[2..],2^2^i>n]!!0

32-বাইট Alt:

f n|n<2=1|n<16=4|1>0=2*f(sqrt n)

2

জাভা, 143 বাইট।

int f(long a){a=Long.toBinaryString(a).length();if(a<2)return 1;if(a<5)return 4;if(a<9)return 8;if(a<17)return 16;if(a<33)return 32;return 64;}

1
আমি জানি আমি এই সংক্ষিপ্ততর করতে পারি, আমি কম্পিউটারে থাকাকালীন আইও এটি করি।
পাভেল

2
50 বাইট সংরক্ষণ করুন:return a<2?1:a<5?4:a<9?8:a<17?16:a<33?32:64;
মাইন্ডউইন

@ মাইন্ডউইন আমি জানি, তবে আমি ভ্রমণ করছি এবং কিছুক্ষণের জন্য কোনও কম্পিউটারে অ্যাক্সেস পাবে না। আমি এটি কাছাকাছি পেতে হবে।
পাভেল

স্কোর কি এটি একটি ... প্রেম বাইট করে তোলে ?
ইঞ্জিনিয়ার টোস্ট


2

রুবি, 39 36 বাইট

->n{2**[0,*2..6].find{|p|2**2**p>n}}

গল্ফ সাহায্য করার জন্য জিবি ধন্যবাদ


প্রথম বন্ধনী ছাড়াও কাজ করা উচিত। এছাড়াও, তালিকাটি 0,2,3,4,5,6 এবং 1 << 2 ** পি ব্যবহার করে হতে পারে।
জিবি

... কারণ তখন আপনি 0, * 2..6 ব্যবহার করতে পারেন।
জিবি

2

জাভা 8, 65 55 বাইট

এটি একটি ল্যাম্বডা এক্সপ্রেশন যা গ্রহণ করে longএবং একটি প্রদান করে int। এর আগে জাভাতে কখনই গল্ফ করেনি, তাই এটি সহজেই পরাজিত হয়:

x->{int i=1;while(Math.pow(2,i)<=x)i<<=1+i%2;return i;}

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


জন্য 47 বাইট , আমরা পারে:

x->{int i=1;while(1L<<i<=x)i<<=1+i%2;return i;}

যাইহোক, 1L<<iরিটার্ন মানগুলির জন্য ওভারফ্লোগুলি 32-র চেয়ে বড় হয়, সুতরাং এটি চূড়ান্ত টেস্টকেসের ক্ষেত্রে ব্যর্থ।


1
এই আয় 4যখন সাথে পরীক্ষিত 16যখন এটি 8. এছাড়াও আসতে অনুমিত হয় আপনি যা করতে পারেন এখনও গলফ প্রায় বন্ধনী সরিয়ে এটির সমাধান i<<=1+i%2;ছাড়া যেহেতু {}গুলি, যখন লুপ হবে শুধুমাত্র পরের লাইনে চালানো
Kritixi Lithos

@ ক্রিটিক্সিলিথস এখনই ঠিক করা উচিত - দুঃখিত, আমার জাভা শেষ হয়েছে ...
ফ্লিপট্যাক

2

গণিত, 30 বাইট

2^(f=BitLength)[f@#-1]/. 2->4&

ব্যাখ্যা:

যাক Nঅণুগঠক পূর্ণসংখ্যার সেট। দুটি ফাংশন নির্ধারণ N, BitLengthএবং NextPowerনিম্নরূপ:

BitLength(n) := min {x in N : 2^x - 1 >= n}
NextPower(n) := 2^(min {x in N : 2^x >= n})

এই সমাধানটি মূলত NextPower(BitLength(n))একটি পূর্ণসংখ্যার গণনা করে n >= 0। জন্য n > 0, আমরা এটি দেখতে পারেন NextPower(n) = 2^BitLength(n-1), তাই NextPower(BitLength(n)) = 2^BitLength(BitLength(n)-1)

এখন ম্যাথমেটিকা BitLengthঅন্তর্নির্মিত আমি যে সংজ্ঞাটি দিয়েছি তাতে সম্মত n >= 0। জন্য n < 0, BitLength[n] == BitLength[BitNot[n]] == BitLength[-1-n]তাই BitLength[-1] == BitLength[0] == 0। সুতরাং আমরা পছন্দসই উত্তর পেতে 1জন্য n==0

যেহেতু আমরা বিট থেকে নিবললে সোজা এড়িয়ে চলেছি, এর 2সাথে আমাদের উত্তরগুলি প্রতিস্থাপন করতে হবে 4


1
সুন্দরভাবে নির্মিত! (লজ্জাজনক যে স্থানটি প্রয়োজনীয়।)
গ্রেগ মার্টিন

2

ব্যাশ, 49 বাইট 48 বাইট

for((y=1;$[y==2|$1>=1<<y];$[y*=2])){ :;};echo $y

অথবা

for((y=1;$[y==2|$1>=1<<y];)){ y=$[y*2];};echo $y

একটি স্ক্রিপ্টে সংরক্ষণ করুন এবং আর্গুমেন্ট হিসাবে পরীক্ষা করতে নম্বরটি পাস করুন।

সম্পাদনা: প্রতিস্থাপন || | সহ, যা কাজ করে কারণ আর্গুমেন্টগুলি সর্বদা 0 বা 1 থাকে।

দ্রষ্টব্য: এটি আপনার ইতিবাচক সংস্করণটি পরিচালনা করতে পারে এমন সবচেয়ে বড় ধনাত্মক পূর্ণসংখ্যার পূর্ণসংখ্যার জন্য কাজ করে। আমার যদি সময় থাকে তবে আমি এটিকে 32 bit বিট স্বাক্ষরিত গাণিতিক ব্যবহার করে এমন সংস্করণগুলিতে 2 ^ 64-1 অবধি কাজ করতে সংশোধন করব।

ইতিমধ্যে, এখানে একটি -৪-বাইট সমাধান রয়েছে যা নির্বিচারে বড় সংখ্যক (যে কোনও বাশ সংস্করণে) কাজ করে:

for((x=`dc<<<2o$1n|wc -c`;$[x==2||x&(x-1)];$[x++])){ :;};echo $x

2

স্ট্যাকড, 34 30 বাইট

@n 1 2 6|>2\^,:n 2 log>keep 0#

অথবা

{!1 2 6|>2\^,:n 2 log>keep 0#}

প্রথমটি টিওএস-এ ইনপুট নেয় এবং টিওএস-এ আউটপুট ছেড়ে দেয়; দ্বিতীয়টি একটি ফাংশন। এখানে চেষ্টা করুন!

ব্যাখ্যা

@n 1 2 6|>2\^,:n 2 log>keep 0#
@n                               set TOS to `n`
   1 2 6|>2\^,                   equiv. [1, ...2 ** range(2, 6)]
              :                  duplicate it
               n                 push `n`
                 2 log           log base-2
                      >          element-wise `>`
                       keep      keep only truthy values
                            0#   yield the first element

Repl এ কাজ করার একটি উদাহরণ এখানে দেওয়া হয়েছে :

> 8    (* input *)
(8)
> @n 1 2 6|>2\^,:n 2 log>keep 0#    (* function *)
(4)
>    (* output *)
(4)

পরীক্ষার মামলা

> {!1 2 6|>2\^,:n 2 log>keep 0#} @:f
()
> (0 1 2 15 16 123 260 131313 34359750709) $f map
((1 1 4 4 8 8 16 32 64))
> 

বা, একটি সম্পূর্ণ প্রোগ্রাম হিসাবে:

{!1 2 6|>2\^,:n 2 log>keep 0#} @:f

(0 1 2 15 16 123 260 131313 34359750709) $f map

out

2

45 বাইট র্যাকেট

(findf(λ(x)(>(expt 2 x)m))'(1 4 8 16 32 64))

Ungolfed:

(define (f m)
  (findf (λ (x) (> (expt 2 x) m))          ; find first function
         '(1 4 8 16 32 64)))

অন্যান্য সংস্করণ:

(define (f1 m)
  (for/last ((i '(1 4 8 16 32 64))         ; using for loop, taking last item
             #:final (> (expt 2 i) m))     ; no further loops if this is true
    i))

এবং স্ট্রিং দৈর্ঘ্য ব্যবহার:

(define (f2 m)
  (for/last
      ((i '(1 4 8 16 32 64))
       #:final (<= (string-length
                    (number->string m 2))  ; convert number to binary string
                   i))
    i))

পরীক্ষামূলক:

(f 0)
(f 1)
(f 2)
(f 15)
(f 16)
(f 123)
(f 260)
(f 131313)
(f 34359750709)

আউটপুট:

1
1
4
4
8
8
16
32
64

1

অক্টাভা, 40 36 31 29 বাইট

সাধারণ বেনামে ফাংশন। ধারণা করা হয় যে ইনপুট মানটি একটি পূর্ণসংখ্যা - শেষে ক্যাভিয়েটটি দেখুন।

@(a)(b=2.^[0 2:6])(a<2.^b)(1)

কোড নিম্নলিখিত হিসাবে কাজ করে:

  • প্রথমে অনুমোদিত বিট দৈর্ঘ্যের একটি অ্যারে (1,4,8,16,32,64) তৈরি এবং এতে সংরক্ষণ করা হয় b

  • এরপরে আমরা aপ্রতিটি কন্টেইনার সর্বাধিক আকারের সাথে তুলনা করে ইনপুট নম্বরটি সংরক্ষণ করতে প্রয়োজনীয় বিটের সংখ্যাটি bদেখতে পাই যা কোনটি যথেষ্ট বড়।

  • এরপরে আমরা bআবার ধারক আকারটি আবার বের করতে ফলাফল সূচক ভেক্টর ব্যবহার করি ।

  • অবশেষে আমরা ফলস্বরূপ অ্যারেতে প্রথম উপাদানটি গ্রহণ করি যা সম্ভবতম ক্ষুদ্রতম ধারক হবে।

আপনি এটি এখানে অনলাইনে চেষ্টা করতে পারেন ।

কেবল নীচের কোডটি চালান এবং তারপরে করুন ans(x)


এটির সাথে একমাত্র সতর্কতা হ'ল ডিফল্ট হিসাবে ধ্রুবকগুলির জন্য ডাবল নির্ভুলতা ব্যবহৃত হয় যার অর্থ এটি কেবলমাত্র 2 ^ 64 এর চেয়ে কম ডাবল নির্ভুলতা ভাসমান দ্বারা উপস্থাপিত সর্বোচ্চ মানের পর্যন্ত সংখ্যার সাথে কাজ করে।

ফাংশনে সরবরাহ করা সংখ্যাটি দ্বিগুণের পরিবর্তে পূর্ণসংখ্যা হয় তা নিশ্চিত করে এটি স্থির করা যায়। এই সঙ্গে উদাহরণস্বরূপ ফাংশন কল করে অর্জন করা যেতে পারে: ans(uint64(x))


1

পিএইচপি, 49 46 44 বাইট

echo(2**ceil(log(log(1+$argn,2),2))-2?:2)+2;

এভাবে চালান:

echo 16 | php -R 'echo(2**ceil(log(log(1+$argv[1],2),2))-2?:2)+2;';echo

ব্যাখ্যা

echo                       # Output the result of the expression
  (
    2**                    # 2 to the power
      ceil(log(            # The ceiling of the power of 2 of bitsize
        log(1+$argn,2),    # Number of bits needed
        2
      ))
      - 2 ?:               # Subtract 2 (will be added back again)
      2;                   # If that results in 0, result in 2 (+2=4).
  ) + 2                    # Add 2.

বদলান

  • $r=অ্যাসাইনমেন্ট থেকে মুক্তি পেয়ে 3 বাইট সংরক্ষণ করেছেন
  • উপলব্ধ -Rকরতে ব্যবহার করে 2 বাইট সংরক্ষণ করা$argn

1

সিজেম , 18 বাইট

2ri2b,2mLm]_({)}|#

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

ব্যাখ্যা

2                   Push 2
 ri                 Read an integer from input
   2b,              Get the length of its binary representation
      2mLm]         Take the ceiling of the base-2 log of the length
           _(       Duplicate it and decrement it
             {)}|   Pop the top element, if it's 0, increment the next element
                     Effectively, if ceil(log2(input)) was 1, it's incremented to 2,
                     otherwise it stays the same.
                 #  Raise 2 to that power

0

সি, 71 52 বাইট

i;f(long long n){for(i=1;n>>i;i*=2);return i-2?i:4;}

(1<<15)+1এর স্বাক্ষরিত আচরণের কারণে কোনও ইনপুট কি এটিকে ভেঙে ফেলবে না long long? টাইপ আপনি কি সত্যিই চান uint64_tযা প্রয়োজনীয়তা #include <stdint.h>যা এখনও তুলনায় অভাগা unsigned long long! শিরোনামগুলি সিতে গল্ফিংয়ের নিষিদ্ধকরণ।
dmckee

@ ডিএমকেহে আমার ধারণা এটি এটি ভেঙে যেতে পারে তবে এটি কমপক্ষে আমার কম্পিউটারে কাজ করছে বলে মনে হচ্ছে। কোনও উদাহরণ খুঁজে পাওয়া যায় নি যা কাজ করবে না। আমি ব্যবহার করার কথা ভেবেছিলাম unsigned long longবা uint64_t, তবে যেহেতু এটি কাজ করে বলে মনে হয় long longআমি তা দিয়ে চলেছি।
স্টেডিবক্স

0

কিউবিআইসি , 27 বাইট

:~a<2|_Xq]{~a<2^t|_Xt\t=t*2

ব্যাখ্যা

:        Get cmd line parameter N, call it 'a'
~a<2     IF 'a' is 0 or 1 (edge case)
|_Xq]    THEN quit, printing 1 ('q' is auto-initialised to 1). ']' is END-IF
{        DO - infinite loop
    2^t  't' is our current number of bits, QBIC sets t=4 at the start of the program.
         2^t gives the maximum number storable in t bytes.
 ~a<     IF the input fits within that number,
|_Xt     THEN quit printing this 't'
\t=t*2   ELSE jump to the next bracket (which are spaced a factor 2 apart, from 4 up)
         DO-loop is auto-closed by QBIC.


0

পিএইচপি, 43 বাইট

for(;1<<2**$i++<=$argn;);echo 2**$i-=$i!=2;

সাথে চালাও echo <number> | php -R '<code>'

ইনপুট থেকে বড় $iনা হওয়া পর্যন্ত লুপ আপ 2**(2**$i)হয়। (ত্বক: প্যারেন্সকে বাদ দেওয়ার <<পরিবর্তে **)
লুপের পরে, $ আমি একজন খুব বেশি; সুতরাং আউটপুট গণনা করার আগে এটি হ্রাস পায়
- তবে নয় $i==2

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