নিম্নলিখিত কার্যকারিতা সহ একটি প্রোগ্রাম বা ফাংশন লিখুন:
- প্রোগ্রাম / ফাংশনটি প্রথমে
Hello, world!
স্ট্যান্ডার্ড আউটপুট স্ট্রিমটিতে লেখার চেষ্টা করে । (এই চ্যালেঞ্জের জন্য অন্য কোনও আউটপুট গ্রহণযোগ্য নয়, কারণ প্রোগ্রামের তুচ্ছ আচরণের চেয়ে আই / ও-তে ফোকাস অনেক বেশি)) এটি সফল হয়েছে কিনা তার উপর নির্ভর করে:- যদি এটি আউটপুট দেওয়ার ক্ষেত্রে সফল হয়
Hello, world!
তবে প্রোগ্রাম / ফাংশনটি কোনও আচরণ ছাড়াই প্রস্থান করে। - যদি কোনও ত্রুটির কারণে এটি সঠিক আউটপুট উত্পাদন করতে ব্যর্থ হয় তবে প্রোগ্রাম / ফাংশনটি
Error writing "Hello, world!"
স্ট্যান্ডার্ডকে ত্রুটি প্রবাহে লেখার চেষ্টা করে । (এই চ্যালেঞ্জের উদ্দেশ্যে, ত্রুটিটি পরিচালনা করার জন্য আপনাকে ত্রুটি পরিচালনা করার দরকার নেই don't)
- যদি এটি আউটপুট দেওয়ার ক্ষেত্রে সফল হয়
ব্যাখ্যা
আপনার প্রোগ্রাম / ফাংশনটি কোনও ইনপুট ছাড়াই চলবে (যদি না এমন ভাষায় লেখা থাকে যা কাজ করার জন্য একেবারে ইনপুটের প্রয়োজন হয়, তবে এটি সহজতম ইনপুট দিয়ে চালানো হবে)।
আউটপুট উত্পাদন করার সময়, আপনি যদি চান তবে একটি একক ট্রেলিং নিউলাইনও উত্পাদন করতে পারেন, তবে এটি করা বাধ্যতামূলক নয়।
"স্ট্যান্ডার্ড আউটপুটটিতে ত্রুটি লেখার সংজ্ঞা" যা আপনার প্রোগ্রাম প্রয়োগ করে অবশ্যই কমপক্ষে নিম্নলিখিত কেসগুলিকে ত্রুটি হিসাবে বিবেচনা করবে:
- স্ট্যান্ডার্ড আউটপুট অস্তিত্বহীন (অর্থাত্
stdout
একটি বদ্ধ ফাইলহ্যান্ডল, কোনও ফাইল বর্ণনাকারী 1 উপস্থিত নেই, তবে এই ক্ষেত্রেগুলি আপনি যে ভাষা এবং ওএস ব্যবহার করছেন তা অনুবাদ করে); - স্ট্যান্ডার্ড আউটপুট কোনও ডিস্কের কোনও ফাইলকে উল্লেখ করে যার কোনও ফাঁকা জায়গা নেই;
- অন্য প্রোগ্রামে সংযুক্ত স্ট্যান্ডার্ড আউটপুট, যা ইতিমধ্যে সংযোগটির শেষটি বন্ধ করে দিয়েছে।
এবং অবশ্যই কমপক্ষে নিম্নলিখিত কেসগুলিকে সাফল্য হিসাবে বিবেচনা করবে (উদাহরণস্বরূপ ত্রুটি নয়):
- স্ট্যান্ডার্ড আউটপুট একটি টার্মিনালের সাথে সংযোগ স্থাপন করে এবং
Hello, world!
অনস্ক্রিনে প্রদর্শিত হয়। - স্ট্যান্ডার্ড আউটপুট একটি ফাইলের সাথে সংযোগ স্থাপন
Hello, world!
করে এবং ফাইলটিতে লিখিত হয়।
আউটপুট ত্রুটি হিসাবে কী গণনা করা হয়েছে তার বিশদটি আপনি চয়ন করতে পারেন, যতক্ষণ না এটি উপরের নিয়মের সাথে সামঞ্জস্য থাকে।
- স্ট্যান্ডার্ড আউটপুট অস্তিত্বহীন (অর্থাত্
আপনার প্রোগ্রাম / ফাংশন উপরে তালিকাভুক্ত ত্রুটি পরিস্থিতিগুলির কোনওটির মুখোমুখি হয়ে ক্র্যাশ হওয়া উচিত নয়। আপনি কোন বহির্গমন কোডটি ব্যবহার করবেন এটি আপনার বিষয়।
আপনার প্রোগ্রাম / ক্রিয়াকলাপটি স্ট্যান্ডার্ড ত্রুটি প্রবাহে সম্মুখীন হওয়া ত্রুটির প্রকৃতি বর্ণনা করতে পারে না; এটি কেবল উপরে উল্লিখিত স্ট্রিং মুদ্রণ করা উচিত। স্ট্যান্ডার্ড ত্রুটির বহিরাগত আউটপুট (উদাহরণস্বরূপ সংকলক সতর্কতা) কেবলমাত্র আইনী যদি তা ত্রুটিযুক্ত হয় বা না হয় তা নির্বিশেষে শর্তহীনভাবে উত্পাদিত হয়।
আপনার প্রোগ্রামটি কেবল একটি অপারেটিং সিস্টেমে কাজ করা প্রয়োজন (যদিও এটি অবশ্যই একটি হতে হবে যার উপরে উল্লিখিত ত্রুটিগুলি বোঝায়; আমি তাদের বেশিরভাগ মাল্টিটাস্কিং গ্রাহক অপারেটিং সিস্টেমগুলিতে কাজ করার জন্য সাধারণ রাখার চেষ্টা করেছি, তবে ওয়েদার অপারেটিং সিস্টেমগুলি ভাল হতে পারে এই চ্যালেঞ্জ থেকে বাদ)। যদি আপনার প্রোগ্রামটি ননপোর্টেবল হয়, আপনার জমা দেওয়ার শিরোনামে এটি চালনার দরকার অনুমানগুলি তালিকাবদ্ধ করুন।
এই কাজটি প্রতিটি ভাষায় সম্ভব নাও হতে পারে (প্রতিটি ভাষা কোনও প্রোগ্রামকে কাস্টম উপায়ে আউটপুট ত্রুটিগুলি পরিচালনা করতে দেয় না)। আপনার যেখানে এমন ভাষা চয়ন করা উচিত।
আপনার প্রোগ্রাম / ফাংশনটি কাজ করে তা নিশ্চিত করুন! তারা যা বলে তারা যা করে তা করার জন্য কেবল লাইব্রেরির ফাংশনগুলির ডকুমেন্টেশনে বিশ্বাস করবেন না। সাধারণ আউটপুট ফাংশনগুলির ত্রুটি পরিচালনার প্রায়শই অনুশীলনে ভাঙ্গা দেখা দেয়, এমনকি যদি ফাংশনগুলি তত্ত্বটিতে ত্রুটিগুলি পরিচালনা করার দাবি করে।
পরীক্ষার মামলা
bash
লিনাক্স ব্যবহার করে উপরের প্রতিটি ত্রুটি শর্তের অনুকরণ করার একটি উপায় এখানে রয়েছে (আপনাকে লিনাক্স ব্যবহার করতে হবে না তবে এটি পরীক্ষা করার পক্ষে এটি সম্ভবত সহজতম পদ্ধতি):
your_program_here >&- # nonexistent stdout
your_program_here > /dev/full # out of disk space
mkfifo test # note: change "test" to a filename that isn't in use
true < test &
your_program_here > test # connecting to a program that doesn't want input
rm test # clean up the FIFO we used earlier
প্রথম দুটি টেস্টকেস হ'ল ডিটারমিনিস্টিক। শেষটি নয় (এটি একটি জাতি শর্তের উপর নির্ভর করে); পরীক্ষার উদ্দেশ্যে, আমি আপনার প্রোগ্রামটি শুরু করার সাথে সাথে ত্রুটিটি প্রকাশ করার উপায়ের সাথে জাতিটির অবস্থাটি ঠিক করা হয়েছে কিনা তা নিশ্চিত করার জন্য প্রকৃত আউটপুটটিকে স্ট্যান্ডার্ড আউটপুটে যোগ করার পরামর্শ দিচ্ছি।
বিজয় শর্ত
এটা একটা কোড-গলফচ্যালেঞ্জ, তাই খাটো আরও ভাল। (প্রায়) সর্বদা হিসাবে, আমরা বাইটে প্রোগ্রামটির দৈর্ঘ্যটি পরিমাপ করছি।
sleep 1 < test; (sleep 2; your_program_here) > test
?