Tentukan waktu tersibuk

9

Tantangan ini sangat terinspirasi oleh pos Stack Overflow ini .

Tantangan

Diberikan banyak klien dalam hal ketika mereka memasuki sebuah ruangan dan ketika mereka keluar, tentukan periode waktu ketika ruangan itu memiliki jumlah maksimum orang. Resolusi waktu harus menit.

Misalnya, jika ada tiga klien 8 - 10, 9 - 11, 10 - 12, maka jawaban yang benar akan 9 - 11; selama periode waktu ini, ada dua klien di ruangan itu, yang merupakan kemungkinan terbesar.

Memasukkan

Input akan berupa daftar pasangan dalam beberapa bentuk. Itu bisa berupa daftar 2-tupel, daftar panjang dengan elemen yang disisipkan, dll, format input yang masuk akal. Waktu dapat diberikan dalam format apa pun yang masuk akal, dalam waktu 12 atau 24 jam. Anda juga dapat memasukkan waktu karena jumlah menit lewat tengah malam.

Keluaran

Output harus berupa daftar pasangan dalam beberapa bentuk, tetapi outputnya lebih ketat. Outputnya tidak bisa berupa daftar datar, harus berupa daftar 2-tupel atau daftar daftar, dll. Kali ini bisa berupa output dalam format apa pun yang masuk akal, dalam waktu 12 atau 24 jam. Anda juga dapat menampilkan waktu karena jumlah menit lewat tengah malam.

Contohnya

input
output

INPUT
08:00 - 10:00
09:00 - 11:00
10:00 - 12:00
OUTPUT
09:00 - 11:00

INPUT
08:20 - 09:20
09:00 - 09:10
08:00 - 09:30
08:50 - 10:40
OUTPUT
09:00 - 09:10

INPUT
08:00 - 10:00
09:00 - 10:00
09:30 - 11:00
OUTPUT
09:30 - 10:00 # The output is not always in the input list

INPUT
00:00 - 02:00
01:00 - 03:00
04:00 - 06:00
05:00 - 07:00
OUTPUT # This is the expected output for when there are multiple time ranges with the same "business".
01:00 - 02:00
05:00 - 06:00

Anda dapat berasumsi bahwa kedua kalinya berpasangan akan selalu setelah pertama kali. Rentang waktu tidak akan berjalan melebihi tengah malam.

HyperNeutrino
sumber
Bagaimana jika ada beberapa rentang waktu?
Buah Esolanging
@ Challenger5 Apa yang Anda maksud dengan rentang waktu ganda, input atau output?
HyperNeutrino
Output @HyperNeutrino.
Buah Esolanging
@ Challenger5 Menambahkan test case, terima kasih.
HyperNeutrino
Apakah 09:00 - 10:00, 10:00 - 11:00output yang valid untuk test case pertama?
Leaky Nun

Jawaban:

4

Brachylog , 25 byte

⟦₂ᵐkᵐcoḅlᵒlᵍthᵐ~c{~k~⟦₂}ᵐ

Cobalah online!

Ada struktur yang jelas untuk jawaban ini, yang menjadi lebih jelas jika Anda menulisnya seperti ini:

{⟦₂k}ᵐc oḅ lᵒlᵍ thᵐ ~c{~k~⟦₂}ᵐ

Sayangnya, urutan evaluasi Brachylog membuatnya sehingga program masuk ke loop tak terbatas jika Anda mencoba untuk mengambil keuntungan dari struktur yang dimaksud. Namun, tentu saja mungkin untuk membayangkan bahasa seperti Brachylog di mana ini jauh lebih pendek.


sumber
3

Jelly , 22 21 20 byte

r/€Ṗ€F©®ċ$ÐṀQœ^‘$Ṣs2

Cobalah online!

Biarawati Bocor
sumber
1

Brachylog , 58 byte

⟦₂ᵐkᵐcoḅBlᵐ⌉;B↔z{hl~t?}ˢhᵐhᵐ{∋+₁.¬∈?∧|∋.-₁¬∈?∧}ᶠo~c.{l2}ᵐ∧

Cobalah online!

Ini harus menjadi jawaban Brachylog terpanjang yang pernah ...

Biarawati Bocor
sumber
0

Pyth , 33 24 byte

JsrMQcSs-M_BhMBS{.M/JZJ2

Cobalah online!

Biarawati Bocor
sumber
Ini tampaknya berperilaku salah untuk ini . Saya akan menambahkan ini sebagai ujian untuk pertanyaan juga.
HyperNeutrino
@HyperNeutrino diperbaiki.
Leaky Nun
Ya, itu jawaban yang cepat. Pekerjaan yang baik!
HyperNeutrino
0

Mathematica, 104 byte

Reduce[#==#~MaxValue~x,x]&@PiecewiseExpand@Tr[Piecewise@{{1,#<=x<#2}}&@@@#]/.{Or->List,a_<=x<b_->{a,b}}&

Tentu saja, ini mengasumsikan bahwa beberapa built-in Mathematica daya tinggi benar ...

jcai
sumber