মডুলো সমতা পার্টি


15

আপনি একটি অ্যারের দেওয়া হয় একটি এর এন সঙ্গে কঠোরভাবে ধনাত্মক পূর্ণসংখ্যা, এন ≥ 2

আপনার টাস্ক প্রতিটি প্রবেশ মানচিত্র হয় একটি আমি হবে:

  • 1 যদি একটি জে মোড এ আমি প্রতিটি জে এর জন্য বিজোড় যেমন 1 ≤ j ≤ n এবং j ≠ i
  • 2 যদি একটি জে মোড এ আমি প্রতিটি জে যেমন 1 ≤ j ≤ n এবং j ≠ i এর জন্যও হয়
  • 0 অন্যথায় (মিশ্র অংশ)

উদাহরণ

জন্য একটি = [73, 50, 61] , আমরা আছে:

  • 50 মোড 73 = 50 , 61 মড 73 = 61 → মিশ্র
  • 73 মোড 50 = 23 , 61 মড 50 = 11 → সমস্ত বিজোড়
  • 73 মোড 61 = 12 , 50 মড 61 = 50 → সব কিছু

সুতরাং, প্রত্যাশিত আউটপুট [0, 1, 2]

বিধি

  • আপনি 0 , 1 এবং 2 এর পরিবর্তে যে কোনও তিনটি স্বতন্ত্র মান (যে কোনও ধরণের) ব্যবহার করতে পারেন যতক্ষণ না সেগুলি সুসংগত থাকে। আপনি যদি চ্যালেঞ্জটিতে বর্ণিত একটি ব্যবহার না করেন তবে দয়া করে আপনার ম্যাপিং নির্দিষ্ট করুন
  • সে সম্পর্কে কোনও সন্দেহ থাকা উচিত, শূন্য সমান
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!

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

[ 1, 2 ] --> [ 2, 1 ]
[ 3, 4 ] --> [ 1, 1 ]
[ 1, 2, 3 ] --> [ 2, 1, 0 ]
[ 4, 4, 4 ] --> [ 2, 2, 2 ]
[ 73, 50, 61 ] --> [ 0, 1, 2 ]
[ 941, 459, 533 ] --> [ 1, 0, 0 ]
[ 817, 19, 928, 177 ] --> [ 1, 2, 1, 1 ]
[ 312, 463, 336, 729, 513 ] --> [ 0, 2, 0, 0, 0 ]
[ 53, 47, 33, 87, 81, 3, 17 ] --> [ 0, 0, 0, 1, 0, 2, 0 ]


আউটপুট মান ইন্টিজার হতে বা would আছে [1], [0, 1]এবং [1, 1]কাজ করে?
ডেনিস

@ ডেনিস যে কোনও সামঞ্জস্যপূর্ণ মান ভাল আছে। সুতরাং হ্যাঁ, যে কাজ করবে!
আর্নল্ড

উত্তর:


9

পাইথন 2 , 68 67 66 বাইট

-১ বাইট ধন্যবাদ মিঃ এক্সকোডারকে
-1 বাইট ধন্যবাদ ওভেসকে ধন্যবাদ

x=input()
for j in x:k=sum(i%j%2for i in x);print(k<len(x)-1)+0**k

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

ফেরত পাঠায় 1,0,2পরিবর্তে 0,1,2


প্রতিস্থাপন (k<1)সঙ্গে 0**kজন্য -1 বাইট।
ovs

4

জেলি , 9 বাইট

%þœ-€0Ḃ‘Ṭ

রিটার্নস [1, 1], [0, 1], [1] পরিবর্তে 0, 1, 2

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

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

%þœ-€0Ḃ‘Ṭ  Main link. Argument: A (array)

%þ           Build the modulus table.
  œ-€0       Remove one 0 from each list of moduli.
      Ḃ      Take the last bit of each.
       ‘     Increment, mapping 0 and 1 to 1 and 2.
        Ṭ    Untruth; map each array to an aray of 1's at the specified indices.
             This yields:
                 [1] if the array contains only 1's (all even).
                 [0, 1] if the array contains only 2's (all odd).
                 [1, 1] if the array contains 1's and 2's.

আপনি কি বাইট সংরক্ষণ করতে প্রতিস্থাপন ‘ṬUḄকরতে Q€Ḅপারেন?
জোনাথন অ্যালান

দুঃখের বিষয়, না। Q€ফিরে আসতে পারে [0, 1]বা [1, 0]
ডেনিস

হ্যাঁ সঠিক. আমি মনে করি [1], [1,1]এবং [0,1]তিনটি স্বতন্ত্র মান তাই %þœ-€0Ḃ‘Ṭ9 এর জন্য গ্রহণযোগ্য হওয়া উচিত - সম্পাদনা - আহ আমি আপনাকে এই সঠিক প্রশ্ন জিজ্ঞাসা করেছি :)
জোনাথন অ্যালান

আর একটি 9 বাইট বিকল্প¹-Ƥ%"%2‘Ṭ
মাইল মাইল

3

এমএটিএল , 12 বাইট

!G\o~tAws1=-

এই ব্যবহারসমূহ 0, -1, 1পরিবর্তে 0, 1, 2যথাক্রমে।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

!    % Implicit input: row vector. Transpose into a column
G    % Push input again
\    % Modulus, element-wise with broadcast. Gives a square matrix
o    % Parity: gives 1 for odd, 0 for even
~    % Logical negate: 0 for odd, 1 for even
t    % Duplicate
A    % All: gives 1 for columns that contain only 1
w    % Swap
s    % Sum of each column
1    % Push 1
=    % Is equal? Gives 1 if the column sum was 1, 0 otherwise
-    % Subtract, element-wise. Implicit display

3

সি (জিসিসি) , 118 114 97 92 91 বাইট

  • বাগফিক্সিংয়ের জন্য পিটার কর্ডসকে ধন্যবাদ ।
  • সংরক্ষিত চার একুশ ধন্যবাদ বাইট পিটার Cordes ; একটি ভিন্ন আউটপুট মান ম্যাপিং ব্যবহার করার পরামর্শ; [0 1 2] ~ [3 2 1]
  • পাঁচটি বাইট সংরক্ষণ করা; আরও একটি ম্যাপিং ব্যবহার করে; [0 1 2] ~ [  ]
  • একটি বাইট সংরক্ষণ করা; golfed for(i=0;i<n;i++,putchar...করতে for(i=~0;++i<n;putchar...
i,j,r;f(A,n)int*A;{for(i=~0;++i<n;putchar(r)){for(j=r=0;j<n;j++)j-i&&(r|=1<<A[j]%A[i]%2);}}

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


টিআইওতে আপনার পরীক্ষার ক্রিয়াকলাপগুলি পর্যাপ্ত পরিমাণে অর্গগুলি পাস করে না এবং এই অপরিবর্তিত আচরণটি শেষ পরীক্ষার কেস থেকে শূন্য (SIGFPE) দ্বারা বিভাজনের দিকে নিয়ে যায়। f(I,7)মুছে ফেলা হয় প্রথম উপাদান I[]( A[]চ মধ্যে ()) args এক যে আপনার স্থানীয়দের হিসাবে ব্যবহার করছেন না। f()ধরে নিই যে কলটি কলকারীর দ্বারা স্ট্যাকের উপর দিয়ে গেছে, তবে কলার তা জানত না, এবং রিটার্নের ঠিকানার উপরে স্ট্যাকের মধ্যে আসলে কী A[0]। (অর্থাত্ এই UB এর কারণ হয়েছে tএবং A[0]একই ঠিকানা রয়েছে)। যাইহোক, এটি টিআইওতে আপনার পরীক্ষা ফাংশনে কেবলমাত্র ইউবি ।
পিটার কর্ডস

এবং বিটিডাব্লু, আমি স্থানীয়ভাবে ক্র্যাশটি পুনরায় প্রতিস্থাপন করতে পারি নি তাই টিআইওর জিসিসি execlp("/usr/bin/objdump", "objdump", "-drwC", "-Mintel", argv[0], 0);.2.২.১ থেকে এএসএম পাওয়ার জন্য আমাকে মূলত যুক্ত করতে হয়েছিল, যা আমার আর্চ লিনাক্সের জিসিসি .2.২.১ এর সাথে সঠিকভাবে মেলে না। কলিং ফাংশনের জন্য সেই বিচ্ছিন্নতাটিকে আবার asm উত্সে পরিণত করার পরে, আমি স্থানীয়ভাবে এটি জিডিবির ভিতরে তিরস্কার করতে পারি এবং ঠিক কী ঘটছে তা নিশ্চিত করতে পারি।
পিটার কর্ডেস

আপনি আলাদা ম্যাপিং ব্যবহার করে বাইটগুলি সংরক্ষণ করতে পারেন, যেমন 1 এর জন্য 1, বিজোড়ের জন্য 2, মিশ্রিতের জন্য 3, যাতে আপনার o|=1<<(A[j]%A[i]%2)কোনও অভিনব ডিকোডিংয়ের প্রয়োজন ছাড়াই পারে o
পিটার কর্ডস

@ পিটারকর্ডস লক্ষ করার জন্য আপনাকে ধন্যবাদ, যদিও আমি এখনও পুরোপুরি বুঝতে পারছি না কেন প্রথম অ্যারে এন্ট্রিটি ওভাররাইট হয়ে যায়। অপরিজ্ঞাত আচরণটি সরিয়ে আমি এখন স্থানীয়গুলির পরিবর্তে গ্লোবাল ভেরিয়েবলগুলি ব্যবহার করতে পছন্দ করেছি।
জোনাথন ফ্রেচ

@ পিটারকর্ডস আমি আপনার গল্ফিংয়ের পরামর্শও নিয়েছি এবং চারটি বাইট সংরক্ষণ করতে সক্ষম হয়েছি। যাইহোক, আমি জানি না এটি হ'ল o|=1<<...এটিই ছিল যা আপনি পরামর্শ দিচ্ছিলেন, যেমন আপনি লাইনের পাশাপাশি কিছু লিখেছিলেন o|=1<<(t=...
জোনাথন ফ্রেচ

3

গণিত, 57 49 48 বাইট

(s=#;And@@#.Or@@#&@OddQ@Rest@Sort[s~Mod~#]&)/@#&

এটি ফিরে আসে:

  • False.True0 এর জন্য (মিশ্র)
  • True.True1 এর জন্য (সমস্ত বিজোড়)
  • False.Falseজন্য 2 (সমস্ত এমনকি)

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

এখানে কিছুটা দীর্ঘতর বিকল্প (49 বাইট):

Sign[(s=#;Tr@Mod[s~Mod~#,2]&)/@#/.Tr[1^#]-1->-1]&

এই এক ফিরে:

  • 10 এর জন্য (মিশ্র)
  • -11 এর জন্য (সমস্ত বিজোড়)
  • 0জন্য 2 (সমস্ত এমনকি)

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



2

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

a=>a.map(A=>a.map(B=>d+=B%A%2,d=0)|!a[d+1]-!d)

-1 (এমনকি), 1 (বিজোড়), এবং 0 (মিশ্র) প্রদান করে।

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

dসঁচায়ক হবে:

  1. শূন্য থাকলেও সব মডুলি। ( !a[d+1]== মিথ্যা, !d== 1, false - 1== -1 )
  2. অ্যারের দৈর্ঘ্যের চেয়ে এক কম * যদি সমস্ত বিজোড় মডুলি হয়। ( * সংগ্রহকারীর মধ্যে এমন একটি উপাদান রয়েছে যা নিজে থেকে বিদ্রূপযুক্ত, যার ফলে একটি এমনকি মডুলাস হয়)) ( !a[d+1]== সত্য, !d== 0, true - 0== 1 )
  3. মেশানো হলে অ্যারের দৈর্ঘ্যের চেয়ে দুই বা আরও কম। ( !a[d+1]== মিথ্যা, !d== 0, false - 0== 0 )

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


1

জে , 27 20 বাইট

[:<@~.@}:@\:"1~2||/~

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

0 1 2 এর পরিবর্তে [1 0] [1] [0] ব্যবহার করে

ব্যাখ্যা:

|/~ - অবশিষ্টদের সাথে একটি টেবিল তৈরি করে:

  |/~ 73 50 61 
 0 50 61
23  0 11
12 50  0

2|অদ্ভুত বা এমনকি? :

   2||/~ 73 50 61 
0 0 1
1 0 1
0 0 0

<@~.@}:@\:"1 - সাজান, শেষ উপাদানটি সর্বদা ছেড়ে দিন (সর্বদা একটি শূন্য), প্রাকৃতিক উপাদান এবং প্রতিটি সারি বাক্স রাখুন:

   <@~.@}:@\:"1~2||/~ 73 50 61 
┌───┬─┬─┐
│1 0│1│0│
└───┴─┴─┘

1
জোড়ের 2/:~@:|"1]|1]\.]তালিকায় ফিরে আসার সাথে 16 বাইট ।
মাইল

@ মাইল ধন্যবাদ! এই আউটপুট গ্রহণযোগ্য?
গ্যালেন ইভানভ

আসলে না, আমি পৃথক মান সম্পর্কে সেই অংশটি মিস করেছি। আমি এটি আবার ফিরে পাবেন।
মাইল


1

পার্ল, 38 বাইট

+3জন্য অন্তর্ভুক্ত-p

#!/usr/bin/perl -p
s/\d+/$@|=$_%$&%2+1for<$`$'>;$@/gee

সকলের জন্য আউটপুট 1, সমস্ত বিজোড়ের জন্য 2, মিশ্রের জন্য 3





1

জাভা 8, 91 89 বাইট

a->{for(int z:a){int s=1;for(int y:a)s+=y%z%2;System.out.print(" "+(s<a.length)+(s<2));}}
  • এমনকি সন্ধ্যার truetrueপরিবর্তে ব্যবহার করা2
  • ব্যবহার falsefalseপরিবর্তে 1বিজোড় জন্য
  • truefalseপরিবর্তে 0মিশ্র জন্য ব্যবহার

ব্যাখ্যা:

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

a->{                      // Method with integer-array parameter and no return-type
  for(int z:a){           //  Loop over the array
    int s=1;              //   Sum-integer, starting at 1
    for(int y:a)          //   Inner loop over the array again
      s+=y%z%2;           //    Increase the sum by `y` modulo-`z` modulo-2
    System.out.print(" "  //   Print a space
      +(s<a.length)       //    + "true" if the sum is smaller than the length of the array
                          //      (this means there is at least one even)
      +(s<2));}}          //    + "true" if the sum is still 1
                          //      (this means all are even)

0

Clojure, 82 বাইট

#(for[R[(range(count %))]i R](set(for[j R :when(not= i j)](odd?(mod(% j)(% i))))))

আউটপুট রূপান্তর সহ একটি সম্পূর্ণ উদাহরণ:

(def f #(for[R[(range(count %))]i R](set(for[j R :when(not= i j)](odd?(mod(% j)(% i)))))))
(->> [ 53, 47, 33, 87, 81, 3, 17] f
     (map {#{true} 1, #{false} 2, #{true false} 0}))
; (0 0 0 1 0 2 0)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.