N% 12 গণনা করুন


27

স্বাক্ষরযুক্ত 32 বিট পূর্ণসংখ্যার জন্য nমডুলোর গণনা করুন 12।

নিয়ম:

  • n0 এবং 23 এর মধ্যে সকলের জন্য অবশ্যই কাজ করা উচিত Other numbersচ্ছিক অন্যান্য সংখ্যা।
  • কেবলমাত্র অপারেটরগুলির মধ্যে কোনওটি ব্যবহার করা উচিত +-*, ~&^|বা <<, >>হিসাবে 32 বিট uints হিসাবে সাধারণত সংজ্ঞায়িত করা হয়।
  • ধীরে ধীরে কিছু সংখ্যক ইচ্ছামত সংখ্যক ব্যবহার করতে পারে।
  • অ্যারে, বা কোনও ifবিবৃতি সহ কোনও বিন্দু, কোনও বিবরণ ব্যবহার করতে পারে না, যেমন টের্নারি অপারেটর বা "অপেক্ষাকৃত বড়" অপারেটর হিসাবে বিবৃতি সংকলন করা জিনিসগুলি সহ।

স্কোরিং:

  • অপারেটর + -এবং bitwise অপারেটরদের ~ & ^ | << >>(না এবং, XOR যাও, বা, বিট বদল আনতে) এর একটি স্কোর দিতে 1, *স্কোর দেয় 2।
  • সর্বনিম্ন মোট স্কোর জয়।

6
আপনি সি / জাভা বাদে অন্য ভাষার ব্যবহারকারীদের জন্য অপারেটরগুলি সংজ্ঞায়িত করতে চাইতে পারেন। আমি বুঝতে পারি +-*যোগ, বিয়োগ, গুণ; ~&^|কিছুটা নয়, এবং, এক্সওর, বা; এবং << >>বিটশিফ্ট হয়।
— স্তর নদী সেন্ট

@ স্টিভেভারল - ধন্যবাদ এটা আসলে উদ্দেশ্য।
— nbubis

আমি কি ব্যবহার করতে পারি for i in x:y:z, .dostuff?
— ousurous

আমি কি একটি এক্সপ্রেশন ব্যবহার করতে একটি মান সমান একটি ভেরিয়েবল সেট করতে পারি?
— xnor

4
বেশিরভাগ n % 12
— সংকলকগণ

উত্তর:


29

4

(ভাষা অপ্রাসঙ্গিক)

n-((48&(11-n))>>2)

উ! পেয়েছেন 4।

11-n উচ্চমাত্রার সমস্ত বিট সেট করা আছে তা নিশ্চিত করবে এবং যদি কেবলমাত্র এন> = 12 থাকে।

48&(11-n) == যদি n> ১১ হয় তবে অন্য 48 টি

(48&(11-n))>>2 == যদি n> 11 তবে অন্য 12 টি

n-((48&(11-n))>>2) উত্তর


1
ছিঃ ছিঃ, আপনি আমাকে এই পদ্ধতির কাছে মারধর করেছেন! আমি পোস্ট করা থেকে কয়েক মুহূর্ত দূরে ছিলাম n - (((11 - n) & 0xC0000000) >> 28)। ভাল হয়েছে, আমি মনে করি না এটি চারটিরও কম সময়ে করা যেতে পারে।
— রানার 112

1
@ রানার ১১১ হ্যাঁ, আমি আশা করছিলাম যে আমি এটি পোস্ট করার সাথে সাথে কেউ আমাকে মারবে না। নিজের জন্য এটি সন্ধান করতে ভাল হয়েছে, যদিও
— isaacg

1
দুর্দান্ত :) 4 অবশ্যই একটি সাফল্য।
— nbubis

11

4

একটি সন্ধানের সারণী সহ একটি সমাধান (এটি দেখায় i ^ (i % 12)):

i ^ (0x1d4c000 >> (i & 0xfc) & 30)

4

4 টি অপারেশন সহ এখানে আরও একটি সমাধান রয়েছে:

i - ((0xffff >> (i - 12)) & 12)

এটি ধরে নিয়েছে যে বিটশিফ্টের গণনা অপারেন্ডকে স্পষ্টতভাবে মড 32 নেওয়া হয়েছে, x >> -1যেমনটি একই x >> 31।

5

অন্য সন্ধান, একটি সারণী ব্যবহার করে:

i - (16773120 >> i & 1) * 12

7

বাশ - ১

echo `seq 0 11` `seq 0 11` | awk '{print $(number+1)}'

যেমন

$ echo `seq 0 11` `seq 0 11` | awk '{print $(0+1)}'
0

$ echo `seq 0 11` `seq 0 11` | awk '{print $(11+1)}'
11

$ echo `seq 0 11` `seq 0 11` | awk '{print $(12+1)}'
0

$ echo `seq 0 11` `seq 0 11` | awk '{print $(23+1)}'
11

1
এটি বৈধ নয় কারণ এটি পয়েন্টার ব্যবহার করে।
— কৌতূহলীনি

আপনি কি পয়েন্টারটি উল্লেখ করছেন? stdinএবং stdoutস্ট্রিম? অবশ্যই, অভ্যন্তরীণভাবে, তারা পয়েন্টার, তবে তারপরে আমরা জাভাটিকে অযোগ্য ঘোষণা করতে পারি কারণ এটি Integerক্লাসটি অভ্যন্তরীণভাবে অনেক কিছুতে ব্যবহার করে।
— কোল জনসন

$ () কার্যকরভাবে পয়েন্টারের সমান নয়?
— কৌতূহলীনি

@ কুরিয়াসডান্নি - ডাব্লু ডকুমেন্টেশন বলছে যে তারা বিল্ট-ইন ভেরিয়েবল।

5

সি, লিটল-এন্ডিয়ান - 2

এটি সম্ভবত প্রতারণা করছে তবে আমি মনে করি এটি নিয়মকে সন্তুষ্ট করে ...

union {
    int i;
    struct {
        int a:4;
        int b:2;
        int c:10;
    } s;
    struct {
        int a:2;
        int b:14;
    } t;
} u;

u.i = 11-n;
u.s.a = 0;
u.s.c = 0;
result = n-u.t.b;

এটা কিভাবে কাজ করে?
— nbubis

1
বাছাই করা প্রতারণা, যেহেতু আপনি = 0 পরিবর্তে ব্যবহার করছেন & 0x0, যা অতিরিক্ত 2 টি অপারেশন হিসাবে গণ্য করা উচিত। তবে সৃজনশীলতার জন্য +1 :)
— নিবিউস

4

পিএইচপি - স্কোর 0

আমি ভাবছি কীভাবে সম্ভব যে আমার সাথে আগে কেউ এলো না !!!

$n = 18;
$s = str_repeat("a", $n);
$s2 = preg_replace('/aaaaaaaaaaaa/', '', $s);
echo strlen($s2);

2
খুশী হলাম। আমি মনে করি যদিও কোনও সমস্যা থাকতে পারে, যেহেতু অ্যারেগুলি অনুমোদিত নয়। যদিও সত্যিই দুর্দান্ত।
— এজেম্যানসফিল্ড

@ এজেম্যান্সফিল্ড একটি যুক্তিতে বলতে পারে এটিতে অ্যারে নেই তবে স্ট্রিং নেই (হ্যাঁ, নিম্ন স্তরের স্ট্রিংগুলি বাইট অ্যারে হয়)। :)
— seequ

1
@ সিকিউইউ ওয়ান যুক্তিও দিতে পারে যে র‌্যাম ব্যবহারের কারণে এটি অবৈধ (হ্যাঁ, নিম্ন স্তরে, র‌্যাম প্রযুক্তিগতভাবে একটি সূচক অ্যারে) ¯_ (ツ) _ / ¯
— স্টান স্ট্রাম

2

সি, স্কোর 5

23 পর্যন্ত কাজ করে, এর উপরে গ্যারান্টিযুক্ত নয়।

( ((n+4)>>2)&4 ) + n & 15

((n+4)>>2)&4এন> = 12 এর জন্য 4 প্রদান করে। এটিকে এন-এ যুক্ত করুন এবং আপনি কমপক্ষে 4 টি বিট-এর মধ্যে সঠিক উত্তরটি পাবেন, তারপরে অন্যান্য বিটগুলি কেটে ফেলুন।


সাবাশ!! এখন দেখা যাক কেউ 4
— উঠতে পারছে কিনা

2

যাই হোক না কেন ভাষা: 5

জিততে যাচ্ছি না, তবে অংশ নেওয়া মজা করার কারণে এবং সম্ভবত অন্যদের বোঝা আরও সহজ কারণ:

n - ((n+20)>>5)*12

এটি সমান

n - (n>11)*12

এটি সমতুল্য কারণ আপনি যখন 20 থেকে 12 যোগ করবেন তখন আপনি 32 পাবেন, সুতরাং 5 তম বিট 1 হয়ে যায় This

এছাড়াও আপনি লক্ষ্য রাখতে পারেন যে উচ্চতর পরিসরের জন্য সহজেই প্রসারিত

n - ((n+20)>>5)*12 - ((n+41)>>5)*12

35 পর্যন্ত একটি পরিসীমা পৌঁছানোর


1

পাইথন 2.x - 4

j=input();m=lambda a,b:a*b;a=(m(j,357913942)>>32);print j-m(12,a)

কি =একটি অপারেটর?

সেক্ষেত্রে স্কোর is।

j-12*(j*357913942>>32)

বিটিডাব্লু @ স্টেভেভারিলের সমাধানটি পাইথনেও সরাসরি ব্যবহার করা যেতে পারে।

পরিসীমা 0 .. 23 এর জন্য কাজ করে

তো কেমন যাচ্ছে ? 357913942 দ্বারা গুণ করুন এবং 2 ^ 32 দ্বারা ভাগ করুন (অথবা ডান শিফট 32)


আমি পছন্দ করি আপনি কীভাবে কোনও ফাংশনটি কেবল একবারে গুণের জন্য ব্যবহার করেছেন। তবে ইমো আপনি সুনির্দিষ্টভাবে m (,) ফাংশনটির গুণকটির নাম দিয়েছেন, যা আমার জন্য আপনি এটি দুটিবার ব্যবহার করেছেন।
— Pinna_be

কীভাবে নিয়মগুলি ব্যাখ্যা করা হয় তা নির্ভর করে তবে আপনার একটি বৈধ পয়েন্ট রয়েছে
— উইলিয়াম

1

সি - 6

(n - (((n * 0xAAAB) >> 19)) * 12 )

এটি হয় প্রশ্নের অংশ বা অন্য একটি উত্তর হওয়া উচিত। আমি উত্তরোক্তদের পরামর্শ দিই।
— জোস্টি

@ জওস্টি - পরিবর্তিত হয়েছে।
— nbubis

0

কোবরা - 2 (বা 3)

def modulo12(n as uint32) as uint32
        for i in 11:n to int64:12,n-=12
        return n

এটি নিয়মগুলি কিছুটা বাঁকানো হতে পারে তবে আমি জিজ্ঞাসা করেছি এবং এটি ব্যবহারের অনুমতি পেয়েছি।

এটি যে কোনও সংখ্যার জন্যও কাজ করে।


0

কোনা - 5

অবৈধ হতে পারে কারণ মেঝে অপারেটরকে অনুমতি দেওয়া হচ্ছে কিনা তা আমি নিশ্চিত নই, তবে আমার কাছে দুটি *এবং একটি বিয়োগফল হয়েছে:

mod:{x-(_0.08333*x)*12}

যা কোনও পূর্ণসংখ্যার জন্য কাজ করা উচিত।


আমি মেঝে অপারেশন সম্পর্কে নিশ্চিত নই, তবে আমি অবশ্যই নিশ্চিত যে প্রথম গুণটি 32-বিট পূর্ণসংখ্যা ব্যতীত অন্য কোনও কিছুর উপর পরিচালিত হচ্ছে।
— রানার 1212

@ রানার ১১১২: ওপি বলছে ইনপুট অবশ্যই 32 বিট হওয়া উচিত এবং অপারেটরগুলি সংজ্ঞায়িত হিসাবে তারা সাধারণত 32 বিট ইউএনট দিয়ে থাকে; কোডে এটি অ-পূর্ণসংখ্যার মান সম্পর্কে কিছুই বলে না।
— কাইল কানোজ

আমি যদি কিছু ভুল বুঝি না, 0.08333 * x 32-বিট ইউএনটি-তে সংজ্ঞায়িত হিসাবে গুণনের মতো মনে হয় না, কারণ 0.08333 32-বিট ইউন্ট নয়।
— রানার 1112

1
"ধীরে ধীরে কিছু ইন্টিরিটরি সংখ্যার ব্যবহার করতে পারে" " - অর্থাত্ স্বেচ্ছাচারী ফ্লোট ব্যবহার করতে পারবেন না।
— এনবিউবিস

1
@ এনবুবিস: সেই লাইনটি আসলে ভাসমানদের উপর কোনও বিধিনিষেধ তৈরি করে না।
— কাইল কানোজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.