আমি একজন সময়ের ভ্রমণকারী এবং আমি সময়ের সাথে সময় কাটিয়ে উঠি। আমি বিশেষত সেই মুহুর্তগুলিকে খুব পছন্দ করি যখন ঘড়ির হাত 12 টি পেরিয়ে যায় বা যখন আমি আমার ক্যালেন্ডারের পরবর্তী পৃষ্ঠায় চলে যাই বা যখন সবাই চিৎকার করে বলে "শুভ নববর্ষ!"
অগ্রগতি বারের আকারে শেষ মুহুর্ত থেকে পরের মুহূর্তে আমি কতটা দূরে রয়েছি তা দেখানোর জন্য দয়া করে আমার জন্য একটি প্রোগ্রাম লিখুন। উদাহরণস্বরূপ, যদি আমি বলি সময়টি 09:12 হয় তবে এটি এটি মুদ্রণ করা উচিত:
09:00 ####---------------- 10:00
আমি যদি এটি বলি যে মাসটি 1982 সালের মে হয়, তবে এটি মুদ্রণ করা উচিত:
1982-01 #######------------- 1983-01
আমি কি একজন সময় ভ্রমণকারী উল্লেখ করেছি? আমি 0 এডি এর প্রথম মিলি সেকেন্ড থেকে 9999 এডি এর সর্বশেষ মিলি সেকেন্ডে যে কোনও জায়গায় ভ্রমণ করি, সুতরাং প্রোগ্রামটির যে কোনও তারিখ এবং সময়টিকে এই ব্যাপ্তিতে পরিচালনা করতে হবে।
ইনপুট
ইনপুট নিম্নলিখিত ফর্ম্যাটগুলির মধ্যে একটিতে হবে:
YYYY-MM-DDThh:mm:ss.sssYYYY-MM-DDThh:mm:ssYYYY-MM-DDThh:mmYYYY-MM-DDThhYYYY-MM-DDYYYY-MM
এগুলি হ'ল একমাত্র বিন্যাস যা পরিচালনা করা প্রয়োজন। প্রতিটি অংশে ঠিক অঙ্কিত অঙ্কের সংখ্যা থাকবে যার অর্থ ভগ্নাংশের সেকেন্ডে পিছনে জিরো থাকতে পারে (যেমন
.120, কখনই নয়.12)।Tএকটি আক্ষরিক চিঠি "টি" সময় থেকে তারিখ delimiting হয়। ঘন্টা 24 ঘন্টা সময় থাকে onমাস এবং দিন 1-ভিত্তিক (নীচে এটি আরও)।
অবৈধ এবং সীমার বাইরে ইনপুটগুলি হ্যান্ডেল করা দরকার না।
প্রোগ্রামারের বিবেচনার ভিত্তিতে, ইনপুটটির একটি একক ট্রেলিং নিউলাইন থাকতে পারে।
অগ্রগতি বার গণিত
প্রোগ্রামটি প্রদত্ত ইনপুটটিতে সর্বনিম্ন- এবং দ্বিতীয়-সর্বনিম্ন-তাত্পর্যপূর্ণ ইউনিটগুলির সাথে সম্পর্কিত। উদাহরণস্বরূপ, যদি ইনপুটটিতে দিনের-স্তরের যথার্থতা থাকে (যেমন,2016-12-14 ), অগ্রগতি বারটি নির্দেশ করে যে ইনপুট মাসের দিনগুলির অনুপাতটি কিসের বিপরীতে চলে গেছে।
অগ্রগতি বারে 20 টি ইউনিট (অক্ষর) থাকবে এবং প্রতিনিধিত্ব করা অনুপাতটি 1 ⁄ 20 এর নিকটতম বৃদ্ধিতে গোল হবে । উদাহরণস্বরূপ, প্রদত্ত 2016-12-14T12:28, অগ্রগতি দণ্ডটি 20 টি ইউনিটের "ভরাট" রাউন্ড ( 28 ⁄ 60 × 20) = 9 দেখাবে ।
1 ভিত্তিক মাস এবং দিন
যদিও 1 ডিসেম্বর দিন (উদাহরণস্বরূপ) হল 01মধ্যে 2016-12-01, হিসাব উদ্দেশ্যে এটা মাসের 0th দিন, কারণ ছেঁটে ফেলা ইউনিট দিনের 0th ঘণ্টা 0th মিনিটের 0th মিলিসেকেন্ডে পরোক্ষভাবে। অন্য কথায়, 2016-12-01হয় 0 / 31 ডিসেম্বর মাধ্যমে উপায় এবং 2016-12-02হয় 1 / 31 , ইত্যাদি।
অনুরূপভাবে, 2016-01জানুয়ারি 0th দিনের 0th মিলিসেকেন্ডে, তাই গণনার এটা হয় 0 / 12 , যার মানে 2016-12হল 11 / 12 ।
হ্যাঁ, এর অর্থ মাস এবং দিনগুলি কখনই পুরোপুরি অগ্রগতি বার পূরণ করে না।
পৃথক মাসের সময়কাল এবং লিপ বছর years
বিভিন্ন মাসে বিভিন্ন সংখ্যক দিন থাকে এবং আউটপুটটি অবশ্যই প্রতিফলিত হয় le লিপ বছর সহ। 6 ফেব্রুয়ারী, 2017 এর অগ্রগতি বারটি 6 ফেব্রুয়ারী, 2016 (বা উভয় বছরের 6 জানুয়ারীর) জন্য অগ্রগতি বারের চেয়ে আলাদা হবে।
বিবিধ
- সময় ভ্রমণকারীরা প্রলেপটিক গ্রেগরিয়ান ক্যালেন্ডার ব্যবহার করেন । টিএল; ডিআর: 1752-তে হারিয়ে যাওয়া দিনের মতো বিশেষ কোনও মামলা নেই । ইনপুটটিতে খ্রিস্টাব্দে তারিখগুলি অন্তর্ভুক্ত থাকবে
- সময়ের যাত্রীরা দিবালোকের সঞ্চয়কে উপেক্ষা করে।
- লিপ সেকেন্ডের জন্য অ্যাকাউন্টটির প্রয়োজন নেই প্রোগ্রামটি, তবে এটি হতে পারে।
আউটপুট
প্রোগ্রাম (বা ফাংশন) অবশ্যই একটি অনুভূমিক-ভিত্তিক 20-অক্ষরযুক্ত প্রগতি বারটি প্রিন্ট করতে হবে (যা "সময় পূরণ করেছে" সময় পেরিয়ে গেছে এবং সময়টি "খোলা" থাকবে। এটি অবশ্যই বাম থেকে ডানে "পূরণ" করবে।
অগ্রগতি বারটির বামে একটি লেবেল থাকা আবশ্যক যা পিরিয়ডের সূচনা গণনা করা হচ্ছে এবং তার ডানদিকে অন্যটি পরবর্তী সময়ের শুরুতে ইনপুট হিসাবে একই ফর্ম্যাটে প্রদর্শিত হবে (তবে যথার্থতার মাত্র দুটি ইউনিট দেখাচ্ছে)। আমাদের উদাহরণের জন্য 2016-12-14বৈধ আউটপুট হবে:
12-01 #########----------- 01-01
এখানে প্রতিটি সম্ভাব্য সময়কালের জন্য বৈধ লেবেল ফর্ম্যাটগুলি রয়েছে:
- মাস:
YYYY-MM - দিন:
MM-DD - ঘন্টার:
DDThh - মিনিট:
hh:mm - সেকেন্ড:
mm:ss - মিলিসেকেন্ড:
ss.sss
কোনও অতিরিক্ত ইউনিট লেবেলে অন্তর্ভুক্ত করা যাবে না এবং কোনওটি বাদ পড়তে পারে না।
আউটপুট নোট
- অগ্রগতি বারের "ভরাট" ইউনিটগুলিতে একটি
#চরিত্রের প্রতিনিধিত্ব করা হবে । "উন্মুক্ত" ইউনিটগুলি প্রতিনিধিত্ব করবে-। - অগ্রগতি বার এবং প্রতিটি লেবেলের মধ্যে অবশ্যই এক স্থান থাকতে হবে।
- শীর্ষস্থানীয় বা পিছনের স্থান এবং / অথবা একটি একক চলন্ত নতুন লাইন অনুমোদিত।
জয়লাভ
এটি কোড-গল্ফ । বাইটস মধ্যে সংক্ষিপ্ত কোড। স্ট্যান্ডার্ড বিধি প্রয়োগ। স্ট্যান্ডার্ড লুফোলস নিষিদ্ধ।
উদাহরণ
Input Output
----------------------- -------------------------------------
2016-12-12T12:17 12:00 ######-------------- 13:00
2016-12-12 12-01 #######------------- 01-01
0000-01-01T00:00:00.000 00.000 -------------------- 01.000
0000-01-01T00:00 00:00 -------------------- 01:00
1899-12-31T23 31T00 ###################- 01T00
1899-12-31 12-01 ###################- 01-01
1899-12 1899-01 ##################-- 1900-01
1982-05-15T17:15 17:00 #####--------------- 18:00
1982-05-15T17 15T00 ##############------ 16T00
1982-05 1982-01 #######------------- 1983-01
9999-12-31T23:59:59.999 59.000 #################### 00.000
9999-12 9999-01 ##################-- 10000-01
2000-01-06 01-01 ###----------------- 02-01
2000-02-06 02-01 ###----------------- 03-01
2001-02-06 02-01 ####---------------- 03-01
1742-09-10 09-01 ######-------------- 10-01