এটি কি ওয়েয়ার ম্যাট্রিক্স?


18

বেসিক ওয়েয়ার ক্যানোনিকাল ফর্ম নামে এক ধরণের n × n ম্যাট্রিক্স ডাব্লু রয়েছে । এই জাতীয় ম্যাট্রিক্স তার ব্লকগুলি দ্বারা বর্ণিত হয় এবং নিম্নলিখিত রেফারেন্স চিত্রটি ব্যবহার করে নিম্নলিখিত বৈশিষ্ট্যগুলি থাকে:

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

  • প্রধান তির্যক ব্লক ওয়াট হয় এন আমি × এন আমি λ ফর্মের ম্যাট্রিক্স আমি এন আমি যেখানে আমি এন আমি হয় এন আমি × এন আমি পরিচয় ম্যাট্রিক্স।
  • n 1 ≥ n 2 ≥ ... ≥ n আর
  • প্রথম superdiagonal ব্লক ডব্লিউ K-1, ট জন্য 2..r ট ∈ হয় এন K-1 × এন ম্যাট্রিক্স যে সারি-হ্রাস পর্যায় আকারে পূর্ণ কলাম র্যাঙ্ক , বা আরো সহজভাবে করা, আমি এন k উপরে বসা n কে -1 - শূন্যের n কে সারি।
  • অন্যান্য সমস্ত ব্লক 0 টি ম্যাট্রিক্স।

উদাহরণ স্বরূপ:

ওয়েয়ার ফর্ম

  • প্রধান তির্যক ব্লক (হলুদ) এমন যে আমি i 4, 2, 2 এবং 1।
  • প্রথম সুপারডিজোনাল ব্লকগুলি সবুজ।
  • ধূসর অঞ্চলটি অন্যান্য সমস্ত ব্লককে নিয়ে গঠিত, যা সমস্ত 0 রয়েছে

এই চ্যালেঞ্জের জন্য আমরা λ = 1 ধরে নেব।

ইনপুট

যে কোনও সুবিধাজনক বিন্যাসে 0 সে এবং 1 এস সহ বর্গ ম্যাট্রিক্স।

আউটপুট

ইনপুট ম্যাট্রিক্স ওয়েয়ার না ওয়েয়ার নয় এর জন্য দুটি স্বতন্ত্র মানের একটি আউটপুট।

বিধি

এটি । প্রতিটি ভাষায় খুব কম বাইট জিততে পারে। স্ট্যান্ডার্ড বিধি / ফাঁকগুলি প্রযোজ্য।

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

সারিগুলির অ্যারে হিসাবে উপস্থাপিত।

Weyr:

[[1]] 
[[1,1],[0,1]] 
[[1,0,1,0,0],[0,1,0,1,0],[0,0,1,0,1],[0,0,0,1,0],[0,0,0,0,1]]
[[1,0,0,1,0,0,0,0,0],[0,1,0,0,1,0,0,0,0],[0,0,1,0,0,1,0,0,0],[0,0,0,1,0,0,1,0,0],[0,0,0,0,1,0,0,1,0],[0,0,0,0,0,1,0,0,1],[0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,1]]
[[1,0,0,0,1,0,0,0,0],[0,1,0,0,0,1,0,0,0],[0,0,1,0,0,0,0,0,0],[0,0,0,1,0,0,0,0,0],[0,0,0,0,1,0,1,0,0],[0,0,0,0,0,1,0,1,0],[0,0,0,0,0,0,1,0,1],[0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,1]]

অ Weyr:

[[0]]
[[1,0],[1,1]]
[[1,0,0,1,0,0],[0,1,0,0,0,0],[0,0,1,0,0,1],[0,0,0,1,0,0],[0,0,0,0,1,0],[0,0,0,0,0,1]]
[[1,0,1,0,0],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0],[0,0,0,0,1]]
[[1,0,0,1,0,0,0,0,0],[0,1,0,0,1,0,0,0,0],[0,0,1,0,0,1,0,0,0],[0,0,0,1,0,0,0,0,0],[0,0,0,0,1,0,1,0,0],[0,0,0,0,0,1,0,1,0],[0,0,0,0,0,0,1,0,1],[0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,1]]

2
ওয়েয়ার, ম্যাট্রিক্স সম্পর্কে আপনার সংজ্ঞাটি খুব অস্পষ্ট। এটি বোঝার জন্য আমার প্রথমে উইকিপিডিয়া (যা খুব পরিষ্কার নয়) থেকে সংজ্ঞাটি পড়তে হবে এবং তারপরেও আপনার সংজ্ঞাটি বরং অস্পষ্ট এবং অস্পষ্ট। একটির জন্য আমি এটিকে পরিষ্কার করে দেব যে এন <sub> আমি </ translation > কী এবং এর অর্থ কী, বর্তমানে এটি খুব পরিষ্কার নয় যে ম্যাট্রিক্স ওয়েয়ার কিনা যদি এই জাতীয় এন উপস্থিত থাকে তবে এটি মনে হয় যে তারা কিছু ম্যাট্রিক্সের সম্পত্তি।
গম উইজার্ড

এটি কী সঠিক যে পরিচয় ম্যাট্রিক্স ওয়েয়ার-ম্যাট্রিক্স?
স্টিভি গ্রিফিন

পরিচয় ম্যাট্রিক্স হল r = 1 এবং n_1 = n সহ একটি ওয়েয়ার ম্যাট্রিক্স, সুতরাং হ্যাঁ, একটি অবক্ষয়জনিত হলেও।
এসক্লাম্পার্স

2
প্রস্তাবিত পরীক্ষা মামলা: [[1,0,0,1,0,0,0,0,0],[0,1,0,0,1,0,0,0,0],[0,0,1,0,0,1,0,0,0],[0,0,0,1,0,0,0,0,0],[0,0,0,0,1,0,1,0,0],[0,0,0,0,0,1,0,1,0],[0,0,0,0,0,0,1,0,1],[0,0,0,0,0,0,0,1,0],[0,0,0,0,0,0,0,0,1]]। আমি মনে করি এটি মিথ্যা (তবে আমার উত্তর এটির মতো সনাক্ত করতে ব্যর্থ হয়েছে)।
আর্নল্ড

আপনি যে সংজ্ঞাগুলি অন্তর্ভুক্ত করেছেন সেগুলি থেকে আপনি কেবলমাত্র মৌলিক ওয়েয়ার ম্যাট্রিক্স সনাক্ত করতে চান এবং সাধারণ ওয়েয়ার ম্যাট্রিক্সগুলি নয় suggest আপনি কি এই চ্যালেঞ্জটির জন্য লক্ষ্য রেখেছিলেন?
এসক্লাম্পাররা

উত্তর:



1

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

lambda m,w=0:{w}&{0,len(m)}and I(m)or any(I([l[:i]for l in m[:i]])*I([l[i:j+i]for l in m[:j]])*(sum(sum(m[:i]+[l[:i]for l in m],[]))==2*i+j)and f([l[i:]for l in m[i:]],j)for i in range(w,len(m))for j in range(1,i+1))
I=lambda m:all(sum(l)==l[i]>0for i,l in enumerate(m))

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

ব্যাখ্যা:

পরিচয় এবং তাদের সুপারডিজোনাল ব্লকগুলির জন্য পুনরাবৃত্তভাবে ব্লকগুলি পরীক্ষা করে।

I ম্যাট্রিক্স একটি পরিচয় ম্যাট্রিক্স কিনা তা পরীক্ষা করে

I=lambda m:all(sum(l)==l[i]>0for i,l in enumerate(m))

ইনপুট ম্যাট্রিক্সের প্রতিটি ব্লকের জন্য, ফাংশনটি এটি একটি পরিচয় যাচাই করে এবং ঠিক এটির জন্য আরও একটি পরিচয় ম্যাট্রিক্স ব্লক রয়েছে। পরবর্তী পুনরাবৃত্তির পরে সেই আকারের একটি ব্লকের দিকে নজর দেওয়া হয়।

{w}&{0,len(m)}and I(m)                # if the while matrix is an identity matrix,
                                      # return true (but only the first time or last block)
or
any(
 I([l[:i]for l in m[:i]])                         # the current block is identity
 *I([l[i:j+i]for l in m[:j]])                     # and, the smaller block to the right is identity
 *(sum(sum(m[:i]+[l[:i]for l in m],[]))==2*i+j)   # and everything below and to the right (not the
                                                  # smaller block), are 0
 and f([l[i:]for l in m[i:]],j)                   # and the remaining matrix is alse Weyr(recursively)
 for i in range(w,len(m))             # for each block size i
 for j in range(1,i+1)                # for each smaller right block of size j
)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.