Mod 2 বহু বহুগুণ সহগ


14

কুইন্টোপিয়া এখানে মাল্টিনোমিয়াল সহগগুলি গণনা করার জন্য একটি চ্যালেঞ্জ পোস্ট করেছে (এখানে কিছু পাঠ্য সেখান থেকে অনুলিপি করা হয়েছে)। মাল্টিনোমিয়াল কোফিসিয়েন্টস মোড 2 গণনা করার জন্য একটি মজাদার অ্যালগরিদম রয়েছে।

সংখ্যার একটি তালিকা দেওয়া, কে 1 , কে 2 , ..., কে এম , বহুগুণীয় সহগের অবশিষ্টাংশ আউটপুট:

এখানে চিত্র বর্ণনা লিখুন

হ্রাস mod 2 নিম্নলিখিত অ্যালগরিদম এই দক্ষতার না: প্রত্যেকের জন্য আমি , এর বাইনারি সম্প্রসারণ গনা আমি , যে এটি একটি IJ যেমন প্রতিটি একটি IJ পারেন 1 অথবা 0 এবং

এখানে চিত্র বর্ণনা লিখুন

আর ≠ s এর জন্য এমন কোনও জে যেমন একটি আরজে = একটি এসজে = 1 থাকে তবে এর সাথে সম্পর্কিত মোড 2 মাল্টিনোমিয়াল সহগ 0 হয়, অন্যথায় মোড 2 মাল্টিনোমিয়াল সহগ 1 হয়।

কার্য

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা মি সংখ্যা, কে 1 , কে 2 , ..., কে এম , এবং আউটপুটগুলি নিয়ে আসে বা সংশ্লিষ্ট মাল্টিনোমিয়াল সহগটি প্রদান করে। তোমার প্রোগ্রাম ঐচ্ছিকরূপে লাগতে পারে মি একটি অতিরিক্ত আর্গুমেন্ট হিসাবে যদি প্রয়োজন হবে।

  • এই সংখ্যাগুলি কোনও পছন্দ মতো যে কোনও বিন্যাসে ইনপুট হতে পারে, উদাহরণস্বরূপ তালিকাগুলিতে গোষ্ঠীযুক্ত বা আনারিতে এনকোড করা হয়েছে বা অন্য যে কোনও কিছু, যতক্ষণ না বহুকোষীয় সহগের প্রকৃত গণনাটি আপনার কোড দ্বারা সম্পাদিত হয়, এবং এনকোডিং প্রক্রিয়া নয়।

  • বহুজাতিক গুণফলটি বিজোড় এবং যদি বহুজাতিক গুণাগুণ সমান হয় তবে কোনও মিথ্যা মান যদি আউটপুট কোনও সত্যবাদী মান হতে পারে।

  • মাল্টিনোমিয়াল সহগের গণনা করার জন্য নির্মিত বিল্ট-ইনগুলি অনুমোদিত নয়।

  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

স্কোরিং

এটি কোড গল্ফ: বাইট জেতে সংক্ষিপ্ততম সমাধান।

উদাহরণ:

7, 16 এবং 1000 এর বহুজাতিক গুণফল খুঁজে পেতে, আমরা তাদের প্রত্যেককে বাইনারি প্রসারিত করি:

এখানে চিত্র বর্ণনা লিখুন

যেহেতু কোনও কলামে একের বেশি 1 নেই, বহুজাতিক গুণাগুণটি বিজোড় এবং তাই আমাদের সত্যবাদী কিছু আউটপুট করা উচিত।

,, ১, এবং multom এর বহুজাতিক গুণাগুণ খুঁজে পেতে, আমরা তাদের প্রত্যেককে বাইনারি প্রসারিত করি:

এখানে চিত্র বর্ণনা লিখুন

যেহেতু and 76 এবং উভয়ের বাইনারি প্রসারণে একটি 4 রয়েছে, বহু-বহুগুণ সহগ সমান এবং তাই আমরা একটি মিথ্যা মান আউটপুট করি।

পরীক্ষার কেস:

Input: [2, 0, 1]
Output: Truthy

Input: [5,4,3,2,1]
Output: Falsey

Input: [1,2,4,8,16]
Output: Truthy

Input: [7,16,76]
Output: Falsey

Input: [7,16,1000]
Output: Truthy

Input: [545, 1044, 266, 2240]
Output: Truthy

Input: [1282, 2068, 137, 584]
Output: Falsey

Input: [274728976, 546308480, 67272744, 135004166, 16790592, 33636865]
Output: Truthy

Input: [134285315, 33849872, 553780288, 544928, 4202764, 345243648]
Output: Falsey

1
পিপিসিজিতে আপনাকে স্বাগতম! প্রথম প্রথম পোস্ট!
R:

আমি মনে করি ==যে সত্যতা এবং মিথ্যা ফ্লিপ করার অনুমতি দেওয়া হলে সাম্যতার জন্য বেশ কয়েকটি ভাষা একটি বাইট সংরক্ষণ করতে পারত।
janrjan জোহানসেন

@ JanrjanJohansen ভাল লাগছে।
হুড

উত্তর:



7

পাইথন 3 2, 55 43 42 বাইট

lambda l:sum(l)==eval(`l`.replace(*',|'))

মিঃ এক্সকোডার থেকে -12 বাইট

রড থেকে -1 বাইট

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

ব্যাখ্যা: সংখ্যার যোগফল বিটওয়াইজ-বা সংখ্যার সমান কিনা তা পরীক্ষা করে।


43 বাইট:lambda l:sum(l)==eval("|".join(map(str,l)))
মিঃ এক্সকোডার

আপনি পাইথন 2
রড



2

জাপট, 6 বাইট

পিজ্জা প্যান্টস 184 এর আরও একটি বন্দর এবং লিকি নুনের সমাধান।

x ¶Ur|

এটা পরীক্ষা করো


প্রযুক্তিগতভাবে, পিজ্জা প্যান্ট 184 আমার চেয়ে 14 সেকেন্ড আগে উত্তর দিয়েছে ...
লিকি নুন

2

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

@ মিস্টার এক্সকোডারকে 2 বাইট ধন্যবাদ
সংরক্ষিত হয়েছে

বিটওয়াইস OR এর সাথে যোগফলের তুলনা করা (যেমন পিজ্জা প্যান্ট 184 এবং লিকি নুন করেছেন) আমার প্রাথমিক পদ্ধতির চেয়ে 1 3 4 বাইট কম:

a=>(q=c=>eval(a.join(c)))`|`==q`+`

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


অল্টার। সংস্করণ, 38 বাইট

a=>!a.some((x,i)=>a.some(y=>i--&&x&y))

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


প্রযুক্তিগতভাবে, পিজ্জা প্যান্ট 184 আমার চেয়ে 14 সেকেন্ড আগে উত্তর দিয়েছে ...
লিকি নুন

-1 বাইট:a=>(q=c=>eval(a.join(c)))`|`==q`+`;
ইটিএইচ প্রোডাকশনগুলি

পছন্দ করুন এটি Node.js. এ সূক্ষ্মভাবে কাজ করে তবে আপনি কি এটি ব্রাউজারে কাজ করার ব্যবস্থা করেছেন?
আর্নল্ড

ফায়ারফক্স 57 এ আমার জন্য ভাল কাজ করে you
ইটিএইচ প্রোডাকশনস

@ ইথ প্রডাকশনস আসলে, হ্যাঁ এটি কাজ করে। এটি কেবল repl.it এ ব্যর্থ হয় ।
আর্নল্ড

2

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

(==).sum<*>foldl1 xorএকটি বেনামে ফাংশন একটি Bool। হিসাবে ব্যবহার করুন ((==).sum<*>foldl1 xor) [2,0,1]

import Data.Bits
(==).sum<*>foldl1 xor

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

  • পিজ্জা প্যান্টস 184 এবং লিকি নুনের দ্বারা একই কৌশল একইভাবে ব্যবহৃত যা হ্যাস্কেল অপারেটরের নাম বাদে (বিটওয়াইস বা) xorপরিবর্তে (বিটওয়াইস) ব্যবহার করতে একটি বাইট সংরক্ষণ করে (.|.)

  • (==).sum<*>foldl1 xorএর বিন্দুবিহীন সংস্করণ \l->sum l==foldl1 xor l


2

জাভা 8, 53 বাইট

a->{int i=0,j=0;for(int x:a){i+=x;j|=x;}return i==j;}

@ লিকিউনের জেলি উত্তরটির বন্দর ।

ব্যাখ্যা:

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

a->{             // Method with integer-array parameter and boolean return-type
  int i=0,j=0;   //  Two integers, both starting at 0
  for(int x:a){  //  Loop over the array
    i+=x;        //   Add them to the first integer
    j|=x;}       //   And bitwise-OR it with the second integer
  return i==j;}  //  Return if both integers are the same after the loop




1

লাল , 78 বাইট

f: func[x][b: :to-binary t: 0 s: b 0 foreach n x[t: t + n s: s or b n]s = b t]

কিভাবে এটা কাজ করে:

Ungolfed:

Red []
f: func [x][         -  a function taking a block as an argument
    b: :to-binary    -  an alias for the to-binary function
    t: 0             -  set the sum of the numbers to 0
    s: b 0           -  set the "or" total to binary 0
    foreach n x[     -  for each number in the block
        t: t + n     -  add it to the sum
        s: s or b n  -  bitwise or of its binary representation with the total
    ]
    s = b t          - are the sum (binary) and the "or" total equal?
]

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



0

ব্যাচ, 73 বাইট

@set/as=o=0
@for %%i in (%*)do @set/as+=%%i,o^|=%%i
@if %s%==%o% echo 1

1সত্যের জন্য ফলাফল , মিথ্যা জন্য কিছুই। পিজ্জা প্যান্টস 184 / লিকি নুনের অ্যালগরিদমের আরেকটি সুস্পষ্ট বন্দর।


0

জে , 10 বাইট

+/=+./&.#:

তবুও pizzapants 184 এর আরও একটি বন্দর এবং লিকি নুনের সমাধান।

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

+/.&.#: - সংখ্যাগুলিকে বাইনারিতে রূপান্তর করুন, বিটওয়াইস বা দুটি এর শক্তিতে প্রয়োগ করুন এবং বাইনারি থেকে দশমিক হিসাবে ফিরে রূপান্তর করুন

+/ - সংযোজন দ্বারা ইনপুট হ্রাস করুন

= - উপরের সমান?

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

সোজা বিকল্প

জে , 12 বাইট

2>[:>./+/@#:

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

+/@#: - প্রতিটি সংখ্যা বাইনারি রূপান্তর এবং 2 এর প্রতিটি পাওয়ার যোগফল খুঁজে

>./ - সর্বাধিক সন্ধান করুন

2>- এটা কি 2 এর চেয়ে কম? -> সত্যবাদী

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


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