Bayangkan 24 jam berikut yang dapat dikontrol dengan tombol panah:
╔══╗ ┌──┐
║00║:│00│
╚══╝ └──┘
HH mm
Menekan panah ke atas dua kali ( ↑↑
) akan menambah input jam yang saat ini difokuskan:
╔══╗ ┌──┐
║02║:│00│
╚══╝ └──┘
HH mm
Menekan panah kanan ( →
) akan memfokuskan input lainnya.
┌──┐ ╔══╗
│02│:║00║
└──┘ ╚══╝
HH mm
Menekan panah bawah tiga kali ( ↓↓↓
) sekarang akan mengurangi input ini.
┌──┐ ╔══╗
│02│:║57║
└──┘ ╚══╝
HH mm
Singkatnya:
- Panah atas (
↑
) akan menambah input yang sedang aktif. - Panah bawah (
↓
) akan mengurangi input aktif. - Panah kanan (
→
) akan memindahkan fokus ke input yang benar. - Panah kiri (
←
) akan memindahkan fokus ke input kiri. - Gerakan naik dan turun akan berputar seperti yang diharapkan untuk input waktu.
- Gerakan kiri dan kanan tidak berputar.
Tantangan
Jam dimulai 00:00
dengan input jam aktif (lihat skema pertama). Diberikan daftar perintah input, output waktu yang dihasilkan dalam HH:mm
format.
Input dapat berupa string atau daftar (atau bahasa Anda setara), di mana arah input yang berbeda dapat menjadi salah satu opsi di bawah ini:
↑↓←→
udlr
^v<>
- tombol panah yang sebenarnya ditekan jika program Anda memiliki GUI
Celah standar berlaku.
Uji kasus
↑↑→↓↓↓ = 02:57
↓→↑←↑→↓ = 00:00
↓→→↓ = 23:59
←←←←→↑ = 00:01
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓→↓ = 23:59
0123
) akan membuat tantangan lebih mudah dalam bahasa tertentu tanpa menguntungkan orang lain.Jawaban:
HTML di Google Chrome 67 dalam bahasa Mandarin (Sederhana), 39 byte
Chrome menampilkan komponen UI yang berbeda dalam bahasa yang berbeda. Bahkan input waktu yang sederhana: AM / PM akan ditampilkan jika Anda menggunakan bahasa Inggris (AS). Jika Anda ingin menguji ini dengan mengubah bahasa Chrome Anda. Jangan secara massal cara mengubahnya kembali.
sumber
AM/PM
bagi sayaC (gcc) ,
117107 byteCobalah online!
sumber
t,i,m[8];e(char*_){for(*m=i=2[m]=0;t=*_++;t<63?i=t%4:(i[m]+=t&8?1:119));printf("%02d:%02d",*m%24,2[m]%60);}
Cobalah secara online!Stax ,
36353332 byteJalankan dan debug itu
Penggunaan
lrud
.Penjelasan:
sumber
Python 2 , 105 byte
Cobalah online!
sumber
JavaScript (Node.js) , 103 byte
Mengambil input sebagai string, menggunakan
udlr
.Cobalah online!
sumber
C # (.NET Core) ,
149132 byteCobalah online!
Menggunakan
^v<>
.Yang ini membuat saya sadar bahwa operator modulo di C # tidak berfungsi seperti yang diharapkan, karena di C #
-1 % 60 = -1
, jadi saya perlu melakukan operasi aneh pada akhirnya.sumber
Lua (kerangka love2d),
311308 byteVersi tidak rusak:
Mungkin masih tidak 100% mudah dibaca karena semua seandainya dipertukarkan dengan pernyataan trinary (..dan ..atau) :)
jika dimulai di main.lua dengan cinta maka itu akan muncul jendela dan Anda dapat menekan tombol panah untuk mengubah angka
sumber
MATL ,
575655 byteCobalah online!
Merupakan jam dan menit menggunakan bilangan kompleks, dengan bagian nyata adalah jam dan bagian imajiner menit.
Dengan komentar:
sumber
PHP ,
145134133 byte(-11 bytes dengan lebih banyak bermain golf)
(-1 byte dengan menggunakan metode loop Davіd )
Untuk menjalankannya:
Contoh:
Atau Coba online!
Catatan:
error_reporting=0
opsi ini digunakan untuk tidak menampilkan peringatan.u d l r
sumber
JavaScript,
104103 byteMengambil input sebagai array karakter, menggunakan
<>^v
.Cobalah online
sumber
Haskell, 236 byte
f
adalah fungsi utama, dan memiliki tipeString -> String
:Pada dasarnya
u
danv
merupakan fungsi tipe yang saling rekursifInteger -> Integer -> String -> String
. Mereka mengambil jam, menit dan daftar karakter di set{v,^,<,>}
, dan mengembalikan string waktu.u
bertindak seolah-olah dial jam disorot, secara rekursif memanggilu
jika kepala daftar ada{v,^}
, danv
jika kepala daftar ada di{<,>}
.v
serupa tetapi untuk dial menit.Yang lainnya hanya menyimpan karakter.
sumber
Lua , 132 byte
Cobalah online!
Penjelasan
Ini adalah fungsi anonim (cara menggunakannya ditampilkan pada tautan).
sumber
HH:mm
format, bukan tabelJava 8, 121 byte
Pelabuhan Jonathan Frech 's C jawabannya . Menerima
^v<>
. Cobalah online di sini .sumber
Jelly , 36 byte
Saya percaya
O%5;4ṣ3œṡ€4Z%3’§§%"“ð<‘DŻ€ṫ€-j”:
harus bekerja untuk 32, tetapiœṡ
saat ini tampaknya memiliki bug .Sebuah program lengkap yang mencetak hasilnya ke STDOUT (sebagai tautan monadik, ia benar-benar mengembalikan daftar bilangan bulat (meskipun yang satu digit) dan karakter (yang
:
).Menggunakan
udlr
opsi untuk input.Cobalah online! Atau lihat a test-suite .
Bagaimana?
sumber
APL (Dyalog Classic) ,
9784 byteCobalah online!
Membutuhkan
⎕IO←1
sumber
QBasic , 229 byte
Sebuah skrip yang mengambil input sebagai penekanan tombol dan output ke konsol.
Catatan: terminal
"
disertakan hanya untuk penyorotan sintaks, dan tidak berkontribusi pada bytecountBerkomentar
sumber
(m+y)
?m
itu hanya beberapa menit untuk beberapa alasan ... Saya melihat versi komentar Anda lebih mudah dibaca.Powershell,
109103 byte-6 byte terima kasih AdmBorkBork
Skrip uji:
Keluaran:
Penjelasan
Ide dasarnya adalah menggunakan a
[hashtable]
, yangkeys
merupakan perintah kontrol danvalues
merupakan scriptblock. Kode menjalankan scriptblock untuk setiap perintah dari argumen.sumber
$i=0
dengan mem-casting indeks array Anda seperti$t[+$i]
menyimpan beberapa byte. Cobalah online!Perl 6 ,
101 91 8986 byteCobalah online!
Blok kode anonim yang mengambil string
uldr
karakter dan kembali dalam format yang diberikansumber
perl -F // -E, 72 byte
sumber
Python, 120 byte
sumber
ld
ataurru
menyebabkani
meninggalkan rentang (0,1) dano[i]
diakses setelahnya?unput()
. Dari persyaratan saya pikir tindakan L dan R tidak akan pernah berputar (yaitu tidakLL
)lll
tidak sama denganr
. Memilikill
ataurr
input yang valid, itu juga dalam kasus uji, lihat yang ketiga misalnya.23:59
. Cobalah online!Haskell , 186 byte
Cobalah online!
sumber
R,
368355 byteJelas bukan pendekatan terbaik, tetapi berhasil.
Fungsionalitas: Jalankan fungsi, ketikkan setiap huruf ke (in / de) lipatan atau bergerak ke kiri / kanan, mengetik "s" mengakhiri "permainan". Tangkapannya adalah bahwa ia akan menerima satu dan hanya satu huruf pada satu waktu.
-13 byte Menggabungkan beberapa nilai menjadi satu baris, menimpa T sebagai F daripada menggunakan break, menemukan beberapa spasi untuk dihilangkan, dan string disimpan dalam variabel sebagai gantinya
Saya juga mengedit format alternatif untuk menerima string R dan / atau vektor, akan dikirim minggu depan.
sumber
SmileBASIC, 123 byte
BUTTON()
mengembalikan bilangan bulat di mana setiap bit mewakili tombolBUTTON(2)
hanya mengembalikan tombol yang baru saja ditekan (tidak ditahan)WAIT
diperlukan karenaBUTTON
hanya pembaruan sekali per frame (1/60 detik). Kalau tidak, tekan tombol yang sama akan terdeteksi beberapa kali.Ini pasti bisa lebih pendek
sumber
05AB1E ,
3837 byteMenggunakan
udlr
petunjuk arah, tetapi bisa juga digunakan^v<>
untuk byte-count yang sama (karakter↑↓←→
bukan bagian dari codepage 05AB1E, jadi menggunakan itu akan meningkatkan byte-count oleh banyak, karena pengkodean harus diubah ke ASCII).Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Lihat ini 05AB1E ujung tambang (bagian Cara kompres bilangan bulat besar? ) Untuk memahami mengapa
Ž9¦
adalah2460
.sumber