Deskripsi:
Diberikan x
dan y
posisi dua lingkaran bersama dengan mereka radii
, output area persimpangan dua lingkaran.
Memasukkan :
Anda akan diberikan input berikut:
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
Metode input:
([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
Keluaran:
Integer non-negatif (tidak ada desimal) sama dengan luas persimpangan dua lingkaran.
Sebuah string sama dengan bilangan bulat yang disebutkan di atas.
Catatan :
- Output harus> = 0, karena area tidak boleh negatif.
- Dalam kasus pembulatan desimal ke bilangan bulat terdekat
Contoh:
([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
Kriteria pemenang:
Ini adalah kode-golf sehingga kode terpendek dalam byte untuk setiap bahasa menang.
Saran :
- Berikan tautan TIO sehingga dapat diuji.
- Berikan penjelasan agar orang lain dapat memahami kode Anda
Ini hanya saran dan tidak wajib.
code-golf
math
array-manipulation
geometry
Muhammad Salman
sumber
sumber
answer must be positive
keanswer must be >= 0
- Jika lingkaran tidak berpotongan (seperti pada contoh 4, 7, 10) maka jawaban yang benar adalah 0, yang terakhir saya periksa tidak positif.Jawaban:
Jelly ,
27 25 2422 byteProgram lengkap yang menerima daftar dua pusat sebagai koordinat kompleks dan jari-jari yang mencetak hasilnya (sebagai tautan diadik, ia mengembalikan daftar panjang 1).
Cobalah online!
Untuk mengambil dua koordinat sebagai pasangan tambahkan
Uḅı
ke tautan utama, seperti ini .Bagaimana?
sumber
[[x1,y1],[x2,y2]]
tetapi biaya 3 byte. (Perhatikan juga itu-7+13j
adalah angka :)) -[-7+13j,-25+-5j]
sesuai dengan contoh yang kembali132
,[-7, 13], [-25, -5], 17
JavaScript (ES6), 72 byte
Formula alternatif disarankan oleh @ceilingcat
Mengambil input sebagai 5 parameter berbeda (x0, y0, x1, y1, r) .
Cobalah online!
JavaScript (ES7),
818077 byteDisimpan 3 byte berkat @Neil
Mengambil input sebagai 5 parameter berbeda (x0, y0, x1, y1, r) .
Cobalah online!
Bagaimana?
Ini didasarkan pada formula umum dari MathWorld untuk lingkaran yang tidak kongruen:
di mana d adalah jarak antara dua pusat dan r dan R adalah jari-jari.
Dengan R = r , ini disederhanakan menjadi:
Dan dengan r '= 2r :
Catatan : Jika d lebih besar dari 2r ,
Math.acos()
akan kembaliNaN
, yang dipaksakan ke 0 ketika shift kanan diterapkan. Ini adalah hasil yang diharapkan, karena d> 2r berarti tidak ada persimpangan sama sekali.sumber
d*(r*r-d*d)**.5
menghemat 3 byte.with(Math)
dan memindahkan definisid
menyimpan 2 byte lebih banyak.Mathematica
66 5751 byteA
Disk[{x,y},r]
mengacu pada wilayah yang dibatasi oleh lingkaran yang dipusatkan{x,y}
dengan jari-jarir
.RegionIntersection[a,b]
mengembalikan persimpangan daeraha
,b
.Area
mengambil area.IntegerPart
membulatkan ke bilangan bulat terdekat.sumber
IntegerPart
denganFloor
.Floor[ ]
).Bahasa Wolfram (Mathematica) , 50 byte
Cobalah online!
sumber
Floor
. Tentu saja!C (gcc) ,
83 79 7166 byteCobalah online!
sumber
Haskell , 83 byte
Hanya formula, sungguh. Ketik harus dinyatakan sebagai
Int
untuk NaN untuk memetakan ke 0 denganfloor
.Cobalah online!
sumber
JavaScript (Node.js) , 69 byte
Cobalah online!
Pendek tidak yakin apakah bisa bermain golf lebih jauh. Setiap saran dipersilahkan
sumber
Perl 6 , 56 byte
Cobalah online!
Mengambil koordinat lingkaran sebagai bilangan kompleks.
sumber
Excel, 119 byte
Input diambil sebagai 5 variabel terpisah:
sumber
Python 2 , 109 byte
Cobalah online!
Cukup mudah. Dapatkan jarak antar lingkaran, dan gunakan
R=2r
sebagai substituit dalam persamaan.d<R and
untuk korsleting jika lingkaran tidak tumpang tindih.sumber
Pyth , 63 byte
Suite uji
Mengambil input sebagai rangkap tiga yang terdiri dari dua ganda dan satu angka.
sumber
T-SQL, 122 byte
(line break hanya untuk keterbacaan).
Menggunakan dukungan MS SQL untuk geometri spasial .
Sesuai standar IO kami , SQL dapat mengambil input dari tabel t yang sudah ada dengan
int
bidang r danvarchar
bidang a dan b yang berisi koordinat dalam format(x y)
.Pernyataan saya mem-parsing koordinat sebagai
POINT
objek geometri diperluas oleh jari-jari menggunakan fungsiSTBuffer()
, kemudian mengambil yangSTIntersection()
diikuti olehSTArea()
.Jika saya diizinkan untuk memasukkan objek geometri yang sebenarnya dalam tabel sebagai gantinya, maka kode saya menjadi hampir sepele (48 byte):
sumber