চ্যালেঞ্জ
অরিগামি (ভাঁজ কাগজ) শিল্পের একটি সৃজনশীল ফর্ম। যতদূর আমি জানি, অরিগামির মাস্টার স্কোয়ার পেপার পছন্দ করেন। আসুন শুরু থেকে শুরু করা যাক - একটি আয়তক্ষেত্রাকার কাগজটিকে বর্গাকারে রূপান্তর করুন।
সুতরাং কাগজটি স্কোয়ারে বিভক্ত। আমরা বৃহত্তম স্কোয়ারটি সরিয়ে ফেলি যা ধাপে ধাপে বর্তমান আকারের সাথে একটি ছোট প্রান্ত ভাগ করে দেয় (নীচের চিত্রটি দেখুন) shape এবং যদি এক ধাপের পরে অবশিষ্ট অংশটি কম বা সমান হয় 0.001 * (area of the original paper)
তবে কাগজটি আর ভাগ করা যায় না। এটা সম্ভব যে কিছুই শেষ হয় না।
আপনার কাজটি প্রক্রিয়া চলাকালীন কত স্কোয়ার তৈরি করা হয় তা গণনা করা। শেষ ধাপে বর্গ যা কাগজকে বিভক্ত করতে অক্ষম করে তোলে তাকে আউটপুটে গণনা করা হয়।
উদাহরণ ( 1.350
প্রস্থ / উচ্চতার একটি কাগজ ), আউটপুট 10:
ইনপুট এবং আউটপুট
ইনপুট: আয়তক্ষেত্রাকার পত্রিকাটির জন্য প্রস্থ / উচ্চতা অনুপাত, থেকে এক দশমিক (অথবা ডট ছাড়া একটি পূর্ণসংখ্যা) 1.002
থেকে 1.999
একটি সংক্ষিপ্ত ধাপ 0.001
। আপনি অনুপাত বর্ণনা করে অন্য কোনও যুক্তিসঙ্গত বিন্যাসও ব্যবহার করতে পারেন। আপনার উত্তরে এটি উল্লেখ করুন।
আউটপুট: বর্গ গণনা, একটি পূর্ণসংখ্যা।
উদাহরণ I / O
পৃষ্ঠাটি পরিষ্কার রাখার জন্য একটি ম্যাপিং ফর্ম্যাট ব্যবহার করা হয়, যখন আপনার কোডটির কোনও তালিকা ইনপুট সমর্থন করতে বা ম্যাপিং ফাংশন হওয়ার দরকার নেই।
1.002 => 251
1.003 => 223
1.004 => 189
1.005 => 161
1.006 => 140
1.007 => 124
1.008 => 111
1.009 => 100
@ লুইস মেন্ডোকে ধন্যবাদ, উত্তরের গ্রাফ এখানে।
মন্তব্য
- এটি একটি কোড-গল্ফ তাই সংক্ষিপ্ততম কোডের জয়
- মান ফাঁকগুলিতে মনোযোগ দিন
- কীভাবে ইনপুট এবং আউটপুট মোকাবেলা করবেন তা সিদ্ধান্ত নেওয়ার স্বাধীনতা কিন্তু তাদের মানক সীমাবদ্ধতা অনুসরণ করা উচিত।
যাইহোক ...
- চ্যালেঞ্জ সম্পর্কে আপনার কাছে কিছু অস্পষ্ট থাকলে মন্তব্য করুন
- আপনি যদি কোনও গল্ফিং ভাষা ব্যবহার করেন তবে ব্যক্তিগতভাবে আমি উত্তর দিয়েছি যে আপনার উত্তরটিতে একটি ব্যাখ্যা রয়েছে
- @ গ্রেগমার্টিনকে ধন্যবাদ, চ্যালেঞ্জের জন্য একটি ভাল গাণিতিক ব্যাখ্যার জন্য তাঁর উত্তরটি পড়ুন।
উদাহরণ কোড
এখানে সি ++ কোডের একটি অদৃশ্য সংস্করণ রয়েছে:
#include <iostream>
#include <utility>
int f (double m)
{
double n = 1, k = 0.001;
int cnt = 0;
k *= m; // the target minimum size
while(m*n >= k)
{
m -= n; // extract a square
if(n > m)
std::swap(n, m); // keep m > n
++ cnt;
}
return cnt;
}
int main()
{
double p;
std::cin >> p;
std::cout << f(p);
return 0;
}
উদাহরণ কোড সম্পর্কিত সমস্ত গণনাগুলির 6 দশমিক অঙ্কের যথার্থতা প্রয়োজন যা অন্তর্ভুক্ত float
।