ভূমিকা
একটি ডিস্ক একটি লিনিয়ার ধারক যা ব্লকগুলির 0
মাধ্যমে সূচকযুক্ত size-1
।
একটি ফাইল হ'ল সেই ফাইল দ্বারা ব্যবহৃত ব্লক সূচকগুলির একটি তালিকাভুক্ত তালিকা।
একটি উদাহরণ ফাইল সিস্টেম যেমন প্রকাশ করা হয়:
15 ALPHA=3,5 BETA=11,10,7
"ডিস্কটির 15 টি ব্লক রয়েছে, ALPHA ফাইলের প্রথম ব্লকটি সূচক 3 এ ডিস্ক ব্লক ..."
ডিস্ক মানচিত্রটি এভাবে আঁকতে পারে:
Block Index 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Contents | | | |A0 | |A1 | |B2 | | |B1 |B0 | | | |
যখন তার মধ্যে থাকা সমস্ত ফাইল স্বচ্ছতার সাথে সংরক্ষণ করা হয় তখন একটি ডিস্কটিকে ডিফ্রেজড হিসাবে বিবেচনা করা হয়।
তোমার লক্ষ্য:
আইনী পদক্ষেপের একটি সংক্ষিপ্ততম ক্রম প্রেরণ করুন যা প্রদত্ত ডিস্কটিকে অগ্রাহ্য করবে।
আইনী পদক্ষেপ
একটি পদক্ষেপ তথ্য তিন টুকরা রয়েছে: নাম একটি ফাইলের, ব্লক একটি সূচক ফাইলে সরানো হবে, এবং সূচক ডিস্ক ব্লক এটি চলে আসে।
উদাহরণ স্বরূপ
ALPHA:1>4
"ডিস্কের 4 টি ব্লক করতে ALPHA ফাইলের 1 টি ব্লককে সরান" "
এই পদক্ষেপের পরে, উদাহরণস্বরূপ ফাইল সিস্টেমটি এটি এখন
15 ALPHA=3,4 BETA=11,10,7
Block Index 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Contents | | | |A0 |A1 | | |B2 | | |B1 |B0 | | | |
পূর্বে-বাসিন্দা ডিস্ক ব্লক সুস্পষ্টভাবে পরিষ্কার করা হয়েছে। সমানভাবে, আপনি এটি ডিস্কে দুটি ব্লক অদলবদল হিসাবে দেখতে পারেন তবে অদলবদলের একটি ব্লক অবশ্যই খালি থাকতে হবে ।
ডেটা ধ্বংস হতে পারে না। ফাইলগুলি কোনও পর্যায়ে ব্লক ভাগ করতে পারে না এবং চলাফেরাগুলি অবশ্যই ডিস্কের মধ্যে থাকতে পারে। নিম্নলিখিত পদক্ষেপগুলি অবৈধ : ALPHA:0>10
(বিটা-র মালিকানাধীন), ALPHA:3>0
( এএলএফএ-তে কোনও ব্লক নেই), ALPHA:0>-1
(কোনও ডিস্ক সূচক নেই), ALPHA:0>15
(ডিস্ক সূচকটি খুব বড় নয়)
উদাহরণ 1
উপরোক্ত উদাহরণটি পুরোপুরি সমাধান করা।
ALPHA:0>4
BETA:0>9
BETA:2>11
ফাইলগুলি সমাধানের সাথে সংলগ্ন হতে হবে না, কেবল নিজের মধ্যে অবিচ্ছিন্ন।
উদাহরণ 2
এখানে আরও বাধিত মামলা রয়েছে
ইনপুট:
10 A=1,2,3 B=6,7,8 C=4,5,0
আউটপুট:
B:2>9
B:1>8
B:0>7
C:2>6
এই ফাইল সিস্টেমের অগ্রগতি হ'ল:
Block Index 00 01 02 03 04 05 06 07 08 09
Contents |C2 |A0 |A1 |A2 |C0 |C1 |BO |B1 |B2 | |
|C2 |A0 |A1 |A2 |C0 |C1 |BO |B1 | |B2 |
|C2 |A0 |A1 |A2 |C0 |C1 |BO | |B1 |B2 |
|C2 |A0 |A1 |A2 |C0 |C1 | |B0 |B1 |B2 |
| |A0 |A1 |A2 |C0 |C1 |C2 |B0 |B1 |B2 |
এটিকে ডিগ্র্যাগ করার একটি বিকল্প উপায় হ'ল C:2>9
তারপরে A
একটি পদক্ষেপ নামিয়ে আনা, তারপরে C
একটি পদক্ষেপ নামিয়ে আনুন , তবে এটি করুন C:2>5
তবে এটি কোনও আইনি সমাধান হবে না কারণ এতে বিকল্পের চেয়ে আরও বেশি পদক্ষেপ রয়েছে ।
প্রতিনিধিত্ব
আপনি ইনপুটটির জন্য যেকোন উপস্থাপনা ব্যবহার করতে পারবেন যতক্ষণ না এটি যুক্তিসঙ্গতভাবে কোনও মৌলিক স্ট্রিংয়ের কাছাকাছি থাকে। আপনার ভাষার উপর নির্ভর করে, প্রথম উদাহরণে ইনপুট হিসাবে চিহ্নিত হতে পারে
"15 ALPHA=3,5 BETA=11,10,7"
[15," ","ALPHA","=",3,",",5," ","BETA","=",11,",",10,",",7]
(15,(("ALPHA",(3,5)),("BETA",(11,10,7))))
etc
একইভাবে, আউটপুট আপনার ভাষার জন্য লগ হিসাবে প্রিন্ট করা, মানব-পঠনযোগ্য এবং আইনী পদক্ষেপের আদেশিত তালিকার প্রতিনিধিত্ব করে, যা প্রতিটি পদক্ষেপকে 1) ফাইল-নাম, 2) ফাইল-ব্লক-সূচক হিসাবে বর্ণনা করা হতে পারে be , 3) নতুন-ডিস্ক-ব্লক-সূচক
"ALPHA:1>6 BETA:2>9"
(0=>(0=>"ALPHA",1=>"1",2=>"6"), 1=>(0=>"BETA",1=>"2",2=>"9"))
["ALPHA",1,6,"BETA",2,9]
etc
আবশ্যকতা
আপনার কোড অবশ্যই কোনও আকারের ডিস্ক, এবং কোনও ফাইল এবং আকার এবং আকার গ্রহণ করবে।
বৈধ প্রাথমিক ফাইল সিস্টেমের রাজ্যগুলিকে বর্ণনা করে না এমন ইনপুটগুলি অপরিজ্ঞাত আচরণের দিকে নিয়ে যেতে পারে।
আপনার কোড কোনও সংজ্ঞায়িত ইনপুট জন্য অবশ্যই একটি সংক্ষিপ্ততম চলন সমাধান উত্পাদন করতে হবে ।
আপনার উত্পন্ন সমস্ত পদক্ষেপ অবশ্যই আইনী হতে হবে; আপনার উত্পাদিত প্রতিটি পদক্ষেপ প্রয়োগের পরে ফাইল সিস্টেমটি অবশ্যই একটি বৈধ অবস্থায় থাকতে হবে।
আপনার কোডটি অবশ্যই সমস্ত বৈধ ইনপুটগুলির জন্য বন্ধ করতে হবে, অর্থাত্ এটি কখনই কোনও লুপে আটকা উচিত নয়, প্রতিটি পদক্ষেপ প্রয়োগ করার পরে ফাইল সিস্টেমটি একটি স্বতন্ত্রভাবে নতুন অবস্থায় থাকা উচিত।
যেখানে একাধিক সংক্ষিপ্ত সমাধান রয়েছে সেখানে বৈধ হিসাবে যে কোনও নির্বাচন করা যেতে পারে।
সংক্ষিপ্ততম কোড জিতেছে। আপনার কোড সহ কমপক্ষে একটি নতুন অযৌক্তিক উদাহরণ ইনপুট এবং এর আউটপুট পোস্ট করুন।