ডায়াডিক ট্রান্সপোজ


9

বেশিরভাগ এপিএল প্রতীকগুলির মতোই, একটি যুক্তি (ট্রান্সপোজ) বনাম দুটি আর্গুমেন্ট (ডায়াডিক ট্রান্সপোজ / পুনর্বিন্যাসের মাত্রা) সহ যখন ডাকা হয় তার আলাদা অর্থ হয়। এই চ্যালেঞ্জটি উত্তরোত্তর সম্পর্কিত, যা numpy.moveaxisপাইথন বা permuteম্যাটল্যাব-তে একইভাবে কাজ করে তবে আরও শক্তিশালী।

order ⍉ Aorderস্বতন্ত্র এন্ট্রি আছে যখন

যখন সমস্ত সদস্য orderপৃথক হয়, order ⍉ Aসমান:

  • numpy.moveaxis(A, tuple(range(len(A.shape)), order) পাইথনে, বা
  • permute(A,order)ম্যাটল্যাবে পরবর্তীকালের ডকুমেন্টেশন থেকে উদ্ধৃতি :

বি = পারমিট (এ, অর্ডার) এ এর ​​মাত্রাগুলি পুনরায় সাজিয়েছে যাতে তারা ভেক্টর আদেশ দ্বারা নির্দিষ্ট করা ক্রমে থাকে। ফলস্বরূপ অ্যারে বি এর সমান মান রয়েছে তবে কোনও নির্দিষ্ট উপাদান অ্যাক্সেসের জন্য প্রয়োজনীয় সাবস্ক্রিপ্টগুলির ক্রমটি আদেশ অনুসারে নির্দিষ্ট করে পুনরায় সাজানো হয়।

উদাহরণস্বরূপ, ধরুন Aএকটি 3D অ্যারে, এবং আসুন B ← (2 0 1)⍉A। তাহলে বি এমন B[x0,x1,x2] = A[x2,x0,x1]সবার জন্য thatx2,x0,x1

order ⍉ Aযখন orderবারবার এন্ট্রি আছে

যখন orderবারবার এন্ট্রি করা হয়, আমরা অ্যারের একটি তির্যক টুকরা নিতে। উদাহরণস্বরূপ, এটিকে একটি 2x3x4 অ্যারে হতে দিন। B ← (0 0 1)⍉Aএমনটি Aতৈরি করতে একটি তির্যক টুকরো গ্রহণ Bকরে B[x0,x1] = A[x0,x0,x1]। দ্রষ্টব্য এটি Bএকটি 2x4 অ্যারে: এটি 3x4 হলে আমাদের সেট B[2, x1] = A[2, 2, x1]করতে হবে যা সীমার বাইরে থাকবে A। সাধারণভাবে kএর ম মাত্রা Bসব ন্যূনতম হতে হবে A.shape[i]যেমন যে order[i] = k

উদাহরণ

ডায়াডিক ট্রান্সপোজটি বিবেচনা করুন order⍉Aযেখানে order = [2, 1, 0]এবং এ 3x4x5

    A =
[[[ 0  1  2  3  4]
  [ 5  6  7  8  9]
  [10 11 12 13 14]
  [15 16 17 18 19]]

 [[20 21 22 23 24]
  [25 26 27 28 29]
  [30 31 32 33 34]
  [35 36 37 38 39]]

 [[40 41 42 43 44]
  [45 46 47 48 49]
  [50 51 52 53 54]
  [55 56 57 58 59]]]

ফলাফলটি 5x4x3 অ্যারে বি =

[[[ 0 20 40]
  [ 5 25 45]
  [10 30 50]
  [15 35 55]]

 [[ 1 21 41]
  [ 6 26 46]
  [11 31 51]
  [16 36 56]]

 [[ 2 22 42]
  [ 7 27 47]
  [12 32 52]
  [17 37 57]]

 [[ 3 23 43]
  [ 8 28 48]
  [13 33 53]
  [18 38 58]]

 [[ 4 24 44]
  [ 9 29 49]
  [14 34 54]
  [19 39 59]]]

মনে রাখবেন যে কখন, উদাহরণস্বরূপ, (x0, x1, x2) = (4,1,2) আমাদের রয়েছে B[x0,x1,x2] = A[x2, x1, x0] = A[2,1,4] = 49

পরিবর্তে order = [0, 0, 0]এবং Aউপরে হিসাবে, তারপর আমাদের আউটপুট Bহবে 1-মাত্রিক আকার -3 অ্যারে B = [0, 26, 52]যাতেB[1] = B[x0] = A[x0,x0,x0] = A[1,1,1] = 26

ইনপুট

এখানে আমরা 0-ইনডেক্সিং ব্যবহার করি তবে আপনি এপিএল ডিফল্ট হিসাবে 1-ইনডেক্সিংও ব্যবহার করতে পারেন।

  • Aমাত্রা n ≥ 1 এর একটি বহুমাত্রিক বা নেস্টেড অ্যারে ।

  • একটি তালিকা orderএর এন ধনাত্মক পূর্ণসংখ্যা গঠিত পূর্ণসংখ্যার {0,1 ..., K} (বা {1, ..., ট + 1 টি} 1-সূচক জন্য) কিছু < এন , কোনো অনুক্রমে, সম্ভবত পুনরাবৃত্তি সঙ্গে।

আউটপুট

  • সেই যুক্তিগুলির সাথে ডায়াডিক ট্রান্সপোজ প্রয়োগের ফলাফলের প্রতিনিধিত্বকারী একটি বহুমাত্রিক বা নেস্টেড অ্যারে। (আউটপুটটির মাত্রা কে + 1 থাকবে )

আপনি মেটাতে বর্তমান মানক হিসাবে অনুমোদিত হিসাবে একটি সম্পূর্ণ প্রোগ্রাম, ফাংশন, ইত্যাদি লিখতে পারেন।

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

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

টিআইও-তে পরীক্ষার মামলা

পাইথন বাস্তবায়ন শীঘ্রই আসছে।

পরীক্ষার কেসগুলি পড়ার জন্য দ্রষ্টব্য: এপিএলে, একটি অ্যারের পেনাল্টিমেট এবং চূড়ান্ত অক্ষগুলি সেই ক্রমে কলাম এবং সারি বরাবর থাকে।


4
APL, 1 বাইট: : P: P
Quintec

1
প্রকৃতপক্ষে, অনেকগুলি এপিএল প্রতীক যখন একটি যুক্তির সাথে ডাকা হয় তখন কেবল একটি ডিফল্ট দ্বিতীয় যুক্তি ব্যবহার করে। এর মধ্যে রয়েছে যা ডিফল্ট হিসাবে বিপরীত অক্ষ সূচকের ব্যবহার করে, তাই ⍉Aহিসাবে একই (2 1 0)⍉Aযদি Aএকটি 3-মাত্রিক অ্যারে এবং সাধারণভাবে ⍉Aহয় (⌽⍳≢⍴A)⍉A
অ্যাডম

i / o সম্পর্কে @lirtosiast প্রশ্ন: একটি বহুমাত্রিক অ্যারে আকৃতির জোড়া (মাত্রাগুলির তালিকা) এবং সামগ্রী (তাদের সূচকগুলির লিখোগ্রাফিক ক্রমে সমস্ত উপাদান) হিসাবে উপস্থাপন করা যেতে পারে?
এনএনজি

@ngn আমি এখন কোন বলতে হবে, তবে আপনি জিজ্ঞেস করা উচিত মেটা কিনা বিন্যাস ডিফল্টরূপে গ্রহণযোগ্য।
lirtosiast

@ লিরিটোসিস্ট আনেকডোটালি, ডায়ালগ এপিএল অভ্যন্তরীণভাবে অ্যারে সঞ্চয় করে [number-of-dimensions,first-dimension-length,second-dimension-length,…,last-dimension-length,first-element,second-element,…,last-element]
অ্যাডম

উত্তর:


4

এপিএল (ডায়ালগ ইউনিকোড) , 34 বাইট এসবিসিএস

এটি আমার সহকর্মীর কোড ( রজার হুই থেকে কিছুটা সংশোধিত : 50 ফাংশন এপিএল এর ইতিহাস , অধ্যায় 30 ), সুস্পষ্ট অনুমতি নিয়ে পোস্ট করা হয়েছে।

নামবিহীন ট্যাসিট ইনফিক্স ল্যাম্বদা (এর জন্য ড্রপ-ইন হিসাবে ব্যবহার করা যেতে পারে )।

{⍵[(⊂⊂⍺)⌷¨,¨⍳⍺[⍋⍺]{⌊/⍵}⌸(⍴⍵)[⍋⍺]]}

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

{} ডিএফএন; বাম আর্গুমেন্ট (অক্ষ), ডান যুক্তি (অ্যারে)
ডিম [2,2,1]এবং[[[1,2],[3,4]]]

⍵[] অ্যারে এর সাথে সূচী করুন:

  (⍴⍵)[] অ্যারের আকার (অক্ষগুলির দৈর্ঘ্য), এর দ্বারা সূচক:
  [1,2,2]

   ⍋⍺ অক্ষগুলির গ্রেডিং ভেক্টর (সূচকগুলি যেগুলি তাদের সাজান))
   [3,1,2]
  [2,1,2]

  ⍺[⍋⍺]{… এর }⌸ গ্রুপ হিসাবে কীগুলি হিসাবে সাজানো অক্ষগুলি ব্যবহার করুন এবং প্রতিটি দলের জন্য:
  [1,2,2]{"1":[2],"2":[1,2]}

   {⌊/⍵} সর্বনিম্ন অক্ষ দৈর্ঘ্য সন্ধান করুন
   {"1":2,"2":1}[2,1]

   এই মাত্রাগুলির কার্টেসিয়ান সিস্টেমে সূচকগুলি তৈরি করুন
  [[[1,1]],[[2,1]]]

   প্রতিটি স্থানাঙ্কের সূচকগুলি ভেক্টর (তা ভ্যাক্টর হলে স্কেলার হবে ) তা নিশ্চিত করুন
  [[[1,1]],[[2,1]]]

  ()⌷¨ নিম্নলিখিতগুলির সাথে প্রত্যেকের মধ্যে সূচক:

   ⊂⊂⍺ অক্ষগুলি (দ্বিগুণভাবে আবদ্ধ; একবারে প্রথম এবং একমাত্র অক্ষ বরাবর সেই ঘরগুলি নির্বাচন করার জন্য , এবং একবার ¨প্রতিটি ভেক্টরকে ডানদিকে বাম দিকে অক্ষের পুরো সেটটি দিয়ে জোড়া দেওয়ার জন্য )
   2 1 2
  [[[1,1,1]],[[1,2,1]]]
[[1],[3]]

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