Dalam pertanyaan ini, kita hanya akan fokus pada penurunan berat badan dengan melakukan olahraga, meskipun masih ada banyak cara untuk menurunkan berat badan.
Olahraga yang berbeda membakar jumlah kalori yang berbeda.
Misalnya, bermain biliar selama satu jam dapat membakar 102 kalori [1] , sementara bermain bola basket selama 15 menit sudah dapat membakar 119 kalori [1] , yang membuat penurunan berat badan dengan bermain bola basket lebih mudah, setidaknya dari beberapa perspektif.
Cara yang tepat untuk menimbang kemudahan adalah dengan membagi jumlah kalori yang terbakar dengan waktu yang dibutuhkan, yang memberi kita indeks kemudahan (EI).
Misalnya, pagar selama 15 menit dapat membakar 85 kalori, yang mendapat EI 85/15.
Anda akan diberikan daftar dalam format ini:
[["fencing",15,85],["billiards",60,102],["basketball",15,119]]
atau format lain yang Anda inginkan.
Kemudian, Anda akan menampilkan olahraga yang memiliki EI tertinggi.
TL; DR
Diberikan daftar tuple [name,value1,value2]
output di name
mana value2/value1
adalah yang tertinggi.
Kendala
- Anda mungkin tidak menghasilkan bilangan real yang tidak bilangan bulat dalam proses.
- Anda tidak boleh menggunakan fraksi built-in.
Spesifikasi (Spesifikasi)
- Jika ada lebih dari satu nama yang memenuhi hasil, Anda dapat menampilkan subset yang tidak kosong atau elemen apa pun dari mereka.
- Nama akan cocok dengan regex
/^[a-z]+$/
, yang berarti bahwa itu hanya akan terdiri dari huruf latin standar huruf kecil. - Daftar tidak akan kosong.
Kasus cobaan
Memasukkan:
[["fencing",15,85],["billiards",60,102],["basketball",15,119]]
Keluaran:
basketball
Referensi
sumber
Jawaban:
Python 2, 51 byte
Apakah hal yang jelas menemukan entri dengan rasio terbesar, tetapi mengesampingkan larangan terhadap pelampung dengan terlebih dahulu mengalikan pembilang dengan kekuatan input-bergantung besar 10 sebelum lantai-membagi.
Saya akan membuktikan koefisien ini cukup besar untuk membuat lantai-divisi bertindak perbedaan yang sama seperti divisi-lantai.
Klaim: Jika a 1 / b 1 > a 2 / b 2 , maka lantai (Na 1 / b 1 )> lantai (Na 2 / b 2 ) untuk setiap N≥b 1 b 2 .
Bukti: Perhatikan bahwa 1 / b 1 - a 2 / b 2 adalah kelipatan dari 1 / b 1 b 2 , jadi 1 / b 1 - a 2 / b 2 > 0 menyiratkan bahwa
Kemudian, mengalikan kedua sisi dengan N,
Jadi, karena Na 1 / b 1 dan Na 2 / b 2 berbeda setidaknya 1, lantai masing-masing berbeda. ∎
Sekarang, perhatikan bahwa produk b 1 b 2 memiliki panjang digit paling banyak dari panjang digit totalnya, yang kurang dari panjang string input. Karena input berada di basis 10, cukup untuk menggunakan 10 pangkat dari panjangnya
N=10**len(`l`)
untuk menghasilkan angka dengan lebih banyak digit daripada itu, menjamin kondisi.sumber
9
bisa berfungsi10
?[('y', 10**296+1, 1), ('x', 10**296, 1)]
.JavaScript (ES6), 43 byte
Atau sebagai alternatif
Sortir tentu saja berlebihan untuk ini, tetapi
reduce
akan mengambil 46 byte:sumber
MATL , 8 byte
Semua angka yang dihitung adalah nilai integer. Pertama, produk dari penyebut dihitung (ini adalah bilangan bulat). Produk ini dibagi oleh masing-masing penyebut (yang memberikan bilangan bulat juga). Setiap hasil kemudian dikalikan dengan pembilang yang sesuai. Ini memberikan nilai integer sebanding dengan fraksi asli.
Format input adalah: susunan numerik dengan penyebut, susunan numerik dengan pembilang, susunan sel string dengan nama olahraga:
Jika ada beberapa minimizers yang pertama adalah output.
Cobalah online!
sumber
Dyalog APL , 18 byte
Anjurkan waktu, lalu untuk kalori, lalu untuk nama aktivitas.
⎕
prompt (untuk kali)(∧/÷⊢)
LCM∧/
kali dibagi dengan÷
kali⊢
(jadi tidak ada mengapung)⎕×
cepat (untuk kalori) dan kalikan dengan mereka(⊢⍳⌈/)
dalam hal itu⊢
, dapatkan posisi⍳
nilai maksimum⌈/
⎕⊃⍨
prompt (untuk kegiatan), kemudian memilih n th.Contoh dijalankan:
sumber
Brachylog , 42 byte
Cobalah online!
/
di atas adalah pembagian integer karena keduanyaJ*D
danI
merupakan integer (D
sebenarnya merupakan kelipatanI
).Penjelasan
Predikat utama:
Input = [["string":mins:cals]:...]
Predikat 1:
sumber
Retina ,
6462 byteHitungan byte mengasumsikan penyandian ISO 8859-1.
Input adalah satu olahraga per baris, dengan format
value1 value2 name
. Output adalah salah satu hasil maksimal (jika ada dasi itu akan memberikan yang terbesarvalue1
dan jika diikat juga jika akan memberikan leksikografis yang lebih besarname
).Perhatikan bahwa ini adalah sangat lambat (untuk alasan yang sama persis dengan pemadaman Stack Exchange kemarin ). Untuk membuatnya berjalan dalam jumlah waktu yang wajar, Anda dapat menambahkan
\b
di depan(0+)
(yang tidak akan memengaruhi cara memproses input sama sekali tetapi sangat membatasi pengulangan dari regex itu). Saya sudah melakukannya di tautan tes di bawah ini.Cobalah online!
sumber
Python 2,
5554 byteTerima kasih kepada @xnor karena bermain golf 1 byte!
Uji di Ideone .
sumber
sorted
dapat mengambil fungsi komparator dua input, saya akan meretasnya bersama-sama.lambda(a,b,c),(d,e,f):b*f-c*e
.Haskell
7270 bytePenggunaan:
sumber
Mathematica, 46 byte
Urutan tupel seharusnya
{value1,value2,name}
. Mengembalikan set lengkap semua hasil maksimal.Saya mengatasi penggunaan fraksi dengan mengalikan pembilang dengan LCM semua
value1
sebelum pembagian.sumber
R,
4240 byteMengambil input dalam bentuk bingkai data dengan tipe kolom string (juga berfungsi dengan faktor), numerik, numerik.
%/%
adalah pembagian integer.Ini adalah pengiriman pertama saya, beri tahu saya jika itu sesuai aturan.
Sunting: Ternyata Anda tidak perlu kawat gigi untuk mendefinisikan fungsi satu baris.
sumber
C ++ 14, 89 byte
Fungsi lambda:
Tidak Disatukan:
Pemakaian:
sumber
Haskell, 46 byte
EDIT: Solusi ini tidak berfungsi seperti yang ditunjukkan oleh Damien ini tidak menyelesaikan masalah. Saya mencari perbaikan yang bagus.
sumber
s(_,(x,y))=divMod y x
lebih pendeks(n,(x,y))=(divMod y x,n)
g=snd.maximum.map s
juga ..divMod a b < divMod c d
tidak setara dengana/b < c/d
.divMod 19 4 < divMod 55 12
tapi19/4 > 55/12
VBA Excel, 109 byte
Meminta sel spreadsheet merujuk pada tabel aktivitas dan parameter:
sumber
05AB1E ,
67 byte+1 byte untuk memperbaiki bug pendekatan divmod saya ( lihat komentar ini pada jawaban lain ) dengan port @LuisMendo 's jawaban MATL , jadi pastikan untuk upvote dia!
Masukan serupa dengan jawabannya: tiga daftar yang terpisah, menjadi daftar bilangan penyebut; daftar nominasi integer; dan daftar nama string.
Cobalah online atau verifikasi beberapa kasus uji lagi .
Penjelasan:
sumber
Java 8, 128 Bytes
sumber
Ruby, 72 byte
Saya benar-benar berpikir ini akan lebih pendek ...
Input diambil dari STDIN dalam format
name time calories
Oh well, bantuan apa pun untuk mempersingkat itu dihargai.
sumber
Clojure, 63 byte
sumber
PHP , 98 byte
Menggunakan format input yang lebih sederhana daripada contohnya, seperti ini:
anggar, 15,85, biliar, 60,102, basket, 15,119
Cobalah online!
sumber