ম্যাচ তাদের মানগুলির সাথে সমন্বয় করে


10

3 ইনপুট আইটেম, স্থানাঙ্ক জোড়া, একটি 2D স্ট্রিং, এবং একটি একক-অক্ষর স্ট্রিংয়ের তালিকা দেওয়া হয়, 2 ডি স্ট্রিংয়ের প্রতিটি স্থানাঙ্কের অক্ষর একক অক্ষরের সমান কিনা তা আউটপুট দেয়। আপনি যে কোনও ক্রমে ইনপুট নিতে পারেন এবং স্থানাঙ্কগুলি 1 সূচকযুক্ত হতে পারে।

আপনি 2D স্ট্রিংটিকে 2D তালিকা, লাইনগুলির একটি তালিকা বা 2D স্ট্রিং হিসাবে নিতে পারেন।

উদাহরণ: (0,0), "#_\n__", "#" -> True

স্ট্রিং হয়

#_
__

স্থানাঙ্কের চরটি (0,0)(উপরের বাম দিক থেকে) #। এটি তৃতীয় ইনপুট আইটেমের সমান #, সুতরাং আপনি আউটপুট True(বা কোনও সত্য মানের)

উদাহরণ: [(0,0), (1,1)], "#_\n_#", "#" -> True

স্ট্রিং হয়

#_
_#

স্থানাঙ্কের অক্ষর (0,0)এবং (1,1)উভয়ই #তাই আউটপুট সত্য।

প্রতিটি সমন্বয়কারী একটি হ্যাশের সাথে মিলে যদি আউটপুটটি সত্য হয়। যদিও প্রতিটি হ্যাশের কোনও মিলের সমন্বয় থাকতে হবে না। #2 ডি স্ট্রিংয়ে যদি একক চর (কোনও কোনও পরীক্ষার ক্ষেত্রে) এর উপস্থিতি না ঘটে তবে আউটপুটটি এখনও জঘন্য।

আপনি ধরে নিতে পারেন স্থানাঙ্কগুলি সর্বদা 2D স্ট্রিংয়ের সীমানার মধ্যে থাকবে।

আরও পরীক্ষার কেস: (আমি সহজলভ্যতার জন্য একক চরকে দ্বিতীয় স্থানে রেখেছি)

[(0,0), (2,1), (3,0)], #

#_##
#_##

True


[(0,0), (1,1), (3,0)], #

#_##
#_##

False (1,1 is not a hash)



[(1,1)], a

#a##
#a##

True


[(4, 0), (3, 0), (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (2, 2), (3, 2), (4, 2), (4, 3)], ' '


 ####
 #   
   # 

True

নোট করুন শেষ পরীক্ষার কেসটি একক চর স্ট্রিং হিসাবে স্পেস ব্যবহার করে এবং স্পেসগুলির চারপাশে হ্যাশগুলি ব্যবহার করে।

সম্পর্কিত। (এই চ্যালেঞ্জের বিপরীত)


আমরা কি ধরে নিতে পারি যে "\ n" ব্যবহারের পরিবর্তে ইনপুটটি 2 ডি অ্যারে?
rahnema1

@ rahnema1 2D অ্যারে নয়, তবে একটি অ্যারে / লাইনের তালিকা list
আর

@ ইস্টারলিআইর্ক আমি বিশ্বাস করি এটি জটিল I / O ফর্ম্যাটগুলিতে চলে আসে
জংহওয়ান মিন

আপনার প্রথম উদাহরণে স্থানাঙ্কগুলি ফর্ম্যাটে রয়েছে (row, column) তবে শেষ উদাহরণে স্থানাঙ্কগুলি বিন্যাসে রয়েছে (column, row)
rahnema1

1
স্থানাঙ্কগুলি 1-সূচকযুক্ত হতে পারে?
ব্যবহারকারী 41805

উত্তর:


1

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

স্থানাঙ্ক জোড়া (সারি, কলাম), তারপরে 2D অ্যারে, তারপরে অক্ষরের তালিকার জন্য অনুরোধ জানানো হয়।

∧/⎕=⎕[⎕]

[⎕] স্থানাঙ্কগুলির জন্য অনুরোধ জানানো এবং এগুলি থেকে ছত্রভঙ্গ করার জন্য তাদের ব্যবহার করুন

প্রম্পটেড ইনপুট (2 ডি অ্যারে)

= নির্বাচিত উপাদানগুলির সাথে তুলনা করুন

ইনপুট (চরিত্র)

∧/ সব সত্য কিনা তা পরীক্ষা করে দেখুন (এবং হ্রাস)

পরীক্ষার কেস (⎕IO←0 উদাহরণগুলির সাথে মেলে, তবে এটি প্রয়োজনীয় নয়):

প্রথম উদাহরণ

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

তৃতীয় উদাহরণ

চতুর্থ উদাহরণ

পঞ্চম উদাহরণ


6

পাইথন, 39 বাইট

ইনপুট নেয়:

  1. a তালিকা (x, y)পূর্ণসংখ্যা স্থানাঙ্কের
  2. b স্ট্রিংয়ের তালিকা
  3. c একক অক্ষর স্ট্রিং

lambda a,b,c:{b[y][x]for x,y in a}=={c}

2
এই সাইটে আপনার নিজের ফাংশনগুলির নাম দেওয়ার দরকার নেই। আপনি মুছে ফেলতে পারেন f=। পিপিসিজিতে আপনাকে স্বাগতম!
Rɪᴋᴇʀ

পিপিসিজিতে স্বাগতম, প্রথম প্রথম উত্তর!
ফ্লিপট্যাক

4

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

ইনপুট নেয়:

  1. a এর অ্যারে [x, y]পূর্ণসংখ্যা স্থানাঙ্কের
  2. s স্ট্রিং এর অ্যারে
  3. c একক অক্ষর স্ট্রিং

(a,s,c)=>a.every(([x,y])=>s[y][x]==c)

4

অক্টাভা, 45 38 29 বাইট

@(A,B,C)A(1+B*[rows(A);1])==C

একটি ফাংশন যা চরিত্রের 2D অ্যারে নেয় Aএবং স্থানাঙ্ক হিসাবে (0 ভিত্তিক)B[col row] চরিত্রের দুটি কলামের ম্যাট্রিক্স হয়C । দুটি উপাদান স্থানাঙ্ক (ম্যাট্রিক্স গুণন ব্যবহার করে) রৈখিক সূচকে রূপান্তরিত।

দ্রষ্টব্য: পূর্ববর্তী উত্তর যা স্পার্স ম্যাট্রিক্স ব্যবহার করেছিল তা ভুল ছিল।

অন্যান্য অবদানকারী:

স্টিও গ্রিফিন 5 বাইট সংরক্ষণের জন্য উল্লেখ করেছেন যে [0 1 0] কে মিথ্যা মান হিসাবে গণ্য করা যেতে পারে !!

2 বাট বাঁচানোর জন্য লুইস মেন্ডো~0 == true এবং স্পার্স ম্যাট্রিক্স সম্পর্কে বিজ্ঞপ্তি।

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


2
ভাল :) আপনি এড়িয়ে allতিনটি বাইট সংরক্ষণ করতে পারেন । 1 1 1সত্য, এবং 1 0 1অকটাভে মিথ্যা, তাই এটি ঠিক হওয়া উচিত। :)
স্টিভি গ্রিফিন

1
দুর্দান্ত পন্থা! আমি পছন্দ করি এটি কীভাবে এই সত্যটিকে কাজে লাগায় যে লজিকাল সূচকের সূচী অ্যারের সমান আকারের প্রয়োজন নেই
লুইস মেন্ডো

1
স্টিওয়ের পরামর্শ ছাড়াও, আপনি 2 বাইট সংরক্ষণ trueকরে প্রতিস্থাপন করতে পারেন~0
লুইস মেন্ডো

@ স্টিভি গ্রিফিন ধন্যবাদ এটি সত্যই ঠিক আছে :)
rahnema1

@ লুইসমেডো ভাল পয়েন্ট
rahnema1

3

গণিত, 28 বাইট

#3~Extract~#~MatchQ~{#2...}&

1-ইন্ডেক্স। গাণিতিকায় অ্যারেগুলি কীভাবে কাঠামোবদ্ধ করা হয়েছে তার কারণে ইনপুট স্থানাঙ্কগুলি অবশ্যই বিপরীত (যেমন (row, column)) হতে হবে

ব্যবহার

#3~Extract~#~MatchQ~{#2...}&[{{1, 1}, {2, 3}, {1, 4}}, "#", {{"#", "_", "#", "#"}, {"#", "_", "#", "#"}}]

True


2

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

s!c=all(\(x,y)->s!!y!!x==c)

ব্যবহারের উদাহরণ: ( ["#_##","#_##"] ! '#' ) [(0,0), (2,1), (3,0)]-> True


2

জেলি , 10 বাইট

ịṪ⁸ịḢð€Q⁼⁵

এটি কেবল একটি সম্পূর্ণ প্রোগ্রাম হিসাবে কাজ করে। ইনপুট অর্ডার সূচকগুলি, স্ট্রিং অ্যারে, সিঙ্গলটন স্ট্রিং।

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

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

ịṪ⁸ịḢð€Q⁼⁵  Main link.
            Left argument:  P (array of coordinate pairs)
            Right argument: S (array of strings)
            Third argument: C (singleton string)

     ð€     Combine the links to the left into a dyadic chain and call it with each
            p = (x, y) in P as left argument and S as the right one.
ị             Unindex; retrieve the strings of S at indices x and y.
 Ṫ            Tail; yield s, the string of S at index y.
  ⁸ị          Unindex; retrieve the characters of s at indices x and y.
    Ḣ         Head; yield the character of s at index x.
       Q    Unique; deduplicate the resulting string/array of characters.
        ⁼⁵  Compare the result with the third argument.

2

পার্ল 6 , 41 40 বাইট

->\c,\h,\n{all map {n eq h[.[0];.[1]]},c}

->$_,\h,\n{all .map:{n eq h[.[0];.[1]]}}

2D স্ট্রিং 2D তালিকা হিসাবে প্রত্যাশা করে।

-২ বাইটের জন্য বি 2 গিলসকে ধন্যবাদ।


আপনি যদি $_তার পরিবর্তে \cব্যবহার করেন .map:{…}তবে একটি বাইট সংরক্ষণের ব্যবহার করতে পারতেন
ব্র্যাড গিলবার্ট বি

@ ব্র্যাডগিলবার্টবাগিলস: ওহ, আমি বুঝতে পারি না যে জায়গাটি optionচ্ছিক .map: {…}। এটি জানতে দরকারী। এছাড়াও, এটি একটি লজ্জার বিষয় যে উপসর্গটি ||এখনও কার্যকর করা হয়নি, এটি অভ্যন্তরীণ ল্যাম্বডাকে সহজ করে তুলতে পারে n eq h[||$_]...
15:57

2

সি #, 80 77 বাইট

3 বাইট সংরক্ষণ করা হয়েছে, গোলাপিফ্লোয়েডএক্স 33-তে ধন্যবাদ

a=>b=>c=>{foreach(var i in a){if(b[i[0]][i[1]]!=c){return 1<0;}}return 1>0;};

a হ'ল স্থানাঙ্কের জোড়, খ হল রেখার তালিকা এবং সি হল একক-অক্ষরযুক্ত স্ট্রিং।


আপনি 3 বাইট falseসহ 1<0এবং এর trueসাথে প্রতিস্থাপন 1>0এবং সংরক্ষণ করতে পারেন ।
গোলাপিফ্লোয়েডএক্স 33

1

হাস্কেল, 72 63 বাইট

c [] _ _ =1<2;c ((f,s):t) m n |n/=lines m!!s!!f=1>2|1>0=c t m n

c [(0,0), (1,0), (3,0)] "#_##\n#_##" '#' আউটপুটগুলির ইনপুট False

ইনপুট c [(4, 0), (3, 0), (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (2, 2), (3, 2), (4, 2), (4, 3)] " \n ####\n # \n # " ' '

আউটপুট True

UnGolfed

checkfunc :: [(Int,Int)] -> String -> Char -> Bool
checkfunc [] _ _ = True
checkfunc (x:xs) string char | char /= ((lines string)!!(snd x))!!(fst x)= False  -- Checks first coordinates and returns False if no match
                             | otherwise = checkfunc xs string char --Otherwise iterate over remaining coordinate pairs

এখনও অপ্রয়োজনীয় সাদা স্থান বাকি আছে:c[]_ _=1<2;c((f,s):t)m n|n/=lines m!!s!!f=1>2|1>0=c t m n
লাইকোনি

আপনি যেমন বুলিয়ান যুক্তি করছেন, তেমন শর্তযুক্ত if n/=lines m!!s!!f then False else c t m nদ্বারা প্রতিস্থাপিত হতে পারে n/=lines m!!s!!f&&c t m n
লাইকনি

অবশেষে, ওপি যেমন বলেছে You may take the 2D string as a 2D list, a list of lines, or a 2D string.আপনি ড্রপ করে linesসরাসরি ইনপুট হিসাবে লাইনগুলির একটি তালিকা নিতে পারেন।
লাইকনি

1

স্কালা, 68 বাইট

def f(l:(Int,Int)*)(s:String*)(c:Char)=l forall{x=>s(x._2)(x._1)==c}

1

ক্লোজার, 39 বাইট

#(apply = %3(map(fn[[x y]]((%2 y)x))%))

উদাহরণ (স্ট্রিং ইনপুট হ'ল অক্ষরগুলির একটি ভাস্ক):

(def f #(apply = %3(map(fn[[x y]]((%2 y)x))%)))
(f [[0 0] [1 1] [3 0]] (mapv vec ["#_##" "#_##"]) \#)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.