ডিজকস্ট্রার চ্যালেঞ্জ


23

এপিএল এর সম্মানে একটি ইন্টারেক্টিভ সরঞ্জাম হিসাবে এই বছর 50 বছর বয়সী হিসাবে উপস্থাপিত

পটভূমি

কেন [আইভারসন] ১৯63৩ সালের আগস্টে মেকানিকাল ল্যাঙ্গুয়েজ স্ট্রাকচারস, প্রিন্সটন, এনজে সম্পর্কিত একটি ওয়ার্কিং কনফারেন্সে প্রোগ্রামিং ল্যাঙ্গুয়েজগুলিতে তাঁর প্রবন্ধ পত্রিকা উপস্থাপন করেন কনফারেন্সের তালিকাটি বিখ্যাত এবং শীঘ্রই-খ্যাত বিখ্যাত নাম এবং কিছু ভবিষ্যতের টুরিং অ্যাওয়ার্ড বিজয়ীদের পূর্ণ (ব্যাকাস, কারি, ডিজকস্ট্রা, ফ্লয়েড, ইভারসন, নেওয়েল, পেরিলিস, উইলকস)। কাগজটি উপস্থাপনের পরে যে আলোচনার ঘটনা ঘটেছিল তা লিপিবদ্ধ করে, কেন এবং [এডসগার] ডিজকস্ট্রার মধ্যে বিনিময় শেষ করে , যেখানে ডিজকস্ট্রার প্রশ্নের জবাবে কেনের জবাব ছিল এক-লাইনার।

চ্যালেঞ্জ

আপনি কীভাবে আরও জটিল ক্রিয়াকলাপের প্রতিনিধিত্ব করবেন, উদাহরণস্বরূপ, ম্যাট্রিক্স এম এর সমস্ত উপাদানগুলির যোগফল যা সম্পর্কিত সারি এবং কলাম সূচকগুলির যোগফলের সমান?

প্রদত্ত পূর্ণসংখ্যার ম্যাট্রিক্সে প্রতিটি উপাদানের যোগফল গণনা করার জন্য একটি স্নিপেট বা এক্সপ্রেশন (একটি পূর্ণ প্রোগ্রাম বা ফাংশনের প্রয়োজন নেই) লিখুন যা এর সূচকগুলির যোগফলের সমান। অথবা, FryAmTheEggman রাখে এটা: একটি ম্যাট্রিক্স দেওয়া এম উপাদানের সঙ্গে একটি IJ প্রতিটি সমষ্টি আসতে একটি IJ যেখানে একটি IJ = আমি + J।

আপনি ধরে নিতে পারেন ম্যাট্রিক্স ইতিমধ্যে একটি পরিবর্তনশীল বা মেমরির স্থানে রয়েছে, বা আপনি এটি একটি যুক্তি বা ইনপুট হিসাবে নিতে পারেন। আপনি 0 বা 1 ভিত্তিক সূচকগুলি ব্যবহার করতে পারেন।

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

 

0 খালি ম্যাট্রিক্সের জন্য

2

00 ভিত্তিক সূচকগুলির 2জন্য বা 1-ভিত্তিক জন্য

1 5 2
9 4 2
5 9 6

20 ভিত্তিক বা 101 ভিত্তিক জন্য

 0 3  0  4
 0 4  1  4
 4 3  1  2
-2 4 -2 -1

11

3 -1 3 3
3 -1 3 1

60 ভিত্তিক বা 31 ভিত্তিক জন্য

গপ্প

আইভারসনের উত্তরটি ছিল ++ / ( এম = ¹ ⨢ ¹) // এম , যা আই প্রোগ্রামিং ল্যাঙ্গুয়েজে সংজ্ঞায়িত আইভারসন নোটেশনেও বৈধ নয়, শেষ পর্যন্ত এপিএলে পরিণত হয়েছিল তাও নয়। Iverson স্বরলিপি, এটা হতো + + / ( এম = ¹ ( μ ( এম )) ⨢ ¹ ( ν ( এম ))) / এম । এপিএলের প্রথম সংস্করণে এটি ছিল ।+/(,M=(⍳1↑⍴M)∘.+⍳1↓⍴M)/,M


যেটিতে ডিজকস্ট্রার প্রশ্নের কেনের জবাব ছিল ওয়ান-লাইনার। তবে কি সেই ওয়ান-লাইনার ভুল ছিল?
লুইস মেন্ডো

আমার কি এটির আউটপুট বা প্রিন্ট আউট করা দরকার, বা আমি কেবল একটি স্নিপেট হিসাবে প্রকাশটি লিখতে পারি?
লিকি নুন

2
@ লুইস মেন্ডো নো, আইভারসন সক্রিয়ভাবে ভাষাটি ডিজাইন করেছিলেন এবং সেই পুনরাবৃত্তিতে তাঁর ওয়ান-লাইনারটি সঠিক ছিল। "এপিএল" পি রোগ্রামিং এল অ্যাঙ্গোয়েজ বইটি প্রকাশের সাথে বিখ্যাত হয়েছিল , তবে প্রকাশের সময়, দ্বিতীয় প্রকাশের প্রয়োজন হয়েছিল। এই স্বরলিপিগুলির কোনওটিই কখনও মেশিন-এক্সিকিউটেবল হতে কার্যকর হয় নি।
অ্যাডম

@ লেকিউন গণনা করার জন্য একটি স্নিপেট বা এক্সপ্রেশন লিখুন
অ্যাডাম

@ অ্যাডম ধন্যবাদ এটি এখন আরও
অর্থবোধ করে

উত্তর:


9

এপিএল, 13 12 বাইট

@ জিমি 23013 কে 1 বাইট ধন্যবাদ।

1-ইন্ডেক্স।

অ্যারেটি ভেরিয়েবলে সংরক্ষণ করা হয় m

+ + /, মি × মি = + + / ¨⍳⍴m
+ + / Εm∩¨ + + / ¨⍳⍴m

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

জে উত্তরের উপর ভিত্তি করে , যা এপিএল ভিত্তিক একটি ভাষা।

ট্রাইএপএল-তে, কী-তে এটি করতে: +/m`em`c`1+/`1`i`rm

অ্যারে সহ: +/m`em`c`1+/`1`i`rm `[ 2 4 `r 3 `21 3 3 3 `21 3 1

ব্যাখ্যা

+/∊m∩¨+/¨⍳⍴m
           m    temp ← variable
          ⍴     temp ← shape of temp
         ⍳      temp ← a 2D array where each element is
                       the corresponding index. for the
                       example, this gives:
                       ┌───┬───┬───┬───┐
                       │1 1│1 2│1 3│1 4│
                       ├───┼───┼───┼───┤
                       │2 1│2 2│2 3│2 4│
                       └───┴───┴───┴───┘
      +/¨       each element in temp ← its sum
   m∩¨          temp ← intersect each element in temp with the variable
+/              temp ← sum of temp

অবশেষে, আমি এইটির জন্য অপেক্ষা করছিলাম।
15 এএম

আমি নিশ্চিত "টু কী ইন:" একটি ভাল ধারণা। এটি কেবল ট্রাইএপিএল এবং রাইডের ক্ষেত্রে প্রযোজ্য, তবে মূল পণ্যটিতে নয়। কমপক্ষে আপনি এটি ব্যাখ্যা করতে পারবেন যার `অর্থ "এপিএল কী"।
15

1
+/∊m∩¨+/¨⍳⍴m
জিমি 23013

@ jimmy23013 এটি সত্যিই ভাল!
আদম

9

এমএটিএল , 15 14 10 বাইট

3#fbb+y=*s

ইনপুটটি সারি দ্বারা পৃথক করা হয়েছে ;। উদাহরণস্বরূপ: [1 5 2; 9 4 2; 5 9 6]। 1-ভিত্তিক সূচক ব্যবহার করা হয়।

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

ব্যাখ্যা

আমি [3 -1 3 3; 3 -1 3 1]ব্যাখ্যায় ইনপুট সহ উদাহরণটি ব্যবহার করব ।

3#f    % Three-output find: for all nonzero values of implicit input matrix, pushes
       % three column vectors with row indices, column indices, and values
       %   Stack contains: [1;2;1;2;1;2;1;2], [1;1;2;2;3;3;4;4], [3;3;-1;-1;3;3;3;1]
bb     % Bubble up twice: move vectors of row and column indices to top
       %   Stack contains: [3;3;-1;-1;3;3;3;1], [1;2;1;2;1;2;1;2], [1;1;2;2;3;3;4;4]
+      % Element-wise sum of top two arrays
       %   Stack contains: [3;3;-1;-1;3;3;3;1], [2;3;3;4;4;5;5;6]
y      % Duplicate the vector of nonzero values onto the top of the stack
       %   Stack contains: [3;3;-1;-1;3;3;3;1], [2;3;3;4;4;5;5;6], [3;3;-1;-1;3;3;3;1] 
=      % Element-wise equality test of top two arrays
       %   Stack contains: [3;3;-1;-1;3;3;3;1], [0;1;0;0;0;0;0;0]
*      % Element-wise multiply of top two arrays
       %   Stack contains: [0;3;0;0;0;0;0;0]
s      % Sum of array
       %   Stack contains: 3

6

জাভাস্ক্রিপ্ট, 49 46 বাইট

a.map((b,i)=>b.map((c,j)=>r+=c==i+j&&c),r=0)|r

সম্পাদনা করুন: 3 টি বাইট সংরক্ষণ করা হয়েছে @ মার্টিনইেন্ডারকে ধন্যবাদ জানিয়ে যে স্নিপেটগুলি অনুমোদিত।


5

রেটিনা , 46 বাইট

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

\d+
$*
M!`(?<=(\S* |.*¶)*)(?<-1>1)+\b(?(1)1)
1

ইনপুট ম্যাট্রিক্স উপস্থাপন করতে স্পেস এবং লাইনফিড বিভাজক ব্যবহার করে। সূচকগুলি 0-ভিত্তিক।

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

ব্যাখ্যা

রেটিনা যে ধরণের চ্যালেঞ্জের জন্য তৈরি হয়েছিল তা নয়, তবে এটি আশ্চর্যরকমভাবে করছে ... :)

মঞ্চ 1: প্রতিস্থাপন

\d+
$*

এটি স্ট্রিমের সমস্ত পূর্ণসংখ্যাকে অবিচ্ছিন্ন সংখ্যা 1হিসাবে আনারি অঙ্ক হিসাবে ব্যবহার করে প্রসারিত করে । নেতিবাচক সংখ্যাগুলি -3সহজেই জিনিসগুলিতে পরিণত হবে -111

দ্বিতীয় পর্যায়: ম্যাচ

M!`(?<=(\S* |.*¶)*)(?<-1>1)+\b(?(1)1)

!বিকল্পের কারণে , এটি প্রদত্ত রেজেক্সের সমস্ত মিল মুদ্রণ করে। বলেছেন রেজেক্স ব্যালান্সিং গ্রুপগুলি ব্যবহার করে বর্তমান নম্বরটি তার সূচকের সমষ্টি হিসাবে একই কিনা তা পরীক্ষা করে।

এটি করতে, আমরা প্রথমে চেহারাটির পিছনে সূচকগুলির যোগফল নির্ধারণ করি (?<=(\S* |.*¶)*)। এটি একই লাইনে (মাধ্যমে \S* ) বর্তমান সংখ্যার সামনে প্রতিটি সংখ্যার জন্য একটি ক্যাপচার এবং পাশাপাশি .*¶গ্রুপের জন্য বর্তমান লাইনের (মাধ্যমে ) প্রতিটি লাইনের জন্য একটি ক্যাপচার যুক্ত করে 1। সুতরাং, ফলস্বরূপ আমরা সূচকগুলির শূন্য-ভিত্তিক যোগফল পাই।

তারপরে আমরা এই স্ট্যাকটি থেকে ক্যাপচারগুলি অপসারণ করার সময় পুরো পরবর্তী নম্বরটি মেলানোর চেষ্টা করি (?<-1>1)+\b। এবং তারপর আমরা ম্যাচ ব্যর্থ যদি থাকে যেমনটি দলের উপর ফেলে রাখা হয় করতে 1সঙ্গে (?(1)1)সমতা নিশ্চিত করতে হবে।

লক্ষ্য করুন ঋণাত্মক সংখ্যা, মিলেছে না হয় কারণ lookbehind গত পেতে পারে না -একটি তালিকা সামনে 1s এবং (?<-1>1)+হয় এটিকে মেলে না।

এটি আমাদেরকে সমস্ত অবিচ্ছিন্ন সংখ্যার একটি তালিকা দেয় যা তাদের সূচকগুলির যোগফলকে সমান করে।

মঞ্চ 3: ম্যাচ

1

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


আপনি ইনপুট হিসাবে unary ব্যবহার করতে পারেন?
লিকি নুন

@ ল্যাকইনুন জানেন না, আমি এড়াতে চাইছি। এটি কেবল খুব হ্যাকিং বলে মনে হচ্ছে, বিশেষত যেহেতু রেটিনার আর কোনও রূপান্তর ঘটতে সমস্যা নেই।
মার্টিন ইন্ডার

4

জেলি, 15 14 10 বাইট

আদনানকে ধন্যবাদ 4 বাইট

1-ইন্ডেক্স।

এল € আর € + "এলআর $ = ³ × ³FS 
এল € আর € +" এলআর $ = × ³FS
জে € "জে = × ⁸FS

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

একবারে সমস্ত টেস্টকেস যাচাই করুন। (সামান্য সংশোধিত।)


আমি নিশ্চিত না যে এটি কাজ করে কিনা তবে আপনি কি এর J€পরিবর্তে করতে পারবেন L€R€?
আদনান

1
ওহে আমার you'reশ্বর, আপনি বুদ্ধিমান
লিকি নুন

4

পাইথন 2 - 60 57 বাইট

এটি একটি কোড স্নিপেট, সুতরাং আমি যদি সত্যিই মানটি ফিরিয়ে দেয় তবে এটি আরও কয়েকটা বাইট হবে I e=enumerate;sum(i*(x+y==i)for x,r in e(a)for y,i in e(r))

সহায়তার জন্য ধন্যবাদ Leaky Num :-)

দ্রুত ব্যাখ্যা। aএকটি অ্যারে হোল্ডিং নম্বর। সূচকগুলির মধ্যে কেবল পুনরাবৃত্তি করুন এবং সমস্ত মানগুলি যোগ করুন যেখানে মান সূচকের সমান হয়।



ওহ এটি কাজ করে না। এখন এটির 57 বাইট: (আমি একটি দ্রুত ব্যাখ্যা যুক্ত করেছি
জেরেমি

আমি সবেমাত্র আপনাকে দেওয়া লিঙ্কটি অন্তর্ভুক্ত করতে চাইবেন।
লিকি নুন

4

আর, 24 বাইট

sum(M[M==row(M)+col(M)])

1-ভিত্তিক।
পরীক্ষার কেস:

> M<-matrix(nrow=0,ncol=0)
> M
<0 x 0 matrix>
> sum(M[M==row(M)+col(M)])
[1] 0
> M<-matrix(2,nrow=1,ncol=1)
> M
     [,1]
[1,]    2
> sum(M[M==row(M)+col(M)])
[1] 2
> M<-matrix(c(1,9,5,5,4,9,2,2,6),nrow=3)
> M
     [,1] [,2] [,3]
[1,]    1    5    2
[2,]    9    4    2
[3,]    5    9    6
> sum(M[M==row(M)+col(M)])
[1] 10
> M<-matrix(c(0,0,4,-2,3,4,3,4,0,1,1,-2,4,4,2,-1),nrow=4)
> M
     [,1] [,2] [,3] [,4]
[1,]    0    3    0    4
[2,]    0    4    1    4
[3,]    4    3    1    2
[4,]   -2    4   -2   -1
> sum(M[M==row(M)+col(M)])
[1] 11
> M<-matrix(c(3,3,-1,-1,3,3,3,1),nrow=2)
> M
     [,1] [,2] [,3] [,4]
[1,]    3   -1    3    3
[2,]    3   -1    3    1
> sum(M[M==row(M)+col(M)])
[1] 3

3

জে, 15 বাইট

+/,M*M=+/&i./$M

শূন্য-ভিত্তিক সূচক ব্যবহার করে এবং ধরে নেওয়া হয় যে ম্যাট্রিক্স ইতিমধ্যে ভেরিয়েবল এম-তে সঞ্চিত রয়েছে ।

ব্যাখ্যা

+/,M*M=+/&i./$M
             $a  Get the shape of M
            /    Insert between the shape
         &i.     Create a range from 0 to each end exclusive
       +/        Forms a table which is the sum of each row and column index
     M=          1 if the element is equal to its index sum else 0
   M*            Multiply by their values
  ,              Flatten
+/               Reduce using addition to get the sum

3
এখন অবধি কেবল স্বল্পতম নয়; আইভারসন ভাষায় এটি করার জন্য +1।
আদম

3

সিজেম, 23 21 20 বাইট

3 বাইট বাঁচানোর জন্য পিটার টেলরকে ধন্যবাদ।

ee{~_@f-_,,.=.*~}%1b

ম্যাট্রিক্সটি স্ট্যাকের মধ্যে থাকবে বলে আশা করে এবং এর পরিবর্তে যোগফল ছেড়ে যায়। সূচকগুলি উভয় ক্ষেত্রে শূন্য-ভিত্তিক।

এটি এখানে পরীক্ষা করুন।


_,,অভ্যন্তরের পরিবর্তে eeএবং .অভ্যন্তরীণ লুপের জন্য আপনি একটি দম্পতি সংরক্ষণ করতে পারেন :ee{~_,,@f+1$.=.*~}%1b
পিটার টেলর

@ পিটারটেলর আহ ঝরঝরে, আপনাকে ধন্যবাদ :)
মার্টিন ইন্ডার

প্রকৃতপক্ষে, মাঝখানে এক ধরণের সাক্ষাত করে আরও একটি আছে:ee{~_@f-_,,.=.*~}%1b
পিটার টেলর

3

k4, 24 বাইট

ধরে নিই ম্যাট্রিক্সটি সঞ্চিত আছে m

+//7h$m*m=(!#m)+/:\:!#*m

এটি সেই ধাঁধাগুলির মধ্যে একটি যেখানে এপিএল (এবং জে) থেকে কে ডিজাইনের সাথে জড়িত সরলকরণগুলি সত্যই আহত হয়েছে — কে !এপিএলের সমতুল্য তবে কেবল ভেক্টরগুলিতেই কাজ করে, তাই আমাকে নিজে সূচকগুলির ম্যাট্রিক্সটি একত্রিত করতে হবে; অভ্যন্তরীণ পণ্যটি এপিএলে একটি চরিত্র তবে পাঁচটি কে; এবং খালি ম্যাট্রিক্স সঠিকভাবে পরিচালনা করতে আমি তিনটি অক্ষর হারিয়েছি কারণ কে-তে শক্তভাবে টাইপ করা ম্যাট্রিক্স নেই।


2
অন্যদিকে, আপনার কাছে একটি শক্তিশালী ভাষা রয়েছে যা অনেক বেশি সামঞ্জস্যপূর্ণ এবং শিখার জন্য অনেক কম আদিম রয়েছে।
অ্যাডাম


2

পাওয়ারশেল ভি 2+, 43 বাইট

%{$j=0;$_|%{$o+=$_*($_-eq$i+$j++)};$i++};$o

একটি স্নিপেট হিসাবে। ব্যবহার হ'ল সুস্পষ্টভাবে এটিতে ম্যাট্রিক্সটি পাইপ করা (নীচের উদাহরণগুলি দেখুন)। ধরে নিলেন $iএবং $oশুরুতে হয় নাল বা শূন্য (আমি তাদের নীচের উদাহরণগুলিতে স্পষ্টভাবে সেট করেছি), এবং 0-সূচকটি ব্যবহার করে।

ম্যাট্রিক্সের প্রতিটি সারিতে একটি ফোরচ লুপ করে। শেষ ঘন্টা$j করতে 0, এবং তারপর অন্য লুপ সারির প্রতিটি উপাদান দিয়ে যান $_|%{...}। প্রতিটি ভেতরের লুপ, আমরা বাড়ায় $oবর্তমান উপাদান একটি বুলিয়ান দ্বারা গুন দ্বারা ($_-eq$i+$j++)অর্থ যদি বুলিয়ান হয়, $TRUEএটা হবেন 1অন্যথায়, 0। তারপরে আমরা অভ্যন্তরীণ লুপটি, প্রবৃদ্ধিটি থেকে প্রস্থান করব $iএবং পরবর্তী সারিটি শুরু করব। অবশেষে, আমরা $oপাইপলাইনের শেষে প্রস্থান করি ।

উদাহরণ

PS C:\Tools\Scripts\golfing> $o=0;$i=0;$j=0;@(@(3,-1,3,3),@(3,-1,3,1))|%{$j=0;$_|%{$o+=$_*($_-eq$i+$j++)};$i++};$o
6

PS C:\Tools\Scripts\golfing> $o=0;$i=0;$j=0;@(@(0,3,0,4),@(0,4,1,4),@(4,3,1,2),@(-2,4,-2,-1))|%{$j=0;$_|%{$o+=$_*($_-eq$i+$j++)};$i++};$o
11

2

রুবি, 63 বাইট

সংখ্যার দ্বিমাত্রিক অ্যারে হিসাবে z সহ:

s=0;z.each_index{|i|z[i].each_index{|j|s+=i+j if z[i][j]==i+j}}

মোটেও ভয়ঙ্কর উত্তেজনাপূর্ণ নয়।

যদি z হ'ল একটি সমতল অ্যারে হয় তবে x এবং y এর অ্যারের আকার রয়েছে, যেমন:

x=z.size
y=z[0].size
z=z.flatten

তারপরে আমাদের এই বিদ্বেষ রয়েছে - এর অভিনব পণ্য এবং জিপগুলির সাথে সম্ভবত আরও রুবি-ইশ, তবে আসলে আরও বড়:

(1..x).to_a.product((1..y).to_a).zip(z).inject(0){|s,n|s+(n[0][0]+n[0][1]==n[1]+2?n[1]:0)}

সম্ভবত এখানে কোনও ফ্যানসিয়ার অ্যারে বা গুণক পদ্ধতি রয়েছে যা এটি ছোট করবে, আমি এটি এখনও পাইনি, তবে আমি এটি দেখতে পছন্দ করব it
ডেভিড লাজুং ম্যাডিসন স্টারার

2

আসলে, 21 বাইট

ñ`i╗ñ"i╜+@;(=*"£Mi`MΣ

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

আমাকে অলস হওয়া বন্ধ করতে এবং শেষ পর্যন্ত এটি লেখার জন্য লিকি নুনকে ধন্যবাদ।

এটি 0-ইনডেক্সড ম্যাট্রিক্স ব্যবহার করে এবং নেস্টেড তালিকার হিসাবে ইনপুট নেয়।

ব্যাখ্যা:

ñ`i╗ñ"i╜+@;(=*"£Mi`MΣ
ñ                      enumerate input
 `i╗ñ"i╜+@;(=*"£Mi`M   for each (i, row) pair:
  i╗                     flatten, store i in register 0
    ñ                    enumerate the row
     "i╜+@;(=*"£M        for each (j, val) pair:
      i╜+                  flatten, add i to j
         @;(               make an extra copy of val, bring i+j back to top
            =              compare equality of i+j and val
             *             multiply (0 if not equal, val if they are)
                 i       flatten the resulting list
                    Σ  sum the values


2

মতলব / অকটভে, 48 বাইট

1-ইন্ডেক্স।

প্রথম পরীক্ষার [1:0]কেসটি হ্যান্ডেল করবে না কারণ কোনও কারণে আকার 1x0 রয়েছে

sum(sum(M.*(M-[1:size(M,1)]'-[1:size(M,2)]==0)))

অক্টাভা 3 তে পরীক্ষা করা হয়েছে।

সম্পূর্ণ প্রোগ্রাম:

M = [2]
sum(sum(M.*(M-[1:size(M,1)]'-[1:size(M,2)]==0)))
M = [1 5 2; 9 4 2; 5 9 6]
sum(sum(M.*(M-[1:size(M,1)]'-[1:size(M,2)]==0)))
M = [ 0 3  0  4; 0 4  1  4; 4 3  1  2;-2 4 -2 -1]
sum(sum(M.*(M-[1:size(M,1)]'-[1:size(M,2)]==0)))
M = [ 3 -1 3 3; 3 -1 3 1]
sum(sum(M.*(M-[1:size(M,1)]'-[1:size(M,2)]==0)))

পিপিসিজিতে আপনাকে স্বাগতম! অক্টাভে আপনি করতে পারেন sum((M.*(M-[1:size(M,1)]'-[1:size(M,2)]==0))(:))। এছাড়াও, আমি মনে করি আপনি বাইট গণনা আরও কমাতে ==0প্রাথমিকভাবে পরিবর্তন করতে পারেন ~। পরিশেষে, নোট করুন যে আপনাকে সমস্ত পরীক্ষার কেস পরিচালনা করতে হবে অন্যথায় প্রশ্নটি মুছে ফেলা
লুইস মেন্ডো

1

লুয়া, 70 বাইট

1-ইন্ডেক্স।

s=0 for i=1,#a do for j=1,#a[i]do s=i+j==a[i][j]and s+i+j or s end end

বোনাস: এটি র‌্যাগড অ্যারেগুলির জন্য কাজ করে!

ইনপুট সঞ্চিত a, আউটপুট সঞ্চিত s

সম্পূর্ণ প্রোগ্রাম:

function Dijkstras_Challenge(a)
    s=0 for i=1,#a do for j=1,#a[i]do s=i+j==a[i][j]and s+i+j or s end end
    print(s)
end

Dijkstras_Challenge({})
Dijkstras_Challenge({{2}})
Dijkstras_Challenge({{1,5,2},{9,4,2},{5,9,6}})
Dijkstras_Challenge({{0,3,0,4},{0,4,1,4},{4,3,1,2},{-2,4,-2,-1}})
Dijkstras_Challenge({{3,-1,3,3},{3,-1,3,1}})

1

পিএইচপি, 59 বাইট

foreach($a as$y=>$r)foreach($r as$x=>$v)$s+=($v==$x+$y)*$v;

অ্যারে প্রত্যাশা করে - একটি সংজ্ঞায়িত; অবশ্যই ফাঁকা বা দ্বিমাত্রিক, 0-সূচকযুক্ত। ফাইনালের আগে সন্নিবেশ
করাকে sum s (পূর্বে 0 বা অপরিজ্ঞাত - 0 সমান NULL) যোগফল গণনা করে
+2)1-সূচিকৃত আচরণের জন্য গণনা করে

শুভ জন্মদিন এপিএল!

ফাংশন এবং পরীক্ষা স্যুট

function f0($a) { foreach($a as$y=>$r)foreach($r as$x=>$v)$s+=($v==$x+$y)*$v;return $s|0; }
function f1($a) { foreach($a as$y=>$r)foreach($r as$x=>$v)$s+=($v==$x+$y+2)*$v;return $s|0;}
$samples = [
    [], 0, 0,
    [[2]], 0, 2,
    [[1,5,2],[9,4,2],[5,9,6]], 2, 10,
    [[0,3,0,4],[0,4,1,4],[4,3,1,2],[-2,4,-2,-1]],11,11,
    [[3,-1,3,3],[3,-1,3,1]],6,3
];
function test($x,$e,$y){static $h='<table border=1><tr><th>input</th><th>output</th><th>expected</th><th>ok?</th></tr>';echo"$h<tr><td>",out($x),'</td><td>',out($y),'</td><td>',out($e),'</td><td>',cmp($e,$y)?'N':'Y',"</td></tr>";$h='';}
while($samples)
{
    $a=array_shift($samples);
    test($a,'B0:'.array_shift($samples),'B0:'.f0($a));
    test($a,'B1:'.array_shift($samples),'B1:'.f1($a));
}

1

ব্র্যাচল্যাগ , 15 বাইট

{iiʰI-ʰ=∧Ihh}ᶠ+

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

              +    The output is the sum of
{           }ᶠ     all possible results of
 i                 taking a row from the input with its index,
  i                taking an element with its index
   ʰ               from that row,
    I    Ihh       and outputting the element
       =∧          so long as the index of the row is equal to
     -ʰ            the value of the element minus its index within the row.

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