চ্যালেঞ্জ: যে কোনও ভাষায় একটি ডেলাকার্ট সংখ্যা গণনা কার্যকর করুন। সংক্ষিপ্ততম কোড জিতেছে।
স্বতন্ত্র পূর্ণসংখ্যার একটি প্রদত্ত বর্গাকার ম্যাট্রিক্সের জন্য 1..n² (সম্ভাব্য পার্শ্ব দৈর্ঘ্য এন 3 এবং 27 মধ্যে অন্তত), তার Delacorte নম্বর পণ্য এর সমষ্টি GCD (ক, খ) × distance² (ক, খ) প্রতিটি স্বতন্ত্র জন্য পূর্ণসংখ্যার জোড় {a, b}}
নিম্নলিখিত উদাহরণটি 160 এর একটি ডেলাকার্ট সংখ্যা সহ 3 × 3 বর্গ দেখায়।
3 2 9
4 1 8
5 6 7
এই স্কোয়ারে আমাদের গণনা করার জন্য 36 টি স্বতন্ত্র জুড়ি রয়েছে, উদাহরণস্বরূপ জোড়া 4 এবং 6: গিসিডি (4, 6) × দূরত্ব ² (4, 6) = 4
পরীক্ষার জন্য আরেকটি উদাহরণ বর্গ - এর 5957 এর ডেলাওর্ট সংখ্যা রয়েছে:
10 8 11 14 12
21 4 19 7 9
5 13 23 1 16
18 3 17 2 15
24 22 25 6 20
ডেলাকার্ট নম্বরগুলি এই প্রোগ্রামিং প্রতিযোগিতা থেকে নেওয়া হয়েছে - আরও তথ্যের জন্য এখানে দেখুন ... প্রতিযোগিতাটি 2015 সালের জানুয়ারিতে শেষ হয়েছে It এটি দুর্দান্ত মজাদার ছিল!
নিয়মাবলী:
প্রয়োজনীয় লাইন 1 টি চর হিসাবে গণনা বিরতি দেয়। আপনি আপনার গল্ফযুক্ত সমাধানটি লাইন বিরতিতে পোস্ট করতে পারেন তবে সেগুলি কেবল সেই ভাষায় প্রয়োজন হলে গণনা করা হয়।
আপনি কীভাবে ইনপুট এবং আউটপুট পরিচালনা করবেন তা চয়ন করতে পারেন এবং আপনাকে স্ট্যান্ডার্ড-অন্তর্ভুক্ত বা প্রধান ফাংশন শিরোনামের মতো আপনার ভাষার প্রয়োজনীয় কাঠামো গণনা করতে হবে না । এই সি # উদাহরণের মতো কেবল আসল কোড গণনা করা (শর্টকাট / ওরফে সংজ্ঞা সহ):
namespace System
{
using Collections.Generic;
using I=Int32; //this complete line counts
class Delacorte
{
static I l(I[]a){return a.Length;} //of course this complete line counts
static void CalculateSquare(int[] a, out int r)
{
r=0;for(I i=l(a);i-->0;)r+=a[i]; //here only this line counts
}
static void Main()
{
int result;
CalculateSquare(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, out result);
Console.Write(result); //should output 140 for the example
Console.ReadKey();
}
}
}
আপনি স্কোয়ারটিকে 2-মাত্রিক অ্যারে বা প্রম্পট থেকে বা স্ট্রিং বা কোনও মানক সংগ্রহের ধরণ হিসাবে ইনপুট করতে পারেন। একটি দ্বি-মাত্রিক অ্যারে হ'ল একমাত্র উপায় যা আপনি বর্গক্ষেত্রের পাশের দৈর্ঘ্যটি গণনা না করে।
প্রকৃত কাজের জন্য একটি উপ-ফাংশন প্রয়োজন হয় না, আপনি সরাসরি কোড মেইন () এর মধ্যেও রাখতে পারেন।
আরও বেশি প্রস্তুতির জন্য এখানে বিনামূল্যে অনুমতি দেওয়া হয়েছে:
using System;
unsafe class Delacorte
{
static void CalculateSquare(int* a, out int r)
{
r=0;while(*a>0)r+=*a++; //only this line counts
}
static void Main()
{
var input = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; //adding a terminator
int result;
fixed (int* a = &input[0]) //necessary in C#
CalculateSquare(a, out result);
Console.Write(result);
Console.ReadKey();
}
}
আপনার দীর্ঘ প্রস্তুতি এই নিয়মের অনুধাবনে রয়েছে কিনা তা নিশ্চিত না হলে বা প্রতারণা বলা যেতে পারে, কেবল জিজ্ঞাসা করুন :)
using
উদাহরণটি দেখুন - এটি কোনও লাইব্রেরি অন্তর্ভুক্ত করতে ব্যবহৃত হয় কারণ অন্যথায় আপনি কোনও ফাংশন কল করতে পারেন নি, এটি নিখরচায়। আপনি যদি এটির জন্য কোনও সংক্ষিপ্ত উপন্যাস সংজ্ঞায়িত করতে ব্যবহার করেন তবে পুরো নির্দেশ গণনা করা হয়।