Banyak jam digital menampilkan waktu menggunakan digit sederhana yang hanya terdiri dari tujuh lampu berbeda yang menyala atau mati:
Ketika dicerminkan secara horizontal, angka 018
tidak berubah karena simetris. Juga, digit 2
dan 5
ditukar, 2
menjadi 5
dan sebaliknya. Semua digit lainnya menjadi tidak valid saat dicerminkan.
Dengan demikian, mengingat jam digital 24 jam, ada banyak pembacaan jam sehingga gambar cermin dari tampilan digital juga merupakan pembacaan jam yang valid. Tugas Anda adalah untuk menampilkan semua bacaan jam tersebut bersama dengan bacaan cermin.
Misalnya, 22:21
menjadi 15:55
, dan 00:15
menjadi 21:00
. Di sisi lain, 12:34
atau 16:27
tidak lagi berlaku ketika dicerminkan (digit 34679
menjadi tidak valid), dan juga tidak ada 22:22
atau 18:21
, karena, karena hanya ada 24 jam dalam sehari dan 60 menit dalam satu jam, tidak ada jam waras yang akan ditampilkan 55:55
atau 12:81
.
Tugas
Tulis program atau fungsi yang tidak mengambil input dan output semua pasangan yang valid dalam urutan menaik seperti yang ditunjukkan di bawah ini:
00:00 - 00:00
00:01 - 10:00
00:05 - 20:00
00:10 - 01:00
00:11 - 11:00
00:15 - 21:00
00:20 - 05:00
00:21 - 15:00
00:50 - 02:00
00:51 - 12:00
00:55 - 22:00
01:00 - 00:10
01:01 - 10:10
01:05 - 20:10
01:10 - 01:10
01:11 - 11:10
01:15 - 21:10
01:20 - 05:10
01:21 - 15:10
01:50 - 02:10
01:51 - 12:10
01:55 - 22:10
02:00 - 00:50
02:01 - 10:50
02:05 - 20:50
02:10 - 01:50
02:11 - 11:50
02:15 - 21:50
02:20 - 05:50
02:21 - 15:50
02:50 - 02:50
02:51 - 12:50
02:55 - 22:50
05:00 - 00:20
05:01 - 10:20
05:05 - 20:20
05:10 - 01:20
05:11 - 11:20
05:15 - 21:20
05:20 - 05:20
05:21 - 15:20
05:50 - 02:20
05:51 - 12:20
05:55 - 22:20
10:00 - 00:01
10:01 - 10:01
10:05 - 20:01
10:10 - 01:01
10:11 - 11:01
10:15 - 21:01
10:20 - 05:01
10:21 - 15:01
10:50 - 02:01
10:51 - 12:01
10:55 - 22:01
11:00 - 00:11
11:01 - 10:11
11:05 - 20:11
11:10 - 01:11
11:11 - 11:11
11:15 - 21:11
11:20 - 05:11
11:21 - 15:11
11:50 - 02:11
11:51 - 12:11
11:55 - 22:11
12:00 - 00:51
12:01 - 10:51
12:05 - 20:51
12:10 - 01:51
12:11 - 11:51
12:15 - 21:51
12:20 - 05:51
12:21 - 15:51
12:50 - 02:51
12:51 - 12:51
12:55 - 22:51
15:00 - 00:21
15:01 - 10:21
15:05 - 20:21
15:10 - 01:21
15:11 - 11:21
15:15 - 21:21
15:20 - 05:21
15:21 - 15:21
15:50 - 02:21
15:51 - 12:21
15:55 - 22:21
20:00 - 00:05
20:01 - 10:05
20:05 - 20:05
20:10 - 01:05
20:11 - 11:05
20:15 - 21:05
20:20 - 05:05
20:21 - 15:05
20:50 - 02:05
20:51 - 12:05
20:55 - 22:05
21:00 - 00:15
21:01 - 10:15
21:05 - 20:15
21:10 - 01:15
21:11 - 11:15
21:15 - 21:15
21:20 - 05:15
21:21 - 15:15
21:50 - 02:15
21:51 - 12:15
21:55 - 22:15
22:00 - 00:55
22:01 - 10:55
22:05 - 20:55
22:10 - 01:55
22:11 - 11:55
22:15 - 21:55
22:20 - 05:55
22:21 - 15:55
22:50 - 02:55
22:51 - 12:55
22:55 - 22:55
Trailing atau baris baru terkemuka diizinkan. Memiliki beberapa ruang langsung sebelum pemberian baris juga diperbolehkan. Waktu harus dalam format hh:mm
, diisi dengan nol bila perlu.
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang. Seperti biasa, celah standar tidak diizinkan.
sumber
String
adalah array dariChar
. Apakah diterima jika jawaban saya memberikan daftar dariChar
? Jenisnya terlihat identik saat dicetak telanjang.1
tersebut tidak persis sama dengan gambar cerminnya karena Anda dapat mengetahui apakah segmen paling kanan atau segmen paling kiri digunakan untuk membentuk "garis" vertikal yang membentuk digit. Saya mengerti bahwa kami menganggapnya identik di sini.1
bisa dipusatkan.Jawaban:
05AB1E , 34 byte
Cobalah online!
Penjelasan
sumber
Python 2 ,
187180178177 bytesCobalah online!
Terima kasih untuk +1 Kevin Cruijssen.
sumber
APL (Dyalog Unicode) , 84 byte SBCS
Selesaikan program keluaran ke STDOUT. Membutuhkan
⎕IO
( I ndex O rigin) sebagai0
default pada banyak sistem.Cobalah online!
⍳1440
bahwa banyak t ntegers0 60⊤
dikonversi menjadi mixed-base ∞, 60100+
tambahkan 100 (ini memenuhi 0s yang dibutuhkan)⍕¨
format (stringify) masing-masing1↓¨
lepaskan karakter pertama dari masing-masing (ini menghilangkan 1s terkemuka){
...}⌿
terapkan kolom anonim fungsi-bijaksana berikut (⍺
adalah jam atas,⍵
adalah menit)0::
jika ada kesalahan, kembalikan apa-apa⋄
mencoba:'015xx2xx8x:'[
...]
mengindeks string ini dengan:∊⍺':'⍵
yang ε nlisted (gepeng) daftar jam, usus besar, meniti←
disimpan dii
(untuk saya nput)⎕D⍳
d ndices dari setiap karakter dalam daftar D igits⌽
balikkan itut←
menyimpan sebagait
(untuk t ime)(
...)⊆
grup dijalankan di mana:':'≠t
usus besar berbeda darit
⍎¨
melaksanakan (mengevaluasi) masing-masing23 59≥
Boolean untuk masing-masing apakah mereka kurang dari atau sama dengan 23 dan 59 masing-masing∧/
apakah keduanya benar:
jika demikian, maka:⍕i'-'t
daftar input, tanda hubung, waktu yang diformat (dipisahkan spasi)1↓
drop the first (spasi)⎕←
output ke STDOUTsumber
Retina , 57 byte
Cobalah online! Penjelasan:
Masukkan pemisah.
Hasilkan semua set yang mungkin dari empat digit cermin.
Hapus yang memiliki jam ilegal.
Masukkan titik dua.
Sortir sesuai pesanan.
sumber
Python 2 ,
279277255 byteCobalah online!
Kredit
279 byte dikurangi menjadi 256 oleh dylnan .
256 byte dikurangi menjadi 255 oleh FlipTrack .
sumber
Bersih ,
269...172170 byteCobalah online!
Tidak Disatukan:
sumber
Pyth , 48 byte
Cobalah online!
Menghasilkan semua kombinasi yang mungkin
0125
dan kemudian memanipulasi mereka ke dalam zaman. Ini berada dalam urutan yang benar karena dihasilkan dalam urutan leksikografis. Akhirnya, ini menyaring waktu ekstra tidak valid dengan menghapus garis yang cocok dengan regex5.:
atau25:
. Sayangnya, sepertinya kompresi tidak berfungsi dengan baik pada string apa pun yang digunakan program ini, kecuali saya membuat kesalahan atau kekeliruan.sumber
Perl 5 , 147 byte
Cobalah online!
sumber
Japt v2 (+
-R
), 51 byteUji secara online!
Penjelasan
sumber
JavaScript (ES6), 142 byte
Cobalah online!
sumber
Arang , 59 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Buat empat loop bersarang untuk digit yang tidak dikoreksi.
Pastikan tidak ada jam atau menit 25. (Mencerminkan 25 menit akan menghasilkan 25 jam, jadi itu tidak jalan.)
Cetak waktu yang tidak dikhawatirkan.
Cetak waktu cermin dengan mengonversi angka yang terbalik (atau
3
untuk titik dua) dari string ke integer dan mencarinya di tabel terjemahan.Atau, juga untuk 59 byte:
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Buat loop untuk jam dan menit.
Kecualikan
25
dan juga menit apa pun yang berakhir dengan2
.Konversikan jam dan menit menjadi basis 4.
Cetak angka yang terlihat di tabel terjemahan.
Cetak pemisah.
Cetak angka yang terbalik dan lihat dalam tabel terjemahan cermin.
sumber
Jelly ,
72666255 byteCobalah online!
Program niladik. Saya mendapat produk ganda
'0125'
ide dari jawaban 05AB1E oleh Emigna tetapi sisanya saya lakukan tanpa berkonsultasi karena bahasa berbeda setelah itu. Mungkin ada peluang untuk bermain golf, mungkin dengan banyak.Penjelasan
Program ini bekerja sebagai berikut:
Ambil semua produk panjang empat dari daftar karakter
'0125'
dengan“0152:”©ṢṖp`⁺
.©
menyalin string'0152:'
ke register untuk digunakan nanti.ṢṖ
sortir kemudian muncul elemen terakhir dari string →'0125'
.⁺
menduplikasi tautan produk.ḣ176
menghapus kapan saja dengan format25xx
atau5xxx
(bukan jam yang valid).j€“:”
bergabung dengan masing-masing pasangan digit dengan a':'
. misalnya['05'],['21']]
→'05:12'
.Ç€
berlaku tautan pertama ke masing-masing waktu ini. Ia menemukan indeks masing-masing karakter dalam string'0125:'
kemudian untuk masing-masing indeks mendapatkan karakter dalam string'0152:'
dan membalikkannya. Ini adalah operasi cermin (membalikkan dan menukar2
s dan5
s).µ;"
menyatukan waktu asli dengan waktu cermin →'05:2115:20'
⁾25ẇ$ÐṂ
menyaring waktu dengan substring'25'
. Ini menangkap pasangan waktu dengan setengah cermin25:xx
atau5x:xx
. Catatan : Saya tidak tahu mengapa$
itu perlu. Mungkin seseorang bisa bermain golf dengan sintaks yang tepat, tetapi saya tidak yakin.Bagi masing-masing waktu menjadi dua bagian (
œs€2
) lalu gabungkan dengan string' - '
(j€“ - ”
).'05:2115:20'
→'05:21 - 15:20'
.Akhirnya,
Y
gabungkan semua string dengan baris baru dan semuanya dicetak secara implisit.versi lama
62 byte
Cobalah online!
66 byte
Cobalah online!
72 byte
Cobalah online!
sumber
C (gcc) ,
175174 byteSekali terima kasih kepada @Steadybox.
Cobalah online!
sumber
Befunge, 178 byte
Cobalah online!
sumber
Kotlin ,
205207 byteYg diperindahkan
Uji
TIO
TryItOnline
Suntingan
sumber
-
. Biaya hanya dua byte untuk ditambahkan: Coba online!C, 225 byte
Karena tidak ada jawaban C, saya memposting jawaban saya sendiri. Beberapa pendekatan lain mungkin lebih pendek.
Cobalah online!
sumber