Saya sangat malas jadi saya mencoba untuk selalu memprogram microwave saya dengan menekan tombol sesedikit mungkin . Microwave saya memiliki tombol-tombol berikut:
- Tombol "menit plus" yang hanya dapat ditekan pertama dan menyiratkan "mulai". Mungkin ditekan beberapa kali selama beberapa menit, tetapi itu tidak akan menambah satu menit ke waktu yang dimasukkan secara manual. Keluaran
+
- Satu set tombol 0-9. Entri waktu adalah MMSS (yaitu "130" berarti 1 menit 30 detik). Detik dapat berkisar dari 0,99. Jadi "130" dan "90" adalah entri yang setara. Jelas setiap menit adalah 60 detik bahkan jika bagian detik dari entri melebihi 59. Output
0
..9
- Tombol "mulai" yang harus ditekan untuk memulai microwave jika waktu dimasukkan secara manual. Keluaran
S
Paket makanan saya menentukan waktu dalam MM: SS dan karenanya program harus menerima input itu.
Contohnya
- 1:00 adalah
+
(ingat "menit plus" berarti mulai) - 1:01 adalah
61S
(detik dapat melebihi 59, tetapi "menit plus" tidak bekerja bersama dengan angka - Saya pikir ini adalah cacat desain dalam microwave saya) - 9:00 adalah
900S
(lebih pendek dari+++++++++
)
code-challenge
optimization
Ben Jackson
sumber
sumber
400S
atau++++
?++++
menang. :)888S
lebih pendek dari928S
, tetapi900S
lebih pendek dari860S
? Saya akan membutuhkan geometri yang tepat dari tombol Anda dan masing-masing posisi mereka.Jawaban:
APL
APL memiliki reputasi buruk bahwa itu tidak dapat dibaca, yang sama sekali tidak terjadi jika tidak golf.
Aturan:
sumber
JavaScript
sumber
Perl
memenuhi persyaratan,
tetapi itu bukan bagaimana saya akan memasukkan tombol (misalnya "860S" vs "900S")menangani tepat 60 detik sebagai kasus khususKeluaran
sumber
rubi
Catatan:
ruby program-my-microwave-oven.rb
dan tes unit dievaluasi.ruby program-my-microwave-oven.rb 10:00
dan menulis960S
Beberapa komentar tentang aturan (dan interpretasi saya):
10:00
adalah960S
(9 menit dan 60 detik -> 10 menit).10:39
adalah999S
(9 menit dan 99 detik -> 10 menit dan 39 detik).4:00
itu lebih suka++++
( lebih sedikit gerakan jari)sumber