아,이 만료일은 몇 달 동안 문자로 쓰지 않습니다! 내가 3 월 10 일 또는 10 월 3 일에 만료되는 경우 ... 말할 아니, 결코 마음을, 기다릴 수 없어 올해는 말한다 2012 년 (골목 죄송 프로처럼 휴지통에 치즈의 벽돌을 반 사용)
이 마리 나라 항아리가 만료되는 시점을 추론하기에는 너무 바쁘다고 가정 해 봅시다. Cliff Notes 버전을 원할 것입니다. 코드를 작성하자!
제조업체는 세 가지 형식 중 하나를 사용하여 날짜를 3 배의 정수 정수로 인쇄한다는 것을 알고 있습니다.
YEAR MONTH DAY
MONTH DAY YEAR
DAY MONTH YEAR
그리고 일부 날짜는 하나 또는 두 가지 방식으로 만 해석 될 수 있으며 세 가지 모두는 해석 할 수 없습니다. 55 인치 55-11-5
는 1 년이어야합니다. 즉,이 특정 Twinkies 상자는 1955 년 11 월 5 일에 만료되었습니다. 두 가지가 아니라 일부 옵션을 배제 할 수 있습니다. 그러나 두 자리 숫자 인 경우 50..99는 1950..1999를 의미하고 0..49는 2000..2049를 의미합니다.
귀하의 임무는 위의 해석 중 하나 이상에서 유효한 날짜 인 정수 배열을 가져 와서 여전히 좋은 기회를 출력하는 프로그램 또는 함수를 작성하는 것입니다. 퍼센트 확률은 단순히 오늘 날짜 이후 의 날짜에 대한 유효한 해석의 백분율입니다 .
정수 배열은 [Int]
함수에 대한 인수 인 경우 언어의 길이가 3 인 언어 유형이며 STDIN에서 전체 프로그램. *
"오늘 날짜"는 날짜 함수를 통해 얻은 오늘의 실제 날짜이거나 STDIN의 함수 또는 추가 매개 변수에 대한 추가 인수에 지정된 날짜입니다. 그것은 유닉스 시대, 위의 세 가지 방법 중 하나에 입력 된 또 다른 년-월-일 트리플 또는 다른 편리한 방식 일 수 있습니다.
몇 가지 예를 들어 봅시다! 만료 날짜 입력은 대시로 구분 된 스타일이며 아래 예에서는 오늘 날짜가 2006 년 7 월 5 일이라고 가정합니다.
14-12-14
-2014 년 12 월 14 일, 이에 대한 두 가지 유효한 해석 (DMY 및 YMD)은 동일합니다. 이 제품은 여전히 우수하기 때문에 출력은 100 입니다.8-2-2006
-마지막 숫자는 1 년입니다. 4 자리 숫자이기 때문입니다. 2 월 8 일 (만료) 또는 8 월 2 일 (여전히 양호) 일 수 있습니다. 출력은 50 입니다.6-7-5
-뭐든지 될 수있어! "2006 년 7 월 5 일"해석은 여전히 훌륭하지만 (하루 만), 나머지 2 개는 2005 년에 있으며 가능한 한 빨리 던져 져야합니다. 출력은 33 입니다.6-5-7
-여기서 3 가지 해석 중 2 가지가 안전합니다. 소수점을 반올림 또는 내림 할 수 있으므로 66 또는 67 이 모두 가능합니다.12-31-99
-이것은 세기의 전환기에 분명합니다 (50-99 년은 19XX이며 31은 한 달이 될 수 없습니다). 큰 지방 0 과 냉장고를 더 자주 청소해야합니다.
위의 표준을 충족하지 않는 입력은 위의 출력 규칙에 특권이 없다고 안전하게 가정 할 수 있습니다.
웹 요청이나 표준 허점이 없습니다. 날짜 처리 라이브러리가 허용됩니다. 이것은 코드 골프입니다. 가장 짧은 프로그램이 이길 수 있습니다.
* brainfuck 또는 이와 유사한 데이터 형식을 사용하는 언어를 사용하는 경우 입력시 처음 세 문자의 ASCII 값이 날짜의 정수라고 가정 할 수 있습니다. 이것은 네 자리 연도 논리를 배제하지만, Brainfuck에서 이것에 대한 해결책을 보면 약간 놀랄 것입니다.