ন্যূনতম সেন্ট্রোসিমেট্রাইজেশন


11

মূলত সম্পর্কিত।

উদ্দেশ্য: ধনাত্মক পূর্ণসংখ্যা একটি ম্যাট্রিক্স প্রদত্ত , আউটপুট ক্ষুদ্রতম centrosymmetric ম্যাট্রিক্স যা ধারণ করে (এই ম্যাট্রিক্স পাশাপাশি অ ধনাত্মক পূর্ণসংখ্যা থাকতে পারে)।এমMM

একটি সেন্ট্রোসিম্যাট্রিক ম্যাট্রিক্স একটি বর্গ ম্যাট্রিক্স যা ক্রম 2 order এর ঘূর্ণন প্রতিসাম্য সহ — অর্থাৎ এটি দুটি বার ঘোরার পরে একই ম্যাট্রিক্স থেকে যায়। উদাহরণস্বরূপ, সেন্ট্রোসিমমেট্রিক ম্যাট্রিক্সের উপরের-বাম উপাদানটি নীচের ডানদিকের সমান এবং কেন্দ্রের ওপরের উপাদানটি কেন্দ্রের নীচের অংশের মতোই থাকে। একটি দরকারী দৃশ্যায়ন এখানে পাওয়া যাবে

আরও আনুষ্ঠানিকভাবে, একটি ম্যাট্রিক্স দেওয়া , একটি বর্গ ম্যাট্রিক্স উত্পাদন করে যে সেন্ট্রোসিমিমেট্রিক এবং , এবং অন্য কোনও বর্গ ম্যাট্রিক্স যা ।এন এন এম এন কে অস্পষ্ট কে < অস্পষ্ট এনMNNMNKdimK<dimN

বি বি আই , জে বি আই + আই , জে + ( আই , জে )A হ'ল একটি উপসেট (স্বরলিপি: ) এবং যদি প্রতিটি মান index সূচক হয় তবে কিছু জোড় সংখ্যার পূর্ণসংখ্যার জন্য ।BABAi,jBi+i,j+j(i,j)

দ্রষ্টব্য : কিছু ম্যাট্রিকের একাধিক সমাধান (যেমন [[3,3],[1,2]]হিসাবে সমাধান করা হচ্ছে [[2,1,0],[3,3,3],[0,1,2]]বা [[3,3,3],[1,2,1],[3,3,3]]); আপনাকে বৈধ সমাধানের কমপক্ষে একটি আউটপুট দিতে হবে।

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

input
example output

[[1, 2, 3],
 [4, 5, 6]]
[[1, 2, 3, 0],
 [4, 5, 6, 0],
 [0, 6, 5, 4],
 [0, 3, 2, 1]]

[[9]]
[[9]]

[[9, 10]]
[[9, 10],
 [10, 9]]

[[100, 200, 300]]
[[100, 200, 300],
 [  0,   0,   0],
 [300, 200, 100]]

[[1, 2, 3],
 [4, 5, 4]]
[[1, 2, 3],
 [4, 5, 4]
 [3, 2, 1]]

[[1, 2, 3],
 [5, 6, 5],
 [3, 2, 1]]
[[1, 2, 3],
 [5, 6, 5],
 [3, 2, 1]]

[[4, 5, 4],
 [1, 2, 3]]
[[3, 2, 1],
 [4, 5, 4],
 [1, 2, 3]]

[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
 [1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 1]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9],
 [1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
 [9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
 [9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

কেন সেন্ট্রোসিমেট্রিক ম্যাট্রিকগুলি বর্গ হতে হবে?
অ্যাডহক গার্ফ হান্টার

@WW একটি সাধারণ অর্থে, আমি মনে করি না এটি হওয়া উচিত। এই প্রশ্নের জন্য তবে তাদের সংজ্ঞা অনুসারে অবশ্যই বর্গক্ষেত্র হওয়া উচিত
কনর

আমি ভাবছিলাম আপনি কেন
এই

2
@WW এটি সরলকরণ ছিল যা আমি স্পষ্টতার জন্য দরকারী বলে মনে করি
কনর ও'ব্রায়ান

উত্তর:


8

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

ṁ↔ᵐ↔?aaᵐ.&≜∧

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

বেশিরভাগ ব্র্যাচেলগ উত্তরের বিপরীতে, এটি আউটপুট ভেরিয়েবলের মাধ্যমে ইনপুট নেয় .এবং ফলাফলটি ইনপুট ভেরিয়েবলের মাধ্যমে আউটপুট দেয় ?(বিভ্রান্তিকর, আমি জানি)।

ব্যাখ্যা

ṁ              We expect a square matrix
 ↔ᵐ↔?          When we reverse the rows and then the matrix, we get the initial matrix back
    ?a         Take an adfix (prefix or suffix) of that square matrix
      aᵐ       Take an adfix of each row of that adfix matrix
        .      It must be the input matrix
         &≜    Assign values to cells which are still variables (will assign 0)
           ∧   (disable implicit unification between the input and the output)

8 বাইট, সমস্ত বৈধ ম্যাট্রিক দেয়

প্রযুক্তিগতভাবে, এই প্রোগ্রামটিও কাজ করে:

ṁ↔ᵐ↔?aaᵐ

তবে এটি কোষগুলি ভেরিয়েবল হিসাবে ছেড়ে যাবে যা কোনও মান নিতে পারে (তারা এটি দেখায় _XXXXXযা একটি অভ্যন্তরীণ প্রোলোগ পরিবর্তনশীল নাম)। টেকনিক্যালি এটি জিজ্ঞাসিত প্রশ্নের চেয়ে আরও ভাল, তবে আমি অনুমান করি যে চ্যালেঞ্জটি যা চেয়েছিল তা নয় what


আমি বিলম্বিত লেবেলটি করতে চাই ...
এরিক দ্য আউটগল্ফার

@ এরিকথ আউটগলফার তাত্ক্ষণিক লেবেলিং এখনও দরকারী যখন আমাদের জিনিসগুলি গণনা করা প্রয়োজন, তাই আদর্শভাবে আমাদের দুটি পৃথক ভবিষ্যদ্বাণী প্রয়োজন ...
6:18

4

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

f=(m,v=[w=0],S=c=>v.some(c))=>S(Y=>S(X=>!m[w+1-Y]&!m[0][w+1-X]&!S(y=>S(x=>(k=(m[y-Y]||0)[x-X],g=y=>((r=a[y]=a[y]||[])[x]=r[x]||k|0)-k)(y)|g(w-y,x=w-x)),a=[])))?a:f(m,[...v,++w])

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

অ্যালগরিদম

দিয়ে শুরু হচ্ছে :w=0

  • আমরা এর বর্গক্ষেত্রের ম্যাট্রিক্স বিবেচনা করি ।Mw+1
  • আমরা প্রতিটি জোড়া বিবেচনা যেমন যে ইনপুট ম্যাট্রিক্স ধারক ম্যাট্রিক্স মধ্যে ফিট করতে পারে যখন এই স্থানাঙ্ক সন্নিবেশ হচ্ছে।(X,Y)m

    উদাহরণ:

w=2,(X,Y)=(0,1),m=(4,5,41,2,3)M=(0,0,04,5,41,2,3)
  • আমরা ম্যাট্রিক্স এমনভাবে সম্পন্ন করতে পারি কিনা তা পরীক্ষা করে দেখি যে এটি সেন্ট্রোসিম্যাট্রিক।

    উদাহরণ:

M=(3,2,14,5,41,2,3)
  • আমরা এই জাতীয় বৈধ কনফিগারেশন না পাওয়া পর্যন্ত আমরা বৃদ্ধি করি।w


1

পাইথন 2 , 242 227 226 বাইট

r=range
def f(m):
 w,h=len(m),len(m[0]);W=max(w,h)
 while 1:
	for x in r(1+W-w):
	 for y in r(1+W-h):
		n=n=eval(`[W*[0]]*W`);exec"for i in r(w):n[i+x][y:y+h]=m[i]\nN=n;n=[l[::-1]for l in n[::-1]]\n"*2
		if n==N:return n
	W+=1

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


সংরক্ষিত:

  • -1 বাইট, জোনাথন ফ্রেচের জন্য ধন্যবাদ

n=[W*[0]for _ in r(W)]হতে পারে n=eval(`[W*[0]]*W`)
জোনাথন ফ্রেচ


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