সূচক যোগফল এবং আমার ম্যাট্রিক্স ফালা


9

সূচক যোগফল এবং আমার ম্যাট্রিক্স ফালা

আপনার পছন্দনীয় ভাষায় একটি ম্যাট্রিক্স / 2 ডি অ্যারে দেওয়া হয়েছে

ইনপুট:

  • ম্যাট্রিক্সের সর্বদা একটি বিজোড় দৈর্ঘ্য থাকবে
  • ম্যাট্রিক্স সর্বদা নিখুঁত বর্গক্ষেত্র হবে
  • ম্যাট্রিক্স মানগুলি আপনার ভাষার যে কোনও পূর্ণসংখ্যা হতে পারে (ইতিবাচক বা নেতিবাচক)

উদাহরণ:

1  2  3  4  5  6  7
2  3  4  5  6  7  8
3  4  50 6  7  8  9
4  5  6 100 8  9  10
5  6  7  8 -9  10 11
6  7  8  9  10 11 12
7  8 900 10 11 12 0

সজ্ঞা:

  • "কেন্দ্রীয় সংখ্যা" এমন সংখ্যা হিসাবে সংজ্ঞায়িত করা হয় যা বাম, ডান, উপরে এবং নীচে সমান সংখ্যক সংখ্যক সংখ্যা রয়েছে

এক্ষেত্রে এর মধ্যমতম 100

  • "বাইরের শেল" হ'ল সংখ্যার সংগ্রহ যা তাদের x এবং y সূচক বা 0 বা ম্যাট্রিক্স আকার

1  2  3  4  5  6  7
2                 8
3                 9
4                 10
5                 11
6                 12
7  8 900 10 11 12 0

তোমার কাজ:

তাদের 1-ভিত্তিক সূচক দ্বারা প্রতিটিের মানকে গুণিত করার পরে প্রতিটি সারি এবং কলামের যোগফল কেন্দ্রীয় সংখ্যায় যুক্ত করুন

উদাহরণস্বরূপ একটি একক সারি

4  5  6  7  8

প্রতিটি সংখ্যার জন্য

number * index + number * index.....

4*1 + 5*2 + 6*3 + 7*4 + 8*5 => 100

উদাহরণ:

 2 -3 -9  4  7  1  5  => 61
-2  0 -2 -7 -7 -7 -4  => -141
 6 -3 -2 -2 -3  2  1  => -10
 8 -8  4  1 -8  2  0  => -20
-5  6  7 -1  8  4  8  => 144
 1  5  7  8  7 -9 -5  => 10
 7  7 -2  2 -7 -8  0  => -60
                         |
78 65 60 45 -15 -89 10   => 154
                     |
                     => -16
  • সমস্ত সারি এবং কলামগুলির জন্য আপনি এই মানগুলি একত্রিত করেন ..
  • এখন আপনি এগুলিও যোগ করুন => 154-16 = 138
  • আপনি সেই নম্বরটি "কেন্দ্রীয় সংখ্যা" এ যুক্ত করুন এবং ম্যাট্রিক্সের "বহিরাগত শেল" সরিয়ে দিন

 0 -2 -7 -7 -7     => -88
-3 -2 -2 -3  2     => -15
-8  4 1+138 -8  2  => 395
 6  7 -1  8  4     => 69
 5  7  8  7 -9     => 26

19 69 442 30 -26

এটি না করা পর্যন্ত আপনি একক সংখ্যা দিয়ে শেষ করুন

-2 -2 -3     => -15
 4  1060 -8  => 2100
 7 -1  8     => 29

27 2115 5
  • 2114 + 2147 থেকে 1060 যুক্ত করুন
  • "বাইরের শেল" সরান এবং 5321 পান
  • এখন আমরা একটি একক সংখ্যা বাকি আছে

এই আউটপুট!

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

-6

-6

-7 -1  8
-4 -6  7
-3 -6  6

2

 6  7 -2  5  1
-2  6 -4 -2  3
-1 -4  0 -2 -7
 0  1  4 -4  8
-8 -6 -5  0  2

-365

 8  3  5  6  6 -7  5
 6  2  4 -2 -1  8  3
 2  1 -5  3  8  2 -3
 3 -1  0  7 -6  7 -5
 0 -8 -4 -9 -4  2 -8
 8 -9 -3  5  7  8  5
 8 -1  4  5  1 -4  8

17611

-9 -7  2  1  1 -2  3 -7 -3  6  7  1  0
-7 -8 -9 -2  7 -2  5  4  7 -7  8 -9  8
-4  4 -1  0  1  5 -3  7  1 -2 -9  4  8
 4  8  1 -1  0  7  4  6 -9  3 -9  3 -9
-6 -8 -4 -8 -9  2  1  1 -8  8  2  6 -4
-8 -5  1  1  2 -9  3  7  2  5 -6 -1  2
-8 -5 -7 -4 -9 -2  5  0  2 -4  2  0 -2
-3 -6 -3  2 -9  8  1 -5  5  0 -4 -1 -9
-9 -9 -8  0 -5 -7  1 -2  1 -4 -1  5  7
-6 -9  4 -2  8  7 -9 -5  3 -1  1  8  4
-6  6 -3 -4  3  5  6  8 -2  5 -1 -7 -9
-1  7 -9  4  6  7  6 -8  5  1  0 -3  0
-3 -2  5 -4  0  0  0 -1  7  4 -9 -4  2

-28473770

এটি একটি কোডগল্ফ চ্যালেঞ্জ তাই সর্বনিম্ন বাইটকাউন্টের সাথে প্রোগ্রামটি


আপনি সঠিক,
ডাউনরেপ_নেশন

3
নেতিবাচক সংখ্যা কেন একটি সমস্যা হবে? আমি মনে করি না যে চ্যালেঞ্জটি এসোলেংগুলির জন্য সামঞ্জস্য করা উচিত তবে সম্ভবত অন্য
উপায়টি

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

আসলে সঠিক। তবে পরীক্ষার কেসগুলি সঠিকভাবে কাজ করবে না
ডাউনরেপ_নেশন

2
"আমি মনে করি না যে চ্যালেঞ্জটি এসোলেংগুলির জন্য সামঞ্জস্য করা উচিত তবে সম্ভবত অন্য উপায়টি আরও উপযুক্ত" যা পাথরে খোদাই করা উচিত
edc65

উত্তর:


4

এমএটিএল , 36 34 বাইট

tnq?`t&+stn:*sytn2/)+ 7M(6Lt3$)tnq

ইনপুটটি ;সারি বিভাজক হিসাবে 2D অ্যারে

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

ব্যাখ্যা

tnq       % Take input. Duplicate, get number of elements, subtract 1
?         % If greater than 0
  `       %   Do...while
    t     %     Duplicate
    &+    %     Sum matrix with its transpose
    s     %     Sum each column. Gives a row vector
    tn:   %     Vector [1 2 ...] with the same size
    *     %     Multiply element-wise
    s     %     Sum of vector. This will be added to center entry of the matrix
    y     %     Duplicate matrix
    tn2/  %     Duplicate, get half its number of elements. Gives non-integer value
    )     %     Get center entry of the matrix, using linear index with implicit rounding
    +     %     Add center entry to sum of previous vector
    7M    %     Push index of center entry again
    (     %     Assgined new value to center of the matrix
    6Lt   %     Array [2 j1-1], twice. This will be used to remove shell
    3$)   %     Apply row and col indices to remove outer shell of the matrix
    tnq   %     Duplicate, number of elements, subtract 1. Falsy if matrix has 1 entry
          %   End do...while implicitly. The loop is exited when matrix has 1 entry
          % End if implicitly
          % Display stack implicitly

4

পাইথন 2.7, 229 বাইট

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

def r(M):
  t=len(M)
  if t==1:return M[0][0]
  M[t/2][t/2]+=sum(a*b for k in [[l[x] for l in M]for x in range(0,t)]for a,b in enumerate(k,1))+sum([i*j for l in M for i,j in enumerate(l,1)])
  return r([p[+1:-1]for p in M[1:-1]])

আমাকে কয়েকটি বাইট শেভ করতে সহায়তা করার জন্য থেক্স থেকে ইস্টারলি ইরাক।


1
আপনি অপারেটরগুলির মধ্যে কয়েকটি দুরত্ব সরিয়ে ফেলতে পারেন ( ...) + sum([i*j...-> ...)+sum([i*j...) তবে সামগ্রিকভাবে দুর্দান্ত পোস্টটি !!!!
আর

ওও মিস করলো ধন্যবাদ!
জেরেমি

1
এছাড়াও, ...]for ...কাজ করে। আপনি এর মতো কমপক্ষে 2 স্থান সরিয়ে ফেলতে পারেন। (তালিকার
শেষটি

3

সি #, 257 বাইট

এখানে একটি নন এসোলাং উত্তর

void f(int[][]p){while(p.Length>1){int a=p.Length;int r=0;for(int i=0;i<a;i++)for(int j=0;j<a;j++)r+=(i+j+2)*p[i][j];p[a/2][a/2]+=r;p=p.Where((i,n)=>n>0&&n<p.Length-1).Select(k=>k.Where((i,n)=>n>0&&n<p.Length-1).ToArray()).ToArray();}Console.Write(p[0][0]);

ungolfed:

void f(int[][]p)
    {
        while (p.Length>1)
        {
            int a=p.Length;
            int r=0; //integer for number to add to middle
            for (int i = 0; i < a; i++)
                for (int j = 0; j < a; j++)
                    r +=(i+j+2)*p[i][j]; //add each element to counter according to their 1 based index
            p[a / 2][a / 2] += r; //add counter to middle
            p = p.Where((i, n) => n > 0 && n < p.Length - 1).Select(k => k.Where((i, n) => n > 0 && n < p.Length - 1).ToArray()).ToArray(); //strip outer shell from array
        }
        Console.Write(p[0][0]); //print last and only value in array
    }

2
আরে এখন, জে ইসোলং নয়।
মাইল

আপনি সংযুক্ত না করলে using System.Linqএবং এটি সংকলন করে না using System। যদিও এটি বিধি দ্বারা প্রয়োজনীয় কিনা আমি নিশ্চিত নই।
ইয়াতসি

এটি একটি সম্পূর্ণ প্রোগ্রাম নয়, এটি কেবল একটি ফাংশন তাই যতদূর আমি জানি ঠিক আছে। মানে, আমারও কি App.config এবং সমস্ত বাইট বৈশিষ্ট্য এবং মেকফাইলে অন্তর্ভুক্ত করা দরকার? না
ডাউনরেপ_নেশন

@ ডাউনরেপ_নেশন এটি কেবল অদ্ভুত, যেহেতু আমি দেখেছি কিছু লোক উত্সটিতে তাদের অন্তর্ভুক্ত করেছে যখন এটি কেবলমাত্র একটি ফাংশন ছিল এবং তারা স্কোরের বাইটগুলি অন্তর্ভুক্ত করেছে।
ইয়াতসি

এখন যখন আমি এটি সম্পর্কে চিন্তা করি, আমি সেই লাইনে আছি যা আপনার কমপক্ষে অন্তত আমদানি করা উচিত System.Linq। অন্যান্য বৈশিষ্ট্যগুলির জন্য নির্দিষ্ট বৈশিষ্ট্যগুলি ব্যবহার করার জন্য আমদানির প্রয়োজন অন্য ভাষাগুলি একই প্রক্রিয়াটির মধ্য দিয়ে যায় তাই আমি মনে করি যে এটি অনুমান করা অন্যায় যে প্রতি মডিউল C # তে মেমরিতে লোড হয়েছে।
ইয়াতসি

2

জে, 66 বাইট

([:}:@}."1@}:@}.]+(i.@,~=](]+*)<.@-:)@#*[:+/^:2#\*]+|:)^:(<.@-:@#)

চ্যালেঞ্জে বর্ণিত প্রক্রিয়াটির উপর ভিত্তি করে সোজা-ফরোয়ার্ড পদ্ধতি।

[:+/^:2#\*]+|:যোগফল পায় ]+(i.@,~=](]+*)<.@-:)@#*যোগফলকে কেন্দ্রকে বাড়িয়ে তোলার জন্য একটি বিশেষভাবে কুৎসিত উপায়। [:}:@}."1@}:@}.বাইরের শেল সরিয়ে দেয় এটি করার সম্ভবত আরও ভাল উপায় আছে।

ব্যবহার

   f =: ([:}:@}."1@}:@}.]+(i.@,~=](]+*)<.@-:)@#*[:+/^:2#\*]+|:)^:(<.@-:@#)
   f _6
_6
   f _7 _1 8 , _4 _6 7 ,: _3 _6 6
2
   f 6 7 _2 5 1 , _2 6 _4 _2 3 , _1 _4 0 _2 _7 , 0 1 4 _4 8 ,: _8 _6 _5 0 2 
_365
   f 8 3 5 6 6 _7 5 , 6 2 4 _2 _1 8 3 , 2 1 _5 3 8 2 _3 , 3 _1 0 7 _6 7 _5 , 0 _8 _4 _9 _4 2 _8 ,8 _9 _3 5 7 8 5 ,: 8 _1 4 5 1 _4 8
17611
   f (13 13 $ _9 _7 2 1 1 _2 3 _7 _3 6 7 1 0 _7 _8 _9 _2 7 _2 5 4 7 _7 8 _9 8 _4 4 _1 0 1 5 _3 7 1 _2 _9 4 8 4 8 1 _1 0 7 4 6 _9 3 _9 3 _9 _6 _8 _4 _8 _9 2 1 1 _8 8 2 6 _4 _8 _5 1 1 2 _9 3 7 2 5 _6 _1 2 _8 _5 _7 _4 _9 _2 5 0 2 _4 2 0 _2 _3 _6 _3 2 _9 8 1 _5 5 0 _4 _1 _9 _9 _9 _8 0 _5 _7 1 _2 1 _4 _1 5 7 _6 _9 4 _2 8 7 _9 _5 3 _1 1 8 4 _6 6 _3 _4 3 5 6 8 _2 5 _1 _7 _9 _1 7 _9 4 6 7 6 _8 5 1 0 _3 0 _3 _2 5 _4 0 0 0 _1 7 4 _9 _4 2)
_28473770

2

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

{l1,?hh.|:{:Im:I:?:{[L:I:M]h:JmN,Ll:2/D(IJ,M{$\:?c:{:{:ImN,I:1+:N*.}f+.}a+.}:N+.;'(DIJ),N.)}f.}f:7a$\:7a&.}.
brbr.

আমি অবাক হয়েছি এমনকি এটি সৎ হওয়ার জন্য কাজ করে। কমপক্ষে আমি বুঝতে পেরেছিলাম যে ব্র্যাকল্যাগকে একটি অন্তর্নির্মিত হিসাবে সত্যই "" উপাদানটির পরিবর্তনের মান "দরকার ...

ব্যবহারের উদাহরণ:

?- run_from_file('code.brachylog', '[[0:_2:_7:_7:_7]:[_3:_2:_2:_3:2]:[_8:4:139:_8:2]:[6:7:_1:8:4]:[5:7:8:7:_9]]', Z).
Z = 5321 .

ব্যাখ্যা

আরও পঠনযোগ্য (এবং দীর্ঘ) সংস্করণ:

{l1,?hh.|:2f:7a$\:7a&.}.
:Im:I:?:3f.
[L:I:M]h:JmN,Ll:2/D(IJ,M:4&:N+.;'(DIJ),N.)
$\:?c:5a+.
:6f+.
:ImN,I:1+:N*.
brbr.

আমি কেবল প্রতিটি ভবিষ্যদ্বাণীটি সম্পর্কে মোটামুটি ব্যাখ্যা করতে যাচ্ছি (অর্থাত্ প্রথম লাইনটি যা মেইন প্রিডিকেট + প্রিডিকেট 1 বাদে প্রতিটি লাইন করে):

  • প্রধান শিকারী + শিকারী 1 {l1,?hh.|:2f:7a$\:7a&.}.: ইনপুটটির যদি কেবল একটি সারি থাকে তবে আলগোরিদমটি শেষ করুন এবং কেবলমাত্র মানটি ফিরিয়ে দিন। অন্য সমস্ত সারি সন্ধান করুন যা প্রিডিকেট 2 কে সন্তুষ্ট করে, ফলস্বরূপ ম্যাট্রিক্সের উপর প্রিকিকেট 7 প্রয়োগ করুন, তারপরে ট্রান্সপোজিশনে 7 ভবিষ্যদ্বাণী করুন, এবং পুনরাবৃত্তভাবে কল করুন।

  • ভবিষ্যদ্বাণী 2 :Im:I:?:3f.: Iম্যাট্রিক্সের তম সারিটি ধরুন, সেই সারির সমস্ত মান সন্ধান করুন যা প্রিনিকেট 3 এর সাথে সন্তুষ্ট হয় Iএবং ম্যাট্রিক্স অতিরিক্ত ইনপুট হিসাবে দেয়।

  • ভবিষ্যদ্বাণী 3 [L:I:M]h:JmN,Ll:2/D(IJ,M:4&:N+.;'(DIJ),N.): Lসারি, এটি সারির Iসূচক, Mম্যাট্রিক্স। Nএর Jতম উপাদান L। যদি L2 দ্বারা বিভক্ত দৈর্ঘ্য উভয় সমান হয় Iএবং Jতারপরে আউটপুটটি Nম্যাট্রিক্সের 4 টি প্রাক্কলনের ফলাফলের যোগফল । অন্যথায় আউটপুট ঠিক N। কেন্দ্রের উপাদানটি যোগফলের সাথে যোগ হয়ে যায় এমন ব্যতিক্রম সহ এই প্রাকটিক্যাল আবশ্যকীয় ম্যাট্রিক্সটিকে পুনরায় তৈরি করে।

  • ভবিষ্যদ্বাণী 4 $\:?c:5a+.: ম্যাট্রিক্সের প্রতিটি সারি এবং কলামে প্রাকটিক 5 প্রয়োগ করুন, ফলাফলের যোগফলের সাথে আউটপুট একীভূত করুন।

  • ভবিষ্যদ্বাণী 5 :6f+.: সারিতে 6 টি প্রাকটিকের সমস্ত বৈধ আউটপুটগুলি সন্ধান করুন, ফলাফলের তালিকার যোগফলের সাথে আউটপুট একীভূত করুন।

  • সম্পৃক্ত 6 :ImN,I:1+:N*.Nহয় Iসারির তম মান, সঙ্গে আউটপুট সমন্বয়সাধন করা N * (I+1)

  • ভবিষ্যদ্বাণী brbr.:: ম্যাট্রিক্সের প্রথম এবং শেষ সারিটি সরান।


2

এপিএল, 56 টি অক্ষর

{{1 1↓¯1 ¯1↓⍵+(-⍴⍵)↑(⌈.5×⍴⍵)↑+/(⍵⍪⍉⍵)+.×⍳≢⍵}⍣(⌊.5×≢⍵)⊣⍵}

ইংরেজীতে:

  • ⍣(⌊.5×≢⍵) "গোলাকার একটি মাত্রার অর্ধেক আকার" পুনরাবৃত্তি করুন times
  • (⍵⍪⍉⍵)+.×⍳≢⍵ ম্যাট্রিক্সের অভ্যন্তরীণ পণ্য এবং সূচক ভেক্টরের সাথে এর ট্রান্সপোজ
  • (-⍴⍵)↑(⌈.5×⍴⍵)↑ রূপান্তর রূপান্তর ম্যাট্রিক্স মধ্যে 0s সঙ্গে প্যাড
  • 1 1↓¯1 ¯1↓ বাইরের শেল সরিয়ে দেয়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.