2019 년에는 사무실 생일 파티를 통합하여 사무실 ( "사무실"이라고 함)이 낭비되는 시간을 줄입니다. 같은 주 월요일부터 금요일 (포함) 사이에 생일을 가진 두 사람은 그 주에 공유 생일 파티 를 열게됩니다. 생일이 토요일이나 일요일에있는 사람들은 파티를 전혀받지 않습니다.
어떤 사람들은 실제 생일을 공유하지 않는 사람들과 생일 파티를 공유하는 것을 좋아하지 않습니다. 그들은 공유 생일 파티 를 가지고 매우 화가 될 것 입니다.
우리는 사무실을 시뮬레이션하고 누군가가 그들의 공유 생일 파티에 대해 매우 화 를내는 첫 주를 찾을 것 입니다.
도전
다음의 기본 규칙 에 따라 모의 사무실에있는 누군가가 공유 생일 파티 에 대해 매우 화를 내는 2019 년 첫 번째 ISO 주 번호를 출력하는 프로그램 또는 함수를 작성하십시오 .
- 사무실의 작업자 수인 N > 1 의 정수를 입력 하십시오.
- N의 자체 12 월 31 일월 1 임의로 분포 생일 (이월 29 무시).
- 그러나 공유 생일 파티 를 결정하기위한 작업 주일 은 2019-W01-1 (2018-12-31)과 2019-W52-7 (2019-12-29) 사이의 2019 ISO 주 날짜입니다. 매주 월요일마다 새로운 ISO 주가 시작됩니다. (이 과제를 위해 ISO 주에 대해 알아야 할 모든 것이 있다고 생각합니다).
- 사무실 에있는 N 명의 사람들은 각자 매우 화난 공유 생일 파티 성격 유형 의 1/3의 기회를 가지 므로 시뮬레이션해야합니다.
- 그러나 파티가 같은 생일을 가진 사람들과 공유되면 화를 내지 않을 것 입니다.
- 매우 화난 사람 이 처음 등장 할 때 ISO 주 번호를 출력합니다 (주 번호가 명확한 경우 정확한 형식은 유연합니다) . 화난 사람이 없으면 ISO 주와 혼동하지 않는 것을 출력하거나 프로그램 오류 등을 일으킬 수 있습니다.
몇 가지 단순화 된 가정 :
- 내가 언급했듯이, 2 월 29 일 문제를 완전히 무시하십시오 (불필요한 합병증)
- 공휴일을 무시하고 (공휴일은 다름) 공휴일마다 영업소가 열려 있다고 가정합니다.
규칙
이것은 코드 골프입니다. 각 언어에 대한 가장 짧은 대답은 바이트입니다. 기본 허점은 금지되어 있습니다.
코드 설명을 환영합니다.
작동 예
입력 N = 7 인 예제 1을 구상했습니다 . 첫 번째와 두 번째 열은 규칙에 설명 된대로 임의적입니다 (물론 실제로 임의적이지는 않습니다).
Angry Type
Person? Birthday ISO Week Comment
================================================================================
N 2018-12-31 W01 In the 2019 ISO week date year
Y 2018-12-31 W01 Same birthday, so no anger happens
N 2019-02-05 W06
Y 2019-03-15 W11 No anger happens because other W11 b-day is a Saturday
N 2019-03-16 W11
N 2019-09-08 W36 My birthday!
Y 2019-12-30 - Not in the 2019 ISO week date year
분노가 발생하지 않습니다. 프로그램 또는 기능이 ISO 주 번호와 혼동되지 않은 것을 오류로 표시하거나 출력 할 수 있습니다.
N이 지정되지 않은 예 2 .
Angry Type
Person? Birthday ISO Week Comment
================================================================================
N 2019-01-19 W03
Y 2019-02-04 W06
N 2019-02-05 W06 No anger because not an angry person
... ... ... (No angry people until...)
Y 2019-03-12 W11 Very Angry Person!
N 2019-03-14 W11
... ... ... ...
출력은 W11같거나 비슷한 것입니다.