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.