একটি চক্রাকার ট্যাগ সিস্টেম একটি ক্ষুদ্র, টিউরিং-সম্পূর্ণ গণনীয় মডেল যা একটি দুটি প্রতীক বর্ণমালা (আমি ব্যবহার করব {0,1}
), একটি সীমাবদ্ধ, দু'টি চিহ্নের সমন্বয়ে নির্মিত প্রোডাকশনগুলির একটি চূড়ান্ত চক্রীয় তালিকা এবং একটি সীমাহীন শব্দ যা এতেও অন্তর্ভুক্ত এই দুটি প্রতীক।
প্রতিটি পদক্ষেপে:
- শব্দের প্রথম উপাদানটি সরানো হবে
- এটি ছিল যদি
0
বর্তমান উত্পাদন এড়ানো হয় - যদি এটি ছিল
1
তবে বর্তমান উত্পাদনটি শব্দের শেষে যুক্ত হয় । - পরবর্তী উত্পাদন সক্রিয় হয়ে ওঠে। এটি যদি শেষ উত্পাদন হয় তবে প্রথমটিতে ফিরে যান।
শব্দটি খালি হয়ে গেলে সিস্টেমটি বন্ধ হয়ে যায়।
একটি উদাহরণ (উইকিপিডিয়া থেকে):
Productions: (010, 000, 1111)
Initial word: 11001
Generation Production Word (before) Word (after)
0 010 11001 → 1001010
1 000 1001010 → 001010000
2 1111 001010000 → 01010000
3 010 01010000 → 1010000
4 000 1010000 → 010000000
5 1111 010000000 → 10000000
6 010 10000000 → 0000000010
7 000 0000000010 → 000000010
8 1111 000000010 → 00000010
9 010 00000010 → 0000010
আপনার কাজটি, যদি আপনি এটি গ্রহণ করতে চান, তবে কোনও প্রোগ্রাম বা ফাংশন লিখতে হবে:
- উত্পাদনের একটি তালিকা,
- প্রাথমিক শব্দ, এবং
- একটি প্রজন্ম,
এবং প্রজন্মের মধ্যে শব্দটি মুদ্রণ করে বা প্রদান করে ।
উদাহরণ স্বরূপ,
cyclic_tag(
prod=[[0,1,0],[0,0,0],[1,1,1,1]],
word=[1,1,0,0,1],
gen=4) => [1,0,1,0,0,0,0]
বাস্তবায়নের বিশদ:
বর্ণমালা কিছু যায় আসে না। আপনি যতক্ষণ না সামঞ্জস্য থাকেন ততক্ষণ আপনি এবং
0
এবং1
,True
এবংFalse
,T
এবংNIL
,A
এবংB
এমনকি1
এবং এবং0
যা কিছু সামনে আসতে পারেন ব্যবহার করতে পারেন । সমস্ত ইনপুট এবং আউটপুট অবশ্যই একই বর্ণমালা ব্যবহার করা উচিত এবং আপনি কী0
এবং কী ব্যবহার করছেন তা আপনাকে অবশ্যই নির্দেশ করতে হবে1
।শব্দের দৈর্ঘ্য অবশ্যই তাত্ত্বিকভাবে আনবাউন্ডেড হওয়া উচিত। অর্থাৎ, আপনি সর্বাধিক শব্দের দৈর্ঘ্য হার্ডকোড নাও করতে পারেন। যদি আমি আপনার প্রোগ্রামটিকে একটি অসম্পূর্ণ পরিমাণে মেমরির সাথে একটি আদর্শ কম্পিউটারে চালিত করি তবে আপনার প্রোগ্রামটি অবশ্যই তাত্ত্বিকভাবে এটির ব্যবহার করতে সক্ষম হতে হবে। (আপনি আপনার দোভাষী / সংকলকের সীমাটি উপেক্ষা করতে পারেন))
প্রদত্ত সিস্টেমটি যদি প্রদত্ত প্রজন্মের পৌঁছানোর আগে থামে, আপনাকে অবশ্যই খালি শব্দটি ফিরে আসতে হবে বা মুদ্রণ করতে হবে।
খালি উত্পাদন বিদ্যমান, এবং আপনি অবশ্যই এটি পরিচালনা করতে সক্ষম হবেন। আপনি যদি একটি পূর্ণ প্রোগ্রাম লিখেন তবে আপনার আই / ও অবশ্যই এটি পরিচালনা করতে সক্ষম হবে।
সম্পাদনা করুন : আমি মূলত প্রজন্মকে 0
নিজেই ইনপুট শব্দ হিসাবে তৈরি 1
করা এবং প্রজন্মকে প্রথম পদক্ষেপের ফলস্বরূপ করতে চেয়েছিলাম। অর্থাৎ, আমি আপনার পূর্ববর্তী কলামটি ফিরে আসার উদ্দেশ্যে করেছিলাম । তবে , যেহেতু আমি এটি উল্লেখ করার ক্ষেত্রে যথেষ্ট পরিষ্কার ছিলাম না, তাই আমি উভয় বিকল্প গ্রহণ করব ; প্রতিটি প্রজন্মের জন্য আপনি কলামের আগের বা তার পরে মানটি দিতে পারেন । আপনি রাষ্ট্র হবে যে আপনি অনুসরণ করছেন পরে কলাম, যদি আপনি তা করছেন। আপনি যে কলামটি চয়ন করেছেন তা আপনাকে অবশ্যই সামঞ্জস্য রাখতে হবে।
আমি এখন থেকে এক সপ্তাহের মধ্যে সবচেয়ে ছোট কোডটি প্রদান করব (10/27/2014)।