স্থায়ীভাবে কোডগল্ফ


20

চ্যালেঞ্জ হ'ল ম্যাট্রিক্সের স্থায়ী জন্য কোডগল্ফ লিখুন ।

এক n- nমেট্রিক্সের স্থায়ী A= ( ai,j) হিসাবে সংজ্ঞায়িত করা হয়

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

এখানে S_nসমস্ত আদেশের সেটটি উপস্থাপন করে [1, n]

উদাহরণ হিসাবে (উইকি থেকে):

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

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

ইনপুট ম্যাট্রিক্স সর্বদা বর্গক্ষেত্র এবং সর্বাধিক 6 দ্বারা 6 হবে You আপনাকে খালি ম্যাট্রিক্সও স্থায়ী রাখতে সক্ষম হবেন 1. এটি খালি ম্যাট্রিক্স পরিচালনা করতে সক্ষম হবেনা (এটি খুব বেশি কারণ ঘটিয়েছিল সমস্যার)।

উদাহরণ

ইনপুট:

[[ 0.36697048+0.02459455j,  0.81148991+0.75269667j,  0.62568185+0.95950937j],
 [ 0.67985923+0.11419187j,  0.50131790+0.13067928j,  0.10330161+0.83532727j],
 [ 0.71085747+0.86199765j,  0.68902048+0.50886302j,  0.52729463+0.5974208j ]]

আউটপুট:

-1.7421952844303492+2.2476833142265793j

ইনপুট:

[[ 0.83702504+0.05801749j,  0.03912260+0.25027115j,  0.95507961+0.59109069j],
 [ 0.07330546+0.8569899j ,  0.47845015+0.45077079j,  0.80317410+0.5820795j ],
 [ 0.38306447+0.76444045j,  0.54067092+0.90206306j,  0.40001631+0.43832931j]]

আউটপুট:

-1.972117936608412+1.6081325306004794j

ইনপুট:

 [[ 0.61164611+0.42958732j,  0.69306292+0.94856925j,
     0.43860930+0.04104116j,  0.92232338+0.32857505j,
     0.40964318+0.59225476j,  0.69109847+0.32620144j],
   [ 0.57851263+0.69458731j,  0.21746623+0.38778693j,
     0.83334638+0.25805241j,  0.64855830+0.36137045j,
     0.65890840+0.06557287j,  0.25411493+0.37812483j],
   [ 0.11114704+0.44631335j,  0.32068031+0.52023283j,
     0.43360984+0.87037973j,  0.42752697+0.75343656j,
     0.23848512+0.96334466j,  0.28165516+0.13257001j],
   [ 0.66386467+0.21002292j,  0.11781236+0.00967473j,
     0.75491373+0.44880959j,  0.66749636+0.90076845j,
     0.00939420+0.06484633j,  0.21316223+0.4538433j ],
   [ 0.40175631+0.89340763j,  0.26849809+0.82500173j,
     0.84124107+0.23030393j,  0.62689175+0.61870543j,
     0.92430209+0.11914288j,  0.90655023+0.63096257j],
   [ 0.85830178+0.16441943j,  0.91144755+0.49943801j,
     0.51010550+0.60590678j,  0.51439995+0.37354955j,
     0.79986742+0.87723514j,  0.43231194+0.54571625j]]

আউটপুট:

-22.92354821347135-90.74278997288275j

স্থায়ী গণনা করতে আপনি কোনও পূর্ব-বিদ্যমান ফাংশন ব্যবহার করতে পারবেন না।


12
আপনি কি দয়া করে জটিল প্রয়োজনীয়তাটি সরাতে পারেন? আমি মনে করি এটি অন্যথায় দুর্দান্ত চ্যালেঞ্জকে নষ্ট করে দিয়েছে। জটিল পাটিগণিতের অন্তর্নির্মিত নয় এমন প্রতিটি ভাষাতে এখন সম্পূর্ণ পৃথক কাজ করতে হয়।
xnor

6
যদি আমাদের খালি ম্যাট্রিক্স পরিচালনা করতে হয় তবে আপনার এটি পরীক্ষার কেস হিসাবে যুক্ত করা উচিত। আপনি তালিকা সহ 0x0 ম্যাট্রিক্সকে সত্য উপস্থাপন করতে পারবেন না এটি এটিকে কিছুটা কঠিন করে তোলে। ব্যক্তিগতভাবে, আমি কেবল প্রয়োজনটি সরিয়ে ফেলতাম।
ডেনিস

4
3 ঘন্টা স্যান্ডবক্সে কিছু রাখার কোনও অর্থ নেই। এটি 3 দিন দিন এবং লোকেরা মতামত দেওয়ার সুযোগ পান have
পিটার টেলর

7
1. এটি কেবল esolangs নয়। ব্যাশ, যেমন, এমনকি স্থানীয়ভাবে সাথে মোকাবিলা করতে পারবে না ভাসে । কোনও প্রতিযোগিতা থেকে কোনও ভাষা বাদ দেওয়া কেবল কারণ এটিতে একটি নির্দিষ্ট সংখ্যার ধরণের অভাব রয়েছে, এমনকি অনায়াসে কাঙ্ক্ষিত অ্যালগরিদম বাস্তবায়ন করতে পারলেও, কোনও উপযুক্ত কারণ ছাড়াই কেবল পিক হচ্ছেন। ২. আমি এখনও খালি ম্যাট্রিক্স সম্পর্কে নিশ্চিত নই। এটি কি [[]](এক সারি রয়েছে, খালি ম্যাট্রিক্স না করে) বা [](গভীরতা 2 নেই, ম্যাট্রিক্সগুলি আছে) তালিকা আকারে?
ডেনিস

4
১. আমি এই দিনটি বলছি না যে বাশে এই চ্যালেঞ্জটি সমাধান করা অসম্ভব , তবে কোডের সিংহভাগ জটিল সংখ্যা গাণিতিকে মোকাবেলায় ব্যবহার করা হলে এটি স্থায়ীদের সম্পর্কে চ্যালেঞ্জ হওয়া বন্ধ করে দেয়। ২. বেশিরভাগ যদি বর্তমান উত্তর না হয় তবে ইনপুটটির জন্য ম্যাট্রিক্স টাইপ বিরতি ছাড়া ভাষা[[]]
ডেনিস

উত্তর:


11

জে, 5 বাইট

+/ .*

জে স্থায়ী বা নির্ধারকগুলির জন্য বিল্টিনগুলি সরবরাহ করে না বরং পরিবর্তে সংযুক্তির প্রস্তাব দেয় offers u . v yy অপ্রাপ্তবয়স্কদের প্রসারিত হয় এবং u . vকোফ্যাক্টর এবং নাবালিকাদের পুনরাবৃত্ত কলের আউটপুট মধ্যে ডায়াডিক গণনা করে con এর পছন্দগুলি uএবং vতারতম্য হতে পারে। উদাহরণস্বরূপ, ব্যবহার u =: -/এবং v =: *হয় -/ .*যা নির্ধারক হয়। পছন্দগুলি এমনকি %/ .!যেখানে u=: %/, বিভাজন দ্বারা হ্রাস করতে পারে এবং v =: !যা দ্বিপদী সহগ হয়। এই আউটপুটটি কী বোঝায় তা আমি নিশ্চিত নই তবে আপনি নিজের ক্রিয়াগুলি বেছে নিতে পারেন।

আমার গণিতের উত্তরে একই পদ্ধতিটি ব্যবহার করে 47 বাইটের জন্য বিকল্প বাস্তবায়ন ।

_1{[:($@]$[:+//.*/)/0,.;@(<@(,0#~<:)"+2^i.@#)"{

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

আরেকটি বাস্তবায়ন 31 বাইট হয়

+/@({.*1$:\.|:@}.)`(0{,)@.(1=#)

যা সামান্য golfed Laplace সম্প্রসারণ উপর জে প্রবন্ধ থেকে নেওয়া উপর ভিত্তি করে সংস্করণ নির্ধারণকারী

ব্যবহার

   f =: +/ .*
   f 0 0 $ 0 NB. the empty matrix, create a shape with dimensions 0 x 0
1
   f 0.36697048j0.02459455 0.81148991j0.75269667 0.62568185j0.95950937 , 0.67985923j0.11419187  0.50131790j0.13067928 0.10330161j0.83532727 ,: 0.71085747j0.86199765 0.68902048j0.50886302 0.52729463j0.5974208
_1.7422j2.24768
   f 0.83702504j0.05801749 0.03912260j0.25027115 0.95507961j0.59109069 , 0.07330546j0.8569899 0.47845015j0.45077079 0.80317410j0.5820795 ,: 0.38306447j0.76444045 0.54067092j0.90206306 0.40001631j0.43832931
_1.97212j1.60813
   f 0.61164611j0.42958732 0.69306292j0.94856925 0.4386093j0.04104116 0.92232338j0.32857505 0.40964318j0.59225476 0.69109847j0.32620144 , 0.57851263j0.69458731 0.21746623j0.38778693 0.83334638j0.25805241 0.6485583j0.36137045 0.6589084j0.06557287 0.25411493j0.37812483 , 0.11114704j0.44631335 0.32068031j0.52023283 0.43360984j0.87037973 0.42752697j0.75343656 0.23848512j0.96334466 0.28165516j0.13257001 , 0.66386467j0.21002292 0.11781236j0.00967473 0.75491373j0.44880959 0.66749636j0.90076845 0.0093942j0.06484633 0.21316223j0.4538433 , 0.40175631j0.89340763 0.26849809j0.82500173 0.84124107j0.23030393 0.62689175j0.61870543 0.92430209j0.11914288 0.90655023j0.63096257 ,: 0.85830178j0.16441943 0.91144755j0.49943801 0.5101055j0.60590678 0.51439995j0.37354955 0.79986742j0.87723514 0.43231194j0.54571625
_22.9235j_90.7428

1
বাহ আমি সব বলতে পারি।

13

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

a#((b:c):r)=b*p(a++map tail r)+(c:a)#r
_#_=0
p[]=1
p l=[]#l

এটি প্রথম কলাম জুড়ে একটি ল্যাপ্লেসের মতো বিকাশ করে এবং ব্যবহার করে যে সারিগুলির ক্রম কোনও ব্যাপার নয়। এটি যে কোনও সংখ্যক প্রকারের জন্য কাজ করে।

ইনপুট তালিকার তালিকা হিসাবে রয়েছে:

Prelude> p [[1,2],[3,4]]
10

2
সর্বদা একটি হাস্কেল সমাধানকে স্বাগতম!

8

জেলি , 10 9 বাইট

Œ!ŒDḢ€P€S

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

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

Œ!ŒDḢ€P€S  Main link. Argument: M (matrix / 2D array)

Œ!         Generate all permutations of M's rows.
  ŒD       Compute the permutations' diagonals, starting with the main diagonal.
    Ḣ€     Head each; extract the main diagonal of each permutation.
      P€   Product each; compute the products of the main diagonals.
        S  Compute the sum of the products.

এটা ঠিক খুব ভাল!

7

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

মনে হচ্ছে খড়কু ... মারধর করা উচিত।

P=lambda m,i=0:sum([r[i]*P(m[:j]+m[j+1:],i+1)for j,r in enumerate(m)]or[1])

6

05 এ বি 1 , 19 14 13 বাইট

œvyvyNè}Pˆ}¯O

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

ব্যাখ্যা

œ              # get all permutations of rows
 v        }    # for each permutation
  yv   }       # for each row in the permutation
    yNè        # get the element at index row-index
        P      # product of elements
         ˆ     # add product to global array
           ¯O  # sum the products from the global array

কিছুটা মর্মস্পর্শী আকারের উত্তর! আপনি কিছু ব্যাখ্যা দিতে পারেন?

@ ল্যাম্বিক: মনে হচ্ছে এটি আরও কম হতে পারে। আমার কাছে এখন পর্যন্ত একই আকারের একটি দ্বিতীয় সমাধান রয়েছে।
এমিগানা

খালি ম্যাট্রিকগুলি হ্যান্ডলিংয়ের আর প্রয়োজন নেই।
ডেনিস

মানচিত্র ব্যবহার করে 8 বাইট । এটা খুব খারাপ, নতুন 05AB1E কাল্পনিক সংখ্যার অবলম্বন পাওয়া যায়নি (অথবা আমি কেবল জানি না কিভাবে), যেহেতু আমরা এখন একটি প্রধান তির্যক builtin আছে এবং এই 6 বাইট হয়ে থাকতে পারে: œ€Å\PO
কেভিন ক্রুইজসেন

5

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

from itertools import*
def p(a):c=complex;r=range(len(a));return sum(reduce(c.__mul__,[a[j][p[j]]for j in r],c(1))for p in permutations(r))

repl.it

নির্বোধ আলগোরিদিম কার্যকর করে যা অন্ধভাবে সংজ্ঞা অনুসরণ করে।


4

এমএটিএল, 17 14 বাইট

tZyt:tY@X])!ps

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

ব্যাখ্যা

t       % Implicitly grab input and duplicate
Zy      % Compute the size of the input. Yields [rows, columns]
t:      % Compute an array from [1...rows]
tY@     % Duplicate this array and compute all permutations (these are the columns)
X]      % Convert row/column to linear indices into the input matrix
)       % Index into the input matrix where each combination is a row
!p      % Take the product of each row
s       % Sum the result and implicitly display

1
খুব চিত্তাকর্ষক.

4

রুবি, 74 63 বাইট

->a{p=0;a.permutation{|b|n=1;i=-1;a.map{n*=b[i+=1][i]};p+=n};p}

সূত্রটির একটি সরল অনুবাদ। বেশ কয়েকটি বাইটস এস্ট্রাস্টকে ধন্যবাদ সংরক্ষণ করেছে।

ব্যাখ্যা

->a{
    # Initialize the permanent to 0
    p=0
    # For each permutation of a's rows...
    a.permutation{|b|
        # ... initialize the product to 1,
        n=1
        # initialize the index to -1; we'll use this to go down the main diagonal
        # (i starts at -1 because at each step, the first thing we do is increment i),
        i=-1
        # iteratively calculate the product,
        a.map{
            n*=b[i+=1][i]
        }
        # increase p by the main diagonal's product.
        p+=n
    }
    p
}

1
reduceম্যানুয়ালি একত্রিত করার সাথে তুলনা করে আপনার বাইট গণনাটি আসলে ব্যাথা দেয়:->a{m=0;a.permutation{|b|n=1;a.size.times{|i|n*=b[i][i]};m+=n};m}
এজাস্ট

@ ইজরাস্ট ধন্যবাদ! যে timesলুপটি ডাউন গল্ফ পরিচালিত ।
এম-ক্রিজান

3

রুবি ২.৪.০, 59 61 বাইট

পুনরাবৃত্ত ল্যাপ্লেস সম্প্রসারণ:

f=->a{a.pop&.map{|n|n*f[a.map{|r|r.rotate![0..-2]}]}&.sum||1}

কম গল্ফড:

f=->a{
  # Pop a row off of a
  a.pop&.map{ |n|
    # For each element of that row, multiply by the permanent of the minor
    n * f[a.map{ |r| r.rotate![0..-2]}]
  # Add all the results together
  }&.sum ||
  # Short circuit to 1 if we got passed an empty matrix
  1
}

রুবি ২.৪ আনুষ্ঠানিকভাবে প্রকাশিত হয়নি। পূর্ববর্তী সংস্করণগুলিতে 7 বাইট যুক্ত করে .sumপ্রতিস্থাপন করা দরকার .reduce(:+)


2

গণিত, 54 বাইট

Coefficient[Times@@(#.(v=x~Array~Length@#)),Times@@v]&

এখন যেহেতু খালি ম্যাট্রিকগুলি আর বিবেচনা করা হয় না, এই সমাধানটি বৈধ। এটি স্থায়ীদের ম্যাথওয়ার্ল্ড পৃষ্ঠা থেকে উদ্ভূত ।


@alephalpha এটি সহগঙ্গগুলি সনাক্ত করতে সারিগুলি ব্যবহার করা একটি ঝরঝরে ধারণা তবে সারিটি অনন্য না হলে এটি ভেঙে যাবে না?
মাইল

2

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

f=a=>a[0]?a.reduce((t,b,i)=>t+b[0]*f(a.filter((_,j)=>i-j).map(c=>c.slice(1))),0):1

অবশ্যই খালি ম্যাট্রিক্সের সাথে কাজ করে।


@ ইথ প্রডাকশনগুলি আমি কখনই শিখি না ...
নিল

1
ঠিক আমার কোড, মাত্র 14 ঘন্টা আগে প্রকাশিত, আমি জটিল সংখ্যা যুক্ত করার চেষ্টা করব
edc65

2

জুলিয়া 0.4 , 73 বাইট

f(a,r=1:size(a,1))=sum([prod([a[i,p[i]] for i=r]) for p=permutations(r)])

জুলিয়ার নতুন সংস্করণগুলিতে আপনি বুঝতে পারছেন না []তবে ফাংশনটির using Combinatoricsজন্য প্রয়োজন need permutationsসহ জুলিয়ায় সমস্ত সংখ্যার সাথে কাজ করে Complex। ডিফল্ট ফাংশন আর্গুমেন্ট হিসাবে সংজ্ঞায়িত rএকটি UnitRangeঅবজেক্ট, যা পূর্ববর্তী ফাংশন আর্গুমেন্টের উপর নির্ভর করতে পারে।

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

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