Program
Anda diberi dua string, A dan B . A adalah posisi saat ini di mana timer Anda berada, dan B adalah posisi di mana timer Anda akan berhenti. Kedua string berada dalam format m: ss . Anda harus menulis sebuah program yang menentukan jumlah waktu yang tersisa yang juga harus diformat sebagai m: ss atau mm: ss .
Contoh
0:00 0:01 -> 0:01
0:55 1:00 -> 0:05
1:45 3:15 -> 1:30
:
merupakan perintah (data sebagai filosofi kode). Apakah saya diizinkan menggunakan spasi atau apakah saya perlu menemukan bahasa lain untuk menjawab ini?01:30
output yang valid? (memimpin nol)Jawaban:
Excel, 6 Bytes
Dengan asumsi A ada di dalam sel
A1
dan B di dalam selB1
sumber
|vy':¡
bootstrap di 05AB1E, tidak ada yang bisa saya lakukan ... Saya pikir Excel dapat dengan jujur memenangkan ini, tidak ada yang lain secara otomatis mem-parsing format yang saya tahu.45:45
A1 dan22:22
B1, maka hasilnya adalah23:23:00
Edit Nevermind - nilai maksimum yang diharapkan untuk m adalah 9.MATL ,
177 byteInput adalah array sel string, dalam bentuk
{'1:45' '3:15'}
atau{'1:45', '3:15'}
.Cobalah online!
Penjelasan
sumber
Bash + coreutils,
4439 byteCobalah online!
Penjelasan: menggunakan "1:45 3:15" sebagai test case (contoh terakhir). Saya menunjukkan langkah perantara dalam tanda kutip.
Perhatikan bahwa saya tidak memeriksa apakah nilai menit membutuhkan zero padding, karena OP menyatakan bahwa nilai maksimum
m
adalah 9.Di bawah ini adalah jawaban saya yang asli 44 byte, yang menggunakan
date
perintah untuk mengubah total waktu yang tersisa dalam hitungan detik kem:ss
format.sumber
Python 2,
90878380 byteMengambil input seperti
"2:45","5:01"
.Cobalah online
sumber
a,b=[60*int(s[-5:-3])+int(s[-2:])for s in input()]
print'%d:%02d'%divmod(b-a,60)
:)c, 86
Membaca waktu yang dipisahkan ruang dari STDIN.
Cobalah online .
sumber
Batch, 74 byte
Mengganti
:
waktu dengan*60+1
mengubahnya menjadi ekspresi yang menghitung jumlah detik. Batch menginterpretasikan angka nol sebagai oktal jadi saya menambahkan a1
ke detik untuk memastikan konversi desimal; untungnya keduanya1
membatalkan.sumber
C,
112100 byteTerima kasih kepada @betseg untuk menghemat 11 byte dan terima kasih kepada @Johan du Toit karena telah menghemat satu byte!
Cobalah online!
sumber
%s%d
dengan%02d
dan menghapus?:
. Cobalah online!scanf()
adalah teman Anda untuk membaca banyak bilangan bulat.MySQL,
1322 bytemengharapkan waktu dalam
A
danB
.sumber
Utilitas Bash + GNU, 43
Cobalah online .
Penjelasan
Perhatikan bahwa
dc
ungkapan dibagi menjadi 60, karenadate
membaca input sebagai H: MM dan bukan M: SS.sumber
ECMASkrip 6,
999185 byteGaris tunggal:
Sedikit diformat:
Saya merasa mungkin ada beberapa penghematan di sana .. tetapi saya tidak melihat mereka saat ini.
Edit - saran bagus di komentar.
sumber
s
.s.split(":")
, Anda dapat menggunakan sintaks baru:s.split<backtick>:<backtick>
.PHP,
5553 bytemengambil input dari argumen baris perintah
sumber
<?=date('i:s',($x=strtotime)($argv[2])-$x($argv[1]));
C #, 72 byte
Mengambil input sebagai string.
b="3:15"
a="1:45"
.Penjelasan:
Karena
DateTime.Parse()
mengembalikan Tanggal dalamhh:mm:ss
format, saya dapat mem-parsing hasilnya menjadi string menggunakan+""
, lalu memangkas trailing:00
.Ini berfungsi dengan baik
hh:mm
karena ada 60 detik dalam satu menit dan 60 menit dalam satu jam.0:01
0:00
kembali0:01
1:00
0:55
kembali0:05
3:15
1:45
kembali1:30
sumber
DateTime.Parse()
mengambil input - misalnya,1:45
- sepertihh:mm
dan tidakmm:ss
, menghasilkan output yang diikuti - untuk A1:45
dan B3:15
-[01:30:00]
(hh:mm:ss
) ( bahkan dengan yangCultureInfo.InvariantCulture
ditentukan ). Anda mungkin harus menambahkan"0:" + a/b
ketika parsing.:00
.;
pada akhirnya, Anda dapat menggunakan kari yaitua=>b=>
, Anda harus memenuhi syaratDateTime
atau memasukkan sepenuhnyausing System;
.Rebol, 5 byte
Dengan asumsi saya tidak melewatkan aturan apa pun ..
Rebol memiliki built-in hitung untuk sejumlah tipe data literal. Ini juga berlaku untuk keturunannya seperti Merah
sumber
Pyth,
47454440 BytesMembawa input dipisahkan oleh baris baru.
Pyth tidak punya waktu built-in berguna untuk ini. Saya mencoba beberapa barang eval () mewah tetapi tampaknya Pyth tidak dapat melakukan eval dengan barang
*
atau nol terkemuka apa pun. Ini menjadi lebih lama dari yang saya harapkan. Cukup banyak byte yang dihabiskan untuk menambahkan nol di depan untuk output. Setidaknya saya lebih pendek dari bash. Akan menambah penjelasan jika ditanya.Coba ini!
solusi alternatif, 48 Bytes
sumber
Haskell,
9812786 BytesCobalah online!
Tapi saya ingin tahu apakah ada beberapa fungsi perpustakaan untuk ini
EDIT: Impor dihapus, juga memperbaiki kesalahan di mana ia menunjukkan m: s bukan m: ss
Juga, versi yang diformat dengan baik:
EDIT2: Golf off (30?) Bytes terima kasih kepada Laikoni! Juga bermain golf beberapa misc lainnya. byte.
sumber
T-SQL, 238 byte
Pemakaian:
Melihat contoh PostGres sebelumnya saya menyadari bahwa saya belum melihat banyak upaya golf di SQL jadi saya mencobanya di T-SQL. Sekarang saya tahu mengapa Anda tidak melihat banyak golf di SQL: D
sumber
CJam ,
343325 byteDisimpan 8 byte berkat Martin Ender!
Cobalah online!
Penjelasan
sumber
T-SQL, 82 Bytes
sumber
Python, 160 byte
Saya masih baru dengan kode golf jadi jika ada yang punya saran, saya akan sangat menghargainya.
sumber
raw_input()
.REXX, 79 byte
sumber
Pyth, 28
Cobalah .
Penjelasan
sumber
Java 7, 164 byte
Penjelasan:
Kode uji:
Coba di sini.
Keluaran:
sumber
TXR Lisp, 101 byte
Kental:
(awk(:let(s"%M:%S"))((mf(time-parse s))(prn(time-string-local(-[f 1].(time-utc)[f 0].(time-utc))s))))
sumber
Ruby , 91 byte
Cobalah online!
Mengambil input dari argumen baris perintah.
Doa:
Contoh:
Keluaran:
sumber
PowerShell 47 Bytes
Matematikapanpan sederhana dan mencakup string jam dan detik.
sumber
JavaScript, 88 byte
Cobalah online!
Penjelasan:
Pisahkan input pada titik dua
Mengubah string menjadi int
Mendapat nilai menit
Mendapat nilai kedua
Mengembalikan menit string: detik
sumber