Siapa yang tidak menyukai teorema pythagoras a² + b² = c²? Tulis metode terpendek yang Anda bisa dalam bahasa apa pun yang mengambil nilai a dan b dan cetak "The miring dari segitiga siku-siku ini adalah" + c. Simpan c hingga hanya tiga tempat desimal.
14
code-golf
tag secara eksplisit mengatakan "Kode-golf adalah kompetisi untuk memecahkan suatu masalah tertentu dalam paling sedikit byte dari source code." Lihat Golf kode skor (byte vs karakter) .Jawaban:
APL (54)
Uji:
Penjelasan:
⎕*2
: naikkan nilai dalam input ke kekuatan kedua+/
: ambil jumlahnya.5*⍨
: naikkan hasilnya ke kekuatan ke-0,53⍕
: bulat ke 3 tempat desimalsumber
TI-BASIC,
76555352 byteTidak, tanda kurung tutup tidak diperlukan. Juga, lebih sedikit byte dari jawaban APL itu :)
sumber
R▶Pr(A,B
.Fix 3:R►Pr(X,Y
Input
untuk memintaX
danY
agak lucu. Jika kita mengizinkan itu, haruskah kita juga mengizinkan pengaturanPolarGC
sebelumnyaInput
, sehingga panjang sisi miring diberikan oleh satu-byteR
? Memang, denganPolarGC
nilai-nilaiX
danY
tidak lagi ditampilkan ketika kita memindahkan kursor, tetapi mereka masih disimpan ke variabel yang sesuai. (Yang kemudian tidak akan pernah kita gunakan, tetapi pemikiran itulah yang penting.)Python 2.7 - 76 Karakter
Penjelasan
| a + ib | = √ (a 2 + b 2 ) = c
==> a 2 + b 2 = c 2
PJ pada sisi miring
sumber
Sclipting , 46 karakter
Mengharapkan input sebagai dua angka (bisa pecahan!) Dipisahkan oleh spasi.
Ini lebih pendek dari APL, meskipun harus menggunakan beberapa trik yang tidak nyaman.
Penjelasan
sumber
dc 54
Tangen skor jawaban APL!
Uji:
sumber
dc -e '2^r2^+3kv[The hypotenuse of this right triangle is ]Pp'
tidak menunggu input apa pun, mencetak"dc: stack empty"
3 kali dan kemudian "Sisi miring dari segitiga siku-siku ini adalah 2.000".dc -e '3 4 2^r2^+3kv[...
tempat 3 dan 4 adalah parameter.C, 77 atau 99
77 karakter jika input hanya bisa menjadi argumen fungsi:
99 jika input harus dibaca dari stdin:
Terima kasih banyak untuk @Yimin Rong!
sumber
Powershell
Hanya untuk melihat apakah aku bisa ...
sumber
Read-Host
.Rubi,
949082 karakterPerbarui (terima kasih atas komentarnya):
sumber
a**0.5
bukan panjangMath.sqrt(a)
. Dan ruang sesudahnyap
juga bisa dihilangkan.%(Math...)
.MATLAB
7974sumber
Python 2.7 - 80 karakter
sumber
C ++ - 90
sumber
pow(a,2)
kapan kamu bisa melakukannyaa*a
? Saya juga tidak yakin saya mengerti tujuan lantai dan +5 dan kalikan dan bagi dengan 1000Perl 6 (
6874 byte){}
mendeklarasikan fungsi lambda.[+]
adalah jumlah operator,X**
adalah operator lintas daya (misalnya,1, 2 X+ 10, 20
memberi11, 21, 12, 22
). Dalam hal ini, operator lintas daya mengambil satu argumen, sehingga hasilnya memiliki panjang yang sama dengan@_
.@_
berisi semua argumen fungsi.Jika tidak diizinkan memiliki fungsi yang dapat mengambil jumlah argumen yang salah (tidak aman), dimungkinkan untuk mengganti
[+] @_ X**2
dengan$^a**2+$^b**2
, di mana$^a
dan$^b
merupakan argumen placeholder.sumber
Javascript (97)
sumber
C, 100 karakter (mengalahkan solusi C lainnya dengan 1!)
Algoritma yang sangat tidak efisien.
sumber
DELPHI / PASCAL
Dengan indentasi (157)
sumber
integer
keint16
Anda tidak harus menyertakan 2 baris pertama untuk jawaban Anda, dan Anda dapat menghapus spasi. melakukan semua yang memberi Anda 106 karakter.EcmaScript 6,
8279Pemakaian:
Pembaruan: Beralih ke
Math.hypot()
sumber
Golfscript (
69 67 6665)Ini akan jauh lebih mudah jika floating point benar-benar didukung tanpa menggunakan solusi ... :)
Tautan untuk mengujinya .
sumber
2.!~
ketika2-1
lebih pendek?the difference between
2- 1` dan2-1
salah, jadi mungkin untuk sementara bingung :) Tetap, terima kasih.Python 2 (79)
sumber
math
sedikit tabungan.(a*a+b*b)**.5
def
menyimpan baris baru dan indentasi.AWK -
8478 karakterTerima kasih kepada Wasi karena telah menyarankan ^ operator dan menghapus ()!
misalnya
sumber
{printf"The hypotenuse of this right triangle is %.3f\n",($1^2+$2^2)^.5}
PowerShell: 111
Kode Golf
Panduan
1..2|%{sv $_ (read-host)};
Mendapat dua input secara interaktif dari pengguna, dan menyimpannya dalam $ 1 dan $ 2. Mungkin dapat memotong beberapa panjang dengan menggunakan argumen atau input pipa sebagai gantinya."The hypotenuse of this right triangle is
Teks yang diperlukan dalam output, sesuai spesifikasi tantangan.$(
...)"
Blok kode enkapsulasi akan diproses sebagai skrip sebelum dimasukkan dalam output."{0:N3}"-f
Memformat keluaran dari bit kode berikutnya sebagai angka dengan tepat tiga digit setelah titik desimal.[math]::sqrt(
...)
Mendapat akar kuadrat dari nilai yang dienkapsulasi.$1/1*$1+$2/1*$2
Berfungsi sebagai "a ^ 2 + b ^ 2" kami. Mengalikan angka dengan sendirinya adalah cara terpendek untuk mengisinya dalam PowerShell, tetapi variabel-variabel tersebut perlu dibagi dengan 1 terlebih dahulu untuk memaksa mereka menjadi bilangan bulat. Kalau tidak, mereka diperlakukan sebagai teks dan 3 * 3 + 4 * 4 akan menjadi 3334444 bukan 25.sumber
JavaScript: 83
Saat ini implementasi JS terpendek menggunakan
stdin
: D Hanyabekerja di Firefox 27.0+ (EcmaScript 6)
JavaScript: 78
Jika kita dapat menggunakan hanya dua variabel (seperti banyak skrip lakukan di sini):
sumber
dc, 55
sumber
Jawa, 112
(Juga mencetak kesalahan Metode Tidak Seperti Ini, meskipun saya tidak yakin apakah ini melanggar aturan)
Jawa, 149
(Tidak ada kesalahan)
sumber
C #
Hanya Metode (114)
Program Lengkap (171)
Program Lengkap (tanpa menggunakan metode - 141)
sumber
JavaScript
11810693Tidak seperti solusi @ micha, milik saya mengambil dua variabel melalui fungsi dan mengirimkan peringatan hasil.
function(a,b){m=Math;c=d=>d*d,e=1e3;alert("The hypotenuse of this right triangle is "+m.round(m.sqrt(c(a)+c(b))*e)/e)}
function(a,b){e=1e3;alert("The hypotenuse of this right triangle is "+Math.round(Math.sqrt(a*a+b*b)*e)/e)}
Panah gemuk berfungsi untuk menyelamatkan!
h=(a,b,e=1e3)=>"The hypotenuse of this right triangle is "+Math.round(Math.sqrt(a*a+b*b)*e)/e
sumber
c()
. MengasingkanMath
tidak menyimpan byte dalam kasus Anda.c64 basic v2,
6066 byteTangkapan layar:
Cara mencobanya.
sumber
R,
6176 bytecat
menampilkan kontennya ke STDOUT.The
scan()
Fungsi mengambil input pengguna dari keyboard. Input ini ada sebagai vektor, di mana^2
diterapkan (^
fungsi adalah vektor), dansum()
menjumlahkan elemen-elemen dari vektor.sqrt
menghasilkan akar kuadrat, yang dibulatkan ke 3 tempat desimal olehround(,3)
Terima kasih kepada @caird coinheringaahing karena memperhatikan bahwa jawaban sebelumnya tidak membulatkan.
sumber
ARBLE , 73 byte
Cobalah online!
sumber
sqrt(a^2+b^2)
, ini memiliki banyak boilerplate yang tidak perlu.OML , 57 byte
Cobalah online!
Bagian 1
Ini hanya menghasilkan string
Bagian 2
sumber
Jeli , 32 karakter
Cobalah online!
Mungkin ada kompresi string yang lebih baik yang memungkinkan saya untuk berkeliling perlu bergabung dengan spasi tetapi saya kesulitan menemukannya.
Penjelasan:
sumber
only three decimal places
saranaless than or equal to three decimal places
, output terlihat baik-baik saja.