ভূমিকা
আমি যখন টিভি দেখছিলাম তখন আমি এই (অকেজো) প্যাটার্নটি পেরিয়ে গিয়েছিলাম। আমি নামক এটি "9 প্যাটার্ন" কারণ প্রথম সংখ্যা ব্যবহার করার জন্য এটি 9. এটি সারকথা, আপনি একটি নম্বর লিখুন ছিল (এর কথা বলা যাক এক্স ), এবং তারপর আপনি ফিরে পাবেন:
- এক্স
- x + ( x / 3) [আসুন এটিকে y বলুন ]
- দুই তৃতীয়াংশ y [আসুন এই জেড কল করুন ]
- z + 1
সুতরাং, আমি যদি এই প্যাটার্নটির ভিতরে 9 নম্বরটি এক্স হিসাবে রাখি তবে এটিই প্রকাশিত হবে:
- 9 ( 9 )
- 12 ( 9 + 9/3 ) [9 ওভার 3 3 হয়, এবং 9 + 3 হয় 12]
- 8 ( 12 বার দ্বি-তৃতীয়াংশ) [12 তৃতীয়টি 4, এবং 4 * 2 8]
- 9 ( 8 + 1 9)
চ্যালেঞ্জ
আমাকে একটি ফাংশন (কোনও প্রোগ্রামিং ভাষায়) লিখুন যা কোনও সংখ্যায় লাগে এবং প্যাটার্নটি ব্যবহার করে একটি পূর্ণসংখ্য অ্যারে আউটপুট করে।
কিছুটা এই psuedo- কোড মত:
function ninePattern(int myInt) returns IntegerArray {
int iterationA = myInt + (myInt / 3);
int iterationB = iterationA * (2 / 3);
int iterationC = iterationB + 1;
IntegerArray x = [myInt, iterationA, iterationB, iterationC];
return x;
}
ব্যাখ্যা
প্রশ্নের স্পেসিফিকেশন সম্পর্কিত মন্তব্যগুলিতে আলোচনা জাগানো হয়েছে। এই বিভাগটি এর কয়েকটি স্পষ্ট করে বোঝানো হয়েছে।
"অক্ষরের চেয়ে বাইটে গণনা করা ভাল"
আমি চরিত্রগুলি বেছে নিয়েছি কারণ (আমার পক্ষে, কমপক্ষে) এটি বিচার করা সহজ হবে। অবশ্যই, আমি এখন এটি পরিবর্তন করতে পারি না। (ইতিমধ্যে প্রচুর উত্তর পোস্ট করা হয়েছে)
"Rounding"
গোলাকার এই ছড়া অনুসরণ করে:
যদি এটি 5 বা ততোধিক হয়, স্কোর
4 বা তার চেয়ে কম হলে বাড়াতে দিন rest
সরলভাবে বলুন, যদি এটি 4.7 বা 3.85 এর মতো কিছু হয় তবে এগুলি যথাক্রমে 5 এবং 4 এ গোল করুন।
উদাহরণ
Input => Result
9 => [9, 12, 8, 9]
8 => [8, 11, 7, 8]
6 => [6, 8, 5, 6]
23 => [23, 31, 21, 22]
159 => [159, 212, 141, 142]
তবে, সংখ্যাগুলি যদি 2.3 বা 10.435446 এর মতো কিছু হয় তবে তাদের যথাক্রমে 2 এবং 10 এ গোল করুন।
"ভাষা সহযোগিতা"
আপনি যদি ফাংশন এবং / অথবা অ্যারে ব্যবহার না করতে পারেন তবে যদি কেবলমাত্র আপনার পছন্দের ভাষা তাদের সমর্থন করে না। যদি এটি হয় (এমনকি এটি আপনার অক্ষরের সংখ্যা বাড়িয়ে তুলবে), আপনার অবশ্যই এটি ব্যবহার করা উচিত ।