এটি কি সাবম্যাট্রিক্স?


21

এটি এই চ্যালেঞ্জের দ্বি-মাত্রিক সাধারণীকরণ ।

আমাদের উদ্দেশ্যে, এক ম্যাট্রিক্স (অথবা 2D অ্যারে) একটি একটি বিবেচনা করা হয় submatrix অন্য ম্যাট্রিক্স বি , যদি একজন সম্পূর্ণরূপে সারি এবং কলাম থেকে একটি নম্বর সরিয়ে প্রাপ্ত করা যাবে বি(দ্রষ্টব্য: কিছু উত্সের বিভিন্ন / আরও সীমাবদ্ধ সংজ্ঞা রয়েছে))

এখানে একটি উদাহরণ:

A = [1 4      B = [1 2 3 4 5 6
     2 1]          6 5 4 3 2 1
                   2 1 2 1 2 1
                   9 1 8 2 7 6]

আমরা কলাম 2, 3, 5, 6 এবং সারি 2, 4 থেকে মুছে দিতে পারেন বি প্রাপ্ত একটি :

B = [1 2 3 4 5 6         [1 _ _ 4 _ _         [1 4  = A
     6 5 4 3 2 1   -->    _ _ _ _ _ _   -->    2 1]
     2 1 2 1 2 1          2 _ _ 1 _ _
     9 1 8 2 7 6]         _ _ _ _ _ _]

লক্ষ্য করুন একটি এখনও একটি submatrix হয় বি যদি সব সারি অথবা সব কলাম বি অপরিবর্তিত রাখা হয় (অথবা আসলে যদি একটি = বি )।

চ্যালেঞ্জ

আপনি এটা অনুমিত. প্রদত্ত দুটি খালি নয় এমন পূর্ণসংখ্যা ম্যাট্রিক্স একটি এবং বি নির্ধারণ যদি একটি একটি submatrix হয় বি

আপনি STDIN (অথবা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে এবং STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) প্যারামিটারের মাধ্যমে ফলাফল আউটপুট করতে পারেন।

ইনপুট যে কোনও সুবিধাজনক বিন্যাসে থাকতে পারে। ম্যাট্রিকগুলিকে নেস্টেড তালিকাগুলি, দুটি পৃথক পৃথক পৃথক পৃথক পৃথক ব্যবহার করে স্ট্রিং, ম্যাট্রিক্সের মাত্রাগুলি সহ ফ্ল্যাট তালিকা ইত্যাদি দেওয়া যেতে পারে, যতক্ষণ ইনপুট প্রাক-প্রক্রিয়াজাত না হয়। আপনি নিতে চয়ন করতে পারেন বি প্রথম এবং একটি যতদিন আপনার পছন্দের সামঞ্জস্যপূর্ণ দ্বিতীয়। আপনি ধরে নিতে পারেন যে ম্যাট্রিকগুলির উপাদানগুলি ইতিবাচক এবং 256 এর চেয়ে কম।

আউটপুট সত্যবাদী হওয়া উচিত যদি এর বি এর সাবম্যাট্রিক্স হয় এবং অন্যথায় মিথ্যা হয়। নির্দিষ্ট আউটপুট মান সুসংগত হতে হবে না।

স্ট্যান্ডার্ড বিধি প্রযোজ্য।

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

প্রতিটি পরীক্ষার কেস পৃথক লাইনে থাকে A, B,।

সত্য ঘটনা:

[[1]], [[1]]
[[149, 221]], [[177, 149, 44, 221]]
[[1, 1, 2], [1, 2, 2]], [[1, 1, 1, 2, 2, 2], [3, 1, 3, 2, 3, 2], [1, 1, 2, 2, 2, 2]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [4, 7, 6], [7, 8, 9], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[228, 66], [58, 228]], [[228, 66], [58, 228]]
[[1, 2], [2, 1]], [[1, 2, 2], [2, 1, 2], [2, 2, 1]]
[[136, 196], [252, 136]], [[136, 252, 210, 196, 79, 222], [222, 79, 196, 210, 252, 136], [252, 136, 252, 136, 252, 136], [180, 136, 56, 252, 158, 222]]

মিথ্যা মামলা:

[[1]], [[2]]
[[224, 15]], [[144, 15, 12, 224]]
[[41], [150]], [[20, 41, 197, 150]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [7, 8, 9], [4, 5, 6]]
[[1, 2, 2], [2, 1, 2], [2, 2, 1]], [[1, 2], [2, 1]]
[[1, 2, 2], [2, 1, 2]], [[1, 2], [2, 1], [2, 2]]
[[1, 2], [3, 4]], [[5, 3, 4, 5], [2, 5, 5, 1], [4, 5, 5, 3], [5, 1, 2, 5]]
[[158, 112], [211, 211]], [[158, 211, 189, 112, 73, 8], [8, 73, 112, 189, 211, 158], [211, 158, 211, 158, 211, 158], [21, 158, 199, 211, 212, 8]]

11
আমি মনে করি এটি জেলির একটি চরিত্র character
অ্যাডাম

@ Nᴮᶻ এপিএলেও নেই? : P: P
আর

@ রিকারডাব্লু না , এপিএলের কেবলমাত্র এই এবং এই একক চরিত্রটির "সমাধান" রয়েছে, যদিও জেলি আমাদের এখানে
বামে

উত্তর:


7

পাইথ, 10 বাইট

}CQsyMCMyE

পরীক্ষা স্যুট

এটি মোটামুটি সোজা। প্রথমত, আমরা বিটিকে সারিগুলির তালিকা হিসাবে বিবেচনা করি এবং সমস্ত সাবসেট ব্যবহার করে নিই yE। তারপর, সেই ম্যাট্রিক্সের সাথে পক্ষান্তরিত করা হয় CM, এবং সমস্ত সাব-সেট নির্বাচন সঙ্গে, তাদের সারি নেয়া হয় yM। এই সাবলিস্টগুলির সাথে লড়াই করা sসমস্ত সম্ভাব্য ট্রান্সপোজড সাবম্যাট্রিক্স দেয়। সুতরাং আমরা CQএটিকে সাথে স্থানান্তর করি এবং এটি উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখি }


6

ডায়ালগ এপিএল, 53 43 বাইট

(⊂A)∊⊃∘.{∧/∊2</¨⍺⍵:B[⍺;⍵]⋄⍬}/⍳¨(⍴A←⎕)/¨⍴B←⎕

B←⎕, A←⎕জন্য প্রম্পট Bএবং A
⍴B, ⍴Aএর মাত্রা Bএবং A
প্রতিটি প্রতিলিপি, যেমন 2 3/¨4 5(4 4) (5 5 5)
⍳¨সমস্ত মাত্রা সঙ্গে সমন্বয় সিস্টেম প্রতিটি সূচকের
∘.{... }/সম্ভব submatrices, যেখানে প্রতিটি submatrix বেনামী ফাংশনের ফলাফলের হিসাবে সংজ্ঞায়িত করা হয় সারণী {... }স্থানাঙ্ক একজোড়া মধ্যে প্রয়োগ এবং
∧/∊2</¨:যদি উভয়ই হয় এবং ( ∧/∊) উভয় ( ¨) বৃদ্ধি ( 2</) হয়, তবে ... সারি এবং কলামের
B[⍺;⍵]ছেদগুলি থেকে Bতৈরি করা সাবম্যাট্রিক্স ফিরিয়ে দিন, একটি খালি ভেক্টর (এমন কিছু যা A এর সাথে অভিন্ন নয়) পরীক্ষা করে দেখুন পুরো (
⋄⍬
(⊂A)∊⊃A⊂A) সাবমেট্রিকগুলির যে কোনও একটি সদস্য ( )


পুরানো 53-বাইট সমাধান:

{(⊂⍺)∊v∘.⌿h/¨⊂⍵⊣v h←(⍴⍺){↓⍉⍺{⍵/⍨⍺=+⌿⍵}(⍵/2)⊤⍳⍵*2}¨⍴⍵}

{}একটি বেনামে ইনলাইন ফাংশন, যেখানে বাম আর্গুমেন্ট এবং ডান আর্গুমেন্ট
আকৃতি, যেমন 2-বাই -3 ম্যাট্রিক্সের জন্য 2 3
(⍴⍺){}¨⍴⍵একই মাত্রা দৈর্ঘ্যের প্রতিটি জোড়া জন্য,
⍳⍵*2বর্গাকার এই বেনাম ফাংশন সূচকগুলি প্রয়োগ করুন , অর্থাৎ 2 → বাইনারি সারণির 1 2 3 4
(⍵/2)⊤বাইনারি (বিটের সংখ্যা মাত্রা-দৈর্ঘ্যের স্কোয়ার) রূপান্তর
{⍵/⍨⍺=+⌿⍵}করুন, কলামগুলি নির্বাচন করুন ( ⍵/⍨) যেখানে 1s ( +⌿⍵) সংখ্যাটি সম্ভাব্য সাবমেট্রিক্স ( ⍺=)
↓⍉তৈরিতে সেই মাত্রার দৈর্ঘ্যের সমান? কলামগুলির
v h←স্টোরের তালিকা হিসাবে v( মুখোশ) এবং h(অনুভূমিক মুখোশগুলি)
তারপরে
h/¨⊂⍵প্রতিটি অনুভূমিক মুখোশটি ডান আর্গুমেন্ট ম্যাট্রিক্সে প্রয়োগ করুন
v∘.⌿ ম্যাট্রিক্সের অনুভূমিকভাবে মুখোশযুক্ত প্রতিটি সংস্করণের প্রতিটি অনুভূমিক মুখোশ প্রয়োগ করুন
(⊂⍺)∊ বাম আর্গুমেন্ট ম্যাট্রিক্স এর সদস্য কিনা তা পরীক্ষা করে দেখুন


3

জেলি, 12 10 বাইট

ধন্যবাদ -2 বাইটের জন্য ডেনিস @

ZŒP
ÇÇ€;/i

সাবসেটগুলি গ্রহণের আগে আমরা ম্যাট্রিক্স ট্রান্সপোজ না করেই, @ আইস্যাকের মতো প্রায় একই অ্যালগরিদম।

ZŒP      Helper link. Input: z
Z          Transpose z
ZŒP        All subsets of columns of z.

ÇÇ€;/i   Main link. Input: B, A. B is a list of rows.
Ç          Call the helper link on B. This is the subsequences of columns of A.
 ǀ        Call the helper link on each column-subsequence.
           Now we have a list of lists of submatrices of B.
   ;/      Flatten that once. The list of submatrices of B.
     i     then get the 1-based index of A in that list.
           If A is not in the list, returns 0.

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


পাইথ‽ ইমপোস্টরের চেয়ে দীর্ঘ!
অ্যাডম

1
@ Nᴮᶻ আমি বলিনি যে এটি সবচেয়ে সংক্ষিপ্ত জেলি সমাধান।
লিটারোসিয়াসট

1
Zশুরুতে চেয়ে কম হয় Z}ZŒPসাহায্যকারী লিঙ্ক তৈরি করে আপনি আরও একটি বাইট সংরক্ষণ করতে পারেন ।
ডেনিস

@ ডেনিস ওকে, এটি পাইথের সাথে মেলে। এখন আরও একটি বাইট গল্ফ দূরে।
অ্যাডম

3

গণিত, 40 65 বাইট by

!FreeQ[s[# ]&/@(s=Subsets)@#2,# ]&

ব্যাখ্যা: অন্যান্য উত্তরগুলির মধ্যে একটি দেখুন - দেখে মনে হচ্ছে তারা সবাই একই কাজ করেছিল।


3

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

⊇z⊇z

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

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

        B
⊇       has a sublist
 z      which transposed
  ⊇     has a sublist
   z    which transposed
        is A.

1

হাস্কেল, 66 বাইট

import Data.List
t=transpose
s=subsequences
(.((s.t=<<).s)).elem.t

ব্যবহারের উদাহরণ: ( (.((s.t=<<).s)).elem.t ) [[149, 221]] [[177, 149, 44, 221]]-> True

একটি অ-পয়েন্টফ্রি সংস্করণ হয়

f a b = elem(transpose a) $ (subsequences.transpose=<<) $ subsequences b

                      subsequences b     -- make all subsequences of b, i.e. all 
                                         -- all combinations of rows removed
     (subsequences.transpose=<<)         -- transpose each such sub-matrix and
                                         -- remove rows again. Concatenate into a
                                         -- single list
elem(transpose a)                        -- check if the transposition of a is in
                                         -- the list

0

পাইথন + নুমপি, 176 173 বাইট

from itertools import*
from numpy import*
def f(A,B):
 r,c=A.shape
 R,C=B.shape
 S=combinations
 print any([all(B[ix_(i,j)]==A)for i in S(range(R),r)for j in S(range(C),c)])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.