বাইনারি ফাংশনগুলির বৈশিষ্ট্য


14

বিমূর্ত বীজগণিতের অনেকগুলি গুরুত্বপূর্ণ বিষয়ের মধ্যে একটি বাইনারি ফাংশন জড়িত একটি সেটে অভিনয় করে। এই জাতীয় বিষয়গুলির তদন্তে এই জাতীয় ফাংশনগুলির বেশ কয়েকটি বৈশিষ্ট্য সংজ্ঞায়িত করা হয়েছে।

আপনার চ্যালেঞ্জটি কোনও নির্দিষ্ট ডোমেনে প্রদত্ত বাইনারি ফাংশন এই পাঁচটি বৈশিষ্ট্যের অধিকারী কিনা তা নির্ধারণ করা হবে।

প্রোপার্টি

অবসান

প্রতিটি সম্ভাব্য আউটপুট ডোমেনে থাকলে একটি বাইনারি ফাংশন বন্ধ থাকে।

Associativity

বাইনারি ফাংশনটি সহযোগী হয় যদি ক্রমটি ইনপুটগুলির একটি সিরিজটিতে প্রয়োগ করা হয় ফলাফলটি প্রভাবিত করে না। এটি হ'ল সর্বদা সমান $হলে সহযোগী হয়(a $ b) $ ca $ (b $ c) । নোট করুন যেহেতু মানটি (a $ b)ইনপুট হিসাবে ব্যবহৃত হয়, তাই সহযোগী ক্রিয়াকলাপগুলি বন্ধ করতে হবে।

Commutativity

ইনপুটগুলির ক্রমটি অদলবদলে ফলাফল পরিবর্তন না হলে একটি বাইনারি ফাংশন পরিবর্তনীয় হয়। অন্য কথায়, যদি a $ bসর্বদা সমান হয় b $ a

পরিচয়

বাইনারি ফাংশনটির একটি পরিচয় উপাদান থাকে যদি eডোমেনে কিছু উপাদান থাকে যেমন ডোমেনের a $ e = a = e $ aসকলের জন্য ain

Idempotence

একটি বাইনারি ফাংশন আদর্শবান হয় যদি এটি দুটি অনুরূপ ইনপুটগুলিতে প্রয়োগ করে আউটপুট হিসাবে সেই সংখ্যাটি দেয়। অন্য কথায়, যদি সবার a $ a = aজন্যa ডোমেনে ।

ইনপুট

আপনাকে ম্যাট্রিক্স আকারে একটি ফাংশন দেওয়া হবে এবং ফাংশনের ডোমেন সংখ্যা হবে 0 ... n-1যেখানে nম্যাট্রিক্সের পাশের দৈর্ঘ্য is

মানটি ম সারির (a $ b)মধ্যে aতম সারির bতম উপাদান হিসাবে এনকোড করা হয় । যদি ইনপুট ম্যাট্রিক্স হয় Qতবেa $ b =Q[a][b]

উদাহরণস্বরূপ, **ডোমেনে এক্সপেনসিয়েশন ফাংশন ( পাইথনে) এইভাবে [0, 1, 2]এনকোড করা রয়েছে:

[[1, 0, 0]
 [1, 1, 1]
 [1, 2, 4]]

বাম এবং ডান ডোমেনগুলি একই, সুতরাং ম্যাট্রিক্স সর্বদা বর্গক্ষেত্র হবে।

আপনি ইনপুট হিসাবে কোনও সুবিধাজনক ম্যাট্রিক্স ফর্ম্যাট ব্যবহার করতে পারেন, যেমন তালিকার তালিকাগুলি, সারির একক তালিকা- বা কলাম- প্রধান ক্রম, আপনার ভাষার নেটিভ ম্যাট্রিক্স অবজেক্ট ইত্যাদি However তবে, আপনি ইনপুট হিসাবে সরাসরি কোনও ফাংশন গ্রহণ করতে পারেন না।

সরলতার জন্য, ম্যাট্রিক্স এন্ট্রিগুলি সবগুলি পূর্ণসংখ্যা হবে। আপনি ধরে নিতে পারেন যে সেগুলি আপনার ভাষার স্থানীয় সংখ্যার সাথে খাপ খায়।

আউটপুট

উপরের বৈশিষ্ট্যগুলির মধ্যে কোনটি আপনার চয়ন করা যে কোনও বিন্যাসে রয়েছে তা বুলিয়ানদের তালিকা, প্রতিটি সম্পত্তির জন্য আলাদা আলাদা অক্ষরের স্ট্রিং ইত্যাদি অন্তর্ভুক্ত রয়েছে However বৈশিষ্ট্য। এই আউটপুট অবশ্যই সহজেই মানব-পঠনযোগ্য।

উদাহরণ

N = 4 ডোমেনে সর্বোচ্চ ফাংশন:

[[0, 1, 2, 3]
 [1, 1, 2, 3]
 [2, 2, 2, 3]
 [3, 3, 3, 3]]

এই ফাংশনে ক্লোজার, এসোসিয়েটিভিটি, চলাচল, পরিচয় এবং আদর্শের বৈশিষ্ট্য রয়েছে mp

N = 3 ডোমেনে এক্সপেনসিয়েশন ফাংশন:

[[1, 0, 0]
 [1, 1, 1]
 [1, 2, 4]]

এই ফাংশনটিতে উপরের কোনও বৈশিষ্ট্য নেই।

ডোমেন এন = 3 এ যুক্ত ফাংশন:

[[0, 1, 2]
 [1, 2, 3]
 [2, 3, 4]]

এই ফাংশনটিতে ভ্রমণ এবং পরিচয়ের বৈশিষ্ট্য রয়েছে।

ডোমেইনে কে সংযুক্তকারী n = 3:

[[0, 0, 0]
 [1, 1, 1]
 [2, 2, 2]]

এই ফাংশনটিতে ক্লোজার, এসোসিয়েটিভিটি এবং আদর্শের বৈশিষ্ট্য রয়েছে।

ডোমেন এন = 3 এ সম্পূর্ণ পার্থক্য ফাংশন:

[[0, 1, 2]
 [1, 0, 1]
 [2, 1, 0]]

এই ফাংশনটিতে ক্লোজার, চলাচল এবং পরিচয়ের বৈশিষ্ট্য রয়েছে।

N = 3 এ ডোমেনে গড় ফাংশন, সমান দিকে ঘুরবে:

[[0, 0, 1]
 [0, 1, 2]
 [1, 2, 2]]

এই ফাংশনটিতে বন্ধকরণ, চলাচল, পরিচয় এবং আদর্শহীনতার বৈশিষ্ট্য রয়েছে।

ডোমেন এন = 3 এ সমতা ফাংশন:

[[1, 0, 0]
 [0, 1, 0]
 [0, 0, 1]]

এই ফাংশনটিতে ক্লোজার এবং চলাচলের বৈশিষ্ট্য রয়েছে।

চ্যালেঞ্জ

এটি কোড গল্ফ। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য। সর্বনিম্ন বাইট জয়।

উত্তর:


4

পাইথ, 51 বাইট

[qKUQ@VQKCIQ}]Km{@RdCBQKJ!-sQK&JqF.bsm@L@QdYN.p,sQK

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষার স্যুট

এটি 5 বুলিয়ান মানগুলির একটি তালিকা মুদ্রণ করে। তারা ক্রমে বৈশিষ্ট্যগুলি নির্দেশ করে:

[Idempotence, Commutativity, Identity, Closure, Associativity]

এখানে আরও ভাল আউটপুট ফর্ম্যাট রয়েছে: বিক্ষোভ বা টেস্ট স্যুট

ব্যাখ্যা:

Idempotence:

qKUQ@VQK
   Q       Q = input matrix
  UQ       [0, 1, ..., len(matrix)-1]
 K         assign to K
    @VQK   vectorized lookup of Q and K //gets the diagonal elements
qK         check, if this is equal to K

Commutativity:

CIQ   check if transpose(Q) is equal to Q

পরিচয়:

}]Km{@RdCBQK
   m       K   map each d in K to:
        CBQ       the list [Q, transpose(Q)]
     @Rd          take the d-th element of each ^
    {             remove duplicates
}]K            check if [K] is in ^

বন্ধ:

J!-sQK
   sQ    sum(Q) //all elements of Q
  -  K   remove the elements, that also appear in K
 !       ckeck, if the results in an empty list
J        store the result in J

Associativity:

&JqF.bsm@L@QdYN.p,sQK
               .p,sQK  all permutations of [sum(Q), K] //all 2 ;-)
    .b                 map each pair (N,Y) of ^ to:
       m      N           map each d of N to:
          @Qd                the row Q[d]
        @L   Y               map each element of Y to the corr. element in ^
      s                   unfold this 2-d list
  qF                   check if they result in identically lists
&J                     and J

5

হাস্কেল, 178 171 বাইট

import Data.List
f x=[c,c&&and[(m%n)%o==m%(n%o)|m<-b,n<-b,o<-b],x==t,all(elem b)[x,t],b==[i%i|i<-b]]where c=all(l>)(id=<<x);b=[0..l-1];a%b=x!!a!!b;l=length x;t=transpose x

পাঁচটি বুলিয়ান সহ একটি তালিকা ফেরত দেয়, যা ক্রম বন্ধ, সাহচর্য, সাম্প্রদায়িকতা, পরিচয় এবং আদর্শহীনতা।

ব্যবহারের উদাহরণ: f [[1, 0, 0],[0, 1, 0],[0, 0, 1]]-> [True,False,True,False,False]

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

f x=[
  c,                         -- closure (see below)
  c&&and[(m%n)%o==m%(n%o)|   -- assoc: make sure it's closed, then check the
          m<-b,n<-b,o<-b],   --        assoc rule for all possible combinations
  x==t,                      -- comm: x must equal it's transposition
  all(elem b)[x,t],          -- identity: b must be a row and a column
  b==[i%i|i<-b]              -- idemp: element at (i,i) must equal i
  ]
  where                      -- some helper functions
  c=all(l>)(id=<<x);         -- closure: all elements of the input must be < l 
  b=[0..l-1];                -- a list with the numbers from 0 to l-1
  a%b=x!!a!!b;               -- % is an access function for index (a,b)
  l=length x;                -- l is the number of rows of the input matrix
  t=transpose x

সম্পাদনা করুন @ xnor সংরক্ষণ করতে কিছু বাইট খুঁজে পেয়েছে। ধন্যবাদ!


কীভাবে c=all(l>)?
xnor

এছাড়াও [i%i|i<-b]==b,।
xnor

কোড-গল্ফের জন্য খুব পাঠযোগ্য - দুর্দান্ত!
isaacg

4

সিজেম, 95 বাইট

q~:Ae_A,:Bf<:*'**B3m*{_{A==}*\W%{Az==}*=}%:*'A*A_z='C*B{aB*ee_Wf%+{A==}f*B,2*='1*}%Ae_B)%B,='I*

এর একটি অনুচ্ছেদে মুদ্রণ করে *AC1I*জন্য প্রতীক অবসান , Aজন্য মিশুক , Cজন্য বিনিময় , 1জন্য পরিচয় এবং Iজন্য idempotent


ইনপুট অ্যারে পড়া q~এবং এ এ সংরক্ষণ করা হয় (:A ) ।

অবসান

Ae_A,:Bf<:*'**

:*ম্যাট্রিক্সের সমস্ত ( ) উপাদান যদি বি = আকার (এ) ( ) এর চেয়ে Ae_ছোট হয় f<তবে একটি A,:Bমুদ্রণ করুন *('** ) ।

Associativity

B3m*{_{A==}*\W%{Az==}*=}%:*'A*

( B3m*) ডোমেইনে সমস্ত ট্রিপল উত্পন্ন করুন । Aযদি তারা সকলেই একটি শর্ত পূরণ করে তবে আমরা মুদ্রণ করি ({...}%:*'A* )।

শর্ত, যে জন্য কিছু ট্রিপল [i j k], বাম-ভাঁজ সাথে তালিকাটি একজন ( _{A==}*) এবং বাম-ভাঁজ তার বিপরীত [k j i]( \W%) সঙ্গে একটি অপ ( {Az==}*), এর ফ্লিপ সংস্করণ A, সমান ( =)।

Commutativity

একজন তার TRANSPOSE সমান হবে: A_z=। যদি তা হয় তবে আমরা C( 'C=) মুদ্রণ করি ।

পরিচয়

B{                         }%   For each element X in the domain (0..N-1):
  aB*                           Make N copies.
     ee                         [[0 X] [1 X] ...]
       _Wf%+                    [[0 X] [1 X] ... [X 0] [X 1] ...]
            {A==}f*             [A(0, X) A(1, X) ... A(X, 0) A(X, 1)]
                   B,2*=        This list should equal the domain list repeated twice.
                        '1*     If so, X is an identity: print a 1.

পরিচয়টি অগত্যা অনন্য, তাই আমরা কেবল একটি মুদ্রণ করতে পারি 1

Idempotent

Ae_B)%B,='I*

তির্যক সমান কিনা তা পরীক্ষা করে দেখুন B,। যদি তাই হয় তবে একটি মুদ্রণ করুন I


3

মতলব, 226

a=input('');n=size(a,1);v=1:n;c=all(0<=a(:)&a(:)<n);A=c;for i=v;for j=v(1:n*c);for k=v(1:n*c);A=A&a(a(i,j)+1,k)==a(i,a(j,k)+1);end;end;b(i)=all(a(i,:)==v-1 & a(:,i)'==v-1);end;disp([c,A,~norm(a-a'),any(b),all(diag(a)'==v-1)])

একটি লক্ষ্য করার জন্য গুরুত্বপূর্ণ বিষয় হ'ল নন-ক্লোজডটি অ-অ্যাসোসিয়েটিভকে বোঝায়। এই বৈশিষ্ট্যগুলির মধ্যে অনেকগুলি ম্যাট্রিক্সের কয়েকটি বৈশিষ্ট্য ব্যবহার করে সহজেই পরীক্ষা করা যায়:

  • অবসান : প্রদত্ত পরিসরে সমস্ত ম্যাট্রিক্স এন্ট্রি?
  • Associativity : সর্বদা হিসাবে চেক করা সবচেয়ে কঠিন
  • Commutativity : ম্যাট্রিক্স প্রতিসাম্য?
  • পরিচয় : কে-থ সারি এবং কে-থ কলামটি সূচকগুলির তালিকা হিসাবে ঠিক এমন কোনও সূচক কে রয়েছে?
  • Idempotence : কি সূচকগুলির তালিকার সাথে মিলে যায়?

স্ট্যান্ডার মতলব সংকেতের মাধ্যমে ইনপুট: [a,b;c,d]বা or[[a,b];[c,d]] or[a b;c d] ইত্যাদির

প্রদত্ত ক্রম অনুযায়ী প্রতিটি বৈশিষ্ট্যের জন্য আউটপুট হ'ল এক জিরো, 1 = সত্য, 0 = মিথ্যা, এর ভেক্টর।

সম্পূর্ণ কোড:

a=input('');
n=size(a,1);
v=1:n;
c=all(0<=a(:)&a(:)<n);               %check for closedness
A=c;
for i=v;
   for j=v(1:n*c); 
      for k=v(1:n*c);
          A=A&a(a(i,j)+1,k)==a(i,a(j,k)+1);   %check for associativity (only if closed)
      end;
   end;
   b(i)=all(a(i,:)==v-1 & a(:,i)'==v-1);      %check for commutativity
end
%closure, assoc, commut, identity, idempotence
disp([c,A,~norm(a-a'),any(b),all(diag(a)'==v-1)]);

3

জাভাস্ক্রিপ্ট (ES6) 165

একটি বেনাম ফাংশন পাঁচটি 0/1 মান সহ একটি অ্যারে প্রদান করে, যা ক্রম বন্ধ, সহযোগিতা, সাম্প্রদায়িকতা, পরিচয় এবং আদর্শ।

q=>q.map((p,i)=>(p.map((v,j)=>(w=q[j][i],v-w?h=C=0:v-j?h=0:0,q[v]?A&=!q[v].some((v,k)=>v-q[i][q[j][k]]):A=K=0),h=1,p[i]-i?P=0:0),h?I=1:0),A=P=K=C=1,I=0)&&[K,A,C,I,P]

কম গল্ফড

f=q=>(
  // A associativity, P idempotence, K closure, C commuativity
  // assumed true until proved false
  A=P=K=C=1, 
  I=0, // Identity assumed false until an identity element is found
  q.map((p,i)=> (
      h=1, // assume current i is identity until proved false
      p[i]-i? P=0 :0, // not idempotent if q[i][i]!=i for any i
      p.map((v,j)=> (
          w=q[j][i], // and v is q[i][j]
          v-w // check if q[j][i] != q[i][j]
          ? h=C=0 // if so, not commutative and i is not identity element too
          : v-j // else, check again for identity
            ? h=0 // i is not identity element if v!=j or w!=j
            : 0,
          q[v] // check if q[i][j] in domain
            ? A&=!q[v].some((v,k)=>v-q[i][q[j][k]]) // loop for associativity check
            : A=K=0 // q[i][j] out of domain, not close and not associative
        )
      ),
      h ? I=1 : 0 // if i is the identity element the identity = true
    )
  ),
  [K,A,C,I,P] // return all as an array
)

পরীক্ষা

f=q=>
  q.map((p,i)=>(
    p.map((v,j)=>(
      w=q[j][i],
      v-w?h=C=0:v-j?h=0:0,
      q[v]?A&=!q[v].some((v,k)=>v-q[i][q[j][k]]):A=K=0
    ),h=1,p[i]-i?P=0:0),
    h?I=1:0
  ),A=P=K=C=1,I=0)
  &&[K,A,C,I,P]

// test

console.log=x=>O.textContent+=x+'\n';

T=[
 [
  [[0, 1, 2, 3],
   [1, 1, 2, 3],
   [2, 2, 2, 3],
   [3, 3, 3, 3]]
 ,[1,1,1,1,1]] // has the properties of closure, associativity, commutativity, identity and idempotence.
,[ // exponentiation function on domain n=3:
  [[1, 0, 0],
   [1, 1, 1],
   [1, 2, 4]]
 ,[0,0,0,0,0]] // has none of the above properties.
,[ // addition function on domain n=3:
  [[0, 1, 2],
   [1, 2, 3],
   [2, 3, 4]] 
 ,[0,0,1,1,0]] // has the properties of commutativity and identity.
,[ // K combinator on domain n=3:
  [[0, 0, 0],
   [1, 1, 1],
   [2, 2, 2]]
 ,[1,1,0,0,1]] // has the properties of closure, associativity and idempotence.
,[ // absolute difference function on domain n=3:
  [[0, 1, 2],
   [1, 0, 1],
   [2, 1, 0]]
 ,[1,0,1,1,0]] // has the properties of closure, commutativity and identity.
,[ // average function, rounding towards even, on domain n=3:
  [[0, 0, 1],
   [0, 1, 2],
   [1, 2, 2]]
 ,[1,0,1,1,1]] // has the properties of closure, commutativity, identity and idempotence.
,[ // equality function on domain n=3:
  [[1, 0, 0],
   [0, 1, 0],
   [0, 0, 1]]
 ,[1,0,1,0,0]] // has the properties of closure, commutativity,
]  

T.forEach(t=>{
  F=t[0],X=t[1]+'',R=f(F)+'',console.log(F.join`\n`+'\n'+R+' (expected '+X+') '+(X==R?'OK\n':'Fail\n'))
  })
<pre id=O></pre>

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