মডুলার সম্প্রচার


24

এই চ্যালেঞ্জটি এমএটিএল ভাষার কিছু বৈশিষ্ট্যের সাথে সম্পর্কিত, মে 2018 এর ভাষার ইভেন্ট ইভেন্টের অংশ হিসাবে ।


ভূমিকা

এমএটিএলে, অনেকগুলি দুটি ইনপুট ফাংশন সম্প্রচারের সাথে উপাদান অনুসারে কাজ করে । এর অর্থ নিম্নলিখিতগুলি:

  • উপাদান অনুসারে (বা ভেক্টরাইজড ): ফাংশনটি মাপানো মাপের সাথে দুটি অ্যারে ইনপুট হিসাবে গ্রহণ করে। ক্রিয়াকলাপ দ্বারা সংজ্ঞায়িত অপারেশন প্রতিটি জোড় সংশ্লিষ্ট এন্ট্রিগুলিতে প্রয়োগ করা হয়। উদাহরণস্বরূপ, পোস্ট-ফিক্স স্বরলিপি ব্যবহার করে:

    [2 4 6] [10 20 30] +
    

    আউটপুট দেয়

    [12 24 36]
    

    এটি বহুমাত্রিক অ্যারেগুলির সাথেও কাজ করে। স্বরলিপিটি × অ্যারে (ম্যাট্রিক্স) [1 2 3; 4 5 6]উপস্থাপন করে23

    1 2 3
    4 5 6
    

    যার 2প্রথম মাত্রা (উল্লম্ব) এবং 3দ্বিতীয় (অনুভূমিক) বরাবর আকার রয়েছে । উদাহরণস্বরূপ

    [2 4 6; 3 5 7] [10 20 30; 40 60 80] *
    

    দেয়

    [20 80 180; 120 300 560]
    
  • ব্রডকাস্টিং বা ( সিঙ্গলটন সম্প্রসারণ ): দুটি ইনপুট অ্যারের সাথে মাপের আকার নেই, তবে প্রতিটি অ-মিলের মাত্রায় অ্যারেগুলির একটির আকার রয়েছে 1। এই অ্যারেটি মাপের ম্যাচ তৈরির জন্য অন্যান্য মাত্রার সাথে স্পষ্টভাবে প্রতিলিপি করা হয়েছে; এবং তারপরে উপরের মত অপারেশনটি উপাদান অনুসারে প্রয়োগ করা হবে। উদাহরণস্বরূপ, আকারের সঙ্গে দুটি ইনপুট অ্যারে বিবেচনা 1× 2এবং 3× 1:

    [10 20] [1; 2; 5] /
    

    সম্প্রচারের জন্য ধন্যবাদ, এটি সমান

    [10 20; 10 20; 10 20] [1 1; 2 2; 5 5] /
    

    এবং তাই এটি দেয়

    [10 20; 5 10; 2 4]
    

    একইভাবে, আকারের সঙ্গে 3× 2এবং 3× 1(বর্তমানে সম্প্রচার দ্বিতীয় মাত্রা বরাবর কাজ করে শুধুমাত্র),

    [9 8; 7 6; 5 4] [10; 20; 30] +
    

    দেয়

    [19 18; 27 26; 35 34]
    

    মাত্রা সংখ্যা এমনকি পৃথক হতে পারে। উদাহরণস্বরূপ, 3 × 2 এবং 3 × 1 × 5 আকারের ইনপুটগুলি সামঞ্জস্যপূর্ণ এবং একটি 3 × 2 × 5 ফলাফল দেয়। প্রকৃতপক্ষে, আকার 3 × 2 3 × 2 same 1 এর সমান (সেখানে নির্বিচারে অনেকগুলি অন্তর্নিহিত ট্রেইলিং সিঙ্গলটন মাত্রা রয়েছে)।

    অন্যদিকে, একজোড়া 2× 2এবং 3× 1অ্যারে একটি ত্রুটি, দিতে হবে কারণ প্রথম মাত্রা বরাবর মাপ হয় 2এবং 3তারা সমান নয় এবং তাদের কেউ নেই 1

মডুলার সম্প্রচারের সংজ্ঞা

মডুলার সম্প্রচার হ'ল সম্প্রচারের একটি সাধারণীকরণ যা মিল না-করা মাপের কোনওটি না হলেও কার্যকর হয় 1। উদাহরণস্বরূপ ফাংশনের ইনপুট হিসাবে নিম্নলিখিত 2× 2এবং 3× 1অ্যারেগুলি বিবেচনা করুন +:

[2 4; 6 8] [10; 20; 30] +

নিয়মটি নিম্নরূপ: প্রতিটি মাত্রার জন্য, সেই মাত্রাটি বরাবর ছোট ছোট অ্যারেটিকে অন্য অ্যারের আকারের সাথে মেলাতে মডুলারালি (চক্রাকারে) প্রতিলিপি করা হয় । এটি উপরের সমতুল্য হবে

[2 4; 6 8; 2 4] [10 10; 20 20; 30 30] +

ফলাফল সহ

[12 14; 26 28; 32 34]

দ্বিতীয় উদাহরণ হিসাবে,

[5 10; 15 20] [0 0 0 0; 1 2 3 4; 0 0 0 0; 5 6 7 8; 0 0 0 0] +

উত্পাদন করা হবে

[5 10 5 10; 16 22 18 24; 5 10 5 10; 20 26 22 28; 5 10 5 10]

সাধারণভাবে, আকারের সঙ্গে ইনপুট a× bএবং c× dদিতে আকার ফলে max(a,b)× max(c,d)

চ্যালেঞ্জ

বাস্তবায়ন উপরন্তু জন্য দ্বি-মাত্রিক সঙ্গে অ্যারে মডুলার সম্প্রচার উপরের হিসাবে সংজ্ঞায়িত।

অ্যারেগুলি আয়তক্ষেত্রাকার হবে (র‌্যাগড নয়) কেবল অ-নেতিবাচক পূর্ণসংখ্যা থাকবে এবং প্রতিটি মাত্রায় কমপক্ষে আকার1 থাকবে ।

প্রশাসনিক নিয়ম:

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

;সারি বিভাজক হিসাবে নিম্নলিখিতটির ব্যবহার (উপরের উদাহরণগুলির মতো)। প্রতিটি পরীক্ষার ক্ষেত্রে দুটি ইনপুট এবং তারপরে আউটপুট প্রদর্শিত হয়।

[2 4; 6 8]
[10; 20; 30]
[12 14; 26 28; 32 34]

[5 10; 15 20]
[0 0 0 0; 1 2 3 4; 0 0 0 0; 5 6 7 8; 0 0 0 0]
[5 10 5 10; 16 22 18 24; 5 10 5 10; 20 26 22 28; 5 10 5 10]

[1]
[2]
[3]

[1; 2]
[10]
[11; 12]

[1 2 3 4 5]
[10 20 30]
[11 22 33 14 25]

[9 12 5; 5 4 2]
[4 2; 7 3; 15 6; 4 0; 3 3]
[13 14 9;12 7 9;24 18 20;9 4 6;12 15 8]

[9 12 5; 5 4 2]
[4 2 6 7; 7 3 7 3; 15 6 0 1; 4 0 1 16; 3 3 3 8]
[13 14 11 16; 12 7 9 8; 24 18 5 10; 9 4 3 21; 12 15 8 17]

[6 7 9]
[4 2 5]
[10 9 14]

"দ্বি-মাত্রিক অ্যারেগুলির জন্য সংযোজন প্রয়োগ করুন" - এক মাত্রিক পরীক্ষার কেস রয়েছে।
জোনাথন অ্যালান

আমরা কি ধরে নিতে পারি যে আমরা কোনও র‌্যাগড অ্যারে ইনপুট পাব না? (দেখে মনে হচ্ছে)
জোনাথন অ্যালান

1
@ জোনাথান অ্যালান পরিষ্কার না হওয়ার জন্য দুঃখিত। হ্যাঁ, আপনি কোনও রাগযুক্ত অ্যারে ধরে নিতে পারবেন না। তারা আয়তক্ষেত্রাকার অ্যারে হবে। "এক মাত্রিক" বেশী গণ্য করা উচিত আকার সঙ্গে দ্বি-মাত্রিক যেমন 1× n(যেমন [1 2 3]) অথবা n× 1(যেমন [1; 2; 3])
লুইস Mendo

আপনার বর্ণিত সম্প্রচারটি এমএটিএলবি বা নম্পপি সম্প্রচারের চেয়ে বেশি সীমাবদ্ধ বলে মনে হচ্ছে; আপনার বিবরণে, ইনপুটগুলির একই পরিমাণের মাত্রা থাকতে হবে, একটি সীমাবদ্ধতা ম্যাটল্যাব বা নম্পপিতে উপস্থিত নেই। এটি কি কোনও এমএটিএল বাধা, বা চ্যালেঞ্জের উদ্দেশ্যগুলির জন্য সরলীকরণ (যেহেতু চ্যালেঞ্জটি 2 ডি ইনপুটটিতে সীমাবদ্ধ)?
ব্যবহারকারী 2357112

@ ব্যবহারকারী 2357112 হ্যাঁ, এটি বিবরণটির সরলীকরণ ছিল। এমএটিএল এর সম্প্রচারটি ম্যাটল্যাবের মতোই: আপনার কাছে 3 × 2 এবং 3 × 1 × 5 ইনপুট থাকতে পারে এবং একটি 3 × 2 × 5 ফলাফল পেতে পারে। প্রকৃতপক্ষে, 3 × 2 3 × 2 imp 1 (অন্তর্নিহিত অনুসরণের মাত্রা) এর সমান। আমি মনে করি এটি নম্পির মতো (তবে শীর্ষস্থানীয় মাত্রাগুলি সহ)। আমি স্পষ্ট করে জানিয়েছি যে ভূমিকাতে
লুইস মেন্ডো

উত্তর:


4

জেলি , 10 বাইট

ṁ€ZL$Z€Ɗ⁺S

ইনপুট হিসাবে একটি ম্যাট্রিক্স জুটি (সারি দুটি অ্যারে) নেয় এবং একটি ম্যাট্রিক্স প্রদান করে।

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

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

ṁ€ZL$Z€Ɗ⁺S  Main link. Argument: [M, N] (matrix pair)

  Z $       Zip M with N (i.e., transpose the matrix of arrays [M, N], ...
   L            then take the length (number of rows) of the result.
ṁ€          Mold M and N like the indices, cyclically repeating their rows as many
            times as needed to reach the length to the right.
     Z€     Zip each; transpose both M and N.
       Ɗ⁺   Combine the three links to the left into a chain and duplicate it.
            The first run enlarges the columns, the second run the rows.
         S  Take the sum of the modified matrices.

1
অবশ্যই ... আমি এই সমস্ত গল্ফিংয়ের ভাষাগুলি চ্যালেঞ্জের জন্য প্রয়োজনীয় বাইটগুলির ক্ষেত্রে কিছুটা সামঞ্জস্যপূর্ণ হিসাবে দেখছি (জেলি, 05 এবি 1 ই, পাইথ, এপিএল, ইত্যাদি) বর্তমান উত্তরগুলির প্রায় বেশিরভাগই প্রায় 20 বাইট, এবং এখানে উইজার্ড ডেনিসও এসেছেন এর উত্তর অর্ধেকের সাথে ..;) মেসেজ এবং সত্য এক এবং একই রকম হলে মজার মজার: " ডেনিস কেউ আউটগলফ করে না! .. "
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন এপিএল কোনও গল্ফ করার ভাষা নয়।
অ্যাডাম

1
@ অ্যাডাম আমি জানি, আমি জানি। তবে এটি এখনও খুব ছোট (1960 এর দশকে প্রথম বিকাশ হওয়া সত্ত্বেও)। গল্ফিং ভাষার পরিবর্তে আমার ছোট্ট ভাষাগুলি বলা উচিত ছিল। আহ ভাল ..
কেভিন ক্রুইজসেন 4'18

5

কাঠকয়লা , 25 23 বাইট

AθIE⌈EθLιE⌈EθL§λ⁰ΣE觧νιλ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। 3-মাত্রিক অ্যারে হিসাবে ইনপুট নেয়। ব্যাখ্যা:

Aθ

ইনপুট সবকিছু।

    θ                   Input
   E                    Map over arrays
      ι                 Current array
     L                  Length
  ⌈                     Maximum
 E                      Map over implicit range
          θ             Input
         E              Map over arrays
             λ          Current array
            § ⁰         First element
           L            Length
        ⌈               Maximum
       E                Map over implicit range
                 θ      Input
                E       Map over arrays
                    ν   Current array
                   § ι  Cyclically index using outer loop index
                  §   λ Cyclically index using inner loop index
               Σ        Sum
I                       Cast to string
                        Implicitly print on separate lines and paragraphs

: পি (যদিও এটি দীর্ঘতর> _>)
ASCII-

5

এমএটিএল , 25 24 বাইট

,iZy]vX>XKx,@GK:KP:3$)]+

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

অবশেষে! মাসের ভাষা দ্বারা উত্তর দেওয়ার জন্য মাস-অনুপ্রেরণামূলক চ্যালেঞ্জটির ভাষায় কেবল এক সপ্তাহ লেগেছিল !

আমার অনুমান যে এটি যতটা সম্ভব সংক্ষিপ্ত নয়, তবে আমি যথেষ্ট খুশি কারণ আমার প্রাথমিক সংস্করণটি 40 বাইটেরও বেশি ছিল। সম্পাদনা: আমি ঠিক বলেছিলাম, লুইস বাইরে বেরোনোর ​​জন্য আরও একটি বাইট খুঁজে পেলেন!

,iZy]	# do twice: read input and find the size of each dimension
vX>	# find the maximum along each dimension
XKx	# save this into clipboard K and delete from stack. Stack is now empty.
,	# do twice:
 @G	# push the input at index i where i=0,1.
	# MATL indexes modularly, so 0 corresponds to the second input
 K:	# push the range 1...K[1]
 KP:	# push the range 1...K[2]
 3$)	# use 3-input ) function, which uses modular indexing
	# to expand the rows and columns to the appropriate broadcasted size
]	# end of loop
+	# sum the now appropriately-sized matrices and implicitly display

লুইস মেন্ডো আরও 5 বাইট ;-) বন্ধ করে গল্ফের জন্য অপেক্ষা করছেন
জিউস্পে

:-D পরীক্ষার মামলার জন্য আমার প্রোগ্রামটিতে 26 বাইট ছিল, ভাল হয়েছে! :ভেক্টর ইনপুট সহ দুর্দান্ত ব্যবহার
লুইস মেন্ডো

4

পাইথন 3 , 127 126 125 বাইট

পরিবর্তন করে একটি বাইট golfed sum(m)করতেm+n

@ জোনাথন ফ্রেঞ্চকে আরও একটি বাইট ধন্যবাদ

lambda y:[[m+n for n,m,j in Z(l)]for*l,i in Z(y)]
from itertools import*
Z=lambda y:zip(*map(cycle,y),range(max(map(len,y))))

দুটি দ্বি-মাত্রিক অ্যারের তালিকা হিসাবে ইনপুট নেয়।

  • Zযতক্ষণ না সূচক বৃহত্তম অ্যারে এর দৈর্ঘ্য ছুঁয়েছে ল্যামডা ইনপুট হিসাবে দুইটি অ্যারের নেয় এবং কোনো ইটারেটরে একটি সূচক ফলনশীল এবং উভয় অ্যারে থেকে মানগুলি মার্জ ফেরৎ। সূচী ভেরিয়েবলটি আমার পক্ষে কার্যকর নয় এবং আমার বাইট ব্যয় করে, তবে এটি ছাড়া কীভাবে করব তা আমি জানি না ... ( সম্পর্কিত )
  • প্রধান ল্যাম্বদা কেবল ইনপুট অ্যারে নেয় এবং Zবাইরের এবং অভ্যন্তরীণ অ্যারেগুলিতে কল করে। অন্তর্নিহিত মানগুলি একসাথে যুক্ত করা হয়।

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

ব্যবহার itertools.cycleকরে কিছুটা প্রতারণার মতো অনুভূত হয় তবে আমি মনে করি নিছক আমদানির বিবরণীর দৈর্ঘ্য দ্বারা যথেষ্ট শাস্তি পেয়েছি :)

আমি নিশ্চিত যে এটি আরও কিছু গল্ফ করা যেতে পারে, বিশেষত পুনরাবৃত্তি পদ্ধতি যা এই অকেজো iএবং jভেরিয়েবলগুলিকে ছেড়ে দেয় । আমি কীভাবে গল্ফ করব তার কোনও পরামর্শের জন্য আমি কৃতজ্ঞ হব, আমি সম্ভবত কিছু স্পষ্টভাবে মিস করছি।


আপনি কি নিজের zipযুক্তিগুলি অদলবদল করতে পারবেন , fবোঝার অ্যাসাইনমেন্টটি বিপরীত করতে পারেন এবং এভাবে একটি স্থান ( for i,*l-> for*l,i) সরাতে পারেন ? ( 125 বাইট )?
জনাথন ফ্রেচ 15'7

আরও একবার বাইট, ধন্যবাদ! আমি আমার পোস্ট আপডেট করব।
এটেন

3

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

কাজের জন্য সঠিক সরঞ্জাম নয়, এবং সম্ভবত সঠিক পদ্ধতিও নয়। ওহ ভাল ... ¯ \ _ (ツ) _ / ¯

a=>b=>(g=(a,b,c)=>[...Array((a[b[L='length']]?a:b)[L])].map(c))(a,b,(_,y)=>g(a[0],b[0],(_,x)=>(h=a=>a[y%a[L]][x%a[0][L]])(a)+h(b)))

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

কিভাবে?

সাহায্যকারী ফাংশন ছ () একটি অ্যারের (বৃহত্তম ইনপুট অ্যারের মত বৃহৎ যা সৃষ্টি একটি বা বো ) এবং পূজা কলব্যাক ফাংশন এটি উপর:

g = (a, b, c) =>
  [...Array(
    (a[b[L = 'length']] ? a : b)[L]
  )].map(c)

সাহায্যকারী ফাংশন জ () সার্চ 2D-বিন্যস্ত একটি(X, Y) মডুলার সম্প্রচার সাথে

h = a => a[y % a[L]][x % a[0][L]]

মূল কোডটি এখন কেবল এইভাবে পড়ে:

a => b =>
  g(a, b, (_, y) =>
    g(a[0], b[0], (_, x) =>
      h(a) + h(b)
    )
  )

পুনরাবৃত্ত সংস্করণ, 134 বাইট

a=>b=>(R=[],g=x=>a[y]||b[y]?a[0][x]+1|b[0][x]+1?g(x+1,(R[y]=R[y]||[])[x]=(h=a=>a[y%a.length][x%a[0].length])(a)+h(b)):g(+!++y):R)(y=0)

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


3

05 এ বি 1 ই , 15 বাইট

2FεIζg∍ø]øεø¨}O

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


পুরানো সংস্করণ, 25 বাইট

é`DŠg∍)Σнg}`DŠнgδ∍€˜)ø€øO

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

ব্যাখ্যা

15 byter:

2FεIζg∍ø] øεø¨ - ও - সম্পূর্ণ প্রোগ্রাম। STDIN থেকে 3D [A, B] তালিকা হিসাবে ইনপুট নেয়।
2 এফ - দু'বার প্রয়োগ করুন:
  ε - [এ, বি] এর প্রত্যেকের জন্য:
   আই - ইনপুট স্থানান্তর করুন (ফাঁকা ফাঁকা স্থান পূরণ করুন)।
     g - দৈর্ঘ্য (সারিগুলির সংখ্যা পুনরুদ্ধার করুন)।
      । - বর্তমান আইটেমটি (এ বা বি) প্রয়োজনীয় দৈর্ঘ্যে প্রসারিত করুন।
       ø - ট্রান্সপোজ
        ] - সমস্ত লুপ বন্ধ করুন।
         ø - আবার স্থানান্তর করুন।
          ε - প্রতিটি সারির জন্য ^ (লুপগুলির ফলাফলের কলাম):
           ø - কলামটি স্থানান্তর করুন।
            ।} - শেষ উপাদানটি সরান এবং মানচিত্রের লুপটি বন্ধ করুন।
              ও - সম

25 byter:

∍DŠg∍) Σнg} Šн Dδ∍gδ∍ € ˜) ø € øO - সম্পূর্ণ প্রোগ্রাম। এসটিডিইএন থেকে 3 ডি তালিকা হিসাবে ইনপুট নেয়।
é - দৈর্ঘ্য অনুসারে তালিকাটি বাছাই করুন।
 - ডি - স্ট্যাকের উপর পৃথকভাবে ডাম্পগুলি ফেলে দিন, টসকে সদৃশ করুন।
   Š - একটি ট্রিপল অদলবদল সম্পাদন করুন। a, b, c -> c, a, b।
    g - টোসের দৈর্ঘ্য পান।
     ∍ - সেই অনুযায়ী সংক্ষিপ্ত তালিকাটি প্রসারিত করুন (উচ্চতায়)।
      ) Σ} - পুরো স্ট্যাকটিকে একটি তালিকাতে মোড়ানো এবং এটি অনুসারে সাজান:
        --g - এটির প্রথম আইটেমটির দৈর্ঘ্য।
           `ডি - উপরের মত একই।
              --g - প্রথম উপাদানটির দৈর্ঘ্য।
                δ∍ € ˜ - সেই অনুযায়ী সংক্ষিপ্ত তালিকাটি প্রস্থে (প্রস্থে) প্রসারিত করুন। 
                    ) ø - একটি তালিকাতে স্ট্যাকটি মুড়িয়ে দিন এবং এটি স্থানান্তরিত করুন (জিপ)।
                      € ø - তারপরে প্রতিটি তালিকা জিপ করুন।
                        ও - ভেক্টরিযুক্ত সমষ্টি প্রয়োগ করুন।

3

আর , 136 104 103 95 93 বাইট

জিউসেপের পরামর্শ অনুসরণ করে পুরো 33 ডলার বাইট গল্ফ করে । কোনও ফাংশনের নাম হিসাবে অপারেটরটি ব্যবহার করে 100 বাইটের নিচে পেতে পরিচালিত। আরও সুস্পষ্ট কোডের জন্য ইতিহাস দেখুন।

function(x,y,d=pmax(dim(x),dim(y)))y/d[2]/d[1]+x/d[2]/d[1]
"/"=function(x,j)apply(x,1,rep,,j)

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


নিস! আমি এটিকে 104 বাইটে নামিয়েছি কিন্তু ব্যবহার করে applyএবং rep.lenআমি যা বিবেচনা করেছি তা হ'ল, যদিও আমি এটিকে নিজের কোডিংয়ের জন্য প্রায় পাইনি।
জিউসেপ 16

@ জিউসেপ ধন্যবাদ! 104 সংস্করণটি যদিও প্রত্যাশিত আউটপুট দেয় না।
জাইসি 3'18

1
ওহ, আমি আপনাকে পথভ্রষ্ট করে চলেছি!
জিউসেপে

1
@ জিউসেপ dim, অনেক ক্লিনার ব্যবহার পছন্দ করে এবং পুনরাবৃত্ত কলগুলির সাথে বহুমাত্রিক সাধারণীকরণের দরজা উন্মুক্ত করেr
জেসি

আমি ব্যবহার করার চেষ্টা করছি outer(x,y,"+")যা সমস্ত সঠিক পরিমাণ, এবং একটি সুস্পষ্ট নিদর্শন রয়েছে। কীভাবে এগুলিকে দক্ষতার সাথে এক্সট্রাক্ট করা যায় তা অনুমান করতে পারছি না।
এনজিএম


2

05 এ বি 1 ই , 18 বাইট

éR`UvXNèy‚é`©g∍®+ˆ

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

ব্যাখ্যা

éR                  # sort by length, descending
  `U                # store the shorter list in X
    v               # for each list y, index N in the longer list
     XNè            # get the nth element of the shorter list
        y‚é         # pair with y and sort by length
           `©g∍     # repeat the shorter list to the same length as the longer
               ®+   # elementwise addition of the lists
                 ˆ  # add to global list
                    # implicitly print global list

2

পাইথ, 24 বাইট

KeSmlhdQmm+Fm@@bdkQKeSlM

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

ব্যাখ্যা

KeSmlhdQmm+Fm@@bdkQKeSlM
                    eSlMQ  Get the maximum length of (implicit) input...
KeSmlhdQ           K       ... and the maximum row length.
        mm                 For each 2d index ...
          +Fm@@bdkQ        ... get the sum of the appropriate elements.

2

জাভা 8, 172 বাইট

A->B->{int m=A.length,o=A[0].length,d=B.length,u=B[0].length,l=m>d?m:d,a=o>u?o:u,r[][]=new int[l][a],$;for(;l-->0;)for($=a;$-->0;)r[l][$]=A[l%m][$%o]+B[l%d][$%u];return r;}

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

ব্যাখ্যা:

A->B->{                   // Method with integer-matrix as both parameters and return-type
  int m=A.length,         //  Rows of `A`                        (we got an     M)
      o=A[0].length,      //  Columns of `A`                     (we got an     O)
      d=B.length,         //  Rows of `B`                        (we got a      D)
      u=B[0].length,      //  Columns of `B`                     (we got a      U)
      l=m>d?m:d,          //  Maximum of both rows               (we got an     L)
      a=o>u?o:u,          //  Maximum of both columns            (we got an     A)
      r[][]=new int[l][a],//  Result-matrix of size `l` by `a`   (and we got an R)
      $;                  //  Temp integer                       (which $pells? ;P)
  for(;l-->0;)            //  Loop over the rows
    for($=a;$-->0;)       //   Inner loop over the columns
      r[l][$]=            //    Set the current cell in the result-matrix to:
        A[l%m][$%o]       //     The value at {`l` modulo-`m`, `$` modulo-`o`} in `A`
        +B[l%d][$%u];     //     Plus the value at {`l` modulo-`d`, `$` modulo-`u`} in `B`
  return r;}              //  Return the result matrix


2

পাইথন 2 , 124 116 বাইট

l=len
A,B=sorted(input(),key=l)
A*=l(B)
for i in eval(`zip(A,B)`):a,b=sorted(i,key=l);a*=l(b);print map(sum,zip(*i))

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

ব্যাখ্যা:

ইনপুট হিসাবে দুটি 2-ডি তালিকার তালিকা নেয়।

l=len
A,B=sorted(input(),key=l)         # Sort inputed lists by length
A*=l(B)                           # Extend shorter list
for i in eval(`zip(A,B)`):        # Zip and remove copied references
  a,b=sorted(i,key=l)             # Sort lists in each pair (keep references)
  a*=l(b)                         # Extend shorter list
  print map(sum,zip(*i))          # Zip and sum

আমি আমাদের উভয় সমাধান থেকে ধারণা নিয়েছিলাম এবং 105 বাইটে নেমে এসেছি । যদিও পাইথন 2 ব্যবহার করতে হয়েছিল, এবং আমি আপনার কোড থেকে গুণনের কৌশল পেয়েছি, সুতরাং আমার উত্তর আপডেট করা ঠিক মনে হবে না :)
এটেন

1
@ আইটিন আপনার এটি পোস্ট করা উচিত, এটি ভাল সমাধান!
ডেড পসুম

অভি, আমার পক্ষে বেশ বোকা ভুল, আপনাকে ধন্যবাদ (আবার)!
এটেন

1
@ আইটিন কেবল লক্ষ্য করেছেন, এই সমাধানটিতে 2 এবং 6 টি পরীক্ষার সমস্যা রয়েছে।
অনুলিপিযুক্ত

1
@Etene 105 বাইটে ফিরে যান : সি
ডেড

2

পাইথন 2 , 101 97 105 বাইট

সম্পাদনা করুন: 4 বাইট সংরক্ষণের জন্য ডেড পসুমকে (আবার!) ধন্যবাদ

সম্পাদনা 2: 8 বাইট হারিয়েছে, কিছু পরীক্ষার কেস পাস করছিল না

ডেড পসামের পূর্ববর্তী সমাধান (তাকে ধন্যবাদ!) এবং আমার নিজস্ব পাইথন 3 সমাধানের মধ্যে একটি মিশ্রণ ।

lambda y:[map(sum,P(i))for i in P(y)]
def P(y):y=sorted(y,key=len);y[0]*=len(y[1]);return eval(`zip(*y)`)

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

আমার পাইথন 3 সমাধান হিসাবে একই ইনপুট (2 টি মাত্রিক তালিকার একটি জুড়ি)।

মন্তব্য করা কোড:

# Iterate over the nested lists, resized & joined by P(),
# and sum the inner joined items
lambda y:[map(sum,P(i))for i in P(y)]
def P(y):
 y=sorted(y,key=len)  # Sort the two input lists by length
 y[0]*=len(y[1])      # Multiply the smallest one by the biggest one's length
                      # (The smallest list is now the previously largest one)
 return eval(`zip(*y)`)  # Return paired list elements up to the smallest list's length

1

জুলিয়া 0.6 , 85 83 বাইট

M\N=(((r,c),(s,d))=size.((M,N));repmat(M,s,d)+repmat(N,r,c))[1:max(r,s),1:max(c,d)]

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

( জো কিংকে ধন্যবাদ দিয়ে প্রতিস্থাপন করুন )\

প্রতিটি ম্যাট্রিক্স অনুভূমিকভাবে এবং উলম্বভাবে পুনরাবৃত্তি করে কাজ করে যাতে তাদের উভয়ই একই আকারের (কলাম আকারের সারি আকারের পণ্যগুলির পণ্য) থাকে, সেগুলি যুক্ত করে এবং সেখান থেকে সঠিক অঞ্চলটি বের করে। (সারি ভেক্টর ইনপুট বা কলাম ভেক্টর ইনপুটগুলিকে reshapeদ্বি-মাত্রিক অ্যারে হিসাবে কল করার জন্য কল প্রয়োজন , যা আমি ধরে নিচ্ছি যে প্রশ্নটি "দ্বি-মাত্রিক অ্যারেগুলির জন্য প্রয়োগ সংযোজন" এবং "ইনপুট এবং আউটপুট যে কোনও দ্বারা নেওয়া যেতে পারে) যুক্তিসঙ্গত উপায় Their তাদের ফর্ম্যাটটি যথারীতি নমনীয় "")

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