দুটি সেট সমান


9

{}খালি সেট। আপনি চয়ন করতে পারেন ()বা ব্যবহার []করতে পারেন।

আমরা কঠোরভাবে "সেট" সংজ্ঞায়িত করতে যাচ্ছি না, তবে সেটগুলি সমস্ত নিম্নলিখিত বৈশিষ্ট্যগুলিকে সন্তুষ্ট করে:

সেটগুলি সাধারণ গাণিতিক কাঠামো অনুসরণ করে। এখানে কয়েকটি গুরুত্বপূর্ণ বিষয় রয়েছে:

  • সেট অর্ডার করা হয় না।
  • কোনও সেট নিজেই থাকে না।
  • উপাদানগুলি সেটে হয় বা না হয়, এটি বুলিয়ান। অতএব সেট উপাদানগুলির বহু গুণ থাকতে পারে না (অর্থাত্ কোনও উপাদান একাধিক বার সেট হতে পারে না))
  • কোনও সেটের উপাদানগুলিও সেট হয় এবং {}এটি একমাত্র আদিম উপাদান।

কার্য

একটি প্রোগ্রাম / ফাংশন লিখুন যা দুটি সেট সমান কিনা তা নির্ধারণ করে।

ইনপুট

স্টিডিন বা ফাংশন আর্গুমেন্টের মাধ্যমে দুটি বৈধ সেট। ইনপুট ফর্ম্যাট কারণ মধ্যে আলগা।

কিছু বৈধ ইনপুটগুলি হ'ল:

{} {{}}
{{},{{}}} {{{{{},{{}}}}}}
{{},{{},{{}}}} {{{},{{}}},{{{{{},{{}}}}}}}

অবৈধ ইনপুট:

{{} {}              Brackets will always be balanced.
{{},{}} {}          Set contains the same element twice

আউটপুট

সত্যিকারের মান যদি ইনপুটগুলি সমান হয় তবে অন্যথায় মিথ্যা।

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

আপনার জমা দেওয়ার পরীক্ষার ক্ষেত্রে কেবল পরীক্ষার ক্ষেত্রে নয়, সমস্ত বৈধ ইনপুটগুলির জন্য সঠিক উত্তর দেওয়া উচিত। এগুলি যে কোনও সময়ে আপডেট করা যেতে পারে।

Truthy:

{} {}
{{},{{}}} {{{}},{}}
{{},{{},{{{}},{}}}} {{{{},{{}}},{}},{}}

Falsy:

{} {{}}
{{},{{},{{{}},{}}}} {{{{}}},{},{{}}}
{{},{{}},{{{}}},{{},{{}}}} {}

স্কোরিং

অতিরিক্ত বিধি

আনর্ডারড পুনরাবৃত্তিযোগ্য প্রকারগুলি পুরোপুরি নিষিদ্ধ করার জন্য একটি অতিরিক্ত নিয়ম যুক্ত করা হয়েছে। তারা খুব সাধারণ এবং এই চ্যালেঞ্জকে অনেক বেশি তুচ্ছ করে। এই জায়গায় এটি লঙ্ঘন করে এমন উত্তরগুলি নির্দ্বিধায় ছেড়ে দিন, দয়া করে কেবল একটি ইঙ্গিত দিন যে তারা নিয়ম পরিবর্তনের আগে তৈরি হয়েছিল।


বাসা বাঁধার সেট টাইপের একটি ভাষা কি কেবল সাম্য পরীক্ষা করতে পারে?
এক্সএনওর

@ এক্সনোর বিল্ট-ইনগুলি হ'ল ফর্সা খেলা হওয়া উচিত
লিয়াম

1
@ ডেনিস ভাল, যদিও এটি "ভারসাম্যহীন" চ্যালেঞ্জ হলেও আমি কখনই এটিকে পার্সিং চ্যালেঞ্জ হিসাবে ভাবিনি। তবে, এখন যেহেতু আমি এটি সম্পর্কে চিন্তা করি, সমস্ত ইনপুট বৈধ বলে ধরে নিই, আমি এটিকে একটি পার্সিং চ্যালেঞ্জ হিসাবে তৈরি করেছি। সুতরাং আমি মনে করি আপনি ঠিক বলেছেন। পর্যাপ্ত ভাষাগুলির মধ্যে একটি আন-অর্ডারযুক্ত তালিকার ধারণা থাকতে পারে যা এটিকে তুচ্ছ করে তুলবে।
লিয়াম

1
তুমি যে সিদ্ধান্তই নেবে আমি ঠিক আছি। ব্যক্তিগতভাবে, যদিও আমি মনে করি যে সেটগুলি কোনওভাবেই চ্যালেঞ্জকে তুচ্ছ না করেই সৃজনশীল হতে পারে (যেমন আমার জুলিয়া উত্তর, যা পুনরাবৃত্তভাবে একটি নেস্টেড অ্যারেটিকে একটি নেস্টেট সেটে রূপান্তরিত করে), নেস্টেড সেটগুলিকে ইনপুট হিসাবে মঞ্জুর করে পুরো জিনিসটিকে কিছুটা সহজ করে তোলে ( ==মধ্যে জুলিয়া, 2 বাইট; frozenset.__eq__পাইথনে, 16 বাইট; ইত্যাদি)।
ডেনিস

8
See the comments for an explanation. দয়া করে এটি করবেন না। মন্তব্যগুলি অস্থির এবং খুব সহজেই চলে যায়, তাই গুরুত্বপূর্ণ সোফ পোস্টের দেহে
বিড়াল

উত্তর:



4

জেলি , 6 বাইট

߀Ṣ
ÇE

এটি অনলাইন চেষ্টা করুন!বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

ÇE   Main link. Argument: [s, t] (pair of set arrays)

Ç    Apply the helper link to [s, t].
 E   Check if the elements of the resulting pair are equal.


߀Ṣ  Helper link. Argument: u (set array)

߀   Recursively map this link over u.
  Ṣ  Sort the result.

3

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

{p:1a.}.

এটি ইনপুট এবং আউটপুটে বন্ধনী প্রত্যাশা করে।

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

?- run_from_atom('{p:1a.}.', [[]:[[]]], [[[]]:[]]).
true .

ব্যাখ্যা

{     }.   True if the predicate inside brackets is true with input Input and output Output

 p          Unify an implicit variable with a permutation of Input
  :1a       Apply this same predicate to each element of that implicit variable
     .      True if Output can be unified with the resulting list


2

গণিত, 16 বাইট

Equal@@Sort//@#&

একটি নামবিহীন ফাংশন যা উভয় সেট সমেত একটি তালিকা প্রত্যাশা করে

Equal@@Sort//@#& @ {{{}, {{}}}, {{{}}, {}}}

আমরা প্রতিটি স্তরে সেটগুলি সাজানোর জন্য //@( MapAll) ব্যবহার করি এবং তারপরে ফলাফলগুলি সমান sert


2

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

f=(a,b,g=a=>0+a.map(g).sort()+1)=>g(a)==g(b)

[]এস ব্যবহার করে ইনপুট গ্রহণ করে f([[],[[]]],[[[]],[]])। অ্যারেগুলিকে স্ট্রিংয়ে রূপান্তর করে এবং তারপরে ভিতরে থেকে বাছাই করে কাজ করে। 0এবং 1ব্যবহার করা কারণ তারা চেয়ে খাটো করছি করছে '['এবং ']', তাই উদাহরণস্বরূপ g([[[]],[]])হয় 001,00111যা প্রতিনিধিত্ব [[],[[]]]


আপনি পুনরাবৃত্তির ব্যবহার করবেন না যাতে করে আপনাকে এটি ছদ্মনাম করতে পারেন
Bálint

0+ওখানে কেন ?
বিলিন্ট

@ বুলিন্ট কারণ 0+এবং ছাড়া+1 আমি যা পেয়েছি তা কমা হ'ল।
নিল

@ বুলিন্ট আমি জানি না কেন আমি অপসারণ করতে ভুলে গেছি f=, আমি এটিকে বাইট গণনাতে অন্তর্ভুক্ত করি নি এবং কেবল তার জন্য পোস্টটি সম্পাদনা করতে আমি খুব অলস।
নিল

2

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

f=lambda x:sorted(map(f,x))
lambda a,b:f(a)==f(b)

উদাহরণস্বরূপ, বেনামে ফাংশন কল করা g:

>>> g( [[],[[]]] , [[[]],[]] )
True

g([[],[[],[]],[[],[[]]],[[]],[[[]]]], [[[],[]],[[[]],[]],[[]],[[[]]],[]])ফিরে আসে False, কিন্তু সেট সমান। এটি বাছাইয়ের আগে ম্যাপিংয়ের মাধ্যমে স্থির করা উচিত।
ডেনিস

2

প্রোলোগ (এসডাব্লুআই) , 37 বাইট

X+Y:-permutation(X,Z),maplist(+,Z,Y).

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

নেস্টেড তালিকাগুলি হিসাবে ইনপুট নেয়, অর্থাত্ ধনুর্বন্ধনী পরিবর্তে বর্গাকার বন্ধনী সহ with মূলত, এটি ছিল X+Y:-sort(X,M),sort(Y,N),maplist(+,M,N).তবে তারপরে আমি ফ্যাটালাইজের ব্র্যাচল্যাগ ভি 1 উত্তরটি অনুবাদ করার চেষ্টা করেছি এবং এটি 3 বাইট সংক্ষিপ্ত আকারে পরিণত হয়েছিল।

X+Y :-                    X+Y succeeds when
    permutation(X, Z),    for some permutation Z of X
    maplist(+, Z, Y).     + succeeds for every pair in Z zipped with Y.
                          (where maplist will succeed without the recursive call to + for
                          two empty lists, and fail if the lists have different lengths)

এটি আসলে আরও 23 টি বাইটের পরিবর্তে কোঁকড়া ধনুর্বন্ধনী পরিচালনা করতে পারে:

প্রোলোগ (এসডাব্লুআই) , 60 বাইট

{A}*C:-A=..[,|B],sort(B,C).
X+Y:-X=Y;X*M,Y*N,maplist(+,M,N).

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

*এখানে একটি (অমানবিক, অতএব X=Y;) ব্রেস শব্দটিকে তার ডান পাশের শব্দের উপাদানগুলির তালিকায় রূপান্তরিত করে তারপরে এটি তার বাম দিকে সাজিয়ে তোলে।

{A}*C :-            X*C succeeds when X is the brace term containing A
    A =.. [,|B],    where A is a comma-tuple and B is a list of its elements,
    sort(B, C).     and C is B sorted.

যেহেতু উভয় আর্গুমেন্ট +মাধ্যমে যাচ্ছি *ইতিমধ্যে একটি নির্বাণ sortমধ্যে *ব্যবহার উপর 7 বাইট সংরক্ষণ permutationমধ্যে +

এবং পরিশেষে, এখানে এমন একটি সংস্করণ যা ইনপুট তালিকাগুলি হ্যান্ডল করে যা সম্ভবত নকল উপাদান রয়েছে, যা প্রলোগে একটি সমাধান লিখতে আমাকে অনুপ্রাণিত করে তা দিয়ে:

প্রোলোগ (এসডাব্লুআই) , 57 বাইট

X+Y:-X/Y,Y/X.
X/Y:-maplist(-(Y),X).
Y-E:-member(F,Y),E+F.

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

X+Y :-                   X+Y succeeds when
    X/Y, Y/X.            X/Y and Y/X succeed.
X/Y :-                   X/Y succeeds when
    maplist(-(Y), X).    for every element E of X, Y-E succeeds
                         (or when X is empty).
Y-E :-                   Y-E succeeds when
    member(F, Y),        there exists some element F of Y
    E+F.                 such that E+F succeeds.

মূলত, X/Yঘোষণা করে যে এক্স হ'ল একটি উপসেট, এক্স এর প্রতিটি উপাদানের জন্য, ওয়াইয়ের সমান উপাদান রয়েছে, তাই X/Y,Y/Xএক্স এবং ওয়াই সমান সেট বলে ঘোষণা করে।


এবং এখন আমার ঘুম দরকার
নিরবিচ্ছিন্ন স্ট্রিং

2

এপিএল (NARS2000), 4 বাইট

≡⍦

মাল্টিসেট অপারেটর, যা তালিকার পরিবর্তে সেটগুলি হিসাবে তাদের আর্গুমেন্টগুলির সাথে আচরণের জন্য ফাংশনগুলিকে সংশোধন
করে সমতুল্য ফাংশন, যা একটি বুলিয়ানকে নির্দেশ করে যে আর্গুমেন্টগুলি মান এবং আকারের সাথে সম্পূর্ণ সমান হয় কিনা

অতিরিক্ত নিয়ম সম্পর্কে: নোট করুন যে এই উত্তরটি কোনও আনর্ডারড সেট ডেটাটাইপ ব্যবহার করে না, তবে কেবলমাত্র সাধারণ তালিকাগুলি (যাতে একাধিক অভিন্ন উপাদান থাকতে পারে)। এটি কেবল তাদের সেট হিসাবে আচরণ করে।

বাইট গণনা 4 কারণ NARS2000 একচেটিয়াভাবে ইউসিএস -2 ব্যবহার করে।



1

এসইটিএল, 1 বাইট

=

বাম এবং ডান আর্গুমেন্ট হিসাবে সেট নেয়।

নোট করুন যে এটি যুক্ত করা নিয়ম মেনে চলেন না যা অর্ডারড সেট সেট ডেটাটাইপগুলি নিষিদ্ধ করে।


1

ব্র্যাচল্যাগ ভি 2, 3 বাইট

p↰ᵐ

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

ইনপুট ভেরিয়েবলের মাধ্যমে একটি সেট এবং অন্য সেট আউটপুট ভেরিয়েবলের মাধ্যমে নিয়ে যায়। সেটগুলি সমান হলে সফল হয় এবং যদি তা না হয় তবে ব্যর্থ হয়।

আমার প্রধান প্রোলোগ উত্তরের মতো, ফ্যাটালাইজের ব্র্যাচল্যাগ ভি 1 উত্তরটির অনুবাদ (যা আমি মনে করি যে এটি নীচে ঝাপটানো যেতে পারে p:0a?)।

       The input
p      can be re-ordered so that
 ↰     when this predicate is applied again to
  ᵐ    all of its elements,
       it is the output.


0

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

import Data.List
data S=L[S]deriving(Eq,Ord)
f(L x)=L$sort$f<$>x
a!b=f a==f b

আগ্রহের বাইরে, কেন এখানে আপনার নিজের তালিকা প্রকারের সংজ্ঞা দেওয়া দরকার? (পেরেছেন ==এবং <না ডিফল্টরূপে তালিকার জন্য সংজ্ঞায়িত?)

1
ডেটাটাইপ পুনরাবৃত্ত হয়: আমি Sএকটি (মোড়ানো ইন L) তালিকা হিসাবে সংজ্ঞায়িত করি S। হাস্কেলের কোনও অন্তর্নির্মিত প্রকার নেই যা তালিকার তালিকার তালিকার প্রতিনিধিত্ব করতে পারে ...
লিন

0

পার্ল 6 , 55 বাইট

my&f=->\a,\b {a==b&&all map {f(|$_)},(a.sort Z,b.sort)}

সাথে ইনপুট নেয় []

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


কিছু জিনিস: কোড ব্লকে যুক্তি দেওয়ার পরে আপনার স্থানের প্রয়োজন হবে না, এটি ব্যবহার করতে প্রায়শই খাটো হয় $^ , পরিবর্তে বাক্য গঠনটি এবং আমি মনে করি না যে []ইনপুটটি কাজ করে, যেহেতু সমস্ত কিছুর [[]],[[[]]],[[[[]]]]মূল্যায়ন করে[]
জো কিং

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