Mengingat a, b, c
panjang tiga sisi segitiga, katakan apakah segitiga siku-siku (yaitu memiliki satu sudut sama dengan 90 derajat) atau tidak.
Memasukkan
Tiga nilai integer positif dalam urutan apa pun
Keluaran
Entah tertentu keluaran yang benar ( true
, 1
, yes
, ...) atau output tertentu palsu ( false
, 0
, no
, ...)
Contoh
5, 3, 4 --> yes
3, 5, 4 --> yes
12, 37, 35 --> yes
21, 38, 50 --> no
210, 308, 250 --> no
Aturan
- Input dan output dapat diberikan dalam format apa pun yang nyaman .
- Dalam kiriman Anda, sebutkan nilai-nilai benar dan salah.
- Tidak perlu menangani nilai negatif atau triple edge yang tidak valid
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online agar orang lain dapat mencoba kode Anda!
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
code-golf
math
decision-problem
geometry
mdahmoune
sumber
sumber
21, 38, 5
, karena 21 + 5 <38 . Apakah ini kasus patologis yang disengaja yang harus kita tangani?Jawaban:
Jelly , 5 byte
Cobalah online!
Catatan teknis: Bytes dihitung dalam codepage Jelly.
Penjelasan:
Masalahnya setara dengan diberi tiga angka
a, b, c
, dan menanyakan apakah ada permutasi sedemikian rupaa² + b² = c²
. Ini sama dengan apakah(a² + b² + c²) ÷ 2
salah satua², b² or c²
, jadi program hanya memeriksa itu.sumber
²
danµ
biaya masing-masing dua byte dalam UTF-8, jadi kode Anda sebenarnya 7 byte, bukan 5Python 2 , 37 byte
Cobalah online!
-2 Berkat FlipTack .
-1 Terima kasih kepada Craig Gidney .
Keluaran melalui kode keluar (
0
= false,1
= true).sumber
exec(code)
hmmm, mengapaexec (code)
bukanexec code
? : D ;-pJava 8, 44 byte
Penjelasan:
Coba di sini.
sumber
(c*=c)
? Yang*=
mungkin memiliki presensi atas==
dan Anda dapat menyimpan dua byte.==
lebih diutamakan*=
.=
,+=
,*=
, Tugas dan mirip benar-benar memiliki prioritas terendah di operator Jawa .a
(misalnya), tanpa hasil. Yah, saya bisa melakukannya, tetapi sekitar 65 karakter ...JavaScript (ES6),
434140 byteDisimpan 1 byte dan memperbaiki bug berkat @Neil
Mengambil input sebagai array 3 bilangan bulat. Pengembalian
true
untuk sudut kanan danfalse
sebaliknya.Tampilkan cuplikan kode
Versi asli, 44 byte
Mengambil input sebagai 3 bilangan bulat. Pengembalian
1
untuk sudut kanan dan0
sebaliknya.Uji kasus
Tampilkan cuplikan kode
sumber
=>
dan->
perbedaan antara JavaScript dan Java 8). ;) +1 sangat jelas dari saya.>>1
tidak aman, ini mengembalikan true untuk[1, 1, 1]
.Math.hypot(...a,...a)==n*2
?~=
operator untuk "secara kasar sama";)Python 3 , 37 byte
Cobalah online!
Mungkin mengalami masalah presisi float dengan input besar.
sumber
Segitiga , 57 byte
Saya belum melihat satupun dalam bahasa ini dan sepertinya pantas untuk mencoba dan melakukannya. Butuh sedikit ... karena saya harus mendapatkan kepala saya dulu dan saya percaya ini bisa golf lagi.
Cobalah online!
Ini meluas ke segitiga berikut.
Jalannya berbelit-belit, tetapi saya akan mencoba dan menjelaskan apa yang telah saya lakukan. Saya akan melewatkan petunjuk arah. Sebagian besar kode adalah manipulasi tumpukan.
$:*
Masukkan input pertama.$:*
Kotak input kedua.S":Ug!
Uji apakah nilai kedua lebih besar dari yang pertama.p"
Swap dengan yang pertama.p
melakukan apa-apa.$:*
Kuadratkan input ketiga.P":USg!
Uji apakah nilai ketiga lebih besar dari yang terbesar dari sebelumnya.p+U-
jumlah stack saat ini dan ambil nilai ketiga yang tersimpanp"U+-
sum paling sedikit dan disimpan ketiga dan kurangi dari terbesar0=%
uji kesetaraan ke nol dan hasil keluaran.sumber
Haskell (
333231 byte)Versi asli:
Fungsi anonim. Mengambil daftar dalam bentuk [a, b, c]. Output Benar atau Salah.
Versi pertama memeriksa apakah jumlah kuadrat dua kali kuadrat maksimum.
Kedua, versi yang sedikit lebih baik memeriksa apakah setengah jumlah kuadrat adalah elemen dalam daftar kuadrat.
Sunting: Secara tidak sengaja menghitung baris baru, terima kasih H.PWiz
sumber
sum
dapat dibuang. solusi bagus!Perl 6 , 24 byte
Cobalah online!
*²+*²==*²
adalah fungsi anonim yang mengembalikan true jika jumlah kuadrat dari dua argumen pertamanya sama dengan kuadrat dari argumen ketiga. Kami meneruskan daftar input yang diurutkan ke fungsi ini, meratakannya ke dalam daftar argumen dengan|
.sumber
R , 31
2630byteSaya tidak suka yang ini, tapi lebih pendek. Jumlahkan kuadrat dan bagi dengan kuadrat terbesar. Benar kalau 2.
Versi Sebelumnya (dimodifikasi dengan kucing dan dengan tip @ Guiseppe)
Lakukan penjumlahan dari input yang disortir dengan item terakhir dinegasi dan kembalikan
!
tidak.Cobalah online!
sumber
!sort(scan())^2%*%c(1,1,-1)
adalah 27 byte. tapi saya pikir Anda masih perlucat
.Brain-Flak , 68 byte
Cobalah online!
Menggunakan pengamatan dalam jawaban user202729.
sumber
C (gcc) , 49 byte
Cobalah online!
Memperbaiki teknik Kevin Cruijssens
Mengembalikan 0 untuk segitiga yang valid, dan nilai yang bukan nol sebaliknya
sumber
MATL , 7 byte
Cobalah online!
Penjelasan
Pertimbangkan input
[12, 37, 35]
.sumber
Python 2 , 43 byte
Cobalah online!
Python 2 ,
79706862 byteCobalah online!
sumber
A*A
lebih pendek ...-
alih-alih==
.C,
6854 byteMenggunakan solusi user202729 .
Terima kasih kepada @Christoph untuk bermain golf 14 byte!
Cobalah online!
C, 85 byte
Cobalah online!
sumber
1
untuk parameter1, 1, 1
yang salah ...f(a,b,c){a=!((a*=a)+(b*=b)-(c*=c)&&a-b+c&&a-b-c);}
Japt , 8 byte
Mengambil input sebagai array.
Cobalah
sumber
J, 10 byte
-6 byte berkat FrownyFrog
jawaban asli
/:
urutkan kotak*:
, lalu periksa apakah jumlah dari dua yang pertama+/@}:
sama dengan yang terakhir{:
Cobalah online!
sumber
Triangularity ,
4931 byteCobalah online!
Penjelasan
Setiap program Triangularity harus memiliki bantalan segitiga (maafkan permainan kata-katanya). Artinya, saya th garis penghitungan dari bagian bawah program harus empuk dengan i - 1 titik (
.
) di setiap sisi. Untuk menjaga agar dot-segitiga simetris dan menyenangkan secara estetika, setiap baris harus terdiri dari 2L - 1 karakter, di mana L adalah jumlah baris dalam program. Menghapus karakter yang menggantikan padding yang diperlukan, berikut adalah cara kerjanya:Memeriksa apakah segitiga siku-siku dalam Triangularity ...
sumber
PowerShell , 39 byte
Cobalah online!
Mengurutkan input, menyimpannya ke dalam
$a,$b,$c
variabel. Kemudian gunakan teorema Pythagoras untuk memeriksa apakaha*a + b*b = c*c
. Outputnya adalah BooleanTrue
atauFalse
.sumber
JavaScript 34 byte (tanpa D =)
sumber
a=>a.sort()[0]**2+a[1]**2==a[2]**2
di ES6. Jadi alat bantu untuk Anda @DanielIndiesort()
menggunakan urutan leksikografis ketika tidak ada panggilan balik yang disediakan, membuat kode ini gagal misalnya[10,6,8]
.RProgN 2 , 10 byte
Dijelaskan
Cobalah online!
sumber
Racket ,
6460 byteCobalah online!
Bagaimana itu bekerja
Tes jika
a^2 + b^2 + c^2
sama dengan dua kali terbesara^2
,b^2
danc^2
.Pengembalian
#t
untuk segitiga siku-siku dan#f
untuk semua input lainnya.expt
.sumber
(define fun
harus menjadi bagian dari kode ...(define fun ...)
TIO hanya untuk kenyamanan: kita bisa menggunakan fungsi ini dengan sama baiknya dengan fungsi(... 3 4 5)
mana...
. (Jadi kita bisa memiliki tajuk(print (
dan catatan kaki3 4 5))
jika Anda mau.)#lang racket
dalam kode; beberapa belum.)(max a b c)
daripadalet
mengikat, ya? Saya tidak mengira akan lebih pendek untuk mengikat sebagai argumen keλ
? Atau, bukankah ada eksponensial bawaan?(*(expt(max a b c)2)2)
?05AB1E , 6 byte
Cobalah online!
sumber
n{RÆ_
untuk menghemat satu byte.Ruby, 31 byte
Mengambil input sebagai daftar 3 bilangan bulat. Gunakan beberapa ide dari solusi lain.
sumber
Julia 0,6 , 16 byte
Cobalah online!
Bagaimana itu bekerja
Misalkan x = [a, b, c] .
x⋅x
adalah produk titik dari x dan itu sendiri, sehingga menghasilkan a² + b² + c² .2x.*x
adalah produk elemen-bijaksana 2x dan x , sehingga menghasilkan [2a², 2b², 2c²] .Akhirnya,
∈
tes apakah bilangan bulat a² + b² + c² milik vektor [2a², 2b², 2c²] , yang benar iffa² + b² + c² = 2a² atau a² + b² + c² = 2b² atau a² + b² + c² = 2c² , yang dengan sendirinya benar jika
b² + c² = a² atau a² + c² = b² atau a² + b² = c² .
sumber
Java (OpenJDK 8) , 68 byte
Cobalah online!
sumber
sort
membutuhkan array.TI-Basic,
131110 byteSekarang berfungsi untuk input dalam urutan apa pun dan juga lebih pendek. -1 Lain terima kasih kepada @MishaLavrov
sumber
A=5
,B=4
,C=3
akan tidak ditangani dengan benar.)
, makamax(Ans=R►Pr(min(Ans),median(Ans
itu juga valid (meskipun perhitungan yang kita lakukan di sini berbeda) dan satu byte lebih pendek.CJam, 9
Cobalah online
Penjelasan:
sumber
Pari / GP ,
2924 byteCobalah online!
Disimpan lima byte oleh perubahan yang jelas dari
norml2(v)
menjadiv*v~
.Terinspirasi oleh jawaban lain.
Di sini
v
harus ada vektor barisatau vektor kolomdengan tiga koordinat.Contoh penggunaan:
f([3,4,5])
Tentu saja, Anda mendapatkan panjang sisi rasional secara gratis, misalnya
f([29/6, 10/3, 7/2])
.Jika saya tidak menghitung
f(v)=
bagian, itu adalah 19 byte. Bagian pertama juga dapat ditulisv->
(total 22 byte).Penjelasan: Jika tiga koordinat
v
yangx
,y
danz
, maka produkv
dan transposnyav~
memberikan skalarx^2+y^2+^z^2
, dan kita perlu memeriksa apakah yang sama dengan dua kali kuadrat dari maksimum koordinatx
,y
,z
.Ekstra:
f
Tes yang sama untuk quadruple Pythagoras jika vektor input Anda memiliki empat koordinat, dan seterusnya.sumber
tio.run
. Namun, jauh lebih baik untuk menginstal PARI / GP secara lokal.MS Excel, 49 Bytes
Fungsi lembar kerja anonim yang mengambil input dari rentang [A1: C1] dan output ke sel panggilan.
sumber
Ohm v2 ,
86 byteCobalah online!
sumber