ভার্টেক্স সংযোগগুলি যোগ করুন


14

ধরা যাক আপনার ইতিবাচক পূর্ণসংখ্যা N রয়েছে । প্রথমে একটি নিয়মিত বহুভুজ তৈরি করুন, এতে এন রয়েছে প্রতিবেশী প্রান্তের মধ্যবর্তী দূরত্ব 1 টির সাথে শীর্ষে রয়েছে, তারপরে প্রতিটি শীর্ষবিন্দু থেকে প্রতিটি অন্যান্য শীর্ষবিন্দুর সাথে লাইনগুলি সংযুক্ত করুন। শেষ অবধি, একসাথে যোগ করা সমস্ত লাইনের দৈর্ঘ্য গণনা করুন।

উদাহরণ

ইনপুটটি এন = 6 দিয়ে দেওয়া হয়েছে , প্রতিটি শীর্ষবিন্দুটি অন্যান্য শীর্ষে দিয়ে যুক্ত করে রেখাগুলি সহ একটি ষড়ভুজ তৈরি করুন ।

ষট্কোণ

আপনি দেখতে পাচ্ছেন, মোট 6 টি বর্ডার লাইন (দৈর্ঘ্য = 1), 3 টি রেখার সীমানা দৈর্ঘ্য (দৈর্ঘ্য = 2) এবং 6 টি অন্যান্য রেখা রয়েছে যা আমরা পাইথাগ্রাস উপপাদ ব্যবহার করে দৈর্ঘ্যের জন্য গণনা করতে পারি , যা হলো

আমরা যদি একসাথে লাইনের দৈর্ঘ্য যোগ করি তবে আমরা (6 * 1) + (3 * 2) + (6 * 1.732) = 22.392 পাই

অতিরিক্ত তথ্য

যেহেতু 2 বা তার চেয়ে কম উল্লম্ব বিশিষ্ট কাঠামোগুলি বহুভুজ হিসাবে বিবেচিত হচ্ছে না, NaNএন = 1 এর জন্য আউটপুট 0 (বা যেহেতু একক প্রান্তের মধ্যকার দূরত্ব খুব বেশি বোঝা যায় না), যেহেতু একটি একক অনুভূমিকটি অন্য উল্লম্ব সাথে সংযুক্ত হতে পারে না, এবং 1 এন = 2, যেহেতু দুটি অনুভূমিক একক লাইনের সাথে সংযুক্ত রয়েছে।

ইনপুট

কোনও পূর্ণসংখ্যার এন, যেকোন যুক্তিসঙ্গত বিন্যাসে।

আউটপুট

সমস্ত লাইনের দৈর্ঘ্য একত্রে সংশ্লেষ করা হয়, কমপক্ষে 3 দশমিক স্থানে সঠিক, হয় ফাংশন রিটার্ন হিসাবে বা সরাসরি মুদ্রিত হয় stdout

বিধি

  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড, কোনও ভাষায়, জিতে।

শুভকামনা!

পরীক্ষার কেস

(Input) -> (Output)
1 -> 0 or NaN
2 -> 1
3 -> 3
5 -> 13.091
6 -> 22.392

1
আমাদের কি সত্যিই সামলানো উচিত 1? আমার বর্তমান এন্ট্রি nanউদাহরণস্বরূপ শূন্যের চেয়ে ফিরে আসবে এবং এর জন্য কেবল বিশেষ কেসিং লাগবে।
জোনাথন অ্যালান

1
@ জোনাথান অ্যালান আপনার উত্তরটি দেখার পরে আমি এটি সম্পর্কে ভেবেছিলাম, nanখুব ভাল, কারণ একক ভার্স্টিক্সের মধ্যে দূরত্ব কোনওভাবেই বোঝা যায় না।
ইয়ান এইচ।

6
আপনি সম্ভবত ত্রুটি খুব নিক্ষিপ্ত হওয়ার জন্য অনুমতি দেওয়া উচিত n=1আমি মনে করি।
জোনাথন অ্যালান

Nআউটপুটগুলি বড় হয় এবং ভাসমানগুলি কম সুনির্দিষ্টভাবে পায় বলে since দশমিক দশমিক দশমিক জায়গাগুলির উপরের বাউন্ড ছাড়া কী বোঝায় তা বলা শক্ত ।
xnor

@xnor যতক্ষণ না এটি কোনও যুক্তিসঙ্গত ইনপুট N এর জন্য 3 দশমিক স্থান পর্যন্ত সুনির্দিষ্ট হয় , এর জরিমানা ফলাফল বিশাল সংখ্যার জন্য কম সুনির্দিষ্ট হয়।
ইয়ান এইচ।

উত্তর:


13

পাইথন 3 ( সিম্পি সহ ) ,  61 60 58 54  48 বাইট

-6 (এমনকি যদি আমাদের হ্যান্ডেল করার প্রয়োজন না হয় তবে -10 n=1) ধন্যবাদ xnor (আরও ত্রিকোণমিতিক সরলকরণ প্লাস 1 এর প্রান্ত কেস পরিচালনা করতে আরও গল্ফিং এবং একটি (এখন অপ্রয়োজনীয়) floatcast ালাই চালিয়ে প্রথম বন্ধনী সংরক্ষণ করুন ) ধন্যবাদ।

আশা করি কোনও তৃতীয় পক্ষের লাইব্রেরি নেই? হ্যাঁ!! তবে আসুন জিনিসগুলি ঘূর্ণায়মান ...

lambda n:1%n*n/2/(1-cos(pi/n))
from math import*

এটি অনলাইন চেষ্টা করুন!

এটি একটি দৈর্ঘ্যের যোগফলের জন্য একটি সূত্র ব্যবহার করে যদি বহুভুজ কোনও একক বৃত্তের ভিতরে খোদাই করা থাকে, n*cot(pi/2/n)/2এবং সেই কর্ড দৈর্ঘ্যের পাপ দ্বারা বিভাজন করে পাশের দৈর্ঘ্যের এক হওয়ার জন্য ফলাফলটিকে একটিতে সামঞ্জস্য করে sin(pi/n)

প্রথম সূত্রটি n-1এক কোণ থেকে বেরিয়ে আসা সমস্ত তির্যক কর্ডের দৈর্ঘ্যের বিবেচনা করে অর্জিত হয় যা দৈর্ঘ্যের sin(pi/n)(আবার) sin(2*pi/n), ..., sin((n-1)pi/n)। এর যোগফলটি হল cot(pi/2/n), এখানে nকোণগুলি রয়েছে যাতে আমরা গুণ করি n, তবে তারপরে আমরা সমস্ত কর্ডকে দ্বিগুণ গণনা করেছি, তাই আমরা দুটি দ্বারা বিভক্ত হয়েছি।

ফলস্বরূপ n*cot(pi/2/n)/2/sin(pi/n)তারপর xnor দ্বারা n/2/(1-cos(pi/n))(ধরে রাখা n>1) সরল করা হয়েছিল

... এটি (যতক্ষণ না নির্ভুলতা গ্রহণযোগ্য হবে) এখন আর sympyবিল্ট-ইন mathমডিউলটির (আর math.pi=3.141592653589793) প্রয়োজন নেই।


2
হ্যাঁ! 11 বাইট সংরক্ষণ শীতল সূত্র!
J42161217

1
দেখে মনে হচ্ছে সূত্রটি সহজ হয়েছে n/2/(1-cos(pi/n))
xnor

গুড স্পট @xnor (এতক্ষণ আমরা আউটপুট হতে পারে হিসাবে 0.25জন্য n=1- কিন্তু বিশেষ আবরণ খুব খাটো হতে পারে ...)
জোনাথন অ্যালান

@ জোনাথান অ্যালান হু, অদ্ভুত যে 1/4ফলাফল এটি n=1। এটি দিয়ে প্যাচ করা যায় 1%n*। এছাড়াও, ডান বন্ধনী সরিয়ে সংরক্ষণ করা যাবে floatকরার জন্য ভিতরে float(1-cos(pi/n))। আমি সিম্পি বেশি জানি না, তবে সম্ভবত একটি ভাসা জোর করার একটি গাণিতিক উপায় আছে।
xnor

@ এক্সনোর ধন্যবাদ! (আমি floatসরানো লক্ষ্য করা উচিত )। সিম্পি একটি অভিব্যক্তি প্রকাশ করে - উদাহরণস্বরূপ n=6কোনও উপস্থাপনের সাথে কোনও অভিব্যক্তির ফলাফলের জন্য 3.0/(-sqrt(3)/2 + 1)- একটি ছোট উপায় থাকতে পারে তবে আমি এটি এখনও জানি না।
জোনাথন অ্যালান

7

পাইথন , 34 বাইট

lambda n:1%n*n/abs(1-1j**(2/n))**2

এটি অনলাইন চেষ্টা করুন!

জোনাথন অ্যালান থেকেn/2/(1-cos(pi/n)) সরলীকৃত সূত্রটি ব্যবহার করে । নীল 10 বাইট সংরক্ষণ করেছে তা উল্লেখ করে যে পাইথন একতার শিকড়কে ভগ্নাংশের শক্তি হিসাবে গণনা করতে পারে ।1j

আমদানি ছাড়াই পাইথনের বিল্ট-ইন ট্রিগনোমেট্রিক ফাংশন নেই pi, বা e। পরিবর্তে n=1দেওয়ার জন্য , আমরা প্রিপেন্ড করি ।00.251%n*

কেবল প্রাকৃতিক-সংখ্যা শক্তি ব্যবহার করে একটি দীর্ঘ সংস্করণ:

lambda n:1%n*n/abs(1-(1+1e-8j/n)**314159265)**2

এটি অনলাইন চেষ্টা করুন!


1
শশার মতো ঠান্ডা.
জোনাথন অ্যালান

37 বাইট:lambda n:1%n*n/(1-(1j**(2/n)).real)/2
নিল

@ নীল ওয়াও, পাইথন কেবল unityক্যের শিকড় গণনা করতে পারে।
xnor

ঠিক আছে, এটি ছিল সহজ বিট। আমি জানি না abs()যদিও কি করে।
নিল

@ নীল এটি পরম মান পায় তাই আদর্শ, অর্থাত্ উত্স থেকে দূরত্ব।
জোনাথন অ্যালান

6

এমএটিএল , 16 15 বাইট

t:=ZF&-|Rst2)/s

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

এটি এমন একটি প্রতিশ্রুতি ব্যবহার করে যা এফএফটি (ফাস্ট ফুরিয়ার ট্রান্সফর্ম) ফাংশনটি প্রবর্তন করে এবং এটি চ্যালেঞ্জটির 8 দিনের মধ্যে পূর্বাভাস দেয়।

ব্যাখ্যা

কোডটি এই কৌশলটি (এমএটিএলে অভিযোজিত) unityক্যের শিকড় তৈরি করতে ব্যবহার করে। এগুলি উল্লম্ব অবস্থানগুলিকে জটিল সংখ্যা হিসাবে দেয়, একটানা অনুভূমিকের মধ্যবর্তী দূরত্বকে 1 এ স্বাভাবিক করা হয় না solve এটি সমাধান করার জন্য, সমস্ত জোড়াযুক্ত দূরত্বগুলি গণনার পরে, প্রোগ্রামটি তাদেরকে পর পরের অংশের মধ্যবর্তী দূরত্ব দ্বারা বিভক্ত করে।

t       % Implicit input, n. Duplicate
:       % Range: [1 2 ... n-1 n]
=       % Isequal, element-wise. Gives [0 0 ... 0 1]
ZF      % FFT. Gives the n complex n-th roots of unity
&-|     % Matrix of pairwise absolute differences
R       % Upper triangular matrix. This avoids counting each line twice.
s       % Sum of each column. The second entry gives the distance between
        % consecutive vertices
t2)/    % Divide all entries by the second entry
s       % Sum. Implicit display

1
এটি সুন্দর
জোনা

@ জোনাঃ কমপ্লেক্স নম্বরগুলি এফটিডাব্লু :-)
লুইস মেন্ডো ২

5

ঘাসফড়িং, 25 আদিম (11 উপাদান, 14 তারের)

আমি জিএইচ এবং ল্যাবভিউতে প্রোগ্রামগুলি সম্পর্কে একটি মেটা পোস্ট পড়েছি এবং ভিজ্যুয়াল ভাষাটি পরিমাপ করতে অনুরূপ নির্দেশাবলী অনুসরণ করি।

তৃণমূল প্রোগ্রাম

<null>এন = এর জন্য মুদ্রণ করুন 0, 1, 2, কারণ Polygon Primitive2 বা তার চেয়ে কম প্রান্তের সাহায্যে বহুভুজ তৈরি করা যায় না এবং আপনি খালি রেখার তালিকা পাবেন।

বাম থেকে ডানে উপাদান:

  • Side count স্লাইডার: ইনপুট
  • বহুভুজ আদিম: ক্যানভাসে একটি বহুভুজ আঁকুন
  • বিস্ফোরিত: সেলাইমেন্ট এবং শীর্ষে একটি পললাইন বিস্ফোরণ
  • ক্রস রেফারেন্স: সমস্ত শীর্ষকোষের মধ্যে সামগ্রিক ক্রস রেফারেন্স তৈরি করুন
  • লাইন: সমস্ত জোড়ার মধ্যে একটি রেখা আঁকুন
  • সদৃশ লাইনগুলি মুছুন
  • বক্রের দৈর্ঘ্য
  • (উপরের) যোগফল
  • (নিম্ন) বিভাগ: কারণ Polygon Primitiveব্যাসার্ধের উপর ভিত্তি করে বহুভুজ আঁকুন, আমাদের আকারটি স্কেল করা দরকার
  • গুন
  • প্যানেল: আউটপুট

গণ্ডার স্ক্রিনশট



2

হাস্কেল , 27 বাইট

f 1=0
f n=n/2/(1-cos(pi/n))

এটি অনলাইন চেষ্টা করুন!

আমি কেবল হাস্কেলকে ঘুঘু করেছিলাম, সুতরাং এটি একটি ন্যায্য শিক্ষানবিস গল্ফ হিসাবে প্রমাণিত হয় (এটি, অন্য উত্তরগুলি থেকে সূত্রটি অনুলিপি করে)।

আমি আরও $কোথাও রাখার জন্য অনেক চেষ্টা করেছি কিন্তু সংকলক আমার দিকে চিত্কার করে, তাই এটি আমার কাছে সেরা। : P: P


2

জেলি , 13 12 11 বাইট

জোনাথন অ্যালানের সূত্র ব্যবহার করে (এবং 2 বাইট সংরক্ষণের জন্য তাকে ধন্যবাদ)

ØP÷ÆẠCḤɓ’ȧ÷

এটি অনলাইন চেষ্টা করুন!

আমি সবসময় জেলির প্রতি বেশ মুগ্ধ ছিলাম, তবে এটি খুব বেশি ব্যবহার করি নি, তাই এটি সম্ভবত সহজ রূপ নাও হতে পারে।


ɓআপনার সহায়ক সহায়তাকারীর লিঙ্কটি তেমনভাবে ইনলাইন করতে "যুক্তিযুক্ত অদলবদল ডায়াডিক চেইন পৃথকীকরণ" ব্যবহার করে একটি বাইট সংরক্ষণ করুন :ØP÷ÆẠCḤɓn1×÷
জোনাথন অ্যালান

@ জোনাথন অ্যালান ওহ ধন্যবাদ, আমি এখনও একটি শিক্ষানবিশ এবং জানতাম নতুন চেইন থাকার চেয়ে ভাল উপায় আর সম্ভবত ছিল কিন্তু কীভাবে করা যায় তা জানতাম না
জেফম্যাগমা

ওহ, আমরা হ্রাস, এবং যৌক্তিক এবং , ব্যবহার করে আরেকটিকে বাঁচাতে পারি ȧ: ØP÷ÆẠCḤɓ’ȧ÷:)
জোনাথন অ্যালান

ওহ বাহ ধন্যবাদ ধন্যবাদ আমি সে সম্পর্কে
ভাবিওনি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.