Anda dirantai ke kursi. Di bawah Anda adalah gunung berapi besar. Jam 12 jam di sebelah Anda berdetak dengan sangat buruk, dan Anda melihat bahwa jam itu memiliki kabel yang mengarah dari belakang ke rantai, yang akan menjatuhkan Anda ke pusat bumi. Ditempel ke jam adalah catatan:
Setiap jarum jam memiliki elektroda. Ketika kedua jarum jam berada di posisi yang sama, daya mengalir dan Anda mati. Yaitu, kecuali jika Anda dapat memberi tahu saya waktu yang tepat bahwa ini akan terjadi, hingga menit terdekat.
Anda memiliki komputer yang tahu setiap bahasa pemrograman. Anda harus membuat program terpendek (ini adalah kode-golf , dan celah standar dilarang) yang Anda bisa, dan beri tahu ilmuwan jahat berapa waktu yang akan datang. Program Anda harus mengambil input (dalam metode apa pun), yang terdiri dari jam dan menit. Seharusnya mengembalikan jam dan menit berikutnya (dalam metode apa pun) bahwa ini terjadi.
Menurut halaman OEIS , sebelas kali tumpang tindih adalah:
00:00:00 plus 0/11 s, 01:05:27 plus 3/11 s,
02:10:54 plus 6/11 s, 03:16:21 plus 9/11 s,
04:21:49 plus 1/11 s, 05:27:16 plus 4/11 s,
06:32:43 plus 7/11 s, 07:38:10 plus 10/11 s,
08:43:38 plus 2/11 s, 09:49:05 plus 5/11 s,
10:54:32 plus 8/11 s.
Waktu berikutnya adalah 12:00:00. Detik dan bagian fraksinya tidak diperlukan untuk tantangan ini. Cukup bulat ke menit terdekat.
Kasus uji:
0:00 (Or 12:00) > 1:05
1:00 > 1:05
11:56 > 12:00 (Or 0:00)
6:45 > 7:38
5:00 > 5:27
6:30 > 6:33 (round up)
Program dapat berupa fungsi, atau program penuh. Saya tidak peduli jika Anda memilih 0:00
atau 12:00
, dan keduanya dapat diterima. Semoga berhasil!
Jawaban:
JavaScript (Node.js) ,
5447 bytes (bulat ke terdekat)-7 byte. Terima kasih @ user202729
Cobalah online!
JavaScript (Node.js) ,
403344 byte (putaran menuju 0)-3 byte terima kasih kepada @Arnauld
-4 byte terima kasih kepada @Kevin Cruijssen
Penjelasan
Catatan: Saya cukup yakin ini bisa diturunkan oleh seseorang dengan pengetahuan lebih dalam matematika. Saya hampir tidak tahu bagaimana menjumlahkan dan memperbanyak
Cobalah online!
sumber
05:00
seharusnya output05:27
tetapi output05:25
, dan06:45
output07:38
tetapi output07:35
sebagai gantinya. Di sini barangkali urutan oeis yang berguna: A17818111:56
sepertinya Anda akan menampilkan00:05
bukan00:00
(atau12:00
).a=(a+=b>=a*5)%12
dapat dipersingkat sedikit tetapi saya tidak terlalu pandai dalam hal iniMath.round(x)
hanya0|x+.5
?J , 31 byte
Cobalah online!
Cara untuk membulatkan angka dalam J adalah menambahkan
0.5
dan mengambil lantai (<.
). Terlalu banyak byte ...Penjelasan
12 60&#.
(konversi basis campuran) mengkonversi dari berbagai [jam, menit] ke menit yang berlalu sejak 0:00.Perhatikan bahwa mulai dari 0:00, setiap 12/11 jam (yaitu, 720/11 menit), kedua tangan saling tumpang tindih satu kali.
Oleh karena itu, mengingat nilai menit, hanya membulatkannya ke kelipatan terdekat 720/11 (berbeda dari itu sendiri). Hal ini dapat dicapai dengan
*
dengan 11/720 (J memiliki bilangan rasional literal11r720
), mengambil lantai<.
, kenaikan>:
, kemudian kalikan dengan 720/11.Perhatikan bahwa "gandakan dengan 11/720" dan "gandakan dengan 720/11" adalah 2 tindakan terbalik, serta "konversi dari [jam, menit] ke jumlah menit yang dilalui" dan sebaliknya. Untungnya J memiliki built-in
&.
(bawah), yang membalikkan beberapa tindakan setelah menerapkan transformasi.Setelah itu lakukan saja pembulatan:
0.5
+
lalu<.
.sumber
R , 68 byte
Cobalah online!
Memanfaatkan persamaan:
di mana
index
0 untuk posisi tumpang tindih pertama (00:00), 1 untuk ke-2 dan seterusnya ...sumber
(a[...]...c(60,1))
6:30 > 6:33
.R , 88 byte
Cobalah online!
Tambah waktu satu menit. Periksa sudutnya. Jika tidak cukup dekat, loop sampai solusi ditemukan.
sumber
Python 3 ,
8078 byteIni adalah karya pertama saya, jadi kritik konstruktif disambut :)
-2 byte terima kasih kepada @ Jo King
Cobalah online! (78)
Cobalah secara online! (80)sumber
Java 8,
8982 byteTetap. Akan melihat apakah saya bisa golf nanti (mungkin dengan memasukkan jawaban lain) ..
Cobalah online.
Penjelasan:
MELAKUKAN
sumber
f.apply(56).apply(10)
hasil11 59
6:30 > 6:33
.Apl (Dyalog Unicode) , 28 byte
Cobalah online!
Penjelasan
((⍳11),⍪0,+\∊5/⊂5 6)
adalah matriks waktu di mana tangan tumpang tindih (dicetak pada akhir tautan tio)(⍸⌷1⊖⊣)⎕
menemukan interval di mana input berada dalam matriks dan indeks di bawahnya membungkus.sumber
C # (.NET Core) , 70 byte
Cobalah online!
Saya pikir itu melewati semua kasus uji. Meskipun kasus h = 11 agak jelek
Penjelasan:
sumber
6:30 > 6:33
.JavaScript, 41 byte
Tampilkan cuplikan kode
sumber
Jelly , 25 byte
Cobalah online!
Tautan monadik yang menggunakan waktu sebagai daftar bilangan bulat dua dan mengembalikan daftar bilangan bulat yang sesuai dengan waktu berikutnya tangan akan menyentuh.
sumber
Perl 6 , 43 byte
Cobalah online!
Anonim Apapun lambda yang mengambil dua bilangan bulat mewakili jam dan menit dan mengembalikan jam dan menit dalam urutan terbalik. Saat ini tidak konsisten ketika Anda memasukkan waktu yang selaras, apakah itu menghasilkan waktu yang selaras berikutnya atau tetap pada waktu yang sama. Saya menunggu OP untuk menanggapi masalah itu, tetapi sekarang saya memperlakukannya sebagai tidak terdefinisi.
Penjelasan
sumber