লক্ষ্য:
এমন একটি ফাংশন লিখুন যা কোনও সংখ্যাকে ইনপুট হিসাবে নেয় এবং আউটপুট হিসাবে সেই সংখ্যার জন্য একটি সংক্ষিপ্ত হাতের রোম্যান অঙ্ক দেয়।
রোমান সংখ্যা চিহ্ন:
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1,000
আমি যখন "সংক্ষিপ্ত হাতের রোমান সংখ্যক" বলি তখন তার অর্থের উদাহরণের জন্য, 1983 উপস্থাপনের জন্য রোমান অঙ্কটি সন্ধান করা বিবেচনা করি, কারণ এটিই আমার জন্ম হয়েছিল year একটি বিকল্প হ'ল এটি সাধারণ পদ্ধতিতে (10 টি বর্ণ):
1983 = এমসিএমএলএক্সএক্সএক্সআইআইআই = (1000 - 100 + 1000 + 50 + 30 + 3)
অন্য বিকল্পটি হ'ল এটি স্বল্প হাতের উপায়ে করা (6 টি অক্ষর):
1983 = এমএক্সভিআইআইএম = (1000 - (10 + 10) + 1000 + 3)
আপনি কি জানেন এর মানে কি?!?!!?? আমি রোমান হলে আমি প্রতিবার আমার জন্ম তারিখটি লিখতে পারলে 4 টি অক্ষর বাঁচাতে পারতাম! ওয়াট ওয়াট !!
যাইহোক, উত্তেজনায় আমি নিজের থেকে এগিয়ে যাওয়ার আগে, আমার লেখার একটি প্রশ্ন রয়েছে, তাই আমার সম্ভবত শর্ট-হ্যান্ড রোমান সংখ্যার নিয়মটি সংজ্ঞায়িত করা উচিত তাই আমরা সবাই একই পৃষ্ঠায় রয়েছি:
স্বল্প হাতে রোমান সংখ্যার নিয়ম:
- বিবেচনা করার মতো আর কোনও অক্ষর না পাওয়া পর্যন্ত সর্বদা বাম থেকে ডানে প্রতীকগুলি বিবেচনা করুন।
- যদি বর্তমান প্রতীকটির ডানদিকে কোনও উচ্চ-মূল্যবান চিহ্ন থাকে না:
- এই রোমান সংখ্যার চলমান মোটটিতে বর্তমান প্রতীকটির মান যুক্ত করুন।
- আপনি যে চিহ্নটি বিবেচনা করছেন তার ডানদিকে যদি উচ্চ-মূল্যবান চিহ্ন থাকে:
- বর্তমান প্রতীকের ডানদিকে সর্বনিম্ন সর্বোচ্চ-মূল্যবান প্রতীকটি চিহ্নিত করুন
- সেই প্রতীক পর্যন্ত সমস্ত অক্ষরকে একটি রোমান অঙ্ক হিসাবে বিবেচনা করুন
- এই পদক্ষেপগুলি ব্যবহার করে সেই রোমান অঙ্কের মান গণনা করুন
- এই রোমান অঙ্কের চলমান মোট থেকে সেই রোমান সংখ্যার মান বিয়োগ করুন।
- আপনি সবেমাত্র বিবেচনা করেছেন সেই গোষ্ঠীর পরে পরবর্তী প্রতীকটিতে যান to
- প্রতিটি রোমান অঙ্কের অবশ্যই এতে কমপক্ষে 1 টি চিহ্ন থাকতে হবে।
- এটাই! এই নিয়ম অনুসরণ করে যে কোনও কিছু গ্রহণ করা হবে!
উদাহরণ:
IIIIV = (-(1+1+1+1)+5) = 1 //Don't ask me why you'd want to do this!
VVX = (-(5+5) + 10) = 0 //Who said you couldn't represent 0 with roman numerals?!!?
VVXM = (-(-(5+5) + 10) + 1000) = 1000 //Again...don't ask me why you'd want to do this!
MXIIXMI = (1000-(10-(1+1)+10)+1000+1) = 1983 //Ahhh...such a great year :)
প্রশ্ন বিধি:
একটি ফাংশন তৈরি করুন যা ইনপুট হিসাবে একক সংখ্যা নেয় এবং উপরের নিয়মগুলি ব্যবহার করে আউটপুট হিসাবে সেই সংখ্যার জন্য রোমান অঙ্কটি প্রদান করে। এই ফাংশনের কোড গল্ফস্কোর গণনা করুন ।
example input: 2011 example possible output: MMXI another possible output: MMVVIVV //(2000 + 10 - 4 + 5)
নিয়ম 1 থেকে আপনার ফাংশনটি ব্যবহার করে, -1000 (এটি সঠিক, নেজিটিভ এক-হাজার) এবং 3000 এর মধ্যে রোমান অঙ্কগুলি তৈরি করুন Then তারপরে আপনার মোটক্যারাক্টরকাউন্ট পেতে এই রোমান সংখ্যার চরিত্রের দৈর্ঘ্য যোগ করুন । এখানে স্পষ্ট করার জন্য কয়েকটি সিউডোকোড:
totalCharacterCount = 0; for(currentNumber = -1000; currentNumber <= 3000; currentNumber++){ totalCharacterCount += getRomanNumeral(currentNumber).length; } return totalCharacterCount;
ফাইনালস্কোর = কোডগলফস্কোর + মোটচক্র্যাক্টর उंट ount
- সর্বনিম্ন ফাইনাল স্কোর জয়!
দ্রষ্টব্য: মোট চর্যাকার গণনাটি দশ-হাজার + এ থাকায়, চরিত্র-দৈর্ঘ্যের অ্যালগরিদমকে সর্বোচ্চ অগ্রাধিকার দেওয়া উচিত। কোড-গল্ফ স্কোরগুলি কেবল টাই-ব্রেকার ক্ষেত্রে যদি একাধিক ব্যবহারকারী অনুকূল আলগোরিদম বা একে অপরের নিকটে থাকা অ্যালগরিদমগুলি খুঁজে পান।
শুভকামনা, এবং আগামীকাল রাতে আপনার এমএমএক্সআইআই উদযাপনে মজা করুন !!!
""
শূন্যের জন্য অনুমোদিত কি আমাদের ব্যবহার করতে হবে VVX
বা সমমানের কিছু?
IXV = -(-1 + 10) + 5 = -4
(ডানদিকের জয়), বা IXV = -1 + 10 + 5 = 14
(সর্বোচ্চ মূল্যবান জয়)?
DDDDM
দাঁড়ানো কি-1000
?