주어진 기간 동안 조커를 사용하여 가장 작은 날짜 목록을 가져옵니다.


13

형식의 날짜를 고려하십시오 YYYY-MM-DD. *날짜 문자열 끝에 조커 를 사용할 수 있습니다 . 예를 들어 2016-07-2*에서 2016-07-20까지의 모든 날짜를 설명합니다 2016-07-29.

이제 시작 날짜와 종료 날짜로 표시되는 기간을 고려하십시오.

알고리즘은 기간을 나타내는 가능한 가장 작은 날짜 목록을 찾아야합니다.

예를 들어 봅시다. 다음 기간 동안 :

  • 시작일 : 2014-11-29
  • 종료일 : 2016-10-13

알고리즘은 다음 날짜 목록을 포함하는 배열을 반환해야합니다.

  • 2014-11-29
  • 2014-11-30
  • 2014-12-*
  • 2015-*
  • 2016-0*
  • 2016-10-0*
  • 2016-10-10
  • 2016-10-11
  • 2016-10-12
  • 2016-10-13

1
승리 목표는 모호합니다. 나는 그것을 codegolf로 변경하는 것이 좋습니다 (즉, 가능한 가장 적은 바이트로 작업을 해결하십시오). 가장 작은 날짜 목록을 출력하려면 항상 답변이 필요합니다.
— Billywob

어쩌면이 사이트에 가장 적합한 사이트가 아닐 수도 있습니다. "재미있는"도전보다 더 많은 질문입니다 (즉, "루비 온 레일즈에서이 알고리즘을 찾을 수 없습니다"). 나는 ... 여기가 아니라 새로운 해요
— 라파엘

나는 stackoverflow 를 시도한 다음 도전보다는 질문으로 제안하는 것이 좋습니다 . 다시 말하면, 도전은 여전히 ​​내 의견으로는 흥미롭고 (코드 골프와 같은) 기회가 필요합니다.
— Billywob

6
그래, 알고리즘을 찾는 것이 여전히 재미 있고 도전적이라고 생각하지만 코드 골프 측면에 관심이 없었습니다. 글쎄, 나는 그것을 해석하고 태그를 변경했으며 지금은이 게시물을 따르는 동안 stackoverflow를 요청할 것입니다. 감사!
— Raphael

1
후속 조치 : 나는 어제 Stackoverflow에 게시했지만 오늘 Ruby에서 작업 코드가있었습니다 (수개월에 "조커하지는 않지만 거의)": stackoverflow.com/questions/40506639/…
— Raphael

답변:


1

PHP, 541 343 바이트

알고리즘을 처음부터 사용하고 싶었습니다. 그러나 골프를 내리는 것은 실제로 예상했던 것보다 훨씬 재미있었습니다 (특히 지원되는 날짜 및 시간 형식 탐색 ).

세 가지 주요 작업은 약 130 바이트를 절약했습니다. 그러나 사소한 골프의 70 바이트
(또한 큰 단계 중 하나를 쓸모 없게 만들었습니다)는 많은 재미를 가져 왔습니다 .

for($a=($f=strtotime)($argv[1]);!$p=$a>$z=$f($argv[2]);$a+=86400){$x=$z<$e=$f(Dec31,$a);(101<$q=date(md,$a))?$q-1001|$x?:$a=$e+$p="1*":($x?($t=$f(IX30,$a))>$z?:$a=$t+$p="0*":$a=$e+$p="*");$p?:($q%100>1|$z<($t=$f(date(Ymt,$a)))?$q%10>0&$q%100>1|$z<($t=min($t,$a+777600))?:$a=$t+$p="m-$q[2]*":$a=$t+$p="m-*");echo date("Y-".($p?:"m-d"),$a),"
";}

명령 행 인수에서 입력을받습니다. 온라인으로 실행 -nr하거나 테스트하십시오 .

노트

  • 인쇄 Y-m-3*에 대한 Y-m-30; 7 바이트를 추가하여 수정 : Insert |$a==$tafter 777600)).
  • PHP 7.1에서 경고를 던진다; 수정에 5 바이트를 추가 교체 +$p와 함께 +!$p.
  • 설명 및 일부 골프 설명을 게시 할 준비가되었습니다.
    하지만 내가 망치기 전에 다른 사람이 제출했는지 조금 기다릴게요.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.