সেলুলার অটোমেটার জন্য সিকোয়েন্সগুলি সনাক্ত করা


10

পটভূমি

এই চ্যালেঞ্জের উদ্দেশ্যে, একটি-স্টেট nসেলুলার অটোমেটন কেবলমাত্র একটি বাইনারি ফাংশন fযা রাজ্য সেট থেকে {0, 1, ..., n-1}ইনপুট হিসাবে দুটি সংখ্যা নেয় এবং সেই সেট থেকে আউটপুট হিসাবে অন্য নম্বর দেয়। এটি কমপক্ষে 2 দ্বারা দৈর্ঘ্যের সংখ্যার তালিকায় প্রয়োগ করা যেতে পারেL = [x0, x1, x2, ..., xk-1]

f(L) = [f(x0, x1), f(x1, x2), f(x2, x3), ..., f(xk-2, xk-1)]

নোট করুন যে ফলাফলের তালিকার মূলটির তুলনায় একটি কম উপাদান রয়েছে। একটি স্থান-কাল ডায়াগ্রাম এর fথেকে শুরু Lবারবার প্রয়োগের দ্বারা প্রাপ্ত তালিকার তালিকা fথেকে L, এবং একটি তালিকায় ফলাফল সংগ্রহ করা। চূড়ান্ত তালিকায় আমরা যে তালিকার দৈর্ঘ্যে 1. হয়েছে Lএকটি হল চিহ্নিতকরণের ক্রম জন্য f, যদি স্থিতি সেট উপর প্রতি দুই-উপাদানের তালিকা স্থানকালের ডায়াগ্রাম থেকে শুরু কিছু সারির একটি সংলগ্ন sublist হয় L। এটি এই শর্তের সমতুল্য যে অন্য কোনও-স্টেট nসিএ-তে সঠিক স্থানকালীন চিত্র নেই।

ইনপুট

আপনার ইনপুটগুলি একটি n- nপূর্ণসংখ্যার ম্যাট্রিক্স হয় M, Lকমপক্ষে 2 দৈর্ঘ্যের পূর্ণসংখ্যার তালিকা এবং allyচ্ছিকভাবে সংখ্যা n। ম্যাট্রিক্স Mএকটি স্টেট nসিএ সংজ্ঞায়িত fকরে f(a,b) = M[a][b](0-ভিত্তিক সূচক ব্যবহার করে)। এটির গ্যারান্টিযুক্ত n > 0এবং এটি Mএবং Lকেবলমাত্র রাজ্যের সেটের উপাদান রয়েছে {0, 1, ..., n-1}

আউটপুট

আপনার আউটপুট একটি সামঞ্জস্যপূর্ণ সত্যবাদী মান হতে পারে যদি LCA এর জন্য সনাক্তকারী ক্রম fএবং অন্যথায় একটি সামঞ্জস্যপূর্ণ মিথ্যা মান। এর অর্থ হ'ল সমস্ত "হ্যাঁ" -র ফলে একই সত্যবাদী মান আসে এবং সমস্ত "না" -র ফলে একই মিথ্যা মান হয়।

উদাহরণ

ইনপুট বিবেচনা করুন n = 2, M = [[0,1],[1,0]]এবং L = [1,0,1,1]। ম্যাট্রিক্স Mবাইনারি এক্সআর অটোমেটনের সংজ্ঞা দেয় f(a,b) = a+b mod 2এবং স্পেসটাইম ডায়াগ্রামটি শুরু Lহয়

1 0 1 1
1 1 0
0 1
1

এই চিত্রটি 0 0কোনও সারিতে ধারণ করে না , সুতরাং Lসনাক্তকারী ক্রম নয় এবং সঠিক আউটপুট FalseL = [0,1,0,0]পরিবর্তে আমরা যদি ইনপুট করি তবে স্পেসটাইম চিত্রটি

0 1 0 0
1 1 0
0 1
1

এই চিত্রটি সারি সবকিছুর যুগল স্থিতি সেট থেকে টানা ধারণ, যথা 0 0, 0 1, 1 0এবং 1 1, তাই Lএকটি চিহ্নিতকরণের ক্রম এবং সঠিক আউটপুট True

বিধি

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

পরীক্ষার কেস

Trivial automaton
[[0]] [0,0] 1 -> True
Binary XOR
[[0,1],[1,0]] [1,0,1,1] 2 -> False
[[0,1],[1,0]] [1,0,1,0] 2 -> True
[[0,1],[1,0]] [0,1,0,0] 2 -> True
Addition mod 3
[[0,1,2],[1,2,0],[2,0,1]] [0,1,1,0,0,0,1,0,0] 3 -> False
[[0,1,2],[1,2,0],[2,0,1]] [0,1,1,0,0,0,1,0,1] 3 -> True
Multiplication mod 3
[[0,0,0],[0,1,2],[0,2,1]] [0,1,1,2,0,0,1,0,1] 3 -> False
[[0,0,0],[0,1,2],[0,2,1]] [0,1,1,2,2,2,1,0,1] 3 -> True
Some 4-state automata
[[3,2,2,1],[0,0,0,1],[2,1,3,1],[0,1,2,3]] [0,0,0,0,1,1,1,1] 4 -> False
[[3,2,2,1],[0,0,0,1],[2,1,3,1],[0,1,2,3]] [0,0,0,1,0,1,1,1] 4 -> False
[[3,2,2,1],[0,0,0,1],[2,1,3,1],[0,1,2,3]] [0,1,2,3,3,1,2,3,0] 4 -> True
[[0,1,2,1],[1,0,2,0],[2,2,1,0],[1,2,0,0]] [0,0,1,1,2,2,0,2,1] 4 -> False
[[0,1,2,1],[1,0,2,0],[2,2,1,0],[1,2,0,0]] [0,3,1,3,2,3,3,0,1] 4 -> False
[[0,1,2,1],[1,0,2,0],[2,2,1,0],[1,2,0,0]] [0,3,1,3,2,3,3,0,1,2] 4 -> True

উত্তর:


2

সিজেম, 53 43 42 বাইট

l~:M;_,({_[\1>]zW<_{M\{=}/}%}*;](_*\L*_&,=

এটি সংজ্ঞার একটি খুব সরাসরি-এগিয়ে বাস্তবায়ন (আমি আমার প্রথম প্রয়াসের পরে জাকুবে থেকে কিছুটা অনুপ্রেরণা নিয়েছি)। এটি সিজেম-স্টাইলের অ্যারেগুলি ব্যবহার করে STDIN এ বিপরীত ক্রমে ইনপুটটি প্রত্যাশা করে:

2 [1 0 1 1] [[0 1][1 0]]

এখানে একটি পরীক্ষার জোতা দেওয়া যা সমস্ত ইনপুটগুলির বিপরীতে কোড চালায় (তাদেরকে প্রথমে সঠিক ইনপুট ফর্ম্যাটে রূপান্তর করে)। ইনপুট ক্ষেত্রে ফলাফলগুলি আসলে ব্যবহার হয় না। আপনি আমার উপর বিশ্বাস না রাখলে এগুলি সরিয়ে দিন। ;)


5

পাইথন 2: 93 বাইট

M,L,n=input();a=[]
while L:z=zip(L,L[1:]);a+=z;L=[M[i][j]for i,j in z]
print len(set(a))==n*n

সোজা বাস্তবায়ন: জিপ করে সমস্ত জোড়া সন্ধান করুন, সেগুলি পরে স্মরণ করুন এবং এম তে পুনরায় প্রয়োগ করুন eat পাওয়া অনন্য জোড়া সংখ্যা তুলনা করুন।

ইনপুট ফর্ম হয় [[0,1],[1,0]], [0,1,0,0], 2


2

গণিত, 90 83 82 বাইট

f=Length[Union@@Last@Reap[#2//.l_List:>Extract[#,Sow/@Partition[l+1,2,1]]]]==#3^2&

আরেকটি সরাসরি-এগিয়ে বাস্তবায়ন।

ব্যবহার:

f[{{0, 1}, {1, 0}}, {0, 1, 0, 0}, 2]

সত্য

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