চঞ্চল পূর্ণসংখ্যার গণনা


25

আপনার চ্যালেঞ্জটি হ'ল সমস্ত সংখ্যার সংখ্যা গণনা করে এমন ক্রমের একটি নির্দিষ্ট মেয়াদ আউটপুট করা। ক্রমটি নিম্নরূপ: আমাদের যদি 0-সূচিযুক্ত ফাংশনটি অনুক্রম তৈরি করে f(n)এবং ceil(x)সিলিং ফাংশন হয়, তবে f(0) = 0; abs(f(n)) = ceil(n/2); উভয় এবং উভয়ই বিজোড় sign(f(n))হলে nএবং ইতিবাচক ceil(n/2)হয়।

এই ক্রমটি বুঝতে সহায়তা করার জন্য, প্রথম কয়েকটি পদ নিম্নলিখিত হিসাবে রয়েছে: 0 1 -1 -2 2 3 -3 -4 4 5 -5 -6 6 7 -7...

আপনার কাজটি এমন একটি প্রোগ্রাম লিখতে হয় যা একটি পূর্ণসংখ্যা নেয় nএবং nঅনুক্রমের প্রথম পদের আউটপুট দেয় । ইনপুট কেবল 0 বা 1-সূচকযুক্ত হতে পারে।

পরীক্ষার কেস (0-সূচিযুক্ত):

0  =>  0
1  =>  1
2  => -1
3  => -2
4  =>  2
5  =>  3

এটি , সবচেয়ে কম বাইট জয়!



উত্তর:


8

এসওজিএল ভি0.12 , 8 6 বাইট

I».»⌡±

এখানে চেষ্টা করুন! বা প্রথম দম্পতি সংখ্যা চেষ্টা করুন (কিছুটা বদলে গেছে তাই এটি কাজ করবে)
0-সূচিযুক্ত।

ব্যাখ্যা:

I       increment the input
 »      floor divide by 2
  .     push the original input
   »    floor divide by 2
    ⌡   that many times
     ±    negate

বা আরও সহজ:

(input + 1) // 2 negated input // 2 times
        I     »     ±      .     »    ⌡

3
এটি একটি একক মিনিট নেয় না!
NieDzejkob

6
আমি ».»ফোনে আছি I».»⌡±
জোনাথন অ্যালান

@ জোনাথান অ্যালান আমি এটি পাই না _
পাভেল



4

সি, 25 বাইট

f(n){return~n/2*~-(n&2);}

কীওয়ার্ড রিটার্ন ব্যবহার না করে প্রথম প্যারামিটারে আপনার রিটার্নের মান নির্ধারণ করে আপনি 4 বাইট সংরক্ষণ করতে পারেন। f(n){n=~n/2*~-(n&2);}
ক্লাব্ল্যাঙ্ক

5
@ ক্লেব্ল্যাঙ্ক সি এভাবে কাজ করে না।
orlp

2
gcc -O0x86-64 এর জন্য @ ক্লাব্ল্যাঙ্কের সংস্করণটি যে নির্দেশাবলীগুলি eax( গডবোল্ট.আর্গ / জি / ডিজেটকেপিভি ) এর গুণফল ছেড়ে যাওয়ার ঘটবে তার সংকলন করতে ঘটে , তবে তারপরে এটি কোনও x86-64 gcc -O0উত্তর হবে, সি উত্তর নয়। আমি সি-জবাবগুলি আপ-ভ্যাট করি না যা অপ্টিমাইজেশান সক্ষম হয়ে যায়, বিশেষত সেই বোকা শেষ প্রকাশটি রিটার্ন-ভ্যালু বাজে হিসাবে নয় as এমনকি যদি সিসি কিভাবে কাজ করে তবে তা সি কাজ করে না।
পিটার কর্ডস

না পয়েন্টার করুন। যদি মূল এবং চূড়ান্ত মানগুলি স্ট্যাকের উপরে না থাকে তবে আপনার অপ্টিমাইজেশনের প্রয়োজন নেই।
mreff555

1
@ mreff555 এটি একটি মানসম্মত (যদিও গ্রহণযোগ্য) আইও পদ্ধতি হবে এবং এটি আরও ছোট হবে না।
orlp


3

পাইকে , 6 বাইট

heQeV_

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

ডিজাইমার অ্যাপ্রোচ ব্যবহার করে ... টাইস জেলিকে বিট দেয় !

ব্যাখ্যা

h      - Increment the input, which is implicit at the beginning.
 e     - Floor halve.
  Q    - Push the input.
   e   - Floor halve.
    V_ - Apply repeatedly (V), ^ times, using negation (_).
       - Output implicitly.

সমতুল্য হেক্স এনকোডেড বাইট হতে হবে: 68 65 51 65 56 5F


3

জেলি , 6 বাইট

HµĊN⁸¡

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

ডিজাইমার অ্যালগরিদম ব্যবহার করে।

-1 জনাথন অ্যালানকে ধন্যবাদ ।


এসওজিএল জেলিকে মারতে পারে না ...? গল্ফিংয়ের দিকে তাকাবে।
এরিক আউটগল্ফার



3

গণিত, 24 বাইট

(s=⌈#/2⌉)(-1)^(#+s)&  

@ মিশা লাভরভের থেকে -14 বাইট


1
বিজোড় সংখ্যাগুলিকে 1 এবং এমনকি সংখ্যাকে 0 তে রূপান্তর করার ব্যবহার Booleএবং OddQএর প্রভাব রয়েছে, তবে আপনার এখানে দরকার নেই: -1 এর শক্তি আপনাকে যে কোনওভাবেই সমস্ত বিজোড় সংখ্যার জন্য সঠিক উত্তর দেয়। সুতরাং আপনি এই পদক্ষেপটি কেটে ফেলতে পারেন (-1)^Tr@{#,s}বা কেবল (-1)^(#+s)
মিশা লাভরভ

3

হাস্কেল , 25 43 42 বাইট

((do a<-[0..];[[-a,a],[a,-a]]!!mod a 2)!!)

এটি অনলাইন চেষ্টা করুন! 1-ইন্ডেক্স।

সম্পাদনা করুন: পূর্ববর্তী সংস্করণটিতে একটি ভুল ক্রমে লক্ষণ রয়েছে, নির্দেশিত হওয়ার জন্য @ পোটোটো 44 ধন্যবাদ। 18 বাইটের জন্য স্থির ...

সম্পাদনা 2: বিএমও -1 বাইট জন্য ধন্যবাদ!


আপনি ড-নোটেশন ব্যবহার করে 1 বাইট সংরক্ষণ করতে পারেন, এটি অনলাইনে চেষ্টা করুন!
0

@ বিএমও ধন্যবাদ! ...
লাইকনি







2

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

n=>~n/2*~-(n&2)^0

এই এক 0 সূচকযুক্ত। এটি পুরোপুরি বিটওয়াস্ড কৌতুকপূর্ণ।


2

কিউবিকভাবে , 23 বাইট

(1-ইন্ডেক্স)

FDF'$:7+8/0_0*0-8*7/0%6

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

কিউবিকভাবে কোড লেখার সময় প্রধান অসুবিধা হ'ল:

  • এখানে কেবল 1 টি লেখার যোগ্য ভেরিয়েবল এবং and
  • ধ্রুবকগুলি পাওয়া শক্ত।

সুতরাং, এই সমাধান গণনা

((((n+1)/2)%2)*2-1)*n/2

যেখানে /পূর্ণসংখ্যা বিভাজনকে বোঝায়। এর জন্য কেবলমাত্র 1 টি অস্থায়ী পরিবর্তনশীল এবং 1 এবং 2 ধ্রুবকের প্রয়োজন need

ব্যাখ্যা:

FDF'$:7+8/0_0*0-8*7/0%6
FDF'                      Set face value of face 0 to 2, and value of memory index 8 (cube is unsolved) to 1 (true = unsolved)
    $                     Read input
     :7                                 input
       +8                                + 1
         /0                        (        ) /2
           _0                     (             ) %2
             *0                  (                  ) *2
               -8                                        -1
                 *7             (                          ) *n
                   /0                                          /2
                     %6   Print

2

টিআই-বেসিক (টিআই -৪৮ প্লাস সিই), 20 বাইট

‾int(‾Ans/2)(1-2remainder(int(Ans/2),2

একটি সম্পূর্ণ প্রোগ্রাম যা বলা হয় 5:prgmNAME

টিআই-বেসিক হ'ল একটি টোকেনাইজড ল্যানুগেজ , এখানে ব্যবহৃত সমস্ত টোকেন remainder(দুটি বাইট ব্যতীত একটি বাইট । রিজেটিভ টোকেন উপস্থাপন করে যা (-)কী দিয়ে টাইপ করা হয় ।

উদাহরণ:

0:prgmNAME
 => 0
1:prgmNAME
 => 1
2:prgmNAME
 => -1
#etc

ব্যাখ্যা:

‾int(‾Ans/2)(1-2remainder(int(Ans/2),2
‾int(‾Ans/2)                           # -int(-X) is ciel(X), so ciel(Ans/2)
                          int(Ans/2)   # int(X) is floor(X), so floor(Ans/2)
                remainder(int(Ans/2),2 # 1 if floor(Ans/2) is odd else 0
            (1-2remainder(int(Ans/2),2 # -1 if floor(Ans/2) is odd, else 1
_int(_Ans/2)(1-2remainder(int(Ans/2),2 # -ciel(Ans/2) if floor(Ans/2) is odd, else ciel(Ans/2)

ওয়াই-ওয়ার ফাংশন হিসাবে একই সূত্র:

Y1= ‾int(‾X/2)(1-2remainder(int(X/2),2


2

জাভা 8, 15 বাইট

n->~n/2*~-(n&2)

সম্পাদনা: জাভা কি অ-গল্ফিং ভাষার চেয়ে সংক্ষিপ্ততম ?! o.Ô

ব্যাখ্যা:

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

আমি যা ঘটছে তার রেফারেন্স হিসাবে নীচের টেবিলটি ব্যবহার করব।

  1. ~nসমান -n-1
  2. যেহেতু জাভাতে পূর্ণসংখ্যা বিভাগটি স্বয়ংক্রিয়ভাবে ধনাত্মক পূর্ণসংখ্যা এবং নেতিবাচক পূর্ণসংখ্যার সিলগুলিতে মেঝেতে মেলে, ~n/2ফলস্বরূপ ক্রম হবে0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,...
  3. n&2উভয়ই 0বা 2ক্রমানুসারে ফলাফল হবে0,0,2,2,0,0,2,2,0,0,2,...
  4. ~-xসমান (x-1), সুতরাং ~-(n&2)( ((n&2)-1)) ক্রম ফলাফল-1,-1,1,1,-1,-1,1,1,-1,-1,1,...
  5. এর দুটি ক্রম ~n/2এবং প্রদানের গুণকে ~-(n&2)চ্যালেঞ্জে জিজ্ঞাসা করা সঠিক ক্রম:0,1,-1,-2,2,3,-3,-4,4,5,-5,...

ওভারভিউ সারণী:

n       ~n      ~n/2    n&2     ~-(n&2)     ~n/2*~-(n&2)
0       -1      0       0       -1          0
1       -2      -1      0       -1          1
2       -3      -1      2       1           -1
3       -4      -2      2       1           -2
4       -5      -2      0       -1          2
5       -6      -3      0       -1          3
6       -7      -3      2       1           -3
7       -8      -4      2       1           -4
8       -9      -4      0       -1          4
9       -10     -5      0       -1          5
10      -11     -5      2       1           -5

2

ব্রেন-ফ্লাক , 86 74 72 70 বাইট tes

{({}[()]<({}<>([({})]{(<{}([{}]())>)}{}())<>)>)}{}<>{}{<>([{}])(<>)}<>

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

ব্যাখ্যা

এই কোড দুটি অংশ আছে। প্রথম অংশ

({}[()]<({}<>([({})]{(<{}([{}]())>)}{}())<>)>)}{}

গণনার ঝাঁকুনি না। এটি নির্ধারণ করে ceil(n/2)এবং আউটপুটকে অস্বীকার করবে কিনা।

এটি কীভাবে কাজ করে তা ব্যাখ্যা করার জন্য আমি প্রথমে ব্যাখ্যা করব যে একজন কীভাবে গণনা করবে ceil(n/2)। এটি নিম্নলিখিত কোড দিয়ে করা যেতে পারে

{({}[()]<({}([{}]()))>)}{}

এটি প্রতিবার একটি কাউন্টারে একটি (না ) সম্পাদন করে এবং ফলাফলকে কাউন্টারে যুক্ত করে এন থেকে নীচে গণনা করে ([{}]())। কাউন্টারটি শূন্য অর্ধেক সময় হওয়ায় আমরা কেবল প্রথমটি দিয়ে শুরু করে প্রতিটি অন্যান্য রান বৃদ্ধি করি।

এখন আমি আমাদের ফলাফলের চিহ্নটিও গণনা করতে চাই। এটি করার জন্য আমরা অন্য কাউন্টারটি শুরু করি। প্রথম কাউন্টারটি বন্ধ থাকলে এই কাউন্টারটি কেবলমাত্র রাষ্ট্র পরিবর্তন করে। এইভাবে আমরা কাঙ্ক্ষিত প্যাটার্নটি পাই। সময় আসার সাথে সাথে এদিক ওদিক ঘুরিয়ে নেওয়ার জন্য আমরা এই দুটি কাউন্টারকে অফ স্ট্যাকে রেখেছি।

এখন আমরা একবার সেই গণনা শেষ করেছি আমাদের স্ট্যাকটি দেখতে দেখতে এমনই দেখাবে

          parity(n)
ceil(n/2) sign

সুতরাং এই দ্বিতীয় অংশটি এটির উদ্দেশ্যে ফলাফল পেতে আমাদের কিছু কাজ করা দরকার।

<>{}{<>([{}])(<>)}<>


1

প্রোটন , 23 বাইট

n=>-~n//2//(-1)**(n//2)

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

হল্ভার্ড এর সমাধান বন্দরের ।

প্রোটন , 23 বাইট

n=>-~n//2*(-1)**(n%4>1)

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

Leaky এর সমাধান বন্দরের ।

আরও কিছুটা প্রোটোনিক, 24 বাইট:

n=>-~n//2*(**)(-1,n%4>1)

1

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

g=(:+1)'\2`~(a-g)%2|?-g\?g

ব্যাখ্যা

g=          set worker var 'g' to
(:+1)           our index (plus one for the ceil() bit)
'\2`            integer divided by 2 (the int div needs a code literal: '..`
~(a-g)%2    IF index - temp result is odd (index 2 minus result 1 = 1)
|?-g        THEN PRINT g negated
\?g         ELSE PRINT g

1

ক্লোজার 122 বাইট

ভার্ফোস, এমনকি যখন গল্ফ হয়। আমি সহানুভূতির ভোটের জন্য এখানে যাচ্ছি ... :-)

Golfed:

(defn d[n](let[x(int(Math/ceil(/ n 2)))y(cond(or(and(even? n)(even? x))(and(odd? n)(odd? x)))(Math/abs x):else(- 0 x))]y))

Ungolfed:

(defn dizzy-integer [n]
  (let [x   (int (Math/ceil (/ n 2)))
        y   (cond
                (or (and (even? n) (even? x))
                    (and (odd? n)  (odd? x))) (Math/abs x)
                :else (- 0 x)) ]
    y))

1

এক্সেল ভিবিএ 32-বিট, 39 37 বাইট

বেনামে VBE তাত্ক্ষণিক উইন্ডো ফাংশন যা ঘর থেকে ইনপুট নেয় A1এবং ভিবিই তাত্ক্ষণিক উইন্ডোতে আউটপুট নেয়

?[Sign((-1)^Int(A1/2))*Int((A1+1)/2)]

32৪-বিটে A^Bবৈধ নয় হিসাবে 32-বিটে সীমাবদ্ধ ( A ^Bএটি যতটা কাছাকাছি অর্জন করা যায়)


এর মধ্যে (-1)এবং ^[Intপ্রয়োজনীয় স্থানটি কী?
পাভেল

@ পাভেল কমপক্ষে এক্সেল ভিবিএর Version৪-বিট সংস্করণের জন্য, হ্যাঁ; তবে এটি বলেছে যে আমি শপথ করছি যে এটি 32-বিট সংস্করণের জন্য নয়, তবে হায় আমি যে কোনও হার্ডওয়্যার হাতে রেখেছি তা পরীক্ষা করতে পারি না
টেলর স্কট

@ পাভেল - আমি এটি 32-বিট সিস্টেমের অধীনে দেখেছি (ডিফল্ট ইনস্টল স্পেক) এবং সেই সিস্টেমের অধীনে স্থানটির প্রয়োজন নেই - আমি এর সুবিধা নিতে 32-বিটের সমাধান সীমাবদ্ধ রেখেছি
টেলর স্কট

1
শান্ত! আপনি যদিও সংশোধন করা বাইট গণনা যুক্ত করতে ভুলে গেছেন।
পাভেল

ওফস, ধন্যবাদ @ পাভেল - এটি এখন ঠিক হয়েছে
টেলর স্কট

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