pengantar
Semua orang mendengar tentang sinus (dosa) , cosinus (cos) , garis singgung (tan) , kotangen (pondok) , garis potong (detik) , dan cosecant (siklus) . Hampir setiap sudut memilikinya.
Jauh kurang dikenal, atau diingat, adalah exsecant (exsec) , excosecant (excsc) , versine (versin) , dan coversine (cvs) . Hampir setiap sudut memiliki itu juga. Ada beberapa yang bahkan kurang dikenal, tetapi kami hanya akan bertahan pada ini.
Saya telah membuat visualisasi ini untuk sudut θ, yaitu 45 °.
Tantangan
Buat program yang mengambil input dari sudut n
, dalam derajat, dan akan menampilkan:
sinus sudut
n
cosinus sudut
n
tangen sudut
n
garis potong sudut
n
setidaknya satu dari yang berikut ini. Setiap item tambahan dari daftar ini akan mendapat bonus -5%, maksimum -25%.
sudut dari sudut
n
cosecant of angle
n
excosecant of angle
n
sudut pandang
n
Menutupi sudut
n
sudut kemiringan
n
Jika skor Anda adalah desimal setelah menerapkan bonus, kumpulkan hingga seluruh angka terdekat.
Memasukkan
Anda dapat menerima input Anda melalui STDIN atau melalui panggilan fungsi. Argumen tunggal n
,, akan diajukan.
n
akan selalu menjadi bilangan bulat utuh yang lebih besar dari 0, tetapi kurang dari atau sama dengan 90.
Keluaran
Berikut adalah contoh output untuk sinus 45 °. Semua item output harus dalam format ini. Urutan barang tidak masalah.
sine: 0.70710678118
Semua item harus memiliki tepat 4 angka setelah desimal (presisi hingga seperseribu). Berikut adalah beberapa contoh pembulatan.
0 -> 0.0000
1 -> 1.0000
0.2588190451 -> 0.2588
5.67128181962 -> 5.6713
10 -> 10.0000
12.4661204396 -> 12.4661
Setiap hasil yang tidak ada / tidak terdefinisi harus default ke 0.
Contoh
myprogram(60)
sine: 0.8660
cosine: 0.5000
tangent: 1.7321
secant: 2.0000
exsecant: 1.0000
cosecant: 1.1547
excosecant: 0.1547
versine: 0.5000
coversine: 0.1340
cotangent: 0.5774
Papan angka
Agar skor Anda muncul di papan tulis, itu harus dalam format ini:
# Language, Score
Atau jika Anda mendapat bonus:
# Language, Score (Bytes - Bonus%)
Dicoret tidak seharusnya menyebabkan masalah.
sumber
greater than 0
, sehingga 0 tidak diizinkan?Jawaban:
CJam,
9489858180 byteKode panjangnya 84 byte dan memenuhi syarat untuk bonus 5% ( cotangent dan cosecant ).
Cobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
Julia, 162 - 10% = 144 byte
Tidak Disatukan:
sumber
Pyth, 66 - 10% = 59,4 byte
Menghitung sinus, garis potong dan garis singgung. Kemudian, fungsi-fungsi tersebut dihitung secara sederhana melalui rumus
coF(x) = F(90 - x)
.sumber
Mathematica (Tidak valid saat ini),
134121104Hanya untuk bersenang-senang, pasti bisa bermain golf banyak
Dan itu harus memiliki bonus 5% (Cot dan Csc), oleh karena itu berjumlah 99 karakter
Contoh output:
sumber
0
untuksec(90)
?JavaScript (ES6), 173 (182 - 5%)
Edit revisi setelah klarifikasi, sekarang bonusnya adalah 5%
Sunting menyadari bahwa sudut tidak boleh 0
sumber
Javascript ES6,
154148 (198 - 25%)Tidak Disatukan:
sumber
R,
122136134 byteContoh penggunaan
sumber
scan()/(180/pi)
->scan()*pi/180
?Perl,
182177 (236 - 25%)Jalankan dengan
-n
(1 byte ditambahkan ke skor yang tidak dikoreksi).Tidak ada yang mewah. Ini mengambil keuntungan dari
-n
input implisit,$_
sebagai argumen default untuksin
dancos
, dan kata kunci untuk string. Aturan "undefined = 0" hardcoded dalam menggunakan operator ternary?:
(hanya berlaku untuk 90 °).Satu hal yang saya learend adalah bahwa tampaknya, Anda tidak dapat memiliki (atau tidak dapat memanggil ) subroutine bernama
s
(ataum
,y
,tr
):sub s {print 1}; s
hasilSubstitution pattern not terminated at -e line 1
.sumber
Python 3, 282 (375 - 25%)
Penanganan kesalahan ternyata agak rumit oleh kesalahan floating-point; yaitu,
cos(90)
keluar ke angka yang sangat kecil, bukan nol.Itu tidak akan pernah menjadi jawaban teratas, tapi saya suka berpikir itu mungkin jawaban terpendek semua fungsi yang valid dalam bahasa non-golfy yang tidak memiliki fungsi trigonometri di namespace default . ;-)
Output sampel:
sumber
'.4f'%(r)
akan lebih pendek?Perl, 165 (193 - 15%)
Saya mengajukan ini sebagai jawaban baru karena idenya sangat berbeda dari yang lain . Harap beri tahu saya jika lebih tepat untuk mengganti upaya pertama saya.
Jalankan dengan
-n
(1 byte ditambahkan).Tidak Disatukan:
Karena itu melakukan empat "co" -fungsi, saya pikir itu memenuhi syarat untuk bonus 3 * 5% = 15%.
sumber
Perl,
1009594 byteWhoa, lotta perl menjawab.
sumber
-n
(dihitung untuk 1 byte) alih-alih$_=<>
. Namun, Anda harus mengkonversi dari derajat ke radian, dan Anda tidak menangani casing 90 ° seperti yang ditentukan. (Dengan yang terakhir, sepertinya Anda tidak sendirian di antara jawaban di sini.)Haskell, 159 = 186 - 15% byte
Tidak ada mantan untuk menjaga skema penamaan saya yang cerdas dan karena saya tidak tahu bagaimana memendekkan
(\x->x-1)
.(-1)
hanya angka.Silakan mengeluh jika Anda ingin saya melakukan prettify (
mapM_ putStrLn
) dialog.sumber