最も忙しい時間を決定する


9

この課題は、このStack Overflowの投稿から大きく影響を受けました。

チャレンジ

部屋に入るときと部屋から出るときの点で多数のクライアントを想定して、部屋に最大人数の時間帯を決定します。時間分解能は分単位にする必要があります。

3つのクライアントが存在する場合、例えば8 - 109 - 1110 - 12、正しい答えは次のようになります9 - 11。この期間中、部屋には2人のクライアントがいます。

入力

入力は、何らかの形式のペアのリストになります。これは、2タプルのリスト、要素がインターリーブされた偶数長のリストなど、適切な入力形式のいずれかです。時間は、12時間または24時間のいずれかの形式で指定できます。午前0時からの分数として時間を入力することもできます。

出力

出力は何らかの形式のペアのリストである必要がありますが、出力はより厳密です。出力はフラットリストにすることはできません。2タプルのリストまたはリストのリストなどにする必要があります。時刻は、12時間または24時間のいずれかの適切な形式で出力できます。午前0時からの分数として時間を出力することもできます。

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

ペアの2回目は常に1回目以降になると想定できます。時間範囲は真夜中に実行されません。


複数の時間範囲がある場合はどうなりますか?
果物を孤独化する

@ Challenger5複数の時間範囲、入力または出力とはどういう意味ですか?
HyperNeutrino 2017年

@HyperNeutrino出力。
2017

@ Challenger5テストケースを追加、ありがとうございます。
HyperNeutrino 2017年

ある09:00 - 10:00, 10:00 - 11:00最初のテストケースのための有効な出力は?
Leaky Nun

回答:


4

Brachylog、25バイト

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

オンラインでお試しください!

この答えには明らかな構造があり、次のように書くとさらにわかりやすくなります。

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

残念ながら、Brachylogの評価順序では、問題の構造を利用しようとするとプログラムが無限ループに入るようになっています。それでも、これがはるかに短いBrachylogのような言語を想像することは確かに可能です。





0

Mathematica、104バイト

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

もちろん、これはいくつかの高性能なMathematica組み込みが正しいことを前提としています...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.