মাইক্রোসফ্ট FAT ফাইল সিস্টেমে একটি ডিরেক্টরি টেবিল রয়েছে যা ডিস্কের "ফোল্ডারগুলি" কোন "ফাইলগুলি" -এ উপস্থাপন করতে পারে? সময়ের জন্য, এই এন্ট্রিগুলি অল্প পরিমাণে বিটগুলিতে প্রচুর পরিমাণে তথ্য ছড়িয়ে দিয়েছে। কৌতুহলকারীদের জন্য উইকিতে অনেকগুলি প্রযুক্তিগত বৈশিষ্ট্য রয়েছে , তবে এখানে চ্যালেঞ্জটি একটি এন্ট্রিটির "সাধারণ" ডিকোডিংয়ের দিকে মনোযোগ দেবে।
প্রতিটি এন্ট্রি একটি 32-বাইট বাইনারি শব্দ নিয়ে গঠিত, বিভিন্ন বিভাগে বিভক্ত। এই চ্যালেঞ্জের ধারাবাহিকতার জন্য, আমরা এমএস-ডস 5.0 সংস্করণটি ব্যবহার করব, বাইটগুলি বড় এন্ডিয়ান হিসাবে অর্ডার করা হয় এবং আমরা বাইটকে 0x00
বাম-মোস্ট 0x1F
হিসাবে এবং ডান-সর্বাধিক হিসাবে বাইটকে ডাকি ।
নীচে সম্পর্কিত বিভাগগুলির একটি সংক্ষিপ্ত পরিকল্পনাবদ্ধ এবং প্রতিটি বিভাগের জন্য আউটপুটটি কী হওয়া উচিত ( সাহসের সাথে )।
- প্রথম 11 বাইট হ'ল ASCII ফর্ম্যাটে ফাইলের নাম (এইখান থেকেই বিখ্যাত 8.3 ফাইলের নামটি আসে - ফাইলের নামের জন্য 8 বাইট, এক্সটেনশনের জন্য 3 বাইট)। এগুলি সোজা ASCII এনকোডিং হয় এবং এর মধ্যে পিরিয়ড (।) এর সাথে ASCII হিসাবে আউটপুট হওয়া উচিত ।
- দ্রষ্টব্য: 8 এবং 3 টি অংশ উভয়ই একটি পূর্ণ দৈর্ঘ্যের এন্ট্রি করতে ফাঁকা জায়গায় প্যাডযুক্ত। আউটপুট স্পেস উপেক্ষা করা উচিত (যেমন, তাদের আউটপুট না)।
- ফাইল এক্সটেনশান খালি থাকতে পারে (অর্থাত্ সমস্ত স্থান), সেক্ষেত্রে আউটপুট বিন্দুটিকে আউটপুট না দেয় ।
- যেহেতু এএসসিআইআই কেবলমাত্র নিম্ন 7 টি বিট ব্যবহার করে, বাইটগুলির মধ্যে একটিতে নেতৃত্ব থাকবে
0
।
- পরবর্তী বাইট (0x0b) নিম্নলিখিতগুলির একটি বিটমাস্ক:
- 0x01 কেবল পঠন - আউটপুট রিটার্নিং
- 0x02 লুকানো - আউটপুট এইচ
- 0x04 সিস্টেম - আউটপুট এস
- 0x08 ভলিউম লেবেল - আউটপুট ভিএল । ফাইলের আকার (নীচের) 0 হিসাবে আউটপুট হওয়া উচিত , এর প্রকৃত প্রবেশদ্বার নির্বিশেষে।
- 0x10 সাব-ডিরেক্টরি - আউটপুট এসডি । ফাইলের আকার (নীচের) 0 হিসাবে আউটপুট হওয়া উচিত , এর প্রকৃত প্রবেশদ্বার নির্বিশেষে।
- 0x20 সংরক্ষণাগার - আউটপুট এ
- 0x40 ডিভাইস - এই চ্যালেঞ্জের জন্য উপেক্ষা করা হয়েছে।
- 0x80 সংরক্ষিত - এই চ্যালেঞ্জের জন্য উপেক্ষা করা হয়েছে।
- যেহেতু এটি বিটমাস্ক, একাধিক পতাকা সম্ভব - সমস্ত প্রযোজ্য আউটপুটগুলি কোনও ক্রমে একত্রে সংযুক্ত করা উচিত। উদাহরণস্বরূপ,
0xff
হতে পারেROHSVLSDA
(বা অন্য কোনও সংমিশ্রণ)।
- পরবর্তী দুটি বাইট (0x0c এবং 0x0d) এমএস-ডস 5.0 এর অধীনে ব্যবহার করা হয় না।
- পরের দুটি বাইট (0x0e এবং 0x0f) নিম্নলিখিতভাবে তৈরির সময়:
- বিট 15 থেকে 11 ঘন্টা 24 ঘন্টা বিন্যাসে হয় - আউটপুট 00 থেকে 23
- বিট 10 থেকে 5 মিনিট - আউটপুট 00 থেকে 59
- 4 থেকে 0 বিট হ'ল সেকেন্ড / 2 - আউটপুট 00 থেকে 58 (মনে রাখবেন যে সেকেন্ডগুলি কেবলমাত্র দুই-সেকেন্ড রেজোলিউশনে রয়েছে)
- স্পষ্টতার জন্য:
hhhhhmmmmmmsssss
যখন বিগ-এন্ডিয়ান লেখা হয়।
- পরের দুটি বাইট (0x10 এবং 0x11) নিম্নলিখিতভাবে তৈরি তারিখ:
- আউটপুট - বিটস 15 9 বছর হয় 1980 জন্য
0
পর্যন্ত 2107 জন্য127
- বিট 8 থেকে 5 মাস হয় - আউটপুট 1 থেকে 12 (শূন্যের সাথে বা তার সাথে ছাড়া)
- 4 থেকে 0 টি বিট দিন - আউটপুট 0 থেকে 31 (শূন্যের সাথে বা তার ছাড়া)
- স্পষ্টতার জন্য:
yyyyyyymmmmddddd
যখন বিগ-এন্ডিয়ান লেখা হয়।
- আউটপুট - বিটস 15 9 বছর হয় 1980 জন্য
- পরবর্তী দুটি বাইট (0x12 এবং 0x13) শেষ অ্যাক্সেসের তারিখ। এমএস-ডস ৫.০ এ ব্যবহৃত হওয়ার সময় আমরা এই চ্যালেঞ্জের জন্য এই অংশটিকে উপেক্ষা করছি।
- পরবর্তী দুটি বাইট (0x14 এবং 0x15) এমএস-ডস 5.0 দ্বারা ব্যবহৃত হয় না।
- পরের দুটি বাইট (0x16 এবং 0x17) শেষ পরিবর্তিত সময়, উপরে তৈরির সময় হিসাবে একই বিন্যাস অনুসরণ করে।
- পরের দুটি বাইট (0x18 এবং 0x19) শেষ পরিবর্তিত তারিখ, উপরে তৈরির তারিখ হিসাবে একই ফর্ম্যাটটি অনুসরণ করে।
- পরের দুটি বাইট (0x1a এবং 0x1b) হ'ল ডিস্কে থাকা ফাইলটির ক্লাস্টার অবস্থান। আমরা এই চ্যালেঞ্জের জন্য এই অংশটিকে উপেক্ষা করছি।
- চূড়ান্ত চারটি বাইট (0x1c, 0x1d, 0x1e, এবং 0x1f) ফাইলের আকার - আউটপুটকে স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে , যদি ভিএল বা এসডি পতাকাগুলি (উপরে) সেট না করা হয় তবে এই ক্ষেত্রে আউটপুট
0
।
চাক্ষুষ উপস্থাপনা
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
\______________________________FILENAME________________________________________________/\_ATTR_/\___NOTUSED____/\_CREATIONTIME_/\_CREATIONDATE_/\__LASTACCESS__/\___NOTUSED____/\_MODIFIEDTIME_/\_MODIFIEDDATE_/\___NOTUSED____/\___________FILESIZE___________/
ইনপুট
- একক 32-বাইট শব্দ (যেমন 256 বিট), যে কোনও বিন্যাসে সুবিধাজনক।
- এটি স্ট্রিং
1
এবং0
বিভিন্ন স্বাক্ষরযুক্তint
, বুলিয়ান মানগুলির একটি অ্যারে ইত্যাদি হিসাবে হতে পারে - আপনি ইনপুট জন্য কোন ফর্ম্যাট ব্যবহার করছেন দয়া করে আপনার উত্তরে উল্লেখ করুন।
- আপনার ভাষার ইনপুট নেওয়ার একমাত্র উপায় না হলে আপনি একাধিক ইনপুট নিতে পারবেন না (অর্থাত্ প্রাসঙ্গিক বাইট আকারে একটি অ্যারে পূর্ব ভাঙা) । ইনপুট পার্স করা চ্যালেঞ্জের অংশ।
- এটি স্ট্রিং
- আপনি ইনপুটটিকে বৈধ বলে ধরে নিতে পারেন (উদাহরণস্বরূপ, তারিখটি বৈধ কিনা তা যাচাই করতে আপনাকে ডেট চেকিং করার দরকার নেই)।
- যে বাইটগুলি অব্যবহৃত রয়েছে সেগুলি উপস্থিত থাকাকালীন সমস্ত
0
, সমস্ত1
, ইত্যাদি হতে পারে । নীচের উদাহরণগুলিতে, আমি সমস্ত0
অব্যবহৃত বাইটের জন্য ব্যবহার করেছি ।
আউটপুট
হয় স্ক্রিনে মুদ্রিত বা ফিরে এসেছে, নিম্নলিখিত:
- ASCII স্ট্রিং হিসাবে ফাইলের নাম
- ফাইলটি ASCII স্ট্রিং হিসাবে বৈশিষ্ট্যযুক্ত
- যথাযথ বিভাজক (কলোন, স্ল্যাশস, উপাদানগুলিকে আলাদা করার জন্য কিছু) সহ তৈরির সময় এবং সৃষ্টির তারিখ
- পরিবর্তিত সময় এবং পরিবর্তিত তারিখ, আবার উপযুক্ত বিভাজক সহ
- ফাইলের আকার
আউটপুটটি স্থান-বিচ্ছিন্ন বা নিউলাইন-বিচ্ছিন্ন একক স্ট্রিং, অ্যারেতে পৃথক উপাদান ইত্যাদি হতে পারে etc. দয়া করে আপনার উত্তরে কীভাবে আপনার আউটপুট বিন্যাসিত তা নির্দিষ্ট করে দিন।
বিধি
- স্ট্যান্ডার্ড I / O ফর্ম্যাটগুলি গ্রহণযোগ্য।
- হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য।
- স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
- এটি কোড-গল্ফ , তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড জিততে পারে।
- এই ফাংশনটি সম্পাদন করে এমন বিল্ট-ইনগুলি নিষিদ্ধ।
উদাহরণ
0111000001110010011011110110011101110010011000010110110101101101011010010110111001100111000001100000000000000000101000100100010001001000110101000000000000000000000000000000000010100010010001000100100011010100000000000000000000000000000000001101000000000000
programm.ing HS 20:18:08 2016/06/20 20:18:08 2016/06/20 53248
0010000000100000001000000010000001110000011100000110001101100111001000000010000000100000000101000000000000000000010111010110110000111101100111110000000000000000000000000000000010100010010001000100100011010100000000000000000011110000000100111111001011100001
ppcg SDS 11:43:24 2010/12/31 20:18:08 2016/06/20 0
SD S
একটি বৈধ পতাকা সেট হবে?