가장 바쁜 시간을 결정하십시오


9

이 과제는 이 스택 오버플로 게시물 에서 큰 영향을 받았습니다 .

도전

고객이 회의실에 입장 할 때와 회의실을 나가는 시점에 고객이 많을 경우 회의실에 최대 인원이있는 기간을 결정하십시오. 시간 해상도는 분이어야합니다.

세 개의 클라이언트가있는 경우 예를 들어, 8 - 10, 9 - 11, 10 - 12, 그 정답은 될 것이다 9 - 11; 이 기간 동안 방에 두 명의 고객이 있으며이 중 가장 큰 고객입니다.

입력

입력은 어떤 형태의 쌍 목록입니다. 이는 2 개의 튜플 목록, 요소가 포함 된 짝수 길이 목록 등 모든 합리적인 입력 형식 일 수 있습니다. 시간은 12 시간 또는 24 시간으로 합리적인 형식으로 제공 될 수 있습니다. 자정을 지나서 분으로 시간을 입력 할 수도 있습니다.

산출

출력은 어떤 형식의 쌍 목록이어야하지만 출력은 더 엄격합니다. 출력은 단순 목록이 될 수 없으며 2 개의 튜플 목록 또는 목록 목록 등이어야합니다. 시간은 12 시간 또는 24 시간으로 적절한 형식으로 출력 될 수 있습니다. 자정을 지나서 분으로 시간을 출력 할 수도 있습니다.

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

한 쌍의 두 번째 시간이 항상 첫 번째 시간 이후라고 가정 할 수 있습니다. 자정에는 시간 범위가 실행되지 않습니다.


시간 범위가 여러 개인 경우 어떻게합니까?
Esolanging Fruit 12

@ Challenger5 여러 시간 범위, 입력 또는 출력은 무엇을 의미합니까?
HyperNeutrino

@HyperNeutrino 출력.
Esolanging 과일

@ Challenger5 감사합니다. 테스트 사례를 추가했습니다.
HyperNeutrino

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의 평가 순서는 문제의 구조를 이용하려고 할 때 프로그램이 무한 루프 상태가되도록합니다. 그럼에도 브라 키로그와 비슷한 언어는 훨씬 짧은 언어를 상상할 수 있습니다.





0

수학, 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.