এই গাছগুলি কি সমকামী?


21

ভূমিকা

এই চ্যালেঞ্জে, আপনার কাজ হ'ল একটি প্রোগ্রাম লিখুন যা সিদ্ধান্ত নিয়েছে যে দুটি প্রদত্ত গাছ আইসমোর্ফিক নয়। গাছ বলতে বোঝায় একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফ যেখানে প্রতিটি নোডের মূল ছাড়াই হ'ল একটি বহির্গমন প্রান্ত থাকে, যার কোনও কিছুই নেই। দুটি গাছ আইসমোর্ফিক হয় যদি কোনওটি নোডের নাম পরিবর্তন করে অন্যকে রূপান্তরিত করা যায়। উদাহরণস্বরূপ, দুটি গাছ (যেখানে প্রতিটি প্রান্ত পয়েন্ট করে)

  0       0
 /|\     /|\
1 3 4   1 2 5
|\       /|
2 5     3 4

সহজেই isomorphic হতে দেখা যায়।

আমরা Lনিম্নলিখিত উপায়ে nonnegative পূর্ণসংখ্যার তালিকা হিসাবে একটি গাছ এনকোড করি । গাছের মূলের লেবেল 0রয়েছে এবং এর নোডও রয়েছে 1,2,...,length(L)। প্রতিটি নোডের (1-ভিত্তিক সূচক ব্যবহার করে) এর i > 0বহির্গামী প্রান্ত রয়েছে L[i]। উদাহরণস্বরূপ, তালিকা (উপাদানগুলির নীচে প্রদত্ত সূচকগুলি সহ)

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

গাছ এনকোড

  0
 /|\
1 2 8
| |\
3 5 6
| |
4 7

ইনপুট

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

  1. এগুলি খালি নেই।
  2. তাদের দৈর্ঘ্য একই।
  3. প্রতিটি তালিকা সমস্ত (1-ভিত্তিক) সূচকের জন্য Lসন্তুষ্ট ।L[i] < ii

আউটপুট

গাছগুলি আইসোমরফিক হলে আপনার আউটপুট একটি সত্যবাদী মান এবং যদি মিথ্যা মান না হয় value

বিধি এবং স্কোরিং

আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন। সর্বনিম্ন বাইট গণনা জয়, এবং মান লুফোলগুলি অনুমোদিত নয়। কোনও সময় বিধিনিষেধ নেই, তবে বিল্ট-ইনগুলি সিদ্ধান্ত নেয় যে গাছ বা গ্রাফ আইসোমর্ফিজমকে অনুমোদিত নয়।

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

সত্য ঘটনা

[0] [0]
[0,1,2,1] [0,1,1,3]
[0,1,1,3,3] [0,1,2,2,1]
[0,1,0,1,2,3,3,0] [0,0,2,1,0,4,2,1]
[0,1,2,3,1,2,3,0,8] [0,1,0,3,3,4,4,7,7]

মিথ্যা উদাহরণ

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


@ ডিজিটাল ট্রামুমা ডাঙ্গিত, আপনি ওপি বিল্টিনগুলিকে নিষেধ করেছেন ... আমার একটি 60০ বাইট
মম

উত্তর:


2

গণিত, 48 বাইট

SameQ@@(Sort//@(0(0//.PositionIndex@#))&/@{##})&

এটি যে সমাধানগুলি ব্যবহার করে তার তুলনায় এটি আরও ছোট IsomorphicGraphQ:

IsomorphicGraphQ@@(Graph@*MapIndexed[#->Tr@#2&]/@{##})&

6

পাইথন, 83

২ য় লাইনে বেনামে ফাংশন আমার সমাধান।

f=lambda l,i=0:sorted(f(l,j+1)for j,e in enumerate(l)if e==i)
lambda a,b:f(a)==f(b)

fএকটি সাবট্রির একটি ক্যানোনাইজড ফর্মটি প্রদান করে যা এটির ক্যানোনাইজড শিশুদের বাছাই করা তালিকা। তারপরে আমাদের অবশ্যই প্রতিটি গাছের ক্যানোনাইজড ফর্মগুলি সমান কিনা তা পরীক্ষা করে দেখতে হবে।

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