Bisakah Anda membantu Tony Stark menjadi Ironman?

8

Tony Stark, seperti yang kita tahu Ironman (pria super keren dengan setelan logam dan banyak senjata). Namun, tanpa setelan logam, dia tidak bisa mengklaim gelar itu. Tony Stark, memiliki ego yang hebat, ingin menyelesaikan Norseman , yang dianggap sebagai triathlon tersulit di dunia (untuk jarak yang setara dengan ras Ironman), untuk membuktikan bahwa dia adalah mesin yang kejam, bahkan ketika dia meninggalkan setrika. di rumah.

Tony memiliki rencana jadwal / waktu yang telah ditentukan untuk setiap bagian dari kompetisi.
Itu berarti untuk setiap lokasi dalam perlombaan (yaitu jarak dari awal), ada waktu yang diharapkan ia harus tiba di sana berdasarkan jadwal.

Dia juga memiliki arloji yang menceritakan waktu yang dihabiskan dan total jarak yang ditempuh.

Tugas Anda adalah: Mengingat kedua nilai tersebut sebagai input, beri tahu Tony berapa banyak yang dia hadapi, atau di belakang jadwal. Input akan berupa waktu pada format hh:mm:ss(atau (opsional) h:mm:ssjika sudah kurang dari 10 jam) dan angka desimal memberi tahu seberapa jauh ia telah datang (dalam km).

Jarak untuk masing-masing dari tiga disiplin ilmu adalah:

Swim: 3.8 km
Bike: 180 km
Run: 42 km
Total distance: 225.8 km   // Input will never exceed 225.8

Perkiraan waktu untuk setiap bagian (yaitu jadwal):

Swim: 1:20:00
Transition 1: 0:12:00
Bike: 7:10:00
Transition 2: 0:05:00
Run: 4:50:00
Total: 13:37:00

Baik jarak, dan perkiraan waktu diberikan sebelum lomba, dan karenanya dapat dikodekan dengan keras. Zona transisi hanyalah tempat dia berganti pakaian dan peralatan, jadi dia tidak bergerak selama masa transisi.

Input dapat dipisahkan dengan koma, string, dua argumen terpisah atau apa pun yang paling nyaman dalam bahasa Anda. Dia ingin output pada format +/-mm:ss, bukan jam (anggap dia tidak pernah lebih dari satu jam terlalu lambat atau terlalu cepat. Jika dia dalam transisi, Anda dapat mengasumsikan dia baru saja sampai di sana.

Contoh dan penjelasan (permintaan maaf untuk itu):

Input: 04:32:20 93.8
Output: +34:40 / 34:40

Pada 93,8 km, ia telah menyelesaikan renang, telah melalui transisi dan telah menyelesaikan setengah dari kaki sepeda. Menurut jadwal, ini harus membawanya: 1:20:00 + 0:12:00 + (0.5 * (07:10:00)) = 5:07:00. Jika dia telah menggunakan 4:32:20, maka dia 34:40lebih cepat dari jadwal.


Input: 1:20:00 3.8
Output: +00:00 / +0:00 / 00:00 / 0:00 / -00:00 / -0:00

Dengan asumsi jaraknya 3.8, Anda dapat menganggap dia baru saja masuk ke zona transisi pertama. Perkiraan waktu di sini adalah 1:20:00, jadi untuk input di atas, dia tepat waktu.


Jika waktunya tepat 1:25:00, maka dia tertinggal 5 menit dari jadwal, dengan demikian:

Input: 1:25:00 3.8
Output: -05:00 / -5:00

Contoh lain, dijelaskan secara rinci:

Input: 10:33:46 198.14

Jadi, jarak 198,14 km telah tercakup. Itu berarti dia telah menyelesaikan renang (3,8), kaki sepeda (180 km) dan 14,34 km berjalan, dan dia telah melalui kedua transisi. Menurut jadwal, ia harus sudah mulai dijalankan setelah: 1:20:00 + 0:12:00 + 07:10:00 + 0:05:00 = 8:47:00. 42 km dari berjalan harus mengambil 04:50:00, sehingga 14,34 km harus mengambil: 4:50:00 * (14.34 / 42) = 1:39:01. Jadi, menurut rencana, 198,14 km harus mengambil: 8:47:00 + 1:39:01 = 10:26:01. Dia telah menggunakan 10:33:46, yang 07:45lebih dari yang direncanakan.

Output: -07:45 / -7:45   

Tanda plus adalah opsional, tetapi harus ada tanda minus jika dia terlambat.

Outputnya harus memiliki format yang persis sama dengan contoh di atas, tetapi spasi tambahan, baris baru, dll. OK.

Ini adalah kode golf, jadi kode terpendek dalam byte menang.

Stewie Griffin
sumber

Jawaban:

2

CJam, 91

r~[0_80 3.8_92 43dI183.8 527 290d42]4/{1$a<},W=(@\-\~/@*+60*r':/:i60b-i_gs);\60b2Te[':*)Amd

Cobalah online. Catatan: perlu jarak terlebih dahulu.

aditsu berhenti karena SE adalah JAHAT
sumber