সার্কেল মোড় এলাকা


14

বর্ণনা:

দুটি বৃত্তের দেওয়া xএবং yতাদের পাশাপাশি radiiদুটি বৃত্তের ছেদটির ক্ষেত্রফল আউটপুট দেয়।


ইনপুট :

আপনাকে নিম্নলিখিত ইনপুট দেওয়া হবে:

array 1 = x and y positions of circle a
array 2 = x and y positions of circle b
radius  = radii of the two congruent circles

ইনপুট পদ্ধতি :

([12 , 20] , [20 , 18] , 12)     ---> two array and number
([12 , 20 , 20 , 18] , 12)       ---> array and a number
(12 , 20 , 20 , 18 , 12)         ---> all five numbers
('12 20' , '20 18' , 12)         ---> 2 strings and a number
('12 20 20 18' , 12)             ---> string and a number
('12 20 20 18 12')               ---> one string

আউটপুট:

  • দুটি চেনাশোনা ছেদ করার ক্ষেত্রের সমান একটি অ-নেতিবাচক পূর্ণসংখ্যা (দশমিক নয়)।

  • উপরে উল্লিখিত পূর্ণসংখ্যার সমান একটি স্ট্রিং।

বিঃদ্রঃ :

  • আউটপুট অবশ্যই> = 0 হওয়া উচিত, যেহেতু ক্ষেত্রটি নেতিবাচক হতে পারে না।
  • দশমিক বৃত্তাকার ক্ষেত্রে নিকটতম পূর্ণসংখ্যার ক্ষেত্রে

উদাহরণ:

([0, 0], [7, 0], 5)                   ---> 14

([0, 0], [0, 10], 10)                 ---> 122

([5, 6], [5, 6], 3)                   ---> 28

([-5, 0], [5, 0], 3)                  ---> 0

([10, 20], [-5, -15], 20)             ---> 15

([-7, 13], [-25, -5], 17)             ---> 132

([-12, 20], [43, -49], 23)            ---> 0

জয়ের মানদণ্ড:

এটি তাই প্রতিটি ভাষার জয়ের জন্য বাইটের মধ্যে সংক্ষিপ্ততম কোড।


পরামর্শ:

  • একটি টিআইও লিঙ্ক সরবরাহ করুন যাতে এটি পরীক্ষা করা যায়।
  • একটি ব্যাখ্যা সরবরাহ করুন যাতে অন্যরা আপনার কোড বুঝতে পারে

এগুলি কেবলমাত্র পরামর্শ এবং বাধ্যতামূলক নয়।



2
@ ফ্রাউনফ্রোগ: ক্ষমা করবেন? আপনি কি কথা বলছেন তা সম্পর্কে আমি সচেতন নই? এনভিএম ইন্টারনেটে চেক করুন এবং আমি সমস্যাটির অংশ এটি প্রতিবেদন করে দুঃখিত। ট্যাগটি দেখুন যা গণিত এবং জ্যামিতি বলে। আপনার গণিতে ব্রাশ করা ভাল অজুহাত। আপনি কি মনে করেন. তবে আপনি যদি মতানৈক্য করেন তবে আমি মনে করি আমি প্রশ্নটি আপডেট করব এবং সূত্র যুক্ত করব।
মুহাম্মদ সালমান

@ মুহাম্মাদসালমন এতে পরিবর্তন answer must be positiveকরুন answer must be >= 0- যদি চেনাশোনাগুলি ছেদ না করে (উদাহরণ হিসাবে 4, 7, 10) তবে সঠিক উত্তরটি 0 হয়, যা আমি সর্বশেষে পরীক্ষা করেছিলাম তা ইতিবাচক নয়।
মনসাহেকাটজ-মুভিং 2 কোডি্যাক্ট

@ মানাসেখ্যাটজ: ঠিক আছে, নিশ্চিত সম্পন্ন
মুহাম্মদ সালমান

উত্তর:


3

জেলি ,  27 25 24  22 বাইট

×,²I½
÷ÆAײ}_çHḞ
ạ/çḤ}

জটিল সমন্বয় হিসাবে দুটি কেন্দ্রের একটি তালিকা গ্রহণ এবং একটি ব্যাসার্ধ যা ফলাফল মুদ্রণ করে একটি পূর্ণ প্রোগ্রাম (ডায়াডিক লিঙ্ক হিসাবে এটি দৈর্ঘ্য 1 এর তালিকা দেয়)।

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

জোড়া যুক্ত হিসাবে দুটি সমন্বয় নিতে Uḅı প্রধান লিঙ্কে যুক্ত করুন, এটি

কিভাবে?

×,²I½ - Link 1, get [√(s²d² - s⁴)]: separation of centres, s; diameter, d
 ,    - pair = [s, d]
×     - multiply (vectorises) = [s², sd]
  ²   - square (vectorises) = [s⁴, s²d²]
   I  - incremental differences = [s²d² - s⁴]
    ½ - square root (vectorises) = [√(s²d² - s⁴)]

÷ÆAײ}_çHḞ - Link 2, get intersection area: separation of centres, s; diameter, d
÷          - divide = s/d
 ÆA        - arccos = acos(s/d)
    ²}     - square right = d²
   ×       - multiply = acos(s/d)d²
       ç   - call last Link (1) as a dyad (f(s,d)) = [√(s²d² - s⁴)]
      _    - subtract (vectorises) = [acos(s/d)d² - √(s²d² - s⁴)]
        H  - halve (vectorises) = [(acos(s/d)d² - √(s²d² - s⁴))/2]
         Ḟ - floor = [⌊(acos(s/d)d² - √(s²d² - s⁴))/2⌋]
           -  ...Note: Jelly's Ḟ takes the real part of a complex input so when
           -           the circles are non-overlapping the result is 0 as required

ạ/çḤ} - Main link: centres, a pair of complex numbers, c; radius, r
 /    - reduce c by:
ạ     -   absolute difference = separation of centres, s
      -   ...Note: Jelly's ạ finds the Euclidean distance when inputs are complex
      -            i.e. the norm of the difference
   Ḥ} - double right = 2r = diameter, d
  ç   - call last Link (2) as a dyad (f(s,d))
      - implicit print

শুধুমাত্র সংখ্যা. এবং এটি [-7 + 13 জ, -25 + -5 জ] কী? আমার সেই উদাহরণ নেই। আপনি কি করেছেন তা আপনাকে ব্যাখ্যা করতে হতে পারে?
মুহাম্মদ সালমান

আমি ইতিমধ্যে উত্তরে এটি ব্যাখ্যা করেছি ... তারা জটিল বিমানের সমন্বয়কারী ... আমি [[x1,y1],[x2,y2]]পরিবর্তে এটি করতে পারি তবে এটির জন্য 3 বাইট লাগে । (লক্ষণীয় যে -7+13j হয় একটি সংখ্যা :)) - [-7+13j,-25+-5j]উদাহরণস্বরূপ সাথে সঙ্গতিপূর্ণ যে আয় 132,[-7, 13], [-25, -5], 17
জনাথন অ্যালান

আমি জেলিকে চিনি না তাই আমি এতে হারিয়ে গিয়েছি। এছাড়াও আমি ব্যাখ্যার আগে বার্তাটি পাঠিয়েছি। তবে হ্যাঁ, নিশ্চিত এটি কাজ করে (আমার ধারণা?)
মুহাম্মদ সালমান

এটি প্রতি জেলির সাথে জেলিয়ের কোনও সম্পর্ক নেই, এটি কেবল গণিত। 2-স্পেসের একটি বিন্দু একটি জটিল সংখ্যার সমান ।
জোনাথন অ্যালান

আমি যা বোঝাতে চাইছিলাম তা নয়। সাধারণ ভাষা আমি পড়তে এবং কী চলছে তা বলতে সক্ষম হব। জেলি এবং এই জাতীয় অন্যান্য ভাষা পড়তে ব্যথা হয়।
মুহাম্মদ সালমান

3

জাভাস্ক্রিপ্ট (ES6), 72 বাইট

@ সেলিংক্যাট দ্বারা প্রস্তাবিত বিকল্প সূত্র

5 টি স্বতন্ত্র পরামিতি (x0, y0, x1, y1, r) হিসাবে ইনপুট নেয় ।

with(Math)f=(x,y,X,Y,r)=>-(sin(d=2*acos(hypot(x-X,y-Y)/r/2))-d)*r*r*2>>1

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


জাভাস্ক্রিপ্ট (ES7), 81 80 77 বাইট

সংরক্ষিত 3 বাইট @ নীলকে ধন্যবাদ

5 টি স্বতন্ত্র পরামিতি (x0, y0, x1, y1, r) হিসাবে ইনপুট নেয় ।

(x,y,X,Y,r,d=Math.hypot(x-X,y-Y))=>(r*=2)*r*Math.acos(d/r)-d*(r*r-d*d)**.5>>1

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

কিভাবে?

এটি অ-সংগৃহীত চেনাশোনাগুলির জন্য ম্যাথওয়ার্ল্ডের জেনেরিক সূত্রের ভিত্তিতে :

A = r².arccos((d² + r² - R²) / 2dr) +
    R².arccos((d² + R² - r²) / 2dR) -
    sqrt((-d + r + R)(d + r - R)(d -r + R)(d + r + R)) / 2

যেখানে d দুটি কেন্দ্রের মধ্যবর্তী দূরত্ব এবং r এবং R হল রেডি i

সঙ্গে আর = দ , এই সরলীকৃত হয়:

A = 2r².arccos(d / 2r) + d.sqrt((2r - d) * (2r + d)) / 2

আর আর '= 2 আর সহ :

A = (r'².arccos(d / r') + d.sqrt(r'² - d²)) / 2

নোট : যদি চেয়ে বেশী 2r , Math.acos()ফিরে আসবে NaN, যা করতে বাধ্য করা হয় 0 যখন ডান-শিফট প্রয়োগ করা হয়। এটি প্রত্যাশিত ফলাফল, কারণ d> 2r এর অর্থ হল কোনও ছেদ নেই।


d*(r*r-d*d)**.53 বাইট সঞ্চয়
নীল

ধন্যবাদ! with(Math)সংজ্ঞাটি ব্যবহার করে এবং সরানো dআরও 2 বাইট সংরক্ষণ করে।
আরনাউল্ড

3

গণিত 6666 51 বাইট

Floor@Area@RegionIntersection[#~Disk~#3,#2~Disk~#3]&

A এর ব্যাসার্ধের Disk[{x,y},r]কেন্দ্রবিন্দুতে বৃত্ত দ্বারা চিহ্নিত অঞ্চলকে বোঝায় ।{x,y}r

RegionIntersection[a,b]অঞ্চলে ছেদ ফেরৎ a, bAreaঅঞ্চল নেয়। IntegerPartনিকটতম পূর্ণসংখ্যার দিকে গোল করে।


রেকর্ডটির জন্য, আমি নিজের মতো করায় আমি আলিফালফের জমাটি দেখিনি। তাঁর সংক্ষিপ্ততর (অতএব আরও সফল) প্রবেশ, তবে যাইহোক আমি আমার কাজ ছেড়ে চলেছি।
ডেভিডসি

আপনি প্রতিস্থাপন করতে পারে IntegerPartসঙ্গে Floor
matrix89

@ মধু, ধন্যবাদ আমি যদি ডেডিকেটেড ফ্লোর বন্ধনী ব্যবহার করি, আপনি কি জানেন যে আমি কীভাবে বাইটগুলি গণনা করব?
ডেভিডসি

@ ডেভিডসি প্রত্যেকে ৩ টি বাইট, তাই বাইট গণনার ক্ষেত্রে বিকল্পটি নিরপেক্ষ। এগুলি দরকারী যদি অভিব্যক্তিটির অন্যথায় প্যারেনটাইজিংয়ের প্রয়োজন হয়, যদিও (-1 বাইটের সাথে তুলনা করা Floor[ ])।
অ্যাটিনিট



1

Haskell, , 83 বাইট

(k!l)m n r|d<-sqrt$(k-m)^2+(l-n)^2=floor$2*r^2*acos(d/2/r)-d/2*sqrt(4*r*r-d*d)::Int

ঠিক সূত্র, সত্যিই। প্রকারটি হিসাবে ঘোষণা করতে হবেIntপ্রকারটি NaN এর সাথে মানচিত্রের সাথে 0floor

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





0

এক্সেল, 119 বাইট

=INT(IFERROR(2*E1^2*ACOS(((C1-A1)^2+(D1-B1)^2)^.5/2/E1)-((4*E1^2-((C1-A1)^2+(D1-B1)^2))*((C1-A1)^2+(D1-B1)^2))^.5/2,0))

ইনপুট 5 পৃথক ভেরিয়েবল হিসাবে নেওয়া:

x-coordinate    y-coordinate    x-coordinate    y-coordinate    radius
     A1              B1             C1                D1          E1

0

পাইথন 2 , 109 বাইট

from math import*
a,b,x,y,r=input()
d,R=hypot(x-a,y-b),2*r
print int(d<R and R*r*acos(d/R)-d*sqrt(R*R-d*d)/2)

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

অনেকটাই অকপট. চেনাশোনাগুলির মধ্যে দূরত্ব পান এবং R=2rসমীকরণের বিকল্প হিসাবে ব্যবহার করুন । d<R andচেনাশোনাগুলি ওভারল্যাপ না হলে শর্ট সার্কিটের কাছে।



0

টি-এসকিউএল, 122 বাইট

SELECT FLOOR(Geometry::Parse('POINT'+a).STBuffer(r).STIntersection(
             Geometry::Parse('POINT'+b).STBuffer(r)).STArea())FROM t

(কেবল পঠনযোগ্যতার জন্য লাইন ব্রেক)।

এমএস এসকিউএল এর স্থানিক জ্যামিতির সমর্থন ব্যবহার করে ।

আমাদের আইও মান অনুসারে , এসকিউএল একটি পূর্ব-বিদ্যমান টেবিল টি থেকে intক্ষেত্র আর এবং varcharক্ষেত্রগুলির সাথে একটি এবং বি বিন্যাসে স্থানাঙ্কগুলি সহ ইনপুট নিতে পারে (x y)

আমার স্টেটমেন্টটি জ্যোতিটিক POINTবস্তুগুলি ফাংশনটি ব্যবহার করে ব্যাসার্ধ দ্বারা বিস্তৃত হিসাবে স্থানাঙ্কগুলি পার্স করে STBuffer(), তারপরে STIntersection()অনুসরণ করেSTArea()

এর পরিবর্তে যদি আমাকে টেবিলে আসল জ্যামিতি অবজেক্টগুলি ইনপুট করার অনুমতি দেওয়া হয় তবে আমার কোডটি প্রায় তুচ্ছ (48 বাইট) হয়ে যায়:

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