লেভি-সিভিটা প্রতীক


29

ত্রি-মাত্রিক লেভি-সিভিটা প্রতীক একটি ফাংশন যা প্রতিটি fসংখ্যার ত্রিগুণ নিয়ে (i,j,k)থাকে {1,2,3}, যা {-1,0,1}হিসাবে সংজ্ঞায়িত করা হয়:

  • f(i,j,k) = 0যখন পৃথক i,j,kহয় না, i=jবা j=kবাk=i
  • f(i,j,k) = 1যখন (i,j,k)একটি চক্রাকার স্থানান্তর হয় (1,2,3), এটি একটি (1,2,3), (2,3,1), (3,1,2)
  • f(i,j,k) = -1যখন (i,j,k)একটি চক্রাকার স্থানান্তর হয় (3,2,1), এটি একটি (3,2,1), (2,1,3), (1,3,2)

ফল চিহ্ন একটি বিন্যাস এর (1,2,3), অ-বিনিময়ের বিকল্পভাবে 0. দান, যদি আমরা মান শরীক সঙ্গে 1,2,3লম্ব ইউনিট ভিত্তিতে ভেক্টর দিয়ে e_1, e_2, e_3, তারপর f(i,j,k)হয় নির্ধারক কলাম সহ 3x3 ম্যাট্রিক্স e_i, e_j, e_k

ইনপুট

{1,2,3}ক্রম থেকে প্রতিটি তিনটি নম্বর । অথবা, আপনি শূন্য-সূচকযুক্ত ব্যবহার করতে বেছে নিতে পারেন {0,1,2}

আউটপুট

তাদের লেবি-সিভিটা ফাংশন মান থেকে {-1,0,1}। এটি কোড গল্ফ।

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

27 সম্ভাব্য ইনপুট রয়েছে।

(1, 1, 1) => 0
(1, 1, 2) => 0
(1, 1, 3) => 0
(1, 2, 1) => 0
(1, 2, 2) => 0
(1, 2, 3) => 1
(1, 3, 1) => 0
(1, 3, 2) => -1
(1, 3, 3) => 0
(2, 1, 1) => 0
(2, 1, 2) => 0
(2, 1, 3) => -1
(2, 2, 1) => 0
(2, 2, 2) => 0
(2, 2, 3) => 0
(2, 3, 1) => 1
(2, 3, 2) => 0
(2, 3, 3) => 0
(3, 1, 1) => 0
(3, 1, 2) => 1
(3, 1, 3) => 0
(3, 2, 1) => -1
(3, 2, 2) => 0
(3, 2, 3) => 0
(3, 3, 1) => 0
(3, 3, 2) => 0
(3, 3, 3) => 0

উত্তর:


20

জেলি , 5 বাইট

ṁ4IṠS

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

অ্যালগরিদম

আসুন জি, কেজে, আইকে পার্থক্য বিবেচনা করি ।

  • যদি (ঝ, J, ট) একটি ঘূর্ণন হয় (1, 2, 3) , পার্থক্য ঘূর্ণন হয় (1, 1, -2) । লক্ষণগুলির যোগফল নিয়ে আমরা 1 + 1 + (-1) = 1 পাই ।

  • যদি (ঝ, J, ট) একটি ঘূর্ণন হয় (3, 2, 1) , পার্থক্য ঘূর্ণন হয় (-1, -1, 2) । লক্ষণগুলির যোগফল নিয়ে আমরা (-1) + (-1) + 1 = -1 পাই ।

  • জন্য (ঝ, আমি ঞ) (বা একটি ঘূর্ণন), যেখানে আমি এবং সমান হতে পারে, পার্থক্য আছে (0, জি, IJ) । লক্ষণ জি এবং IJ , বিপরীত, তাই লক্ষণ এর সমষ্টি 0 টি + 0 = 0

কোড

ṁ4IṠS  Main link. Argument: [i, j, k]

ṁ4     Mold 4; yield [i, j, k, i].
  I    Increments; yield [j-i, k-j, i-k].
   Ṡ   Take the signs, replacing 2 and -2 with 1 and -1 (resp.).
    S  Take the sum.

সুন্দর - অবশ্যই এটি xnor এর উদ্দেশ্যযুক্ত অ্যালগরিদম ছিল।
ইটিএইচ প্রডাকশনগুলি ২:24

8

পাইথন 2 , 32 বাইট

lambda i,j,k:(i-j)*(j-k)*(k-i)/2

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

অ্যালগরিদম

আসুন পার্থক্য বিবেচনা করা যাক ij, jk, ki

  • যদি (ঝ, J, ট) একটি ঘূর্ণন হয় (1, 2, 3) , পার্থক্য ঘূর্ণন হয় (-1, -1, 2) । পণ্যটি গ্রহণ করে আমরা (-1) × (-1) × 2 = 2 পাই ।

  • যদি (ঝ, J, ট) একটি ঘূর্ণন হয় (3, 2, 1) , পার্থক্য ঘূর্ণন হয় (1, 1, -2) । পণ্যটি গ্রহণ করা, আমরা 1 × 1 × (-2) = -2 পাই ।

  • জন্য (ঝ, আমি ঞ) (বা একটি ঘূর্ণন), যেখানে আমি এবং সমান হতে পারে, পার্থক্য আছে (0, IJ, জি) । পণ্যটি গ্রহণ করা, আমরা 0 × (ij) × (জি) = 0 পাই ।

সুতরাং, পার্থক্যের পণ্যটিকে 2 দ্বারা ভাগ করে নেওয়া পছন্দসই ফলাফল দেয়।


7

x86, 15 বাইট

আর্গুমেন্ট লাগে %al, %dl, %bl, ইন আয় %al। ডেনিসের সূত্র ব্যবহার করে সরাসরি বাস্তবায়ন।

 6: 88 c1                   mov    %al,%cl
 8: 28 d0                   sub    %dl,%al
 a: 28 da                   sub    %bl,%dl
 c: 28 cb                   sub    %cl,%bl
 e: f6 e3                   mul    %bl
10: f6 e2                   mul    %dl
12: d0 f8                   sar    %al
14: c3                      retq 

পাশে: আমি মনে করি আমি বুঝতে পেরেছি কেন %eaxএখন "সঞ্চালক" ...


আমার মনে হয় আপনি বোঝানো sarনা shr
জেসেটার

@ জেস্টার ভাল ক্যাচ স্থির
qwr

6

অক্টাভা, 20 বাইট

@(v)det(eye(3)(:,v))

নির্ধারক সূত্রটির দুর্দান্ত বাস্তবায়ন। সনাক্তকরণ ম্যাট্রিক্সের কলামগুলিকে অনুমতি দেয় তারপরে নির্ধারকটি নেয়।


5

ওল্ফ্রাম ভাষা (ম্যাথমেটিকা) , 9 বাইট

Signature

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


ওল্ফ্রাম ভাষা (ম্যাথমেটিকা) , 18 বাইট

মার্টিন ইন্ডারকে ধন্যবাদ 2 বাইট সংরক্ষণ করা।

Det@{#^0,#,#^2}/2&

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


বিল্টিনগুলি কোনও মজাদার নয়
qwr

2
ভ্যান্ডারমনড নির্ধারকটি দুর্দান্ত। এছাড়াও রয়েছে Det@IdentityMatrix[3][[#]]&(দীর্ঘ, তবে কম টোকেন)।
কাইল মিলার

1
#^1শুধুই #;)
মার্টিন এন্ডার


4

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

অতিরিক্ত জটিল কিন্তু মজাদার:

(a,b,c,k=(a+b*7+c*13)%18)=>k-12?+!k:-1

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


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

স্ট্যান্ডার্ড সূত্র ব্যবহার:

(a,b,c)=>(a-b)*(b-c)*(c-a)/2

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






1

রুবি , 56 বাইট

->t{t.uniq!? 0:(0..2).any?{|r|t.sort==t.rotate(r)}?1:-1}

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

একবার যখন আমরা কেসটি বাতিল করি যেখানে ট্রিপলটির মানগুলি অনন্য নয়, t.sort(এবং এর চেয়ে ছোট) [1,2,3]বা এর সমান[*1..3]

->t{
  t.uniq! ? 0                     # If applying uniq modifies the input, return 0
          : (0..2).any?{|r|       # Check r from 0 to 2:
              t.sort==t.rotate(r) #   If rotating the input r times gives [1,2,3],
            } ? 1                 #     return 1;
              :-1                 #     else return -1
}

1

কাস্তে , 7 বাইট

ṁ±Ẋ-S:←

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

ব্যাখ্যা

ডেনিস জেলি উত্তর সোজা বন্দর । S:←তালিকার Ẋ-শীর্ষটিকে শেষ পর্যন্ত অনুলিপি করে, সংলগ্ন পার্থক্য ṁ±গ্রহণ করে এবং প্রতিটি উপাদানের চিহ্ন নিয়ে যায় এবং ফলাফলটির যোগফল দেয়।




0

বিক্রয় , 44 বাইট

 F(){ bc<<<\($2-$1\)*\($3-$1\)*\($3-$2\)/2;}

পরীক্ষা:

 F 1 2 3
 1

 F 1 1 2
 0

 F  2 3 1
 1

 F 3 1 2
 1

 F 3 2 1
 -1

 F 2 1 3
 -1

 F 1 3 2
 -1

 F 1 3 1
 0

ব্যাখ্যা:

 The formula is : ((j - i)*(k - i)*(k - j))/2

বিসি , 42 বাইট

 define f(i,j,k){return(j-i)*(k-i)*(k-j)/2}

পরীক্ষা:

 f(3,2,1)
 -1
 f(1,2,3)
 1
 f(1,2,1)
 0

1
bcবহিরাগত কল / ফাংশন ঘোষণা এড়াতে কেবল ভাষার দাবি করা কি সম্ভব ?
দেরি করা coinheringaahing

1
এটি কোন শেলটিতে কাজ করে?
ডেনিস


0

জে , 12 বাইট

1#.2*@-/\4$]

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

জেতে ইউরিলের এপিএল সমাধানের সরাসরি অনুবাদ

ব্যাখ্যা:

4$] তালিকার প্রথম আইটেমটি প্রসারিত করে

2 /\ তালিকার সমস্ত ওভারল্যাপিং জোড়ার জন্য নিম্নলিখিতটি করুন:

*@- তাদের পার্থক্য চিহ্ন সন্ধান করুন

1#. যোগ করুন


1
আমি এই ভ্যান্ডারমনডে নির্ধারক-ভিত্তিক সমাধানটি এখানে মন্তব্য হিসাবে ছেড়ে দেব, যদি কেউ বুঝতে পারে যে কীভাবে এটি গলফ করতে হয়:(-/ .*)@:(^&(i.3)"0)%2:
কাইল মিলার

0

জাপট , 7 বাইট

änUÌ xg

চেষ্টা করে দেখুন


ব্যাখ্যা

            :Implicit input of array U
ä           :Get each consecutive pair of elements
 n          :Reduce by subtracting the first from the last
  UÌ        :But, before doing that, prepend the last element in U
     g      :Get the signs
    x       :Reduce by addition

বিকল্প

পৃথক পূর্ণসংখ্যা হিসাবে ইনপুট নেয়।

NänW ×z

চেষ্টা করে দেখুন



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